cmdbox 0.6.0.4__tar.gz → 0.6.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.
- {cmdbox-0.6.0.4/cmdbox.egg-info → cmdbox-0.6.1}/PKG-INFO +30 -6
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/README.md +29 -5
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/app.py +2 -2
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/auth/signin.py +144 -28
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/common.py +40 -3
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/edge.py +1 -1
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/edge_tool.py +1 -1
- cmdbox-0.6.1/cmdbox/app/features/cli/agent_base.py +87 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_audit_search.py +0 -2
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_audit_write.py +9 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_cmd_list.py +1 -1
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_cmd_load.py +1 -1
- cmdbox-0.6.1/cmdbox/app/features/cli/cmdbox_mcp_proxy.py +90 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_gencert.py +25 -2
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_start.py +4 -1
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_signin.py +1 -1
- cmdbox-0.6.0.4/cmdbox/app/features/cli/agent_base.py → cmdbox-0.6.1/cmdbox/app/mcp.py +42 -88
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/options.py +2 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/web.py +34 -6
- cmdbox-0.6.1/cmdbox/autoload.py +10 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/user_list.yml +25 -1
- cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Deprecated.1.2.18(MIT License).txt → cmdbox-0.6.1/cmdbox/licenses/LICENSE_PyJWT_2_10_1_MIT_License.txt +2 -2
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_exceptiongroup_1_3_0_MIT_License.txt +73 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_fastmcp_2_9_2_Apache_Software_License.txt +201 -0
- cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.graphviz.0.20.3(MIT License).txt → cmdbox-0.6.1/cmdbox/licenses/LICENSE_graphviz_0_21_UNKNOWN.txt +1 -1
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_jaraco_functools_4_2_1_UNKNOWN.txt +18 -0
- cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.numpy.2.2.5(BSD License).txt → cmdbox-0.6.1/cmdbox/licenses/LICENSE_numpy_2_3_1_BSD_License.txt +8 -8
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_openapi-pydantic_0_5_1_MIT_License.txt +40 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_propcache_0_3_2_Apache_Software_License.txt +202 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_proto-plus_1_26_1_Apache_Software_License.txt +202 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_shellingham_1_5_4_ISC_License-ISCL.txt +13 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinx-last-updated-by-git_0_3_8_BSD_License.txt +22 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_tenacity_8_5_0_Apache_Software_License.txt +202 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_tokenizers_0_21_2_Apache_Software_License.txt +1 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_typer_0_16_0_MIT_License.txt +21 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_typing-inspection_0_4_1_UNKNOWN.txt +21 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_yarl_1_20_1_Apache_Software_License.txt +202 -0
- cmdbox-0.6.1/cmdbox/licenses/LICENSE_zipp_3_23_0_UNKNOWN.txt +18 -0
- cmdbox-0.6.1/cmdbox/licenses/files.txt +198 -0
- cmdbox-0.6.1/cmdbox/logconf_mcp.yml +43 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/version.py +2 -2
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/agent.html +1 -33
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/audit.js +1 -1
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/common.js +47 -4
- cmdbox-0.6.1/cmdbox/web/assets/cmdbox/svgicon.js +122 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/users.js +4 -3
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/audit.html +1 -35
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/filer.html +1 -13
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/gui.html +2 -50
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/result.html +2 -46
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/signin.html +1 -26
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/users.html +1 -41
- {cmdbox-0.6.0.4 → cmdbox-0.6.1/cmdbox.egg-info}/PKG-INFO +30 -6
- cmdbox-0.6.1/cmdbox.egg-info/SOURCES.txt +387 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox.egg-info/requires.txt +1 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/setup.py +1 -0
- cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.keyring.25.6.0(MIT License).txt +0 -17
- cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.typing-inspection.0.4.0(MIT License).txt +0 -21
- cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.wrapt.1.17.2(BSD License).txt +0 -24
- cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.zipp.3.21.0(MIT License).txt +0 -17
- cmdbox-0.6.0.4/cmdbox/licenses/files.txt +0 -188
- cmdbox-0.6.0.4/cmdbox.egg-info/SOURCES.txt +0 -372
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/LICENSE +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/MANIFEST.in +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/__init__.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/__main__.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/__init__.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/auth/__init__.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/auth/azure_signin.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/auth/azure_signin_saml.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/auth/github_signin.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/auth/google_signin.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/auth/signin_saml.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/client.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/commons/convert.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/commons/loghandler.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/commons/module.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/commons/redis_client.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/feature.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/audit_base.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_audit_createdb.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_audit_delete.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_file_copy.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_file_download.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_file_list.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_file_mkdir.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_file_move.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_file_remove.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_file_rmdir.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_file_upload.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_client_server_info.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_edge_config.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_edge_start.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_gui_start.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_gui_stop.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_server_list.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_server_start.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_server_stop.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_apikey_add.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_apikey_del.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_genpass.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_group_add.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_group_del.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_group_edit.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_group_list.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_stop.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_user_add.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_user_del.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_user_edit.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/cli/cmdbox_web_user_list.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_agent.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_assets.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_audit.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_audit_metrics.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_copyright.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_del_cmd.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_del_pipe.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_do_signin.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_do_signout.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_exec_cmd.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_exec_pipe.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_filer download.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_filer.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_filer_upload.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_get_cmds.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_get_modes.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_get_server_opt.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_gui.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_gui_callback.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_list_cmd.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_list_pipe.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_load_cmd.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_load_pipe.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_raw_cmd.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_raw_pipe.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_result.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_save_cmd.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_save_pipe.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_user_data.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_users.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_usesignout.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/features/web/cmdbox_web_versions_used.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/filer.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/app/server.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/config.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/features.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/.vscode/launch.json +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/requirements.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/__init__.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/__main__.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/app/app.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/app/features/cli/__init__.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/app/features/web/__init__.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/extensions/features.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/extensions/user_list.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/logconf_sample.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/version.py +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/web/assets/sample/favicon.ico +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/extensions/sample_project/sample/web/assets/sample/icon.png +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Authlib.1.5.2(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_Authlib_1_6_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Jinja2.3.1.6(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_Jinja2_3_1_6_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.MarkupSafe.3.0.2(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_MarkupSafe_3_0_2_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.PyYAML.6.0.2(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_PyYAML_6_0_2_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Pygments.2.19.1(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_Pygments_2_19_2_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.SQLAlchemy.2.0.40(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_SQLAlchemy_2_0_41_MIT.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.Sphinx.8.2.3(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_Sphinx_8_2_3_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.aiohappyeyeballs.2.6.1(Python Software Foundation License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_aiohappyeyeballs_2_6_1_Python_Software_Foundation_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.aiohttp.3.11.18(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_aiohttp_3_12_13_Apache-2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.aiosignal.1.3.2(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_aiosignal_1_3_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.alabaster.1.0.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_alabaster_1_0_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.annotated-types.0.7.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_annotated-types_0_7_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.anyio.4.9.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_anyio_4_9_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.argcomplete.3.6.2(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_argcomplete_3_6_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.async-timeout.5.0.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_async-timeout_5_0_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.attrs.25.3.0(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_attrs_25_3_0_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.babel.2.17.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_babel_2_17_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.backports.tarfile.1.2.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_backports_tarfile_1_2_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.cachetools.5.5.2(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_cachetools_5_5_2_MIT_License.txt +0 -0
- /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/cmdbox/licenses/LICENSE_certifi_2025_6_15_Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.cffi.1.17.1(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_cffi_1_17_1_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.charset-normalizer.3.4.2(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_charset-normalizer_3_4_2_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.click.8.2.0(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_click_8_2_1_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jiter.0.9.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_cloudpickle_3_1_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.colorama.0.4.6(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_colorama_0_4_6_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.cryptography.44.0.3(Apache Software License; BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_cryptography_45_0_4_Apache-2_0_OR_BSD-3-Clause.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.distro.1.9.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_distro_1_9_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.docstring_parser.0.16(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_docstring_parser_0_16_MIT_License.txt +0 -0
- /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/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.0.4/cmdbox/licenses/LICENSE.fastapi.0.115.12(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_fastapi_0_115_14_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.filelock.3.18.0(The Unlicense (Unlicense)).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_filelock_3_18_0_The_Unlicense-Unlicense.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.frozenlist.1.6.0(Apache-2.0).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_frozenlist_1_7_0_Apache-2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.fsspec.2025.3.2(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_fsspec_2025_5_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.gevent.25.4.2(MIT).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_gevent_25_5_1_MIT.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-adk.0.5.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-adk_1_5_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-api-core.2.24.2(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-api-core_2_25_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-api-python-client.2.169.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-api-python-client_2_174_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-auth-httplib2.0.2.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-auth-httplib2_0_2_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-auth.2.40.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-auth_2_40_3_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-aiplatform.1.92.0(Apache 2.0).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-aiplatform_1_100_0_Apache_2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-bigquery.3.31.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-appengine-logging_1_6_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-core.2.4.3(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-audit-log_0_3_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-resource-manager.1.14.2(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-bigquery_3_34_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-secret-manager.2.23.3(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-core_2_4_3_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-speech.2.32.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-logging_3_12_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-storage.2.19.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-resource-manager_1_14_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-cloud-trace.1.16.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-secret-manager_2_24_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-crc32c.1.7.1(Apache 2.0).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-speech_2_33_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-genai.1.14.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-storage_2_19_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.google-resumable-media.2.7.2(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-cloud-trace_1_16_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.googleapis-common-protos.1.70.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-crc32c_1_7_1_Apache_2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.grpc-google-iam-v1.0.14.2(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-genai_1_23_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.id.1.5.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_google-resumable-media_2_7_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.importlib_metadata.8.6.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_googleapis-common-protos_1_70_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.greenlet.3.2.2(MIT AND Python-2.0).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_greenlet_3_2_3_MIT_AND_Python-2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.propcache.0.3.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_grpc-google-iam-v1_0_14_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.grpcio-status.1.71.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_grpcio-status_1_73_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.grpcio.1.71.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_grpcio_1_73_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.gunicorn.23.0.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_gunicorn_23_0_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.h11.0.16.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_h11_0_16_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httpcore.1.0.9(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_httpcore_1_0_9_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httplib2.0.22.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_httplib2_0_22_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httptools.0.6.4(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_httptools_0_6_4_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httpx-sse.0.4.0(MIT).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_httpx-sse_0_4_1_MIT.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.httpx.0.28.1(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_httpx_0_28_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.huggingface-hub.0.31.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_huggingface-hub_0_33_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.proto-plus.1.26.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_id_1_5_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.idna.3.10(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_idna_3_10_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.imagesize.1.4.1(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_imagesize_1_4_1_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.yarl.1.20.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_importlib_metadata_8_7_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.itsdangerous.2.2.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_itsdangerous_2_2_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jaraco.classes.3.4.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_jaraco_classes_3_4_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jaraco.context.6.0.1(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_jaraco_context_6_0_1_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-applehelp.2.0.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_jiter_0_10_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jsonschema-specifications.2025.4.1(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_jsonschema-specifications_2025_4_1_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jsonschema.4.23.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_jsonschema_4_24_0_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.jaraco.functools.4.1.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_keyring_25_6_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.litellm.1.69.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_litellm_1_73_6_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.markdown-it-py.3.0.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_markdown-it-py_3_0_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.mcp.1.8.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_mcp_1_9_4_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.mdurl.0.1.2(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_mdurl_0_1_2_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.more-itertools.10.7.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_more-itertools_10_7_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.multidict.6.4.3(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_multidict_6_6_2_Apache_License_2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.nh3.0.2.21(MIT).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_nh3_0_2_21_MIT.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.openai.1.75.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_openai_1_93_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-api.1.33.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_opentelemetry-api_1_34_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-exporter-gcp-trace.1.9.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_opentelemetry-exporter-gcp-trace_1_9_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-resourcedetector-gcp.1.9.0a0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_opentelemetry-resourcedetector-gcp_1_9_0a0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-sdk.1.33.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_opentelemetry-sdk_1_34_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.opentelemetry-semantic-conventions.0.54b0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_opentelemetry-semantic-conventions_0_55b1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.packaging.25.0(Apache Software License; BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_packaging_25_0_Apache_Software_License-BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pillow.11.2.1(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pillow_11_2_1_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pip.24.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pip_24_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.plyer.2.1.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_plyer_2_1_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.prettytable.3.16.0(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_prettytable_3_16_0_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.prompt_toolkit.3.0.51(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_prompt_toolkit_3_0_51_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.protobuf.5.29.4(3-Clause BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_protobuf_6_31_1_3-Clause_BSD_License.txt +0 -0
- /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/cmdbox/licenses/LICENSE_psycopg-binary_3_2_9_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.psycopg.3.2.7(GNU Lesser General Public License v3 (LGPLv3)).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_psycopg_3_2_9_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pyasn1.0.6.1(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pyasn1_0_6_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pyasn1_modules.0.4.2(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pyasn1_modules_0_4_2_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pycparser.2.22(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pycparser_2_22_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pycryptodome.3.22.0(BSD License; Public Domain).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pycryptodome_3_23_0_BSD_License-Public_Domain.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pydantic-settings.2.9.1(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pydantic-settings_2_10_1_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pydantic.2.11.4(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pydantic_2_11_7_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pydantic_core.2.33.2(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pydantic_core_2_33_2_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pyparsing.3.2.3(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pyparsing_3_2_3_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pystray.0.19.5(GNU Lesser General Public License v3 (LGPLv3)).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pystray_0_19_5_GNU_Lesser_General_Public_License_v3-LGPLv3.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.python-dateutil.2.9.0.post0(Apache Software License; BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_python-dateutil_2_9_0_post0_Apache_Software_License-BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.python-dotenv.1.1.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_python-dotenv_1_1_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.python-multipart.0.0.20(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_python-multipart_0_0_20_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.pywin32-ctypes.0.2.3(BSD-3-Clause).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_pywin32-ctypes_0_2_3_BSD-3-Clause.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.questionary.2.1.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_questionary_2_1_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.readme_renderer.44.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_readme_renderer_44_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.redis.6.0.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_redis_6_2_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.referencing.0.36.2(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_referencing_0_36_2_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.regex.2024.11.6(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_regex_2024_11_6_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.requests-toolbelt.1.0.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_requests-toolbelt_1_0_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.requests.2.32.3(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_requests_2_32_4_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.rfc3986.2.0.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_rfc3986_2_0_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.rich.14.0.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_rich_14_0_0_MIT_License.txt +0 -0
- /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/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.0.4/cmdbox/licenses/LICENSE.rpds-py.0.24.0(MIT).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_rpds-py_0_25_1_MIT.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.rsa.4.9.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_rsa_4_9_1_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.setuptools.65.5.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_setuptools_65_5_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.shapely.2.1.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_shapely_2_1_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.six.1.17.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_six_1_17_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sniffio.1.3.1(Apache Software License; MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sniffio_1_3_1_Apache_Software_License-MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.snowballstemmer.3.0.1(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_snowballstemmer_3_0_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinx-intl.2.3.1(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinx-intl_2_3_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinx-rtd-theme.3.0.2(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinx-rtd-theme_3_0_2_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinx-sitemap.2.6.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinx-sitemap_2_7_2_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinx_fontawesome.0.0.6(GNU General Public License v2 (GPLv2)).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinx_fontawesome_0_0_6_GNU_General_Public_License_v2-GPLv2.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-devhelp.2.0.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinxcontrib-applehelp_2_0_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-htmlhelp.2.1.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinxcontrib-devhelp_2_0_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-jquery.4.1(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinxcontrib-htmlhelp_2_1_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-qthelp.2.0.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinxcontrib-jquery_4_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-jsmath.1.0.1(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinxcontrib-jsmath_1_0_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sphinxcontrib-serializinghtml.2.0.0(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinxcontrib-qthelp_2_0_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tokenizers.0.21.1(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sphinxcontrib-serializinghtml_2_0_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.sse-starlette.2.3.4(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_sse-starlette_2_3_6_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.starlette.0.46.2(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_starlette_0_46_2_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tabulate.0.9.0(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_tabulate_0_9_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tiktoken.0.9.0(MIT License).txt → /cmdbox-0.6.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
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tomli.2.2.1(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_tomli_2_2_1_MIT_License.txt +0 -0
- /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/cmdbox/licenses/LICENSE_tqdm_4_67_1_MIT_License-Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.twine.6.1.0(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_twine_6_1_0_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.typing_extensions.4.13.2(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_typing_extensions_4_14_0_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tzdata.2025.2(Apache Software License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_tzdata_2025_2_Apache_Software_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.tzlocal.5.3.1(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_tzlocal_5_3_1_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.uritemplate.4.1.1(Apache Software License; BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_uritemplate_4_2_0_BSD_3-Clause_OR_Apache-2_0.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.urllib3.2.4.0(UNKNOWN).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_urllib3_2_5_0_UNKNOWN.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.uvicorn.0.34.2(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_uvicorn_0_35_0_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.watchfiles.1.0.5(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_watchfiles_1_1_0_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.wcwidth.0.2.13(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_wcwidth_0_2_13_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.websockets.15.0.1(BSD License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_websockets_15_0_1_BSD_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.wheel.0.45.1(MIT License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_wheel_0_45_1_MIT_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.zope.event.5.0(Zope Public License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_zope_event_5_1_Zope_Public_License.txt +0 -0
- /cmdbox-0.6.0.4/cmdbox/licenses/LICENSE.zope.interface.7.2(Zope Public License).txt → /cmdbox-0.6.1/cmdbox/licenses/LICENSE_zope_interface_7_2_Zope_Public_License.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/logconf_audit.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/logconf_client.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/logconf_cmdbox.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/logconf_edge.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/logconf_gui.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/logconf_server.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/logconf_web.yml +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/apexcharts/apexcharts.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/apexcharts/apexcharts.min.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/bootstrap/bootstrap.bundle.min.5.3.0.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/bootstrap/bootstrap.min.5.3.0.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/agent.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/color_mode.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/favicon.ico +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/filer_modal.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/icon.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/list_cmd.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/list_pipe.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/main.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/open_capture.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/open_output_json.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/result.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/signin.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/view_raw.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/cmdbox/view_result.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/encodingjs/LICENSE.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/encodingjs/encoding.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/encodingjs/encoding.min.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/filer/filer.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/filer/main.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/filer/main.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/highlight/default.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/highlight/highlight.min.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/highlight/styles/tokyo-night-dark.min.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery/jquery.min.3.2.0.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-linedtextarea/README.md +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea-license.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.html +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-resizable/jquery-resizable.min.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/AUTHORS.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/LICENSE.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/jquery-ui.min.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/jquery-ui.min.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/jquery-ui.structure.min.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/jquery-ui.theme.min.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/jquery-ui/package.json +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/lightbox2/css/lightbox.min.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/lightbox2/images/close.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/lightbox2/images/loading.gif +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/lightbox2/images/next.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/lightbox2/images/prev.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/lightbox2/js/lightbox.min.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/split-pane/split-pane.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/split-pane/split-pane.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/tree-menu/css/tree-menu.css +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/tree-menu/image/file.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/tree-menu/image/folder-close.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/tree-menu/image/folder-open.png +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets/tree-menu/js/tree-menu.js +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox/web/assets_license_list.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox.egg-info/dependency_links.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox.egg-info/entry_points.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/cmdbox.egg-info/top_level.txt +0 -0
- {cmdbox-0.6.0.4 → cmdbox-0.6.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cmdbox
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
@@ -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"
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
792
|
-
|
|
793
|
-
::
|
|
915
|
+
from cmdbox.app.auth import signin
|
|
916
|
+
from fastapi import Depends, Request, Response
|
|
794
917
|
|
|
795
|
-
|
|
796
|
-
|
|
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
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
@@ -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
|
+
])
|
|
@@ -210,8 +210,6 @@ class AuditSearch(audit_base.AuditBase):
|
|
|
210
210
|
ret = buf.getvalue()
|
|
211
211
|
ret = ret.replace('\r\n', '\n') if ret is not None else ''
|
|
212
212
|
|
|
213
|
-
common.print_format(ret, getattr(args, 'format', False), tm, None, False, pf=pf)
|
|
214
|
-
|
|
215
213
|
return 0, ret, cl
|
|
216
214
|
|
|
217
215
|
def is_cluster_redirect(self):
|