cmdbox 0.8.4.2__tar.gz → 0.8.4.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.
Files changed (657) hide show
  1. {cmdbox-0.8.4.2/cmdbox.egg-info → cmdbox-0.8.4.4}/PKG-INFO +3 -2
  2. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/redis_client.py +3 -0
  3. cmdbox-0.8.4.4/cmdbox/app/features/cli/agent/__init__.py +30 -0
  4. cmdbox-0.8.4.4/cmdbox/app/features/cli/agent/dangerous_sequence.py +75 -0
  5. cmdbox-0.8.4.4/cmdbox/app/features/cli/agent/detection_malicious_keyword.py +72 -0
  6. cmdbox-0.8.4.4/cmdbox/app/features/cli/agent/detection_sql_injection.py +74 -0
  7. cmdbox-0.8.4.4/cmdbox/app/features/cli/agent/detection_template_injection.py +76 -0
  8. cmdbox-0.8.4.4/cmdbox/app/features/cli/agent/javascript_injection.py +93 -0
  9. cmdbox-0.8.4.4/cmdbox/app/features/cli/agent/prompt_injection_common.py +25 -0
  10. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_chat.py +35 -2
  11. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_audit_delete.py +4 -4
  12. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_audit_search.py +5 -5
  13. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_audit_write.py +6 -6
  14. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_upload.py +6 -2
  15. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_initdata_install.py +12 -9
  16. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_apikey_add.py +27 -2
  17. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_apikey_del.py +27 -2
  18. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_group_add.py +27 -2
  19. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_group_del.py +27 -2
  20. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_group_edit.py +27 -2
  21. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_group_list.py +27 -2
  22. cmdbox-0.8.4.4/cmdbox/app/features/cli/cmdbox_web_session_list.py +121 -0
  23. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_stop.py +1 -1
  24. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_user_add.py +30 -4
  25. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_user_del.py +27 -2
  26. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_user_edit.py +27 -2
  27. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_user_list.py +27 -2
  28. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_agent.py +17 -16
  29. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_audit.py +19 -0
  30. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_exec_cmd.py +4 -1
  31. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/filer.py +5 -4
  32. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/options.py +5 -1
  33. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/web.py +51 -2
  34. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/features.yml +8 -6
  35. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/version.py +2 -2
  36. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_chat.js +150 -103
  37. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/common.js +68 -0
  38. cmdbox-0.8.4.4/cmdbox/web/assets/status/main.js +29 -0
  39. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/status/status.css +5 -2
  40. cmdbox-0.8.4.2/cmdbox/web/assets/status/main.js → cmdbox-0.8.4.4/cmdbox/web/assets/status/status.js +62 -27
  41. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/status.html +46 -12
  42. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4/cmdbox.egg-info}/PKG-INFO +3 -2
  43. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox.egg-info/SOURCES.txt +8 -0
  44. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox.egg-info/requires.txt +2 -1
  45. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/pyproject.toml +2 -1
  46. cmdbox-0.8.4.2/cmdbox/extensions/sample_project/sample/app/features/web/__init__.py +0 -0
  47. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/LICENSE +0 -0
  48. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/MANIFEST.in +0 -0
  49. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/README.md +0 -0
  50. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/__init__.py +0 -0
  51. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/__main__.py +0 -0
  52. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/__init__.py +0 -0
  53. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/a2a.py +0 -0
  54. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/app.py +0 -0
  55. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/auth/__init__.py +0 -0
  56. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/auth/azure_signin.py +0 -0
  57. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/auth/azure_signin_proxy.py +0 -0
  58. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/auth/azure_signin_saml.py +0 -0
  59. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/auth/github_signin.py +0 -0
  60. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/auth/google_signin.py +0 -0
  61. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/auth/signin.py +0 -0
  62. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/auth/signin_saml.py +0 -0
  63. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/client.py +0 -0
  64. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/common.py +0 -0
  65. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/cache.py +0 -0
  66. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/convert.py +0 -0
  67. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/limiter.py +0 -0
  68. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/loghandler.py +0 -0
  69. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/module.py +0 -0
  70. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/resdata.py +0 -0
  71. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/testable.py +0 -0
  72. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/commons/validator.py +0 -0
  73. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/edge.py +0 -0
  74. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/edge_tool.py +0 -0
  75. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/feature.py +0 -0
  76. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/_cmdbox_vision_install.py +0 -0
  77. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/_cmdbox_vision_predict.py +0 -0
  78. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/_cmdbox_vision_start.py +0 -0
  79. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/agent/agant_base.py +0 -0
  80. {cmdbox-0.8.4.2/cmdbox/app/features/cli/agent → cmdbox-0.8.4.4/cmdbox/app/features/cli/audit}/__init__.py +0 -0
  81. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/audit/audit_base.py +0 -0
  82. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox/cmdbox_base.py +0 -0
  83. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_a2asv_reload.py +0 -0
  84. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_a2asv_start.py +0 -0
  85. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_a2asv_stop.py +0 -0
  86. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_agent_del.py +0 -0
  87. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_agent_list.py +0 -0
  88. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_agent_load.py +0 -0
  89. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_agent_save.py +0 -0
  90. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_mcp_client.py +0 -0
  91. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_mcp_proxy.py +0 -0
  92. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_mcpsv_del.py +0 -0
  93. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_mcpsv_list.py +0 -0
  94. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_mcpsv_load.py +0 -0
  95. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_mcpsv_save.py +0 -0
  96. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_runner_del.py +0 -0
  97. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_runner_list.py +0 -0
  98. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_runner_load.py +0 -0
  99. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_runner_save.py +0 -0
  100. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_session_del.py +0 -0
  101. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_agent_session_list.py +0 -0
  102. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_audit_createdb.py +0 -0
  103. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_copy.py +0 -0
  104. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_download.py +0 -0
  105. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_is.py +0 -0
  106. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_list.py +0 -0
  107. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_mkdir.py +0 -0
  108. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_move.py +0 -0
  109. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_remove.py +0 -0
  110. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_file_rmdir.py +0 -0
  111. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_http.py +0 -0
  112. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_server_info.py +0 -0
  113. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_client_time.py +0 -0
  114. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmd_check.py +0 -0
  115. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmd_list.py +0 -0
  116. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmd_load.py +0 -0
  117. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_down.py +0 -0
  118. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_exec.py +0 -0
  119. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_info.py +0 -0
  120. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_load.py +0 -0
  121. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_logs.py +0 -0
  122. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_pgsql_install.py +0 -0
  123. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_pgsql_load.py +0 -0
  124. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_reboot.py +0 -0
  125. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_redis_install.py +0 -0
  126. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_redis_load.py +0 -0
  127. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_save.py +0 -0
  128. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_server_install.py +0 -0
  129. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_server_load.py +0 -0
  130. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_setup.py +0 -0
  131. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_uninstall.py +0 -0
  132. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_cmdbox_up.py +0 -0
  133. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_data_delete.py +0 -0
  134. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_data_insert.py +0 -0
  135. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_data_select.py +0 -0
  136. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_data_update.py +0 -0
  137. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_del.py +0 -0
  138. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_idx_create.py +0 -0
  139. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_idx_drop.py +0 -0
  140. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_list.py +0 -0
  141. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_load.py +0 -0
  142. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_save.py +0 -0
  143. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_tbl_create.py +0 -0
  144. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_datasource_tbl_drop.py +0 -0
  145. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_edge_config.py +0 -0
  146. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_edge_start.py +0 -0
  147. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_excel_cell_details.py +0 -0
  148. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_excel_cell_search.py +0 -0
  149. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_excel_cell_values.py +0 -0
  150. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_excel_sheet_list.py +0 -0
  151. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_extract_chunklet.py +0 -0
  152. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_extract_del.py +0 -0
  153. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_extract_list.py +0 -0
  154. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_extract_load.py +0 -0
  155. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_extract_pdfplumber.py +0 -0
  156. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_extract_save.py +0 -0
  157. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_gui_start.py +0 -0
  158. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_gui_stop.py +0 -0
  159. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_billing_calc.py +0 -0
  160. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_billing_load.py +0 -0
  161. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_counter.py +0 -0
  162. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_del.py +0 -0
  163. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_evidences.py +0 -0
  164. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_list.py +0 -0
  165. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_load.py +0 -0
  166. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_plan_del.py +0 -0
  167. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_plan_list.py +0 -0
  168. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_plan_load.py +0 -0
  169. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_plan_save.py +0 -0
  170. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_save.py +0 -0
  171. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_limiter_targets.py +0 -0
  172. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_llm_chat.py +0 -0
  173. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_llm_del.py +0 -0
  174. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_llm_embed.py +0 -0
  175. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_llm_list.py +0 -0
  176. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_llm_load.py +0 -0
  177. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_llm_save.py +0 -0
  178. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_llm_translation.py +0 -0
  179. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_mcpsv_start.py +0 -0
  180. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_mcpsv_stop.py +0 -0
  181. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_omni_pred.py +0 -0
  182. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_rag_build.py +0 -0
  183. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_rag_del.py +0 -0
  184. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_rag_list.py +0 -0
  185. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_rag_load.py +0 -0
  186. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_rag_regist.py +0 -0
  187. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_rag_save.py +0 -0
  188. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_rag_search.py +0 -0
  189. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_server_list.py +0 -0
  190. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_server_start.py +0 -0
  191. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_server_stop.py +0 -0
  192. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_server_time.py +0 -0
  193. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_skill_create.py +0 -0
  194. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_skill_install.py +0 -0
  195. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_skill_list.py +0 -0
  196. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_skill_uninstall.py +0 -0
  197. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_test_gen_cli_docs.py +0 -0
  198. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_test_gen_cli_spec.py +0 -0
  199. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_test_gen_test_spec.py +0 -0
  200. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_test_run_spec.py +0 -0
  201. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_tts_install.py +0 -0
  202. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_tts_list.py +0 -0
  203. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_tts_say.py +0 -0
  204. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_tts_uninstall.py +0 -0
  205. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_url_add.py +0 -0
  206. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_url_del.py +0 -0
  207. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_url_list.py +0 -0
  208. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_url_load.py +0 -0
  209. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_gencert.py +0 -0
  210. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_genpass.py +0 -0
  211. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/cmdbox_web_start.py +0 -0
  212. {cmdbox-0.8.4.2/cmdbox/app/features/cli/audit → cmdbox-0.8.4.4/cmdbox/app/features/cli/datasource}/__init__.py +0 -0
  213. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/datasource/datasource_base.py +0 -0
  214. {cmdbox-0.8.4.2/cmdbox/app/features/cli/datasource → cmdbox-0.8.4.4/cmdbox/app/features/cli/excel}/__init__.py +0 -0
  215. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/excel/excel_base.py +0 -0
  216. {cmdbox-0.8.4.2/cmdbox/app/features/cli/excel → cmdbox-0.8.4.4/cmdbox/app/features/cli/rag}/__init__.py +0 -0
  217. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/rag/rag_base.py +0 -0
  218. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/rag/rag_postgresql.py +0 -0
  219. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/rag/rag_sqlite.py +0 -0
  220. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/rag/rag_store.py +0 -0
  221. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/test/gen_cli_docs.py +0 -0
  222. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/test/gen_cli_spec.py +0 -0
  223. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/test/gen_test_spec.py +0 -0
  224. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/cli/test/run_spec.py +0 -0
  225. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_assets.py +0 -0
  226. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_audit_metrics.py +0 -0
  227. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_bbforce_cmd.py +0 -0
  228. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_copyright.py +0 -0
  229. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_del_cmd.py +0 -0
  230. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_del_pipe.py +0 -0
  231. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_do_signin.py +0 -0
  232. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_do_signout.py +0 -0
  233. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_exec_pipe.py +0 -0
  234. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_filer.py +0 -0
  235. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_filer_download.py +0 -0
  236. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_filer_upload.py +0 -0
  237. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_get_cmd_choices.py +0 -0
  238. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_get_cmds.py +0 -0
  239. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_get_modes.py +0 -0
  240. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_get_server_opt.py +0 -0
  241. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_gui.py +0 -0
  242. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_gui_callback.py +0 -0
  243. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_limiter.py +0 -0
  244. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_list_cmd.py +0 -0
  245. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_list_pipe.py +0 -0
  246. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_load_cmd.py +0 -0
  247. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_load_pipe.py +0 -0
  248. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_raw_cmd.py +0 -0
  249. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_raw_pipe.py +0 -0
  250. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_result.py +0 -0
  251. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_save_cmd.py +0 -0
  252. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_save_pipe.py +0 -0
  253. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_signin.py +0 -0
  254. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_status.py +0 -0
  255. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_url.py +0 -0
  256. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_user_data.py +0 -0
  257. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_users.py +0 -0
  258. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_usesignout.py +0 -0
  259. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/features/web/cmdbox_web_versions_cmdbox.py +0 -0
  260. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/mcp.py +0 -0
  261. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/app/server.py +0 -0
  262. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/autoload.py +0 -0
  263. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/cmdbox/Dockerfile +0 -0
  264. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/cmdbox/docker-compose.yml +0 -0
  265. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/cmdbox/scripts/start.sh +0 -0
  266. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/cmdbox/scripts/up.sh +0 -0
  267. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/pgsql/Dockerfile +0 -0
  268. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/pgsql/scripts/down.sh +0 -0
  269. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/pgsql/scripts/start.sh +0 -0
  270. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/pgsql/scripts/up.sh +0 -0
  271. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/redis/Dockerfile +0 -0
  272. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/redis/scripts/down.sh +0 -0
  273. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/docker/redis/scripts/up.sh +0 -0
  274. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/cmdbox_initdata/client/.cmds/cmd-cmd_list.json +0 -0
  275. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/cmdbox_initdata/current/.cmdbox/user_list.yml +0 -0
  276. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/cmdbox_initdata/server/.agent/translation.json +0 -0
  277. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/cmdbox_initdata/server/.datasource/datasource-ds_default.json +0 -0
  278. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/cmdbox_initdata/setup.yml +0 -0
  279. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/.vscode/launch.json +0 -0
  280. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/requirements.txt +0 -0
  281. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/__init__.py +0 -0
  282. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/__main__.py +0 -0
  283. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/app/app.py +0 -0
  284. {cmdbox-0.8.4.2/cmdbox/app/features/cli/rag → cmdbox-0.8.4.4/cmdbox/extensions/sample_project/sample/app/features/cli}/__init__.py +0 -0
  285. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_client_time.py +0 -0
  286. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/app/features/cli/sample_server_time.py +0 -0
  287. {cmdbox-0.8.4.2/cmdbox/extensions/sample_project/sample/app/features/cli → cmdbox-0.8.4.4/cmdbox/extensions/sample_project/sample/app/features/web}/__init__.py +0 -0
  288. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/extensions/features.yml +0 -0
  289. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/extensions/user_list.yml +0 -0
  290. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/logconf_sample.yml +0 -0
  291. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/version.py +0 -0
  292. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/web/assets/sample/favicon.ico +0 -0
  293. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/sample_project/sample/web/assets/sample/icon.png +0 -0
  294. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/extensions/user_list.yml +0 -0
  295. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_Authlib_1_7_2_BSD_License.txt +0 -0
  296. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_Jinja2_3_1_6_BSD_License.txt +0 -0
  297. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_Markdown_3_10_3_BSD-3-Clause.txt +0 -0
  298. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_MarkupSafe_3_0_3_BSD-3-Clause.txt +0 -0
  299. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_Morfessor_2_0_6_BSD_License.txt +0 -0
  300. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_PyJWT_2_13_0_MIT.txt +0 -0
  301. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_PyYAML_6_0_3_MIT_License.txt +0 -0
  302. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_Pygments_2_21_0_BSD-2-Clause.txt +0 -0
  303. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_SQLAlchemy_2_0_52_MIT.txt +0 -0
  304. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_Sphinx_9_0_4_BSD-2-Clause.txt +0 -0
  305. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_a2a-sdk_1_1_2_Apache-2_0.txt +0 -0
  306. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_aiofile_3_12_3_Apache-2_0.txt +0 -0
  307. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_aiohappyeyeballs_2_7_1_Python_Software_Foundation_License.txt +0 -0
  308. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_aiohttp_3_14_3_Apache-2_0_AND_MIT.txt +0 -0
  309. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_aiologic_0_17_1_ISC_License-ISCL.txt +0 -0
  310. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_aiosignal_1_4_0_Apache_Software_License.txt +0 -0
  311. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_aiosqlite_0_22_1_MIT_License.txt +0 -0
  312. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_alabaster_1_0_0_BSD_License.txt +0 -0
  313. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_annotated-doc_0_0_5_MIT.txt +0 -0
  314. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_annotated-types_0_8_0_MIT.txt +0 -0
  315. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_anyio_4_14_2_MIT.txt +0 -0
  316. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_argcomplete_3_7_2_Apache_Software_License.txt +0 -0
  317. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_async-timeout_5_0_1_Apache_Software_License.txt +0 -0
  318. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_asyncpg_0_31_0_Apache-2_0.txt +0 -0
  319. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_attrs_26_1_0_MIT.txt +0 -0
  320. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_babel_2_18_0_BSD_License.txt +0 -0
  321. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_backports_tarfile_1_2_0_MIT_License.txt +0 -0
  322. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_beartype_0_22_9_MIT_License.txt +0 -0
  323. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_beautifulsoup4_4_15_0_MIT_License.txt +0 -0
  324. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_boto3_1_43_78_Apache-2_0.txt +0 -0
  325. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_botocore_1_43_78_Apache-2_0.txt +0 -0
  326. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_build_1_5_0_MIT.txt +0 -0
  327. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_cachetools_7_1_7_MIT.txt +0 -0
  328. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_caio_0_12_2_Apache-2_0.txt +0 -0
  329. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_certifi_2026_7_22_Mozilla_Public_License_2_0-MPL_2_0.txt +0 -0
  330. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_cffi_2_1_1_MIT-0.txt +0 -0
  331. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_charset-normalizer_3_5_1_MIT.txt +0 -0
  332. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_chunklet-py_2_4_2_MIT.txt +0 -0
  333. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_click_8_4_2_BSD-3-Clause.txt +0 -0
  334. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_cmdbox_0_8_3_3_MIT_License.txt +0 -0
  335. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_cobble_0_1_4_BSD_License.txt +0 -0
  336. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_colorama_0_4_6_BSD_License.txt +0 -0
  337. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_cryptography_50_0_0_Apache-2_0_OR_BSD-3-Clause.txt +0 -0
  338. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_culsans_0_11_0_ISC_License-ISCL.txt +0 -0
  339. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_cyclopts_4_23_2_Apache-2_0.txt +0 -0
  340. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_debugpy_1_8_21_MIT_License.txt +0 -0
  341. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_defusedxml_0_7_1_Python_Software_Foundation_License.txt +0 -0
  342. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_distro_1_9_0_Apache_Software_License.txt +0 -0
  343. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_dnspython_2_8_0_ISC_License-ISCL.txt +0 -0
  344. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_docstring_parser_0_18_0_MIT_License.txt +0 -0
  345. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_docutils_0_22_4_BSD_License-GNU_General_Public_License-GPL-Public_Domain.txt +0 -0
  346. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_email-validator_2_3_0_The_Unlicense-Unlicense.txt +0 -0
  347. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_et_xmlfile_2_0_0_MIT_License.txt +0 -0
  348. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_exceptiongroup_1_3_1_MIT_License.txt +0 -0
  349. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_fastapi_0_141_1_MIT.txt +0 -0
  350. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_fastmcp-slim_3_4_7_Apache-2_0.txt +0 -0
  351. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_fastmcp_3_4_7_Apache-2_0.txt +0 -0
  352. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_fastuuid_0_14_0_BSD_License.txt +0 -0
  353. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_filelock_3_32_3_MIT.txt +0 -0
  354. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_frozenlist_1_8_0_Apache-2_0.txt +0 -0
  355. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_fsspec_2026_7_0_BSD-3-Clause.txt +0 -0
  356. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_ftfy_6_3_1_Apache-2_0.txt +0 -0
  357. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_gevent_26_8_0_MIT.txt +0 -0
  358. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_google-adk_2_7_1_Apache_Software_License.txt +0 -0
  359. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_google-api-core_2_34_0_Apache_Software_License.txt +0 -0
  360. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_google-auth_2_56_3_Apache_Software_License.txt +0 -0
  361. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_google-genai_2_19_0_Apache-2_0.txt +0 -0
  362. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_googleapis-common-protos_1_75_1_Apache_Software_License.txt +0 -0
  363. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_graphviz_0_21_MIT.txt +0 -0
  364. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_greenlet_3_5_5_MIT_AND_PSF-2_0.txt +0 -0
  365. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_griffelib_2_2_0_ISC.txt +0 -0
  366. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_gunicorn_26_1_0_MIT.txt +0 -0
  367. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_h11_0_16_0_MIT_License.txt +0 -0
  368. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_hf-xet_1_6_0_Apache-2_0.txt +0 -0
  369. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_httpcore_1_0_9_BSD-3-Clause.txt +0 -0
  370. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_httpx-sse_0_4_3_MIT.txt +0 -0
  371. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_httpx_0_28_1_BSD_License.txt +0 -0
  372. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_huggingface_hub_1_28_0_Apache_Software_License.txt +0 -0
  373. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_id_1_6_1_Apache_Software_License.txt +0 -0
  374. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_idna_3_19_BSD-3-Clause.txt +0 -0
  375. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_imagesize_2_0_0_MIT_License.txt +0 -0
  376. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_importlib_metadata_8_9_0_Apache-2_0.txt +0 -0
  377. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_indic-nlp-library_0_92_MIT_License.txt +0 -0
  378. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_iniconfig_2_3_0_MIT.txt +0 -0
  379. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_installer_1_0_1_MIT.txt +0 -0
  380. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_itsdangerous_2_2_0_BSD_License.txt +0 -0
  381. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jaraco_classes_3_4_0_MIT_License.txt +0 -0
  382. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jaraco_context_6_1_2_MIT.txt +0 -0
  383. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jaraco_functools_4_6_0_MIT.txt +0 -0
  384. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jiter_0_16_0_MIT.txt +0 -0
  385. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jmespath_1_1_0_MIT_License.txt +0 -0
  386. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_joserfc_1_7_4_BSD_License.txt +0 -0
  387. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_json-rpc_1_15_0_MIT_License.txt +0 -0
  388. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jsonpatch_1_33_BSD_License.txt +0 -0
  389. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jsonpointer_3_1_1_BSD_License.txt +0 -0
  390. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jsonref_1_1_0_MIT.txt +0 -0
  391. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jsonschema-path_0_5_0_Apache_Software_License.txt +0 -0
  392. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jsonschema-specifications_2025_9_1_MIT.txt +0 -0
  393. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_jsonschema_4_26_0_MIT.txt +0 -0
  394. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_keyring_25_7_0_MIT.txt +0 -0
  395. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_langchain-classic_1_0_8_MIT_License.txt +0 -0
  396. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_langchain-community_0_4_2_MIT.txt +0 -0
  397. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_langchain-core_1_6_0_MIT_License.txt +0 -0
  398. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_langchain-protocol_0_0_18_MIT_License.txt +0 -0
  399. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_langchain-text-splitters_1_1_2_MIT_License.txt +0 -0
  400. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_langsmith_0_11_1_MIT.txt +0 -0
  401. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_litellm_1_98_0_MIT.txt +0 -0
  402. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_loguru_0_7_3_MIT_License.txt +0 -0
  403. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_lxml_6_1_2_BSD-3-Clause.txt +0 -0
  404. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_mammoth_1_12_1_BSD_License.txt +0 -0
  405. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_markdown-it-py_4_2_0_MIT_License.txt +0 -0
  406. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_markdownify_1_2_3_MIT_License.txt +0 -0
  407. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_mcp_1_29_0_MIT_License.txt +0 -0
  408. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_mdurl_0_1_2_MIT_License.txt +0 -0
  409. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_more-itertools_11_1_0_MIT.txt +0 -0
  410. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_mpire_2_10_2_MIT_License.txt +0 -0
  411. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_multidict_6_7_1_Apache_License_2_0.txt +0 -0
  412. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_nab-index_0_0_13_MIT.txt +0 -0
  413. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_nab-python_0_0_13_MIT.txt +0 -0
  414. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_nab-resolver_0_0_13_MIT.txt +0 -0
  415. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_nh3_0_3_6_MIT.txt +0 -0
  416. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_numpy_2_4_6_BSD-3-Clause_AND_0BSD_AND_MIT_AND_Zlib_AND_CC0-1_0.txt +0 -0
  417. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_odfpy_1_4_1_Apache_Software_License-GNU_General_Public_License-GPL-GNU_Library_or_Lesser_General_Public_License-LGPL.txt +0 -0
  418. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_openai_2_54_0_Apache_Software_License.txt +0 -0
  419. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_openapi-pydantic_0_5_1_MIT_License.txt +0 -0
  420. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_openpyxl_3_1_5_MIT_License.txt +0 -0
  421. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_opentelemetry-api_1_42_1_Apache-2_0.txt +0 -0
  422. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_opentelemetry-sdk_1_42_1_Apache-2_0.txt +0 -0
  423. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_opentelemetry-semantic-conventions_0_63b1_Apache-2_0.txt +0 -0
  424. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_orjson_3_12_0_MPL-2_0_AND-Apache-2_0_OR_MIT.txt +0 -0
  425. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_packaging_26_3_Apache-2_0_OR_BSD-2-Clause.txt +0 -0
  426. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pandas_3_0_5_BSD_License.txt +0 -0
  427. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pathable_0_6_0_Apache_Software_License.txt +0 -0
  428. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pdfminer_six_20260107_MIT.txt +0 -0
  429. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pdfplumber_0_11_10_MIT_License.txt +0 -0
  430. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pillow_12_3_0_MIT-CMU.txt +0 -0
  431. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pip_24_0_MIT_License.txt +0 -0
  432. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pipdeptree_4_2_1_MIT.txt +0 -0
  433. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_platformdirs_4_11_3_MIT.txt +0 -0
  434. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pluggy_1_6_0_MIT_License.txt +0 -0
  435. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_plyer_2_1_0_MIT_License.txt +0 -0
  436. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_prettytable_3_18_0_BSD-3-Clause.txt +0 -0
  437. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_prompt_toolkit_3_0_53_BSD_License.txt +0 -0
  438. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_propcache_0_5_2_Apache_Software_License.txt +0 -0
  439. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_proto-plus_1_28_3_Apache_Software_License.txt +0 -0
  440. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_protobuf_6_33_6_3-Clause_BSD_License.txt +0 -0
  441. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_psycopg-binary_3_3_4_LGPL-3_0-only.txt +0 -0
  442. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_psycopg-pool_3_3_1_LGPL-3_0-only.txt +0 -0
  443. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_psycopg_3_3_4_LGPL-3_0-only.txt +0 -0
  444. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_py-key-value-aio_0_4_5_Apache-2_0.txt +0 -0
  445. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_py3langid_0_3_0_BSD_License.txt +0 -0
  446. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pyasn1_0_6_4_BSD-2-Clause.txt +0 -0
  447. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pyasn1_modules_0_4_2_BSD_License.txt +0 -0
  448. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pycparser_3_0_BSD-3-Clause.txt +0 -0
  449. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pycryptodome_3_23_0_BSD_License-Public_Domain.txt +0 -0
  450. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pydantic-settings_2_15_0_MIT.txt +0 -0
  451. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pydantic_2_13_4_MIT.txt +0 -0
  452. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pydantic_core_2_46_4_MIT.txt +0 -0
  453. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pylatexenc_2_10_MIT_License.txt +0 -0
  454. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pypdfium2_5_13_0_BSD-3-Clause-Apache-2_0-dependency_licenses.txt +0 -0
  455. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pyperclip_1_11_0_BSD_License.txt +0 -0
  456. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pyproject_hooks_1_2_0_MIT_License.txt +0 -0
  457. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pytest_9_1_1_MIT.txt +0 -0
  458. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_python-dateutil_2_9_0_post0_Apache_Software_License-BSD_License.txt +0 -0
  459. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_python-docx_1_2_0_MIT_License.txt +0 -0
  460. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_python-dotenv_1_2_3_BSD-3-Clause.txt +0 -0
  461. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_python-multipart_0_0_32_Apache-2_0.txt +0 -0
  462. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pywin32-ctypes_0_2_3_BSD-3-Clause.txt +0 -0
  463. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_pywin32_312_Python_Software_Foundation_License.txt +0 -0
  464. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_questionary_2_1_1_MIT_License.txt +0 -0
  465. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_radicli_0_0_26_MIT_License.txt +0 -0
  466. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_readme_renderer_45_0_Apache-2_0.txt +0 -0
  467. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_redis_8_1_0_MIT.txt +0 -0
  468. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_referencing_0_37_0_MIT.txt +0 -0
  469. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_regex_2026_7_19_Apache-2_0_AND_CNRI-Python.txt +0 -0
  470. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_requests-toolbelt_1_0_0_Apache_Software_License.txt +0 -0
  471. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_requests_2_34_2_Apache_Software_License.txt +0 -0
  472. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_retrie_0_3_1_MIT_License.txt +0 -0
  473. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_rfc3986_2_0_0_Apache_Software_License.txt +0 -0
  474. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_rich-rst_2_1_0_MIT.txt +0 -0
  475. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_rich_15_0_0_MIT_License.txt +0 -0
  476. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_roman-numerals_4_1_0_0BSD_OR_CC0-1_0.txt +0 -0
  477. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_rpds-py_2026_6_3_MIT.txt +0 -0
  478. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_s3transfer_0_19_2_Apache_Software_License.txt +0 -0
  479. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sentencex_1_0_30_MIT.txt +0 -0
  480. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_setuptools_65_5_0_MIT_License.txt +0 -0
  481. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_shellingham_1_5_4_ISC_License-ISCL.txt +0 -0
  482. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_six_1_17_0_MIT_License.txt +0 -0
  483. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sniffio_1_3_1_Apache_Software_License-MIT_License.txt +0 -0
  484. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_snowballstemmer_3_1_1_BSD-3-Clause.txt +0 -0
  485. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_soupsieve_2_9_2_MIT.txt +0 -0
  486. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinx-argparse_0_6_1_MIT.txt +0 -0
  487. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinx-intl_2_3_2_BSD-2-Clause.txt +0 -0
  488. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinx-last-updated-by-git_0_3_8_BSD_License.txt +0 -0
  489. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinx-sitemap_2_9_0_MIT.txt +0 -0
  490. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinx_fontawesome_0_0_6_GNU_General_Public_License_v2-GPLv2.txt +0 -0
  491. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinx_rtd_theme_3_1_0_MIT_License.txt +0 -0
  492. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinxcontrib-applehelp_2_0_0_BSD_License.txt +0 -0
  493. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinxcontrib-devhelp_2_0_0_BSD_License.txt +0 -0
  494. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinxcontrib-htmlhelp_2_1_0_BSD_License.txt +0 -0
  495. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinxcontrib-jquery_4_1_BSD_License.txt +0 -0
  496. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinxcontrib-jsmath_1_0_1_BSD_License.txt +0 -0
  497. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinxcontrib-qthelp_2_0_0_BSD_License.txt +0 -0
  498. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sphinxcontrib-serializinghtml_2_0_0_BSD_License.txt +0 -0
  499. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sqlite-vec_0_1_9_MIT_License-Apache_License-Version_2_0.txt +0 -0
  500. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_sse-starlette_3_4_8_BSD-3-Clause.txt +0 -0
  501. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_starlette_1_6_0_BSD-3-Clause.txt +0 -0
  502. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_starsessions_2_2_1_MIT_License.txt +0 -0
  503. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_striprtf_0_0_33_BSD-3-Clause.txt +0 -0
  504. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tabulate2_1_10_2_MIT_License.txt +0 -0
  505. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tabulate_0_10_0_MIT.txt +0 -0
  506. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tenacity_9_1_4_Apache_Software_License.txt +0 -0
  507. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tiktoken_0_14_0_MIT_License-Copyright-c-2022_OpenAI-Shantanu_Jain-Permission_is_hereby_granted-free_of_charge-to_any_per.txt +0 -0
  508. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tokenizers_0_23_1_Apache_Software_License.txt +0 -0
  509. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tomli_2_4_1_MIT.txt +0 -0
  510. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tomli_w_1_2_0_MIT_License.txt +0 -0
  511. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tqdm_4_70_0_MPL-2_0_AND_MIT.txt +0 -0
  512. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_truststore_0_10_4_MIT.txt +0 -0
  513. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_twine_7_0_0_Apache-2_0.txt +0 -0
  514. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_typer_0_27_1_MIT.txt +0 -0
  515. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_typing-inspection_0_4_4_MIT.txt +0 -0
  516. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_typing_extensions_4_16_0_PSF-2_0.txt +0 -0
  517. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tzdata_2026_3_Apache-2_0.txt +0 -0
  518. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_tzlocal_5_4_4_MIT.txt +0 -0
  519. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_uncalled-for_0_4_0_MIT_License.txt +0 -0
  520. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_urllib3_2_7_0_MIT.txt +0 -0
  521. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_uuid_utils_0_17_0_BSD-3-Clause.txt +0 -0
  522. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_uvicorn_0_52_4_BSD-3-Clause.txt +0 -0
  523. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_watchdog_6_0_0_Apache_Software_License.txt +0 -0
  524. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_watchfiles_1_2_0_MIT_License.txt +0 -0
  525. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_wcwidth_0_8_2_MIT.txt +0 -0
  526. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_websockets_15_0_1_BSD_License.txt +0 -0
  527. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_wheel_0_48_0_MIT.txt +0 -0
  528. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_win32_setctime_1_2_0_MIT_License.txt +0 -0
  529. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_wrapt_2_3_0_BSD-2-Clause.txt +0 -0
  530. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_wsproto_1_3_2_MIT.txt +0 -0
  531. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_xxhash_4_0_1_BSD-2-Clause.txt +0 -0
  532. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_yarl_1_24_5_Apache-2_0.txt +0 -0
  533. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_yasbd-lib_0_15_1_MPL-2_0.txt +0 -0
  534. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_zipp_4_1_0_MIT.txt +0 -0
  535. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_zope_event_6_2_ZPL-2_1.txt +0 -0
  536. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_zope_interface_8_6_ZPL-2_1.txt +0 -0
  537. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/LICENSE_zstandard_0_25_0_BSD-3-Clause.txt +0 -0
  538. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/licenses/files.txt +0 -0
  539. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/logconf_cmdbox.yml +0 -0
  540. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/agent.html +0 -0
  541. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent.css +0 -0
  542. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent.js +0 -0
  543. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_chat_input.html +0 -0
  544. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_document.js +0 -0
  545. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_ext.css +0 -0
  546. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_files.html +0 -0
  547. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_files.js +0 -0
  548. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_history.js +0 -0
  549. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_logo.js +0 -0
  550. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_logo.png +0 -0
  551. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_logo.svg +0 -0
  552. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_navbar.html +0 -0
  553. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings.html +0 -0
  554. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings.js +0 -0
  555. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_agent.html +0 -0
  556. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_agent.js +0 -0
  557. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_datasource.html +0 -0
  558. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_datasource.js +0 -0
  559. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_embed.html +0 -0
  560. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_embed.js +0 -0
  561. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_extract.html +0 -0
  562. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_extract.js +0 -0
  563. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_llm.html +0 -0
  564. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_llm.js +0 -0
  565. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_mcpsv.html +0 -0
  566. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_mcpsv.js +0 -0
  567. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_rag.html +0 -0
  568. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_rag.js +0 -0
  569. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_runner.html +0 -0
  570. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_runner.js +0 -0
  571. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_skill.html +0 -0
  572. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_skill.js +0 -0
  573. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_settings_tts.js +0 -0
  574. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/agent_sidebar_content.html +0 -0
  575. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/agent/main.js +0 -0
  576. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/apexcharts/apexcharts.css +0 -0
  577. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/apexcharts/apexcharts.min.js +0 -0
  578. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/bootstrap/bootstrap.bundle.min.5.3.0.js +0 -0
  579. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/bootstrap/bootstrap.min.5.3.0.css +0 -0
  580. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/audit.js +0 -0
  581. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/color_mode.css +0 -0
  582. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/color_mode_ext.css +0 -0
  583. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/favicon.ico +0 -0
  584. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/filer_modal.js +0 -0
  585. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/icon.png +0 -0
  586. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/icon.svg +0 -0
  587. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/list_cmd.js +0 -0
  588. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/list_pipe.js +0 -0
  589. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/main.js +0 -0
  590. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/open_capture.js +0 -0
  591. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/open_output_json.js +0 -0
  592. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/result.js +0 -0
  593. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/signin.js +0 -0
  594. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/svgicon.js +0 -0
  595. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/users.js +0 -0
  596. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/view_raw.js +0 -0
  597. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/cmdbox/view_result.js +0 -0
  598. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/encodingjs/LICENSE.txt +0 -0
  599. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/encodingjs/encoding.js +0 -0
  600. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/encodingjs/encoding.min.js +0 -0
  601. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/filer/filer.js +0 -0
  602. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/filer/main.css +0 -0
  603. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/filer/main.js +0 -0
  604. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/highlight/default.css +0 -0
  605. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/highlight/highlight.min.js +0 -0
  606. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/highlight/styles/tokyo-night-dark.min.css +0 -0
  607. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery/jquery.min.3.2.0.js +0 -0
  608. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-linedtextarea/README.md +0 -0
  609. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea-license.txt +0 -0
  610. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.css +0 -0
  611. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.html +0 -0
  612. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-linedtextarea/jquery-linedtextarea.js +0 -0
  613. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-resizable/jquery-resizable.min.js +0 -0
  614. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/AUTHORS.txt +0 -0
  615. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/LICENSE.txt +0 -0
  616. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_444444_256x240.png +0 -0
  617. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_555555_256x240.png +0 -0
  618. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_777620_256x240.png +0 -0
  619. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_777777_256x240.png +0 -0
  620. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_cc0000_256x240.png +0 -0
  621. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
  622. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/jquery-ui.min.css +0 -0
  623. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/jquery-ui.min.js +0 -0
  624. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/jquery-ui.structure.min.css +0 -0
  625. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/jquery-ui.theme.min.css +0 -0
  626. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/jquery-ui/package.json +0 -0
  627. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/lightbox2/css/lightbox.min.css +0 -0
  628. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/lightbox2/images/close.png +0 -0
  629. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/lightbox2/images/loading.gif +0 -0
  630. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/lightbox2/images/next.png +0 -0
  631. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/lightbox2/images/prev.png +0 -0
  632. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/lightbox2/js/lightbox.min.js +0 -0
  633. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/limiter/limiter.js +0 -0
  634. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/limiter/limiter_plan.js +0 -0
  635. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/limiter/main.js +0 -0
  636. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/marked/marked.umd.js +0 -0
  637. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/split-pane/split-pane.css +0 -0
  638. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/split-pane/split-pane.js +0 -0
  639. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/tree-menu/css/tree-menu.css +0 -0
  640. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/tree-menu/image/file.png +0 -0
  641. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/tree-menu/image/folder-close.png +0 -0
  642. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/tree-menu/image/folder-open.png +0 -0
  643. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets/tree-menu/js/tree-menu.js +0 -0
  644. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/assets_license_list.txt +0 -0
  645. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/audit.html +0 -0
  646. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/filer.html +0 -0
  647. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/gui.html +0 -0
  648. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/limiter.html +0 -0
  649. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/result.html +0 -0
  650. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/signin.html +0 -0
  651. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/users.html +0 -0
  652. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox/web/voicevox_license_list.txt +0 -0
  653. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox.egg-info/dependency_links.txt +0 -0
  654. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox.egg-info/entry_points.txt +0 -0
  655. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/cmdbox.egg-info/top_level.txt +0 -0
  656. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/setup.cfg +0 -0
  657. {cmdbox-0.8.4.2 → cmdbox-0.8.4.4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmdbox
3
- Version: 0.8.4.2
3
+ Version: 0.8.4.4
4
4
  Summary: cmdbox: It is a command line application with a plugin mechanism.
5
5
  Author-email: hamacom2004jp <hamacom2004jp@gmail.com>
6
6
  License: MIT
@@ -56,8 +56,9 @@ Requires-Dist: pydantic<3.0.0,>=2.0.0; extra == "agent-mcp"
56
56
  Requires-Dist: fastmcp>=2.14.4; extra == "agent-mcp"
57
57
  Requires-Dist: mcp<2.0.0,>=1.24.0; extra == "agent-mcp"
58
58
  Provides-Extra: agent-adk
59
- Requires-Dist: google-adk>=2.6.3; extra == "agent-adk"
59
+ Requires-Dist: google-adk<2.9,>=2.8; extra == "agent-adk"
60
60
  Requires-Dist: a2a-sdk>=1.0.0; extra == "agent-adk"
61
+ Requires-Dist: culsans>=0.11.0; extra == "agent-adk"
61
62
  Requires-Dist: litellm>=1.82.6; extra == "agent-adk"
62
63
  Provides-Extra: agent-mem
63
64
  Provides-Extra: rag
@@ -96,6 +96,9 @@ class RedisClient(object):
96
96
  def keys(self, pattern:str):
97
97
  return self.redis_cli.keys(pattern)
98
98
 
99
+ def get(self, name:str):
100
+ return self.redis_cli.get(name)
101
+
99
102
  def check_server(self, find_svname:bool=False, retry_count:int=20, retry_interval:int=5, outstatus:bool=False):
100
103
  """
101
104
  Redisサーバーにpingを送信し、応答があるか確認する
@@ -0,0 +1,30 @@
1
+ """
2
+ プロンプトインジェクション検知パッケージ
3
+
4
+ 複数の検知プラグインとユーティリティクラスを提供します。
5
+ """
6
+
7
+ # 共通定義(常にインポート可能)
8
+ from .prompt_injection_common import PromptInjectionException
9
+
10
+ # プラグインクラス(google.adk が利用可能な環境でのみインポート)
11
+ try:
12
+ from .detection_sql_injection import SQLInjectionDetectionPlugin
13
+ from .javascript_injection import JavaScriptInjectionPlugin
14
+ from .detection_template_injection import TemplateInjectionDetectionPlugin
15
+ from .detection_malicious_keyword import MaliciousKeywordDetectionPlugin
16
+ from .dangerous_sequence import DangerousSequencePlugin
17
+
18
+ __all__ = [
19
+ 'PromptInjectionException',
20
+ 'SQLInjectionDetectionPlugin',
21
+ 'JavaScriptInjectionPlugin',
22
+ 'TemplateInjectionDetectionPlugin',
23
+ 'MaliciousKeywordDetectionPlugin',
24
+ 'DangerousSequencePlugin',
25
+ ]
26
+ except ImportError:
27
+ # google.adk が利用不可の場合は、共通定義のみをエクスポート
28
+ __all__ = [
29
+ 'PromptInjectionException',
30
+ ]
@@ -0,0 +1,75 @@
1
+ """
2
+ 危険な文字シーケンス検知プラグイン
3
+
4
+ SQL コメント、ヌルバイト、16進数エスケープなどの危険な文字パターンを検知します。
5
+ """
6
+
7
+ import re
8
+ import logging
9
+ from typing import Optional
10
+ from google.adk.agents.invocation_context import InvocationContext
11
+ from google.adk.events import Event
12
+ from google.adk.plugins.base_plugin import BasePlugin
13
+
14
+
15
+ class DangerousSequencePlugin(BasePlugin):
16
+ """危険な文字シーケンスを検知して無害化するプラグイン"""
17
+
18
+ PATTERNS = [
19
+ (r"(?i)(--\s+|#\s+|;)", lambda m: " "), # SQL コメント・コマンド区切り → スペース
20
+ (r"(\x00|\x1a)", lambda m: ""), # ヌルバイト・ファイル終端 → 削除
21
+ (r"(\\x[0-9a-f]{2})", lambda m: "[hex]"), # 16進数エスケープ → テキスト化
22
+ ]
23
+
24
+ def __init__(self, logger: logging.Logger):
25
+ super().__init__(name='dangerous_sequence')
26
+ self.logger = logger
27
+
28
+ def sanitize_text(self, text: str) -> str:
29
+ """指定されたテキストを危険な文字シーケンスから無害化"""
30
+ sanitized_text = text
31
+ for pattern, replacement in self.PATTERNS:
32
+ try:
33
+ if re.search(pattern, sanitized_text):
34
+ matches = re.findall(pattern, sanitized_text)
35
+ self.logger.warning(
36
+ f"Dangerous sequences detected and sanitized: {matches}"
37
+ )
38
+ sanitized_text = re.sub(pattern, replacement, sanitized_text)
39
+ except re.error:
40
+ continue
41
+ return sanitized_text
42
+
43
+ async def on_user_message_callback(self, *, invocation_context, user_message):
44
+ """ユーザーメッセージをチェックして危険な文字シーケンスを無害化"""
45
+ message_text = None
46
+ if user_message.parts and len(user_message.parts) > 0:
47
+ part = user_message.parts[0]
48
+ if hasattr(part, 'text') and part.text:
49
+ message_text = part.text
50
+ if message_text:
51
+ sanitized_text = self.sanitize_text(message_text)
52
+ # メッセージが無害化された場合はテキストを更新
53
+ if sanitized_text != message_text:
54
+ if hasattr(user_message.parts[0], 'text'):
55
+ user_message.parts[0].text = sanitized_text
56
+ self.logger.info("User message has been sanitized")
57
+ return None
58
+
59
+ async def on_event_callback(self, *, invocation_context: InvocationContext, event: Event) -> Optional[Event]:
60
+ """イベントをチェックして危険な文字シーケンスを無害化"""
61
+ # イベントのコンテンツをチェック
62
+ if hasattr(event, 'content') and event.content:
63
+ content = event.content
64
+ # コンテンツがテキストを持つか確認
65
+ if hasattr(content, 'parts') and content.parts and len(content.parts) > 0:
66
+ part = content.parts[0]
67
+ if hasattr(part, 'text') and part.text:
68
+ original_text = part.text
69
+ sanitized_text = self.sanitize_text(original_text)
70
+ # テキストが無害化された場合はイベントを更新
71
+ if sanitized_text != original_text:
72
+ if hasattr(part, 'text'):
73
+ part.text = sanitized_text
74
+ self.logger.info("Event response has been sanitized")
75
+ return event
@@ -0,0 +1,72 @@
1
+ """
2
+ 悪意のあるキーワード検知プラグイン
3
+
4
+ 危険なキーワードやコマンドのパターンを検知します。
5
+ """
6
+
7
+ import re
8
+ import logging
9
+ from typing import Optional
10
+ from google.adk.plugins.base_plugin import BasePlugin
11
+ from google.adk.agents.invocation_context import InvocationContext
12
+ from google.adk.events import Event
13
+ from .prompt_injection_common import PromptInjectionException
14
+
15
+
16
+ class MaliciousKeywordDetectionPlugin(BasePlugin):
17
+ """悪意のあるキーワードを検知するプラグイン"""
18
+
19
+ PATTERNS = [
20
+ r"(?i)\b(drop\s+database|truncate\s+table|exec\s+xp_|sp_oacreate)",
21
+ r"(?i)(\bignore\b|\bby\s+pass\b|\badmin\b.*?\bpassword\b)",
22
+ r"(?i)(union\s+all\s+select)",
23
+ ]
24
+
25
+ def __init__(self, logger: logging.Logger):
26
+ super().__init__(name='malicious_keyword_detection')
27
+ self.logger = logger
28
+
29
+ async def on_user_message_callback(self, *, invocation_context, user_message):
30
+ """ユーザーメッセージをチェックして悪意のあるキーワードを検知"""
31
+ message_text = None
32
+ if user_message.parts and len(user_message.parts) > 0:
33
+ part = user_message.parts[0]
34
+ if hasattr(part, 'text') and part.text:
35
+ message_text = part.text
36
+
37
+ if message_text:
38
+ for pattern in self.PATTERNS:
39
+ try:
40
+ match = re.search(pattern, message_text)
41
+ if match:
42
+ raise PromptInjectionException(
43
+ f"Malicious keyword detected: {match.group(0)[:50]}",
44
+ 'Malicious Keywords',
45
+ match.group(0)
46
+ )
47
+ except re.error:
48
+ continue
49
+
50
+ return None
51
+
52
+ async def on_event_callback(self, *, invocation_context: InvocationContext, event: Event) -> Optional[Event]:
53
+ """イベントをチェックして悪意のあるキーワードを検知"""
54
+ # イベントのコンテンツをチェック
55
+ if hasattr(event, 'content') and event.content:
56
+ content = event.content
57
+ # コンテンツがテキストを持つか確認
58
+ if hasattr(content, 'parts') and content.parts and len(content.parts) > 0:
59
+ part = content.parts[0]
60
+ if hasattr(part, 'text') and part.text:
61
+ text = part.text
62
+ # パターンマッチングを実行
63
+ for pattern in self.PATTERNS:
64
+ try:
65
+ match = re.search(pattern, text)
66
+ if match:
67
+ self.logger.warning(
68
+ f"Malicious keyword detected in event response: {match.group(0)[:50]}"
69
+ )
70
+ except re.error:
71
+ continue
72
+ return event
@@ -0,0 +1,74 @@
1
+ """
2
+ SQL インジェクション検知プラグイン
3
+
4
+ SQL インジェクション攻撃パターンを検知し、PromptInjectionException を発生させます。
5
+ """
6
+
7
+ import re
8
+ import logging
9
+ from typing import Optional
10
+ from google.adk.plugins.base_plugin import BasePlugin
11
+ from google.adk.agents.invocation_context import InvocationContext
12
+ from google.adk.events import Event
13
+ from .prompt_injection_common import PromptInjectionException
14
+
15
+
16
+ class SQLInjectionDetectionPlugin(BasePlugin):
17
+ """SQL インジェクション攻撃を検知するプラグイン"""
18
+
19
+ PATTERNS = [
20
+ r"(?i)\b(union|select|insert|update|delete|drop|create|alter|exec|execute)\b.*?(?:from|into|values|set|where|;)",
21
+ r"(?i)('\s*or\s*'|'\s*or\s*1\s*=\s*1|--\s*|;.*?(union|select|insert))",
22
+ r"(?i)(\bor\b\s*1\s*=\s*1|\bor\b\s*true\b)",
23
+ r"(?i)(xp_cmdshell|exec\s+sp_|sp_executesql)",
24
+ r"(?i)(sqlmap|' and '1'='1)",
25
+ ]
26
+
27
+ def __init__(self, logger: logging.Logger):
28
+ super().__init__(name='sql_injection_detection')
29
+ self.logger = logger
30
+
31
+ async def on_user_message_callback(self, *, invocation_context, user_message):
32
+ """ユーザーメッセージをチェックして SQL インジェクションを検知"""
33
+ message_text = None
34
+ if user_message.parts and len(user_message.parts) > 0:
35
+ part = user_message.parts[0]
36
+ if hasattr(part, 'text') and part.text:
37
+ message_text = part.text
38
+
39
+ if message_text:
40
+ for pattern in self.PATTERNS:
41
+ try:
42
+ match = re.search(pattern, message_text)
43
+ if match:
44
+ raise PromptInjectionException(
45
+ f"SQL injection detected: {match.group(0)[:50]}",
46
+ 'SQL Injection',
47
+ match.group(0)
48
+ )
49
+ except re.error:
50
+ continue
51
+
52
+ return None
53
+
54
+ async def on_event_callback(self, *, invocation_context: InvocationContext, event: Event) -> Optional[Event]:
55
+ """イベントをチェックして SQL インジェクションを検知"""
56
+ # イベントのコンテンツをチェック
57
+ if hasattr(event, 'content') and event.content:
58
+ content = event.content
59
+ # コンテンツがテキストを持つか確認
60
+ if hasattr(content, 'parts') and content.parts and len(content.parts) > 0:
61
+ part = content.parts[0]
62
+ if hasattr(part, 'text') and part.text:
63
+ text = part.text
64
+ # パターンマッチングを実行
65
+ for pattern in self.PATTERNS:
66
+ try:
67
+ match = re.search(pattern, text)
68
+ if match:
69
+ self.logger.warning(
70
+ f"SQL injection detected in event response: {match.group(0)[:50]}"
71
+ )
72
+ except re.error:
73
+ continue
74
+ return event
@@ -0,0 +1,76 @@
1
+ """
2
+ Jinja2 テンプレートインジェクション検知プラグイン
3
+
4
+ Jinja2 テンプレートエンジンを対象とした SSTI(Server-Side Template Injection)パターンを検知します。
5
+ """
6
+
7
+ import re
8
+ import logging
9
+ from typing import Optional
10
+ from google.adk.plugins.base_plugin import BasePlugin
11
+ from google.adk.agents.invocation_context import InvocationContext
12
+ from google.adk.events import Event
13
+ from .prompt_injection_common import PromptInjectionException
14
+
15
+
16
+ class TemplateInjectionDetectionPlugin(BasePlugin):
17
+ """Jinja2/テンプレートインジェクション攻撃を検知するプラグイン"""
18
+
19
+ PATTERNS = [
20
+ r"\{\{.*?__.*?\}\}",
21
+ r"\{\{.*?self\._TemplateModule__dict__.*?\}\}",
22
+ r"\{%.*?import.*?%\}",
23
+ r"\{\{.*?config\.items\(\).*?\}\}",
24
+ r"\{\{.*?request\.environ.*?\}\}",
25
+ r"{{.*?popen.*?}}",
26
+ r"{{.*?system.*?}}",
27
+ ]
28
+
29
+ def __init__(self, logger: logging.Logger):
30
+ super().__init__(name='template_injection_detection')
31
+ self.logger = logger
32
+
33
+ async def on_user_message_callback(self, *, invocation_context, user_message):
34
+ """ユーザーメッセージをチェックして Jinja2 テンプレートインジェクションを検知"""
35
+ message_text = None
36
+ if user_message.parts and len(user_message.parts) > 0:
37
+ part = user_message.parts[0]
38
+ if hasattr(part, 'text') and part.text:
39
+ message_text = part.text
40
+
41
+ if message_text:
42
+ for pattern in self.PATTERNS:
43
+ try:
44
+ match = re.search(pattern, message_text, re.DOTALL)
45
+ if match:
46
+ raise PromptInjectionException(
47
+ f"Template injection detected: {match.group(0)[:50]}",
48
+ 'Template Injection',
49
+ match.group(0)
50
+ )
51
+ except re.error:
52
+ continue
53
+
54
+ return None
55
+
56
+ async def on_event_callback(self, *, invocation_context: InvocationContext, event: Event) -> Optional[Event]:
57
+ """イベントをチェックして Jinja2 テンプレートインジェクションを検知"""
58
+ # イベントのコンテンツをチェック
59
+ if hasattr(event, 'content') and event.content:
60
+ content = event.content
61
+ # コンテンツがテキストを持つか確認
62
+ if hasattr(content, 'parts') and content.parts and len(content.parts) > 0:
63
+ part = content.parts[0]
64
+ if hasattr(part, 'text') and part.text:
65
+ text = part.text
66
+ # パターンマッチングを実行
67
+ for pattern in self.PATTERNS:
68
+ try:
69
+ match = re.search(pattern, text, re.DOTALL)
70
+ if match:
71
+ self.logger.warning(
72
+ f"Template injection detected in event response: {match.group(0)[:50]}"
73
+ )
74
+ except re.error:
75
+ continue
76
+ return event
@@ -0,0 +1,93 @@
1
+ """
2
+ JavaScript/HTML インジェクション無害化プラグイン
3
+
4
+ XSS(クロスサイトスクリプティング)および HTML インジェクション攻撃パターンを無害化します。
5
+ """
6
+
7
+ import re
8
+ import html
9
+ import logging
10
+ from typing import Optional
11
+ from google.adk.plugins.base_plugin import BasePlugin
12
+ from google.adk.agents.invocation_context import InvocationContext
13
+ from google.adk.events import Event
14
+
15
+
16
+ class JavaScriptInjectionPlugin(BasePlugin):
17
+ """JavaScript/HTML インジェクション攻撃を無害化するプラグイン"""
18
+
19
+ # JavaScript 検出パターン
20
+ JS_PATTERNS = [
21
+ (r"javascript:", re.IGNORECASE),
22
+ (r"on\w+\s*=\s*[\"']?.*?[\"']", re.IGNORECASE),
23
+ (r"eval\s*\(", re.IGNORECASE),
24
+ (r"new\s+Function\s*\(", re.IGNORECASE),
25
+ ]
26
+
27
+ def __init__(self, logger: logging.Logger):
28
+ super().__init__(name='javascript_injection')
29
+ self.logger = logger
30
+
31
+ def sanitize_text(self, text: str) -> str:
32
+ """指定されたテキストを JavaScript/HTML インジェクションから無害化"""
33
+ sanitized_text = text
34
+ dangerous_detected = False
35
+
36
+ # JavaScript パターンの検出
37
+ for pattern, flags in self.JS_PATTERNS:
38
+ try:
39
+ if re.search(pattern, sanitized_text, flags):
40
+ dangerous_detected = True
41
+ matches = re.findall(pattern, sanitized_text, flags)
42
+ self.logger.warning(
43
+ f"JavaScript injection detected: {matches}"
44
+ )
45
+ except re.error:
46
+ continue
47
+
48
+ # HTML タグの検出(<, > が含まれている)
49
+ if '<' in sanitized_text or '>' in sanitized_text:
50
+ dangerous_detected = True
51
+ self.logger.warning("HTML content detected and will be escaped")
52
+
53
+ # HTML 特殊文字をエスケープして無害化
54
+ if dangerous_detected:
55
+ sanitized_text = html.escape(sanitized_text, quote=True)
56
+
57
+ return sanitized_text
58
+
59
+ async def on_user_message_callback(self, *, invocation_context, user_message):
60
+ """ユーザーメッセージをチェックして JavaScript インジェクションを無害化"""
61
+ message_text = None
62
+ if user_message.parts and len(user_message.parts) > 0:
63
+ part = user_message.parts[0]
64
+ if hasattr(part, 'text') and part.text:
65
+ message_text = part.text
66
+
67
+ if message_text:
68
+ sanitized_text = self.sanitize_text(message_text)
69
+ # メッセージが無害化された場合はテキストを更新
70
+ if sanitized_text != message_text:
71
+ if hasattr(user_message.parts[0], 'text'):
72
+ user_message.parts[0].text = sanitized_text
73
+ self.logger.info("User message has been sanitized")
74
+
75
+ return None
76
+
77
+ async def on_event_callback(self, *, invocation_context: InvocationContext, event: Event) -> Optional[Event]:
78
+ """イベントをチェックして JavaScript/HTML インジェクションを無害化"""
79
+ # イベントのコンテンツをチェック
80
+ if hasattr(event, 'content') and event.content:
81
+ content = event.content
82
+ # コンテンツがテキストを持つか確認
83
+ if hasattr(content, 'parts') and content.parts and len(content.parts) > 0:
84
+ part = content.parts[0]
85
+ if hasattr(part, 'text') and part.text:
86
+ original_text = part.text
87
+ sanitized_text = self.sanitize_text(original_text)
88
+ # テキストが無害化された場合はイベントを更新
89
+ if sanitized_text != original_text:
90
+ if hasattr(part, 'text'):
91
+ part.text = sanitized_text
92
+ self.logger.info("Event response has been sanitized")
93
+ return event
@@ -0,0 +1,25 @@
1
+ from typing import Optional, Dict, Any
2
+
3
+ class PromptInjectionException(Exception):
4
+ """プロンプトインジェクション検知時の例外"""
5
+
6
+ def __init__(
7
+ self,
8
+ message: str,
9
+ pattern_type: Optional[str] = None,
10
+ matched_content: Optional[str] = None,
11
+ ):
12
+ self.pattern_type = pattern_type
13
+ self.matched_content = matched_content
14
+ super().__init__(message)
15
+
16
+ def to_dict(self) -> Dict[str, Any]:
17
+ """例外情報を辞書形式で取得"""
18
+ return {
19
+ 'error': 'Prompt Injection Detected',
20
+ 'pattern_type': self.pattern_type,
21
+ 'message': str(self),
22
+ 'matched_content': (
23
+ self.matched_content[:50] if self.matched_content else None
24
+ ),
25
+ }
@@ -2,7 +2,15 @@ from cmdbox.app import common, client, options
2
2
  from cmdbox.app.auth import signin
3
3
  from cmdbox.app.commons import convert, limiter, redis_client, resdata, validator
4
4
  from cmdbox.app.features.cli import cmdbox_tts_say
5
- from cmdbox.app.features.cli.agent import agant_base
5
+ from cmdbox.app.features.cli.agent import (
6
+ agant_base,
7
+ SQLInjectionDetectionPlugin,
8
+ JavaScriptInjectionPlugin,
9
+ TemplateInjectionDetectionPlugin,
10
+ MaliciousKeywordDetectionPlugin,
11
+ DangerousSequencePlugin,
12
+ PromptInjectionException,
13
+ )
6
14
  from cmdbox.app.options import Options
7
15
  from contextlib import aclosing
8
16
  from pathlib import Path
@@ -741,6 +749,9 @@ class AgentChat(agant_base.AgentBase, validator.Validator, limiter.LimitedFeatur
741
749
  agent_session:Any, reskey:str) -> List[Any]:
742
750
  """
743
751
  Runner用のプラグインを作成します。
752
+
753
+ Google ADK 公式の BasePlugin インターフェースを使用して、
754
+ プロンプトインジェクション攻撃を検知・遮断するプラグインを作成します。
744
755
 
745
756
  Args:
746
757
  logger (logging.Logger): ロガー
@@ -753,7 +764,14 @@ class AgentChat(agant_base.AgentBase, validator.Validator, limiter.LimitedFeatur
753
764
  Returns:
754
765
  List[Any]: 作成したプラグインのリスト
755
766
  """
756
- return []
767
+ plugins = [
768
+ SQLInjectionDetectionPlugin(logger),
769
+ JavaScriptInjectionPlugin(logger),
770
+ TemplateInjectionDetectionPlugin(logger),
771
+ MaliciousKeywordDetectionPlugin(logger),
772
+ DangerousSequencePlugin(logger),
773
+ ]
774
+ return plugins
757
775
 
758
776
  def prepare_agent_conf(self, agent_conf:Dict[str, Any], payload:Dict[str, Any]) -> Dict[str, Any]:
759
777
  """
@@ -822,6 +840,21 @@ class AgentChat(agant_base.AgentBase, validator.Validator, limiter.LimitedFeatur
822
840
  Returns:
823
841
  int: ステータス
824
842
  """
843
+ try:
844
+ # プロンプトインジェクション検知エラーの場合は特別なメッセージを返す
845
+ if isinstance(exc, PromptInjectionException):
846
+ msg = dict(warn=dict(
847
+ error='Prompt Injection Attack Detected',
848
+ message=str(exc),
849
+ pattern=exc.pattern_type,
850
+ detail='Your message contains suspicious patterns that could be used for prompt injection attacks. Please review your input.'
851
+ ))
852
+ logger.warning(f"Prompt injection detected: {exc.to_dict()}", exc_info=True)
853
+ redis_cli.rpush(reskey, msg)
854
+ return self.RESP_WARN
855
+ except Exception as inner_exc:
856
+ logger.debug(f"Error processing exception type check: {inner_exc}")
857
+ # その他の例外は通常処理
825
858
  msg = dict(warn=f"{self.get_mode()}_{self.get_cmd()}: {exc}")
826
859
  logger.warning(f"{self.get_mode()}_{self.get_cmd()}: {exc}", exc_info=True)
827
860
  redis_cli.rpush(reskey, msg)
@@ -204,7 +204,7 @@ class AuditDelete(audit_base.AuditBase, validator.Validator):
204
204
  def delete(self, reskey:str,
205
205
  delete_audit_type:str, delete_clmsg_id:str, delete_clmsg_sdate:str, delete_clmsg_edate:str,
206
206
  delete_clmsg_src:str, delete_clmsg_title:str, delete_clmsg_user:str, delete_clmsg_body:Dict[str, Any],
207
- delete_clmsg_tags:List[str], delete_svmsg_id:str, delete_svmsg_sdate:str, delete_svmsg_edate:str,
207
+ delete_clmsg_tag:List[str], delete_svmsg_id:str, delete_svmsg_sdate:str, delete_svmsg_edate:str,
208
208
  pg_enabled:bool, pg_host:str, pg_port:int, pg_user:str, pg_password:str, pg_dbname:str,
209
209
  data_dir:Path, logger:logging.Logger, redis_cli:redis_client.RedisClient) -> int:
210
210
  """
@@ -220,7 +220,7 @@ class AuditDelete(audit_base.AuditBase, validator.Validator):
220
220
  delete_clmsg_title (str): クライアントメッセージのタイトル
221
221
  delete_clmsg_user (str): クライアントメッセージの発生させたユーザー
222
222
  delete_clmsg_body (Dict[str, Any]): クライアントメッセージの本文
223
- delete_clmsg_tags (List[str]): クライアントメッセージのタグ
223
+ delete_clmsg_tag (List[str]): クライアントメッセージのタグ
224
224
  delete_svmsg_id (str): サーバーメッセージID
225
225
  delete_svmsg_sdate (str): サーバーメッセージ発生日時(開始)
226
226
  delete_svmsg_edate (str): サーバーメッセージ発生日時(終了)
@@ -272,8 +272,8 @@ class AuditDelete(audit_base.AuditBase, validator.Validator):
272
272
  for key, value in delete_clmsg_body.items():
273
273
  where.append(f"clmsg_body->>'{key}' LIKE {'%s' if pg_enabled else '?'}")
274
274
  params.append(value)
275
- if delete_clmsg_tags:
276
- for tag in delete_clmsg_tags:
275
+ if delete_clmsg_tag:
276
+ for tag in delete_clmsg_tag:
277
277
  where.append(f"clmsg_tag like {'%s' if pg_enabled else '?'}")
278
278
  params.append(f'%{tag}%')
279
279
  if delete_svmsg_id and delete_svmsg_id != 'None':
@@ -277,7 +277,7 @@ class AuditSearch(audit_base.AuditBase, validator.Validator):
277
277
  def search(self, reskey:str, select:Dict[str, str], select_date_format:str, groupby:List[str], groupby_date_format:str, sort:Dict[str, str], offset:int, limit:int,
278
278
  filter_audit_type:List[str], filter_clmsg_id:str, filter_clmsg_sdate:str, filter_clmsg_edate:str,
279
279
  filter_clmsg_src:str, filter_clmsg_title:str, filter_clmsg_user:str, filter_clmsg_body:Dict[str, Any],
280
- exclude_clmsg_body:Dict[str, Any], filter_clmsg_tags:List[str], filter_svmsg_id:str, filter_svmsg_sdate:str, filter_svmsg_edate:str,
280
+ exclude_clmsg_body:Dict[str, Any], filter_clmsg_tag:List[str], filter_svmsg_id:str, filter_svmsg_sdate:str, filter_svmsg_edate:str,
281
281
  pg_enabled:bool, pg_host:str, pg_port:int, pg_user:str, pg_password:str, pg_dbname:str,
282
282
  data_dir:Path, logger:logging.Logger, redis_cli:redis_client.RedisClient) -> int:
283
283
  """
@@ -301,7 +301,7 @@ class AuditSearch(audit_base.AuditBase, validator.Validator):
301
301
  filter_clmsg_user (str): クライアントメッセージの発生させたユーザー
302
302
  filter_clmsg_body (Dict[str, Any]): クライアントメッセージの本文
303
303
  exclude_clmsg_body (Dict[str, Any]): 除外条件のクライアントメッセージの本文
304
- filter_clmsg_tags (List[str]): クライアントメッセージのタグ
304
+ filter_clmsg_tag (List[str]): クライアントメッセージのタグ
305
305
  filter_svmsg_id (str): サーバーメッセージID
306
306
  filter_svmsg_sdate (str): サーバーメッセージ発生日時(開始)
307
307
  filter_svmsg_edate (str): サーバーメッセージ発生日時(終了)
@@ -407,14 +407,14 @@ class AuditSearch(audit_base.AuditBase, validator.Validator):
407
407
  for key, value in exclude_clmsg_body.items():
408
408
  where.append(f"(clmsg_body->>'{key}' IS NULL OR clmsg_body->>'{key}' NOT LIKE {'%s' if pg_enabled else '?'})")
409
409
  params.append(value)
410
- if filter_clmsg_tags:
411
- for tag in filter_clmsg_tags:
410
+ if filter_clmsg_tag:
411
+ for tag in filter_clmsg_tag:
412
412
  if not tag: continue
413
413
  if pg_enabled:
414
414
  where.append(f"clmsg_tag ?| %s")
415
415
  params.append(f'{tag}')
416
416
  else:
417
- where.append(f"clmsg_tag like '?'")
417
+ where.append(f"clmsg_tag like ?")
418
418
  params.append(f'%{tag}%')
419
419
  if filter_svmsg_id and filter_svmsg_id != 'None':
420
420
  where.append(f'svmsg_id={"%s" if pg_enabled else "?"}')