infiagent 3.2.4__tar.gz → 3.2.5__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 (434) hide show
  1. {infiagent-3.2.4/infiagent.egg-info → infiagent-3.2.5}/PKG-INFO +2 -2
  2. {infiagent-3.2.4 → infiagent-3.2.5}/README.md +1 -1
  3. {infiagent-3.2.4 → infiagent-3.2.5}/core/tool_executor.py +79 -4
  4. {infiagent-3.2.4 → infiagent-3.2.5}/infiagent/sdk.py +21 -0
  5. {infiagent-3.2.4 → infiagent-3.2.5/infiagent.egg-info}/PKG-INFO +2 -2
  6. {infiagent-3.2.4 → infiagent-3.2.5}/setup.py +1 -1
  7. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_sdk_runtime_paths.py +24 -0
  8. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_tool_hooks.py +45 -0
  9. {infiagent-3.2.4 → infiagent-3.2.5}/utils/task_runtime.py +6 -0
  10. {infiagent-3.2.4 → infiagent-3.2.5}/LICENSE +0 -0
  11. {infiagent-3.2.4 → infiagent-3.2.5}/MANIFEST.in +0 -0
  12. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/OpenCowork/general_prompts.yaml +0 -0
  13. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/OpenCowork/level_-1_judge_agent.yaml +0 -0
  14. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/OpenCowork/level_0_tools.yaml +0 -0
  15. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/OpenCowork/level_3_agents.yaml +0 -0
  16. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/Researcher/general_prompts.yaml +0 -0
  17. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/Researcher/level_-1_judge_agent.yaml +0 -0
  18. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/Researcher/level_0_tools.yaml +0 -0
  19. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/Researcher/level_1_agents.yaml +0 -0
  20. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/Researcher/level_2_agents.yaml +0 -0
  21. {infiagent-3.2.4 → infiagent-3.2.5}/config/agent_library/Researcher/level_3_agents.yaml +0 -0
  22. {infiagent-3.2.4 → infiagent-3.2.5}/config/run_env_config/ali_qwen_llm_config.yaml +0 -0
  23. {infiagent-3.2.4 → infiagent-3.2.5}/config/run_env_config/document_convert_api.yaml +0 -0
  24. {infiagent-3.2.4 → infiagent-3.2.5}/config/run_env_config/gemini_config_version.yaml +0 -0
  25. {infiagent-3.2.4 → infiagent-3.2.5}/config/run_env_config/kimi_config_version copy.yaml +0 -0
  26. {infiagent-3.2.4 → infiagent-3.2.5}/config/run_env_config/llm_config.example.yaml +0 -0
  27. {infiagent-3.2.4 → infiagent-3.2.5}/config/run_env_config/llm_config.yaml +0 -0
  28. {infiagent-3.2.4 → infiagent-3.2.5}/config/run_env_config/third_part_api.yaml +0 -0
  29. {infiagent-3.2.4 → infiagent-3.2.5}/core/__init__.py +0 -0
  30. {infiagent-3.2.4 → infiagent-3.2.5}/core/agent_event_emitter.py +0 -0
  31. {infiagent-3.2.4 → infiagent-3.2.5}/core/agent_executor.py +0 -0
  32. {infiagent-3.2.4 → infiagent-3.2.5}/core/context_builder.py +0 -0
  33. {infiagent-3.2.4 → infiagent-3.2.5}/core/event_handlers.py +0 -0
  34. {infiagent-3.2.4 → infiagent-3.2.5}/core/events.py +0 -0
  35. {infiagent-3.2.4 → infiagent-3.2.5}/core/hierarchy_manager.py +0 -0
  36. {infiagent-3.2.4 → infiagent-3.2.5}/core/runtime_exceptions.py +0 -0
  37. {infiagent-3.2.4 → infiagent-3.2.5}/core/state_cleaner.py +0 -0
  38. {infiagent-3.2.4 → infiagent-3.2.5}/infiagent/__init__.py +0 -0
  39. {infiagent-3.2.4 → infiagent-3.2.5}/infiagent.egg-info/SOURCES.txt +0 -0
  40. {infiagent-3.2.4 → infiagent-3.2.5}/infiagent.egg-info/dependency_links.txt +0 -0
  41. {infiagent-3.2.4 → infiagent-3.2.5}/infiagent.egg-info/entry_points.txt +0 -0
  42. {infiagent-3.2.4 → infiagent-3.2.5}/infiagent.egg-info/requires.txt +0 -0
  43. {infiagent-3.2.4 → infiagent-3.2.5}/infiagent.egg-info/top_level.txt +0 -0
  44. {infiagent-3.2.4 → infiagent-3.2.5}/pyproject.toml +0 -0
  45. {infiagent-3.2.4 → infiagent-3.2.5}/requirements.txt +0 -0
  46. {infiagent-3.2.4 → infiagent-3.2.5}/services/__init__.py +0 -0
  47. {infiagent-3.2.4 → infiagent-3.2.5}/services/action_compressor.py +0 -0
  48. {infiagent-3.2.4 → infiagent-3.2.5}/services/context_compressor_backup.py +0 -0
  49. {infiagent-3.2.4 → infiagent-3.2.5}/services/llm_client.py +0 -0
  50. {infiagent-3.2.4 → infiagent-3.2.5}/services/thinking_agent.py +0 -0
  51. {infiagent-3.2.4 → infiagent-3.2.5}/setup.cfg +0 -0
  52. {infiagent-3.2.4 → infiagent-3.2.5}/skills/algorithmic-art/LICENSE.txt +0 -0
  53. {infiagent-3.2.4 → infiagent-3.2.5}/skills/algorithmic-art/SKILL.md +0 -0
  54. {infiagent-3.2.4 → infiagent-3.2.5}/skills/algorithmic-art/templates/generator_template.js +0 -0
  55. {infiagent-3.2.4 → infiagent-3.2.5}/skills/algorithmic-art/templates/viewer.html +0 -0
  56. {infiagent-3.2.4 → infiagent-3.2.5}/skills/brand-guidelines/LICENSE.txt +0 -0
  57. {infiagent-3.2.4 → infiagent-3.2.5}/skills/brand-guidelines/SKILL.md +0 -0
  58. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/LICENSE.txt +0 -0
  59. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/SKILL.md +0 -0
  60. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -0
  61. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  62. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  63. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -0
  64. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  65. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -0
  66. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  67. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  68. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -0
  69. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  70. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  71. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  72. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -0
  73. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  74. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -0
  75. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  76. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -0
  77. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  78. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  79. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -0
  80. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  81. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -0
  82. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  83. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  84. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -0
  85. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  86. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  87. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  88. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  89. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  90. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  91. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  92. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  93. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -0
  94. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  95. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  96. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  97. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -0
  98. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  99. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  100. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -0
  101. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  102. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  103. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  104. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Jura-OFL.txt +0 -0
  105. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -0
  106. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  107. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  108. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  109. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  110. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Lora-OFL.txt +0 -0
  111. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  112. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  113. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -0
  114. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  115. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -0
  116. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  117. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  118. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -0
  119. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  120. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  121. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -0
  122. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -0
  123. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  124. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  125. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -0
  126. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  127. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -0
  128. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  129. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  130. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -0
  131. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  132. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -0
  133. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  134. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  135. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  136. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  137. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -0
  138. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  139. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -0
  140. {infiagent-3.2.4 → infiagent-3.2.5}/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  141. {infiagent-3.2.4 → infiagent-3.2.5}/skills/doc-coauthoring/SKILL.md +0 -0
  142. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/LICENSE.txt +0 -0
  143. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/SKILL.md +0 -0
  144. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/__init__.py +0 -0
  145. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/accept_changes.py +0 -0
  146. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/comment.py +0 -0
  147. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/helpers/__init__.py +0 -0
  148. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/helpers/merge_runs.py +0 -0
  149. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/helpers/simplify_redlines.py +0 -0
  150. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/pack.py +0 -0
  151. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  152. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  153. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  154. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  155. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  156. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  157. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  158. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  159. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  160. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  161. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  162. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  163. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  164. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  165. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  166. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  167. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  168. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  169. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  170. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  171. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  172. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  173. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  174. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  175. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  176. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  177. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  178. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  179. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  180. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  181. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  182. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/mce/mc.xsd +0 -0
  183. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
  184. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
  185. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
  186. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
  187. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
  188. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  189. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
  190. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/soffice.py +0 -0
  191. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/unpack.py +0 -0
  192. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/validate.py +0 -0
  193. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/validators/__init__.py +0 -0
  194. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/validators/base.py +0 -0
  195. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/validators/docx.py +0 -0
  196. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/validators/pptx.py +0 -0
  197. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/office/validators/redlining.py +0 -0
  198. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/templates/comments.xml +0 -0
  199. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/templates/commentsExtended.xml +0 -0
  200. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/templates/commentsExtensible.xml +0 -0
  201. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/templates/commentsIds.xml +0 -0
  202. {infiagent-3.2.4 → infiagent-3.2.5}/skills/docx/scripts/templates/people.xml +0 -0
  203. {infiagent-3.2.4 → infiagent-3.2.5}/skills/frontend-design/LICENSE.txt +0 -0
  204. {infiagent-3.2.4 → infiagent-3.2.5}/skills/frontend-design/SKILL.md +0 -0
  205. {infiagent-3.2.4 → infiagent-3.2.5}/skills/internal-comms/LICENSE.txt +0 -0
  206. {infiagent-3.2.4 → infiagent-3.2.5}/skills/internal-comms/SKILL.md +0 -0
  207. {infiagent-3.2.4 → infiagent-3.2.5}/skills/internal-comms/examples/3p-updates.md +0 -0
  208. {infiagent-3.2.4 → infiagent-3.2.5}/skills/internal-comms/examples/company-newsletter.md +0 -0
  209. {infiagent-3.2.4 → infiagent-3.2.5}/skills/internal-comms/examples/faq-answers.md +0 -0
  210. {infiagent-3.2.4 → infiagent-3.2.5}/skills/internal-comms/examples/general-comms.md +0 -0
  211. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mac-use/SKILL.md +0 -0
  212. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mac-use/requirements.txt +0 -0
  213. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mac-use/scripts/mac_use.py +0 -0
  214. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/LICENSE.txt +0 -0
  215. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/SKILL.md +0 -0
  216. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/reference/evaluation.md +0 -0
  217. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/reference/mcp_best_practices.md +0 -0
  218. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/reference/node_mcp_server.md +0 -0
  219. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/reference/python_mcp_server.md +0 -0
  220. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/scripts/connections.py +0 -0
  221. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/scripts/evaluation.py +0 -0
  222. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/scripts/example_evaluation.xml +0 -0
  223. {infiagent-3.2.4 → infiagent-3.2.5}/skills/mcp-builder/scripts/requirements.txt +0 -0
  224. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/LICENSE.txt +0 -0
  225. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/SKILL.md +0 -0
  226. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/forms.md +0 -0
  227. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/reference.md +0 -0
  228. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/scripts/check_bounding_boxes.py +0 -0
  229. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/scripts/check_fillable_fields.py +0 -0
  230. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/scripts/convert_pdf_to_images.py +0 -0
  231. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/scripts/create_validation_image.py +0 -0
  232. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/scripts/extract_form_field_info.py +0 -0
  233. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/scripts/extract_form_structure.py +0 -0
  234. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/scripts/fill_fillable_fields.py +0 -0
  235. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
  236. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/LICENSE.txt +0 -0
  237. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/SKILL.md +0 -0
  238. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/editing.md +0 -0
  239. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/pptxgenjs.md +0 -0
  240. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/__init__.py +0 -0
  241. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/add_slide.py +0 -0
  242. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/clean.py +0 -0
  243. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  244. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/helpers/merge_runs.py +0 -0
  245. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -0
  246. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/pack.py +0 -0
  247. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  248. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  249. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  250. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  251. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  252. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  253. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  254. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  255. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  256. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  257. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  258. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  259. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  260. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  261. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  262. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  263. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  264. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  265. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  266. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  267. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  268. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  269. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  270. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  271. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  272. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  273. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  274. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  275. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  276. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  277. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  278. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/mce/mc.xsd +0 -0
  279. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
  280. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
  281. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
  282. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
  283. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
  284. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  285. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
  286. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/soffice.py +0 -0
  287. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/unpack.py +0 -0
  288. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/validate.py +0 -0
  289. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/validators/__init__.py +0 -0
  290. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/validators/base.py +0 -0
  291. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/validators/docx.py +0 -0
  292. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/validators/pptx.py +0 -0
  293. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/office/validators/redlining.py +0 -0
  294. {infiagent-3.2.4 → infiagent-3.2.5}/skills/pptx/scripts/thumbnail.py +0 -0
  295. {infiagent-3.2.4 → infiagent-3.2.5}/skills/slack-gif-creator/LICENSE.txt +0 -0
  296. {infiagent-3.2.4 → infiagent-3.2.5}/skills/slack-gif-creator/SKILL.md +0 -0
  297. {infiagent-3.2.4 → infiagent-3.2.5}/skills/slack-gif-creator/core/easing.py +0 -0
  298. {infiagent-3.2.4 → infiagent-3.2.5}/skills/slack-gif-creator/core/frame_composer.py +0 -0
  299. {infiagent-3.2.4 → infiagent-3.2.5}/skills/slack-gif-creator/core/gif_builder.py +0 -0
  300. {infiagent-3.2.4 → infiagent-3.2.5}/skills/slack-gif-creator/core/validators.py +0 -0
  301. {infiagent-3.2.4 → infiagent-3.2.5}/skills/slack-gif-creator/requirements.txt +0 -0
  302. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/LICENSE.txt +0 -0
  303. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/SKILL.md +0 -0
  304. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/theme-showcase.pdf +0 -0
  305. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/arctic-frost.md +0 -0
  306. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/botanical-garden.md +0 -0
  307. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/desert-rose.md +0 -0
  308. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/forest-canopy.md +0 -0
  309. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/golden-hour.md +0 -0
  310. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/midnight-galaxy.md +0 -0
  311. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/modern-minimalist.md +0 -0
  312. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/ocean-depths.md +0 -0
  313. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/sunset-boulevard.md +0 -0
  314. {infiagent-3.2.4 → infiagent-3.2.5}/skills/theme-factory/themes/tech-innovation.md +0 -0
  315. {infiagent-3.2.4 → infiagent-3.2.5}/skills/web-artifacts-builder/LICENSE.txt +0 -0
  316. {infiagent-3.2.4 → infiagent-3.2.5}/skills/web-artifacts-builder/SKILL.md +0 -0
  317. {infiagent-3.2.4 → infiagent-3.2.5}/skills/web-artifacts-builder/scripts/bundle-artifact.sh +0 -0
  318. {infiagent-3.2.4 → infiagent-3.2.5}/skills/web-artifacts-builder/scripts/init-artifact.sh +0 -0
  319. {infiagent-3.2.4 → infiagent-3.2.5}/skills/webapp-testing/LICENSE.txt +0 -0
  320. {infiagent-3.2.4 → infiagent-3.2.5}/skills/webapp-testing/SKILL.md +0 -0
  321. {infiagent-3.2.4 → infiagent-3.2.5}/skills/webapp-testing/examples/console_logging.py +0 -0
  322. {infiagent-3.2.4 → infiagent-3.2.5}/skills/webapp-testing/examples/element_discovery.py +0 -0
  323. {infiagent-3.2.4 → infiagent-3.2.5}/skills/webapp-testing/examples/static_html_automation.py +0 -0
  324. {infiagent-3.2.4 → infiagent-3.2.5}/skills/webapp-testing/scripts/with_server.py +0 -0
  325. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/LICENSE.txt +0 -0
  326. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/SKILL.md +0 -0
  327. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  328. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/helpers/merge_runs.py +0 -0
  329. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/helpers/simplify_redlines.py +0 -0
  330. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/pack.py +0 -0
  331. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  332. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  333. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  334. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  335. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  336. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  337. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  338. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  339. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  340. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  341. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  342. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  343. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  344. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  345. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  346. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  347. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  348. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  349. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  350. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  351. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  352. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  353. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  354. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  355. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  356. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  357. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  358. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  359. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  360. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  361. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  362. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/mce/mc.xsd +0 -0
  363. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
  364. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
  365. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
  366. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
  367. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
  368. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  369. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
  370. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/soffice.py +0 -0
  371. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/unpack.py +0 -0
  372. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/validate.py +0 -0
  373. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/validators/__init__.py +0 -0
  374. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/validators/base.py +0 -0
  375. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/validators/docx.py +0 -0
  376. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/validators/pptx.py +0 -0
  377. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/office/validators/redlining.py +0 -0
  378. {infiagent-3.2.4 → infiagent-3.2.5}/skills/xlsx/scripts/recalc.py +0 -0
  379. {infiagent-3.2.4 → infiagent-3.2.5}/start.py +0 -0
  380. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_cheapclaw_service.py +0 -0
  381. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_code_tools_system_terminal.py +0 -0
  382. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_context_hooks.py +0 -0
  383. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_file_tools.py +0 -0
  384. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_image_read_message.py +0 -0
  385. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_kimi_stream_compat.py +0 -0
  386. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_llm_client_lite_openrouter.py +0 -0
  387. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_llm_client_resilience.py +0 -0
  388. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_llm_config_builder.py +0 -0
  389. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_llm_debug_output.py +0 -0
  390. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_reasoning_modes.py +0 -0
  391. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_sdk_observability.py +0 -0
  392. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_task_history_index.py +0 -0
  393. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_thinking_prompt_contract.py +0 -0
  394. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_token_budgeting.py +0 -0
  395. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_web_ui_config_api.py +0 -0
  396. {infiagent-3.2.4 → infiagent-3.2.5}/tests/test_windows_compat.py +0 -0
  397. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/__init__.py +0 -0
  398. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/llm_client_lite.py +0 -0
  399. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/registry.py +0 -0
  400. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/requirements.txt +0 -0
  401. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/BROWSER_IMPROVEMENTS.md +0 -0
  402. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/FILE_READ_USAGE.md +0 -0
  403. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/__init__.py +0 -0
  404. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/arxiv_tools.py +0 -0
  405. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/audio_tools.py +0 -0
  406. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/browser_tools.py +0 -0
  407. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/code_tools.py +0 -0
  408. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/convert_tools.py +0 -0
  409. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/document_tools.py +0 -0
  410. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/file_tools.py +0 -0
  411. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/human_tools.py +0 -0
  412. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/paper_tools.py +0 -0
  413. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/powerpoint_tools.py +0 -0
  414. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/reference_tools.py +0 -0
  415. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/skill_tools.py +0 -0
  416. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/task_tools.py +0 -0
  417. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/vision_tools.py +0 -0
  418. {infiagent-3.2.4 → infiagent-3.2.5}/tool_server_lite/tools/web_tools.py +0 -0
  419. {infiagent-3.2.4 → infiagent-3.2.5}/utils/__init__.py +0 -0
  420. {infiagent-3.2.4 → infiagent-3.2.5}/utils/cli_mode.py +0 -0
  421. {infiagent-3.2.4 → infiagent-3.2.5}/utils/config_loader.py +0 -0
  422. {infiagent-3.2.4 → infiagent-3.2.5}/utils/config_manager.py +0 -0
  423. {infiagent-3.2.4 → infiagent-3.2.5}/utils/context_hooks.py +0 -0
  424. {infiagent-3.2.4 → infiagent-3.2.5}/utils/conversation_storage.py +0 -0
  425. {infiagent-3.2.4 → infiagent-3.2.5}/utils/event_emitter.py +0 -0
  426. {infiagent-3.2.4 → infiagent-3.2.5}/utils/llm_config_builder.py +0 -0
  427. {infiagent-3.2.4 → infiagent-3.2.5}/utils/mcp_manager.py +0 -0
  428. {infiagent-3.2.4 → infiagent-3.2.5}/utils/runtime_control.py +0 -0
  429. {infiagent-3.2.4 → infiagent-3.2.5}/utils/skill_loader.py +0 -0
  430. {infiagent-3.2.4 → infiagent-3.2.5}/utils/task_history_index.py +0 -0
  431. {infiagent-3.2.4 → infiagent-3.2.5}/utils/token_budget.py +0 -0
  432. {infiagent-3.2.4 → infiagent-3.2.5}/utils/tool_hooks.py +0 -0
  433. {infiagent-3.2.4 → infiagent-3.2.5}/utils/user_paths.py +0 -0
  434. {infiagent-3.2.4 → infiagent-3.2.5}/utils/windows_compat.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: infiagent
3
- Version: 3.2.4
3
+ Version: 3.2.5
4
4
  Summary: InfiAgent multi-agent framework for long-running task automation
5
5
  Home-page: https://github.com/ChenglinPoly/Multi-Level-Agent
6
6
  Author: Chenglin Yu
@@ -55,7 +55,7 @@ Requires-Dist: psutil>=5.9.0
55
55
  <h1>MLA V3 - Build Domain-Specific SOTA-Level AI Agents</h1>
56
56
 
57
57
  <p>
58
- <img src="https://img.shields.io/badge/version-3.2.4-blue.svg" alt="Version">
58
+ <img src="https://img.shields.io/badge/version-3.2.5-blue.svg" alt="Version">
59
59
  <img src="https://img.shields.io/badge/python-3.9+-green.svg" alt="Python">
60
60
  <img src="https://img.shields.io/badge/license-GPL-blue.svg" alt="License: GPL">
61
61
  </p>
@@ -4,7 +4,7 @@
4
4
  <h1>MLA V3 - Build Domain-Specific SOTA-Level AI Agents</h1>
5
5
 
6
6
  <p>
7
- <img src="https://img.shields.io/badge/version-3.2.4-blue.svg" alt="Version">
7
+ <img src="https://img.shields.io/badge/version-3.2.5-blue.svg" alt="Version">
8
8
  <img src="https://img.shields.io/badge/python-3.9+-green.svg" alt="Python">
9
9
  <img src="https://img.shields.io/badge/license-GPL-blue.svg" alt="License: GPL">
10
10
  </p>
@@ -6,12 +6,13 @@ from utils.windows_compat import safe_print
6
6
  """
7
7
 
8
8
  import json
9
+ import hashlib
9
10
  import time
10
11
  import uuid
11
12
  import asyncio
12
13
  import threading
13
14
  import os
14
- from typing import Dict, Any
15
+ from typing import Dict, Any, List
15
16
 
16
17
  from tool_server_lite.registry import get_runtime_registry, get_runtime_registry_failures
17
18
  from utils.mcp_manager import call_mcp_tool
@@ -59,6 +60,7 @@ class ToolExecutor:
59
60
  self.agent_id = ""
60
61
  self.agent_name = ""
61
62
  self.tool_runtime_defaults = self._load_tool_runtime_defaults()
63
+ self.tool_runtime_defaults_log_mode = self._load_tool_runtime_defaults_log_mode()
62
64
 
63
65
  def set_agent_context(self, *, agent_id: str = "", agent_name: str = ""):
64
66
  self.agent_id = str(agent_id or "")
@@ -96,6 +98,77 @@ class ToolExecutor:
96
98
  for key, value in defaults.items():
97
99
  merged[str(key)] = value
98
100
  return merged
101
+
102
+ def _load_tool_runtime_defaults_log_mode(self) -> str:
103
+ mode = str(os.environ.get("MLA_TOOL_RUNTIME_DEFAULTS_LOG_MODE", "fingerprint") or "fingerprint").strip().lower()
104
+ if mode not in {"plaintext", "redact", "fingerprint"}:
105
+ return "fingerprint"
106
+ return mode
107
+
108
+ @staticmethod
109
+ def _fingerprint_runtime_value(value: Any) -> str:
110
+ try:
111
+ normalized = json.dumps(value, ensure_ascii=False, sort_keys=True)
112
+ except Exception:
113
+ normalized = repr(value)
114
+ return "sha256:" + hashlib.sha256(normalized.encode("utf-8")).hexdigest()[:12]
115
+
116
+ def _hidden_runtime_placeholder(self, key: str, value: Any) -> str:
117
+ mode = self.tool_runtime_defaults_log_mode
118
+ if mode == "plaintext":
119
+ return str(value)
120
+ if mode == "redact":
121
+ return f"[RUNTIME_HIDDEN_PARAM:{key}:REDACTED]"
122
+
123
+ value_type = type(value).__name__
124
+ if isinstance(value, str):
125
+ shape = f"type=str len={len(value)}"
126
+ elif isinstance(value, (list, tuple, set)):
127
+ shape = f"type={value_type} size={len(value)}"
128
+ elif isinstance(value, dict):
129
+ shape = f"type=dict keys={len(value)}"
130
+ else:
131
+ shape = f"type={value_type}"
132
+ return f"[RUNTIME_HIDDEN_PARAM:{key} {shape} fp={self._fingerprint_runtime_value(value)}]"
133
+
134
+ def _sanitize_runtime_tool_arguments(self, tool_name: str, arguments: Dict[str, Any]) -> Dict[str, Any]:
135
+ defaults = self.tool_runtime_defaults.get(str(tool_name), {})
136
+ if not defaults:
137
+ return dict(arguments or {})
138
+ sanitized = dict(arguments or {})
139
+ for key, value in defaults.items():
140
+ if str(key) in sanitized:
141
+ sanitized[str(key)] = self._hidden_runtime_placeholder(str(key), value)
142
+ return sanitized
143
+
144
+ def _sanitize_runtime_tool_result(self, tool_name: str, result: Dict[str, Any]) -> Dict[str, Any]:
145
+ defaults = self.tool_runtime_defaults.get(str(tool_name), {})
146
+ if not defaults:
147
+ return dict(result or {})
148
+ if self.tool_runtime_defaults_log_mode == "plaintext":
149
+ return dict(result or {})
150
+
151
+ secret_strings: List[tuple[str, str]] = []
152
+ for key, value in defaults.items():
153
+ if isinstance(value, str) and value:
154
+ secret_strings.append((value, self._hidden_runtime_placeholder(str(key), value)))
155
+
156
+ def _walk(obj: Any) -> Any:
157
+ if isinstance(obj, dict):
158
+ return {k: _walk(v) for k, v in obj.items()}
159
+ if isinstance(obj, list):
160
+ return [_walk(v) for v in obj]
161
+ if isinstance(obj, tuple):
162
+ return tuple(_walk(v) for v in obj)
163
+ if isinstance(obj, str):
164
+ text = obj
165
+ for secret, placeholder in secret_strings:
166
+ if secret in text:
167
+ text = text.replace(secret, placeholder)
168
+ return text
169
+ return obj
170
+
171
+ return _walk(dict(result or {}))
99
172
 
100
173
  def _init_tools_registry(self):
101
174
  """
@@ -278,12 +351,13 @@ class ToolExecutor:
278
351
  执行结果字典
279
352
  """
280
353
  merged_arguments = self._merge_runtime_tool_defaults(tool_name, arguments)
354
+ logged_arguments = self._sanitize_runtime_tool_arguments(tool_name, merged_arguments)
281
355
  try:
282
356
  trigger_tool_hooks(
283
357
  when="before",
284
358
  tool_name=tool_name,
285
359
  task_id=task_id,
286
- arguments=merged_arguments,
360
+ arguments=logged_arguments,
287
361
  agent_id=self.agent_id,
288
362
  agent_name=self.agent_name,
289
363
  agent_level=self._agent_level(),
@@ -335,13 +409,14 @@ class ToolExecutor:
335
409
  "error_information": f"工具执行失败: {str(e)}"
336
410
  }
337
411
 
412
+ logged_result = self._sanitize_runtime_tool_result(tool_name, result)
338
413
  try:
339
414
  trigger_tool_hooks(
340
415
  when="after",
341
416
  tool_name=tool_name,
342
417
  task_id=task_id,
343
- arguments=merged_arguments,
344
- result=result,
418
+ arguments=logged_arguments,
419
+ result=logged_result,
345
420
  agent_id=self.agent_id,
346
421
  agent_name=self.agent_name,
347
422
  agent_level=self._agent_level(),
@@ -15,6 +15,7 @@ from __future__ import annotations
15
15
  import asyncio
16
16
  import json
17
17
  import hashlib
18
+ import shutil
18
19
  from copy import deepcopy
19
20
  from datetime import datetime
20
21
  from functools import partial
@@ -111,6 +112,7 @@ class InfiAgent:
111
112
  fresh_interval_sec: Optional[int] = None,
112
113
  mcp_servers: Optional[List[Dict[str, Any]]] = None,
113
114
  tool_runtime_defaults: Optional[Dict[str, Dict[str, Any]]] = None,
115
+ tool_runtime_defaults_log_mode: str = "fingerprint",
114
116
  tool_hooks: Optional[List[Dict[str, Any]]] = None,
115
117
  context_hooks: Optional[List[Dict[str, Any]]] = None,
116
118
  visible_skills: Optional[List[str]] = None,
@@ -176,6 +178,7 @@ class InfiAgent:
176
178
  self.runtime_env_overrides["MLA_MCP_CONFIG_JSON"] = json.dumps({"servers": mcp_servers}, ensure_ascii=False)
177
179
  if tool_runtime_defaults is not None:
178
180
  self.runtime_env_overrides["MLA_TOOL_RUNTIME_DEFAULTS_JSON"] = json.dumps(tool_runtime_defaults, ensure_ascii=False)
181
+ self.runtime_env_overrides["MLA_TOOL_RUNTIME_DEFAULTS_LOG_MODE"] = str(tool_runtime_defaults_log_mode or "fingerprint").strip().lower() or "fingerprint"
179
182
  if tool_hooks is not None:
180
183
  self.runtime_env_overrides["MLA_TOOL_HOOKS_JSON"] = json.dumps(tool_hooks, ensure_ascii=False)
181
184
  if context_hooks is not None:
@@ -203,6 +206,7 @@ class InfiAgent:
203
206
  self.fresh_interval_sec = max(0, int(fresh_interval_sec)) if fresh_interval_sec is not None else None
204
207
  self.mcp_servers = mcp_servers
205
208
  self.tool_runtime_defaults = tool_runtime_defaults
209
+ self.tool_runtime_defaults_log_mode = str(tool_runtime_defaults_log_mode or "fingerprint").strip().lower() or "fingerprint"
206
210
  self.tool_hooks = tool_hooks
207
211
  self.context_hooks = context_hooks
208
212
  self.visible_skills = [str(item).strip() for item in visible_skills if str(item).strip()] if visible_skills is not None else None
@@ -264,6 +268,8 @@ class InfiAgent:
264
268
  config["mcp_servers"] = self.mcp_servers
265
269
  if self.tool_runtime_defaults is not None:
266
270
  config["tool_runtime_defaults"] = self.tool_runtime_defaults
271
+ if self.tool_runtime_defaults_log_mode:
272
+ config["tool_runtime_defaults_log_mode"] = self.tool_runtime_defaults_log_mode
267
273
  if self.tool_hooks is not None:
268
274
  config["tool_hooks"] = self.tool_hooks
269
275
  if self.context_hooks is not None:
@@ -327,6 +333,9 @@ class InfiAgent:
327
333
  user_history_recent_items: Optional[int] = None,
328
334
  max_turns: Optional[int] = None,
329
335
  tool_runtime_defaults: Optional[Dict[str, Dict[str, Any]]] = None,
336
+ tool_runtime_defaults_log_mode: Optional[str] = None,
337
+ system_add_path: Optional[str] = None,
338
+ system_add_content: Optional[str] = None,
330
339
  ) -> Dict[str, Any]:
331
340
  target_task_id = self._resolve_task_id(task_id=task_id, workspace=workspace)
332
341
  Path(target_task_id).mkdir(parents=True, exist_ok=True)
@@ -357,6 +366,18 @@ class InfiAgent:
357
366
  extra_runtime_overrides["MLA_MAX_TURNS"] = str(max(1, int(max_turns)))
358
367
  if tool_runtime_defaults is not None:
359
368
  extra_runtime_overrides["MLA_TOOL_RUNTIME_DEFAULTS_JSON"] = json.dumps(tool_runtime_defaults, ensure_ascii=False)
369
+ if tool_runtime_defaults_log_mode is not None:
370
+ extra_runtime_overrides["MLA_TOOL_RUNTIME_DEFAULTS_LOG_MODE"] = str(tool_runtime_defaults_log_mode or "fingerprint").strip().lower() or "fingerprint"
371
+
372
+ if system_add_path and system_add_content is not None:
373
+ raise ValueError("system_add_path 与 system_add_content 只能二选一")
374
+ if system_add_path:
375
+ src = Path(system_add_path).expanduser().resolve()
376
+ if not src.exists():
377
+ raise FileNotFoundError(f"system_add_path 不存在: {src}")
378
+ shutil.copy2(src, Path(target_task_id) / "system-add.md")
379
+ elif system_add_content is not None:
380
+ (Path(target_task_id) / "system-add.md").write_text(str(system_add_content), encoding="utf-8")
360
381
 
361
382
  with self._runtime_scope(extra_runtime_overrides or None):
362
383
  extra_event_handlers, collected_events = self._build_sdk_event_handler(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: infiagent
3
- Version: 3.2.4
3
+ Version: 3.2.5
4
4
  Summary: InfiAgent multi-agent framework for long-running task automation
5
5
  Home-page: https://github.com/ChenglinPoly/Multi-Level-Agent
6
6
  Author: Chenglin Yu
@@ -55,7 +55,7 @@ Requires-Dist: psutil>=5.9.0
55
55
  <h1>MLA V3 - Build Domain-Specific SOTA-Level AI Agents</h1>
56
56
 
57
57
  <p>
58
- <img src="https://img.shields.io/badge/version-3.2.4-blue.svg" alt="Version">
58
+ <img src="https://img.shields.io/badge/version-3.2.5-blue.svg" alt="Version">
59
59
  <img src="https://img.shields.io/badge/python-3.9+-green.svg" alt="Python">
60
60
  <img src="https://img.shields.io/badge/license-GPL-blue.svg" alt="License: GPL">
61
61
  </p>
@@ -55,7 +55,7 @@ data_files.extend(_collect_data_files(project_root / "skills", "skills"))
55
55
 
56
56
  setup(
57
57
  name="infiagent",
58
- version="3.2.4",
58
+ version="3.2.5",
59
59
  author="Chenglin Yu",
60
60
  author_email="yuchenglin96@qq.com",
61
61
  license="MIT",
@@ -261,6 +261,15 @@ class SDKRuntimePathTests(unittest.TestCase):
261
261
  self.assertEqual(launch_config["context_hooks"], hooks)
262
262
  self.assertTrue(launch_config["seed_builtin_resources"])
263
263
 
264
+ def test_tool_runtime_defaults_log_mode_is_exposed_in_launch_config(self):
265
+ agent = infiagent(
266
+ user_data_root=str((self.base / "log_mode_root").resolve()),
267
+ tool_runtime_defaults={"file_write": {"content": "secret"}},
268
+ tool_runtime_defaults_log_mode="fingerprint",
269
+ )
270
+ launch_config = agent._build_launch_config()
271
+ self.assertEqual(launch_config["tool_runtime_defaults_log_mode"], "fingerprint")
272
+
264
273
  def test_max_turns_is_exposed_in_launch_config(self):
265
274
  agent = infiagent(
266
275
  user_data_root=str((self.base / "max_turns_root").resolve()),
@@ -271,6 +280,21 @@ class SDKRuntimePathTests(unittest.TestCase):
271
280
  runtime = agent.describe_runtime()
272
281
  self.assertEqual(runtime["max_turns"], 321)
273
282
 
283
+ def test_run_can_materialize_system_add_content(self):
284
+ root = (self.base / "system_add_root").resolve()
285
+ task_id = str((self.base / "system_add_task").resolve())
286
+ agent = infiagent(user_data_root=str(root))
287
+
288
+ with patch("infiagent.sdk.is_task_running", return_value=True):
289
+ result = agent.run(
290
+ "noop",
291
+ task_id=task_id,
292
+ system_add_content="SYSTEM_ADD_MARKER",
293
+ )
294
+
295
+ self.assertEqual(result["status"], "busy")
296
+ self.assertEqual((Path(task_id) / "system-add.md").read_text(encoding="utf-8"), "SYSTEM_ADD_MARKER")
297
+
274
298
  def test_add_message_resume_if_needed_uses_resume_when_stack_exists(self):
275
299
  root = (self.base / "resume_root").resolve()
276
300
  task_id = str((self.base / "resume_task").resolve())
@@ -77,6 +77,51 @@ class ToolHooksTests(unittest.TestCase):
77
77
  self.assertEqual(result["status"], "success")
78
78
  self.assertEqual(result["output"], "runtime injected output")
79
79
 
80
+ def test_runtime_tool_defaults_are_redacted_in_hook_payloads(self):
81
+ with tempfile.TemporaryDirectory() as temp_dir:
82
+ temp = Path(temp_dir)
83
+ callback_file = temp / "hook_callback.py"
84
+ sink = temp / "events.jsonl"
85
+ callback_file.write_text(
86
+ "\n".join([
87
+ "import json",
88
+ f"SINK = {str(sink)!r}",
89
+ "def on_tool_event(payload):",
90
+ " with open(SINK, 'a', encoding='utf-8') as fh:",
91
+ " fh.write(json.dumps(payload, ensure_ascii=False) + '\\n')",
92
+ ]),
93
+ encoding="utf-8",
94
+ )
95
+
96
+ hooks = [{
97
+ "name": "capture-demo",
98
+ "when": "after",
99
+ "tool_names": ["final_output"],
100
+ "callback": f"{callback_file}:on_tool_event",
101
+ }]
102
+ defaults = {
103
+ "final_output": {
104
+ "output": "SECRET_TOKEN_ABC123",
105
+ }
106
+ }
107
+ root = temp / "root"
108
+ task_id = str((temp / "task").resolve())
109
+ with runtime_env_scope({
110
+ "MLA_USER_DATA_ROOT": str(root),
111
+ "MLA_TOOL_HOOKS_JSON": json.dumps(hooks, ensure_ascii=False),
112
+ "MLA_TOOL_RUNTIME_DEFAULTS_JSON": json.dumps(defaults, ensure_ascii=False),
113
+ "MLA_TOOL_RUNTIME_DEFAULTS_LOG_MODE": "fingerprint",
114
+ }):
115
+ executor = ToolExecutor(ConfigLoader("OpenCowork"), get_hierarchy_manager(task_id))
116
+ executor.set_agent_context(agent_id="agent_demo", agent_name="alpha_agent")
117
+ result = executor.execute("final_output", {"status": "success"}, task_id)
118
+
119
+ self.assertEqual(result["status"], "success")
120
+ payload = json.loads(sink.read_text(encoding="utf-8").strip())
121
+ payload_text = json.dumps(payload, ensure_ascii=False)
122
+ self.assertNotIn("SECRET_TOKEN_ABC123", payload_text)
123
+ self.assertIn("RUNTIME_HIDDEN_PARAM:output", payload_text)
124
+
80
125
 
81
126
  if __name__ == "__main__":
82
127
  unittest.main()
@@ -184,6 +184,10 @@ def _build_launch_config_from_env_overrides(env_overrides: Optional[Dict[str, An
184
184
  except Exception:
185
185
  pass
186
186
 
187
+ log_mode = str(overrides.get("MLA_TOOL_RUNTIME_DEFAULTS_LOG_MODE") or "").strip().lower()
188
+ if log_mode:
189
+ config["tool_runtime_defaults_log_mode"] = log_mode
190
+
187
191
  return config
188
192
 
189
193
 
@@ -561,6 +565,8 @@ def launch_task_process(
561
565
  env["MLA_MCP_CONFIG_JSON"] = json.dumps({"servers": config["mcp_servers"]}, ensure_ascii=False)
562
566
  if config.get("tool_runtime_defaults") is not None:
563
567
  env["MLA_TOOL_RUNTIME_DEFAULTS_JSON"] = json.dumps(config["tool_runtime_defaults"], ensure_ascii=False)
568
+ if config.get("tool_runtime_defaults_log_mode") is not None:
569
+ env["MLA_TOOL_RUNTIME_DEFAULTS_LOG_MODE"] = str(config["tool_runtime_defaults_log_mode"]).strip().lower()
564
570
  if config.get("tool_hooks") is not None:
565
571
  env["MLA_TOOL_HOOKS_JSON"] = json.dumps(config["tool_hooks"], ensure_ascii=False)
566
572
  if config.get("context_hooks") is not None:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes