infiagent 3.2.4__tar.gz → 3.2.6__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.6}/PKG-INFO +2 -2
  2. {infiagent-3.2.4 → infiagent-3.2.6}/README.md +1 -1
  3. {infiagent-3.2.4 → infiagent-3.2.6}/core/context_builder.py +16 -9
  4. {infiagent-3.2.4 → infiagent-3.2.6}/core/tool_executor.py +79 -4
  5. {infiagent-3.2.4 → infiagent-3.2.6}/infiagent/sdk.py +70 -0
  6. {infiagent-3.2.4 → infiagent-3.2.6/infiagent.egg-info}/PKG-INFO +2 -2
  7. {infiagent-3.2.4 → infiagent-3.2.6}/setup.py +1 -1
  8. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_sdk_runtime_paths.py +61 -0
  9. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_task_history_index.py +15 -0
  10. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_tool_hooks.py +45 -0
  11. {infiagent-3.2.4 → infiagent-3.2.6}/utils/task_runtime.py +6 -0
  12. {infiagent-3.2.4 → infiagent-3.2.6}/LICENSE +0 -0
  13. {infiagent-3.2.4 → infiagent-3.2.6}/MANIFEST.in +0 -0
  14. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/OpenCowork/general_prompts.yaml +0 -0
  15. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/OpenCowork/level_-1_judge_agent.yaml +0 -0
  16. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/OpenCowork/level_0_tools.yaml +0 -0
  17. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/OpenCowork/level_3_agents.yaml +0 -0
  18. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/Researcher/general_prompts.yaml +0 -0
  19. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/Researcher/level_-1_judge_agent.yaml +0 -0
  20. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/Researcher/level_0_tools.yaml +0 -0
  21. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/Researcher/level_1_agents.yaml +0 -0
  22. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/Researcher/level_2_agents.yaml +0 -0
  23. {infiagent-3.2.4 → infiagent-3.2.6}/config/agent_library/Researcher/level_3_agents.yaml +0 -0
  24. {infiagent-3.2.4 → infiagent-3.2.6}/config/run_env_config/ali_qwen_llm_config.yaml +0 -0
  25. {infiagent-3.2.4 → infiagent-3.2.6}/config/run_env_config/document_convert_api.yaml +0 -0
  26. {infiagent-3.2.4 → infiagent-3.2.6}/config/run_env_config/gemini_config_version.yaml +0 -0
  27. {infiagent-3.2.4 → infiagent-3.2.6}/config/run_env_config/kimi_config_version copy.yaml +0 -0
  28. {infiagent-3.2.4 → infiagent-3.2.6}/config/run_env_config/llm_config.example.yaml +0 -0
  29. {infiagent-3.2.4 → infiagent-3.2.6}/config/run_env_config/llm_config.yaml +0 -0
  30. {infiagent-3.2.4 → infiagent-3.2.6}/config/run_env_config/third_part_api.yaml +0 -0
  31. {infiagent-3.2.4 → infiagent-3.2.6}/core/__init__.py +0 -0
  32. {infiagent-3.2.4 → infiagent-3.2.6}/core/agent_event_emitter.py +0 -0
  33. {infiagent-3.2.4 → infiagent-3.2.6}/core/agent_executor.py +0 -0
  34. {infiagent-3.2.4 → infiagent-3.2.6}/core/event_handlers.py +0 -0
  35. {infiagent-3.2.4 → infiagent-3.2.6}/core/events.py +0 -0
  36. {infiagent-3.2.4 → infiagent-3.2.6}/core/hierarchy_manager.py +0 -0
  37. {infiagent-3.2.4 → infiagent-3.2.6}/core/runtime_exceptions.py +0 -0
  38. {infiagent-3.2.4 → infiagent-3.2.6}/core/state_cleaner.py +0 -0
  39. {infiagent-3.2.4 → infiagent-3.2.6}/infiagent/__init__.py +0 -0
  40. {infiagent-3.2.4 → infiagent-3.2.6}/infiagent.egg-info/SOURCES.txt +0 -0
  41. {infiagent-3.2.4 → infiagent-3.2.6}/infiagent.egg-info/dependency_links.txt +0 -0
  42. {infiagent-3.2.4 → infiagent-3.2.6}/infiagent.egg-info/entry_points.txt +0 -0
  43. {infiagent-3.2.4 → infiagent-3.2.6}/infiagent.egg-info/requires.txt +0 -0
  44. {infiagent-3.2.4 → infiagent-3.2.6}/infiagent.egg-info/top_level.txt +0 -0
  45. {infiagent-3.2.4 → infiagent-3.2.6}/pyproject.toml +0 -0
  46. {infiagent-3.2.4 → infiagent-3.2.6}/requirements.txt +0 -0
  47. {infiagent-3.2.4 → infiagent-3.2.6}/services/__init__.py +0 -0
  48. {infiagent-3.2.4 → infiagent-3.2.6}/services/action_compressor.py +0 -0
  49. {infiagent-3.2.4 → infiagent-3.2.6}/services/context_compressor_backup.py +0 -0
  50. {infiagent-3.2.4 → infiagent-3.2.6}/services/llm_client.py +0 -0
  51. {infiagent-3.2.4 → infiagent-3.2.6}/services/thinking_agent.py +0 -0
  52. {infiagent-3.2.4 → infiagent-3.2.6}/setup.cfg +0 -0
  53. {infiagent-3.2.4 → infiagent-3.2.6}/skills/algorithmic-art/LICENSE.txt +0 -0
  54. {infiagent-3.2.4 → infiagent-3.2.6}/skills/algorithmic-art/SKILL.md +0 -0
  55. {infiagent-3.2.4 → infiagent-3.2.6}/skills/algorithmic-art/templates/generator_template.js +0 -0
  56. {infiagent-3.2.4 → infiagent-3.2.6}/skills/algorithmic-art/templates/viewer.html +0 -0
  57. {infiagent-3.2.4 → infiagent-3.2.6}/skills/brand-guidelines/LICENSE.txt +0 -0
  58. {infiagent-3.2.4 → infiagent-3.2.6}/skills/brand-guidelines/SKILL.md +0 -0
  59. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/LICENSE.txt +0 -0
  60. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/SKILL.md +0 -0
  61. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -0
  62. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  63. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  64. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -0
  65. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  66. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -0
  67. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  68. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  69. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -0
  70. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  71. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  72. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  73. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -0
  74. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  75. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -0
  76. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  77. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -0
  78. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  79. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  80. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -0
  81. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  82. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -0
  83. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  84. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  85. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -0
  86. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  87. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  88. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  89. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  90. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  91. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  92. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  93. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  94. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -0
  95. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  96. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  97. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  98. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -0
  99. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  100. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  101. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -0
  102. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  103. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  104. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  105. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Jura-OFL.txt +0 -0
  106. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -0
  107. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  108. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  109. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  110. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  111. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Lora-OFL.txt +0 -0
  112. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  113. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  114. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -0
  115. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  116. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -0
  117. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  118. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  119. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -0
  120. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  121. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  122. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -0
  123. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -0
  124. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  125. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  126. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -0
  127. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  128. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -0
  129. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  130. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  131. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -0
  132. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  133. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -0
  134. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  135. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  136. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  137. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  138. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -0
  139. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  140. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -0
  141. {infiagent-3.2.4 → infiagent-3.2.6}/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  142. {infiagent-3.2.4 → infiagent-3.2.6}/skills/doc-coauthoring/SKILL.md +0 -0
  143. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/LICENSE.txt +0 -0
  144. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/SKILL.md +0 -0
  145. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/__init__.py +0 -0
  146. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/accept_changes.py +0 -0
  147. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/comment.py +0 -0
  148. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/helpers/__init__.py +0 -0
  149. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/helpers/merge_runs.py +0 -0
  150. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/helpers/simplify_redlines.py +0 -0
  151. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/pack.py +0 -0
  152. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  153. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  154. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  155. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  156. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  157. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  158. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  159. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  160. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  161. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  162. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  163. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  164. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  165. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  166. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  167. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  168. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  169. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  170. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  171. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  172. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  173. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  174. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  175. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  176. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  177. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  178. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  179. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  180. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  181. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  182. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  183. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/mce/mc.xsd +0 -0
  184. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
  185. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
  186. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
  187. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
  188. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
  189. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  190. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
  191. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/soffice.py +0 -0
  192. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/unpack.py +0 -0
  193. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/validate.py +0 -0
  194. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/validators/__init__.py +0 -0
  195. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/validators/base.py +0 -0
  196. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/validators/docx.py +0 -0
  197. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/validators/pptx.py +0 -0
  198. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/office/validators/redlining.py +0 -0
  199. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/templates/comments.xml +0 -0
  200. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/templates/commentsExtended.xml +0 -0
  201. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/templates/commentsExtensible.xml +0 -0
  202. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/templates/commentsIds.xml +0 -0
  203. {infiagent-3.2.4 → infiagent-3.2.6}/skills/docx/scripts/templates/people.xml +0 -0
  204. {infiagent-3.2.4 → infiagent-3.2.6}/skills/frontend-design/LICENSE.txt +0 -0
  205. {infiagent-3.2.4 → infiagent-3.2.6}/skills/frontend-design/SKILL.md +0 -0
  206. {infiagent-3.2.4 → infiagent-3.2.6}/skills/internal-comms/LICENSE.txt +0 -0
  207. {infiagent-3.2.4 → infiagent-3.2.6}/skills/internal-comms/SKILL.md +0 -0
  208. {infiagent-3.2.4 → infiagent-3.2.6}/skills/internal-comms/examples/3p-updates.md +0 -0
  209. {infiagent-3.2.4 → infiagent-3.2.6}/skills/internal-comms/examples/company-newsletter.md +0 -0
  210. {infiagent-3.2.4 → infiagent-3.2.6}/skills/internal-comms/examples/faq-answers.md +0 -0
  211. {infiagent-3.2.4 → infiagent-3.2.6}/skills/internal-comms/examples/general-comms.md +0 -0
  212. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mac-use/SKILL.md +0 -0
  213. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mac-use/requirements.txt +0 -0
  214. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mac-use/scripts/mac_use.py +0 -0
  215. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/LICENSE.txt +0 -0
  216. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/SKILL.md +0 -0
  217. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/reference/evaluation.md +0 -0
  218. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/reference/mcp_best_practices.md +0 -0
  219. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/reference/node_mcp_server.md +0 -0
  220. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/reference/python_mcp_server.md +0 -0
  221. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/scripts/connections.py +0 -0
  222. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/scripts/evaluation.py +0 -0
  223. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/scripts/example_evaluation.xml +0 -0
  224. {infiagent-3.2.4 → infiagent-3.2.6}/skills/mcp-builder/scripts/requirements.txt +0 -0
  225. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/LICENSE.txt +0 -0
  226. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/SKILL.md +0 -0
  227. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/forms.md +0 -0
  228. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/reference.md +0 -0
  229. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/scripts/check_bounding_boxes.py +0 -0
  230. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/scripts/check_fillable_fields.py +0 -0
  231. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/scripts/convert_pdf_to_images.py +0 -0
  232. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/scripts/create_validation_image.py +0 -0
  233. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/scripts/extract_form_field_info.py +0 -0
  234. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/scripts/extract_form_structure.py +0 -0
  235. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/scripts/fill_fillable_fields.py +0 -0
  236. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -0
  237. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/LICENSE.txt +0 -0
  238. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/SKILL.md +0 -0
  239. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/editing.md +0 -0
  240. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/pptxgenjs.md +0 -0
  241. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/__init__.py +0 -0
  242. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/add_slide.py +0 -0
  243. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/clean.py +0 -0
  244. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  245. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/helpers/merge_runs.py +0 -0
  246. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -0
  247. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/pack.py +0 -0
  248. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  249. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  250. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  251. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  252. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  253. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  254. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  255. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  256. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  257. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  258. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  259. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  260. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  261. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  262. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  263. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  264. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  265. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  266. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  267. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  268. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  269. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  270. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  271. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  272. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  273. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  274. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  275. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  276. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  277. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  278. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  279. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/mce/mc.xsd +0 -0
  280. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
  281. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
  282. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
  283. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
  284. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
  285. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  286. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
  287. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/soffice.py +0 -0
  288. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/unpack.py +0 -0
  289. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/validate.py +0 -0
  290. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/validators/__init__.py +0 -0
  291. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/validators/base.py +0 -0
  292. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/validators/docx.py +0 -0
  293. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/validators/pptx.py +0 -0
  294. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/office/validators/redlining.py +0 -0
  295. {infiagent-3.2.4 → infiagent-3.2.6}/skills/pptx/scripts/thumbnail.py +0 -0
  296. {infiagent-3.2.4 → infiagent-3.2.6}/skills/slack-gif-creator/LICENSE.txt +0 -0
  297. {infiagent-3.2.4 → infiagent-3.2.6}/skills/slack-gif-creator/SKILL.md +0 -0
  298. {infiagent-3.2.4 → infiagent-3.2.6}/skills/slack-gif-creator/core/easing.py +0 -0
  299. {infiagent-3.2.4 → infiagent-3.2.6}/skills/slack-gif-creator/core/frame_composer.py +0 -0
  300. {infiagent-3.2.4 → infiagent-3.2.6}/skills/slack-gif-creator/core/gif_builder.py +0 -0
  301. {infiagent-3.2.4 → infiagent-3.2.6}/skills/slack-gif-creator/core/validators.py +0 -0
  302. {infiagent-3.2.4 → infiagent-3.2.6}/skills/slack-gif-creator/requirements.txt +0 -0
  303. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/LICENSE.txt +0 -0
  304. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/SKILL.md +0 -0
  305. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/theme-showcase.pdf +0 -0
  306. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/arctic-frost.md +0 -0
  307. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/botanical-garden.md +0 -0
  308. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/desert-rose.md +0 -0
  309. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/forest-canopy.md +0 -0
  310. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/golden-hour.md +0 -0
  311. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/midnight-galaxy.md +0 -0
  312. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/modern-minimalist.md +0 -0
  313. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/ocean-depths.md +0 -0
  314. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/sunset-boulevard.md +0 -0
  315. {infiagent-3.2.4 → infiagent-3.2.6}/skills/theme-factory/themes/tech-innovation.md +0 -0
  316. {infiagent-3.2.4 → infiagent-3.2.6}/skills/web-artifacts-builder/LICENSE.txt +0 -0
  317. {infiagent-3.2.4 → infiagent-3.2.6}/skills/web-artifacts-builder/SKILL.md +0 -0
  318. {infiagent-3.2.4 → infiagent-3.2.6}/skills/web-artifacts-builder/scripts/bundle-artifact.sh +0 -0
  319. {infiagent-3.2.4 → infiagent-3.2.6}/skills/web-artifacts-builder/scripts/init-artifact.sh +0 -0
  320. {infiagent-3.2.4 → infiagent-3.2.6}/skills/webapp-testing/LICENSE.txt +0 -0
  321. {infiagent-3.2.4 → infiagent-3.2.6}/skills/webapp-testing/SKILL.md +0 -0
  322. {infiagent-3.2.4 → infiagent-3.2.6}/skills/webapp-testing/examples/console_logging.py +0 -0
  323. {infiagent-3.2.4 → infiagent-3.2.6}/skills/webapp-testing/examples/element_discovery.py +0 -0
  324. {infiagent-3.2.4 → infiagent-3.2.6}/skills/webapp-testing/examples/static_html_automation.py +0 -0
  325. {infiagent-3.2.4 → infiagent-3.2.6}/skills/webapp-testing/scripts/with_server.py +0 -0
  326. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/LICENSE.txt +0 -0
  327. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/SKILL.md +0 -0
  328. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  329. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/helpers/merge_runs.py +0 -0
  330. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/helpers/simplify_redlines.py +0 -0
  331. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/pack.py +0 -0
  332. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -0
  333. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -0
  334. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -0
  335. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -0
  336. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -0
  337. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -0
  338. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -0
  339. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -0
  340. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -0
  341. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -0
  342. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -0
  343. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -0
  344. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -0
  345. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -0
  346. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -0
  347. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -0
  348. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -0
  349. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -0
  350. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -0
  351. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -0
  352. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -0
  353. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -0
  354. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -0
  355. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -0
  356. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -0
  357. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -0
  358. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -0
  359. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -0
  360. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -0
  361. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -0
  362. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -0
  363. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/mce/mc.xsd +0 -0
  364. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -0
  365. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -0
  366. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -0
  367. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -0
  368. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -0
  369. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -0
  370. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -0
  371. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/soffice.py +0 -0
  372. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/unpack.py +0 -0
  373. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/validate.py +0 -0
  374. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/validators/__init__.py +0 -0
  375. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/validators/base.py +0 -0
  376. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/validators/docx.py +0 -0
  377. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/validators/pptx.py +0 -0
  378. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/office/validators/redlining.py +0 -0
  379. {infiagent-3.2.4 → infiagent-3.2.6}/skills/xlsx/scripts/recalc.py +0 -0
  380. {infiagent-3.2.4 → infiagent-3.2.6}/start.py +0 -0
  381. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_cheapclaw_service.py +0 -0
  382. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_code_tools_system_terminal.py +0 -0
  383. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_context_hooks.py +0 -0
  384. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_file_tools.py +0 -0
  385. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_image_read_message.py +0 -0
  386. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_kimi_stream_compat.py +0 -0
  387. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_llm_client_lite_openrouter.py +0 -0
  388. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_llm_client_resilience.py +0 -0
  389. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_llm_config_builder.py +0 -0
  390. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_llm_debug_output.py +0 -0
  391. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_reasoning_modes.py +0 -0
  392. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_sdk_observability.py +0 -0
  393. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_thinking_prompt_contract.py +0 -0
  394. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_token_budgeting.py +0 -0
  395. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_web_ui_config_api.py +0 -0
  396. {infiagent-3.2.4 → infiagent-3.2.6}/tests/test_windows_compat.py +0 -0
  397. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/__init__.py +0 -0
  398. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/llm_client_lite.py +0 -0
  399. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/registry.py +0 -0
  400. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/requirements.txt +0 -0
  401. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/BROWSER_IMPROVEMENTS.md +0 -0
  402. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/FILE_READ_USAGE.md +0 -0
  403. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/__init__.py +0 -0
  404. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/arxiv_tools.py +0 -0
  405. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/audio_tools.py +0 -0
  406. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/browser_tools.py +0 -0
  407. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/code_tools.py +0 -0
  408. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/convert_tools.py +0 -0
  409. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/document_tools.py +0 -0
  410. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/file_tools.py +0 -0
  411. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/human_tools.py +0 -0
  412. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/paper_tools.py +0 -0
  413. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/powerpoint_tools.py +0 -0
  414. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/reference_tools.py +0 -0
  415. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/skill_tools.py +0 -0
  416. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/task_tools.py +0 -0
  417. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/vision_tools.py +0 -0
  418. {infiagent-3.2.4 → infiagent-3.2.6}/tool_server_lite/tools/web_tools.py +0 -0
  419. {infiagent-3.2.4 → infiagent-3.2.6}/utils/__init__.py +0 -0
  420. {infiagent-3.2.4 → infiagent-3.2.6}/utils/cli_mode.py +0 -0
  421. {infiagent-3.2.4 → infiagent-3.2.6}/utils/config_loader.py +0 -0
  422. {infiagent-3.2.4 → infiagent-3.2.6}/utils/config_manager.py +0 -0
  423. {infiagent-3.2.4 → infiagent-3.2.6}/utils/context_hooks.py +0 -0
  424. {infiagent-3.2.4 → infiagent-3.2.6}/utils/conversation_storage.py +0 -0
  425. {infiagent-3.2.4 → infiagent-3.2.6}/utils/event_emitter.py +0 -0
  426. {infiagent-3.2.4 → infiagent-3.2.6}/utils/llm_config_builder.py +0 -0
  427. {infiagent-3.2.4 → infiagent-3.2.6}/utils/mcp_manager.py +0 -0
  428. {infiagent-3.2.4 → infiagent-3.2.6}/utils/runtime_control.py +0 -0
  429. {infiagent-3.2.4 → infiagent-3.2.6}/utils/skill_loader.py +0 -0
  430. {infiagent-3.2.4 → infiagent-3.2.6}/utils/task_history_index.py +0 -0
  431. {infiagent-3.2.4 → infiagent-3.2.6}/utils/token_budget.py +0 -0
  432. {infiagent-3.2.4 → infiagent-3.2.6}/utils/tool_hooks.py +0 -0
  433. {infiagent-3.2.4 → infiagent-3.2.6}/utils/user_paths.py +0 -0
  434. {infiagent-3.2.4 → infiagent-3.2.6}/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.6
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.6-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.6-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>
@@ -56,17 +56,24 @@ class ContextBuilder:
56
56
  def _resolve_compressor_tool_choice(self, model: str) -> str:
57
57
  return self.llm_client.resolve_tool_choice("compressor", model)
58
58
 
59
- def _build_task_system_add(self, task_id: str) -> str:
59
+ def _build_task_system_add(self, task_id: str, agent_name: str) -> str:
60
60
  try:
61
- system_add_path = Path(task_id) / "system-add.md"
62
- if not system_add_path.exists():
63
- return ""
64
- content = system_add_path.read_text(encoding="utf-8").strip()
65
- if not content:
66
- return ""
67
- return f"<任务级补充系统提示>\n{content}\n</任务级补充系统提示>"
61
+ task_dir = Path(task_id)
62
+ candidate_paths = []
63
+ if agent_name:
64
+ candidate_paths.append(task_dir / f"system-add.{agent_name}.md")
65
+ candidate_paths.append(task_dir / "system-add.md")
66
+
67
+ for system_add_path in candidate_paths:
68
+ if not system_add_path.exists():
69
+ continue
70
+ content = system_add_path.read_text(encoding="utf-8").strip()
71
+ if not content:
72
+ continue
73
+ return f"<任务级补充系统提示>\n{content}\n</任务级补充系统提示>"
68
74
  except Exception:
69
75
  return ""
76
+ return ""
70
77
 
71
78
  def _count_tokens(self, text: str) -> int:
72
79
  text = str(text or "")
@@ -105,7 +112,7 @@ class ContextBuilder:
105
112
 
106
113
  # 1️⃣ 读取通用系统提示词(general_prompts.yaml,包含<智能体经验>)
107
114
  general_system_prompt = self._load_general_system_prompt(agent_name)
108
- task_system_add = self._build_task_system_add(task_id)
115
+ task_system_add = self._build_task_system_add(task_id, agent_name)
109
116
 
110
117
  # 2️⃣ 构建各个动态部分
111
118
  user_latest_input = self._build_user_latest_input(current)
@@ -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
@@ -85,6 +86,60 @@ def _materialize_inline_llm_config(
85
86
  return str(path)
86
87
 
87
88
 
89
+ def _is_system_add_filename(name: str) -> bool:
90
+ name = str(name or "").strip()
91
+ if name == "system-add.md":
92
+ return True
93
+ return name.startswith("system-add.") and name.endswith(".md")
94
+
95
+
96
+ def _clear_materialized_system_add_files(task_dir: Path) -> None:
97
+ if not task_dir.exists():
98
+ return
99
+ for item in task_dir.iterdir():
100
+ if item.is_file() and _is_system_add_filename(item.name):
101
+ item.unlink()
102
+
103
+
104
+ def _materialize_system_add(
105
+ *,
106
+ task_dir: Path,
107
+ system_add_path: Optional[str] = None,
108
+ system_add_content: Optional[str] = None,
109
+ ) -> None:
110
+ if system_add_path and system_add_content is not None:
111
+ raise ValueError("system_add_path 与 system_add_content 只能二选一")
112
+
113
+ task_dir.mkdir(parents=True, exist_ok=True)
114
+
115
+ if system_add_path is None and system_add_content is None:
116
+ return
117
+
118
+ _clear_materialized_system_add_files(task_dir)
119
+
120
+ if system_add_content is not None:
121
+ (task_dir / "system-add.md").write_text(str(system_add_content), encoding="utf-8")
122
+ return
123
+
124
+ src = Path(str(system_add_path)).expanduser().resolve()
125
+ if not src.exists():
126
+ raise FileNotFoundError(f"system_add_path 不存在: {src}")
127
+
128
+ if src.is_dir():
129
+ candidates = [p for p in sorted(src.iterdir()) if p.is_file() and _is_system_add_filename(p.name)]
130
+ if not candidates:
131
+ raise FileNotFoundError(f"system_add_path 目录中未找到 system-add.md 或 system-add.<agent_name>.md: {src}")
132
+ default_files = [p for p in candidates if p.name == "system-add.md"]
133
+ if len(default_files) > 1:
134
+ raise ValueError(f"system_add_path 目录中包含多个 system-add.md: {src}")
135
+ for file_path in candidates:
136
+ shutil.copy2(file_path, task_dir / file_path.name)
137
+ return
138
+
139
+ target_name = src.name if _is_system_add_filename(src.name) else "system-add.md"
140
+ shutil.copy2(src, task_dir / target_name)
141
+
142
+
88
143
  class InfiAgent:
89
144
  def __init__(
90
145
  self,
@@ -111,6 +166,7 @@ class InfiAgent:
111
166
  fresh_interval_sec: Optional[int] = None,
112
167
  mcp_servers: Optional[List[Dict[str, Any]]] = None,
113
168
  tool_runtime_defaults: Optional[Dict[str, Dict[str, Any]]] = None,
169
+ tool_runtime_defaults_log_mode: str = "fingerprint",
114
170
  tool_hooks: Optional[List[Dict[str, Any]]] = None,
115
171
  context_hooks: Optional[List[Dict[str, Any]]] = None,
116
172
  visible_skills: Optional[List[str]] = None,
@@ -176,6 +232,7 @@ class InfiAgent:
176
232
  self.runtime_env_overrides["MLA_MCP_CONFIG_JSON"] = json.dumps({"servers": mcp_servers}, ensure_ascii=False)
177
233
  if tool_runtime_defaults is not None:
178
234
  self.runtime_env_overrides["MLA_TOOL_RUNTIME_DEFAULTS_JSON"] = json.dumps(tool_runtime_defaults, ensure_ascii=False)
235
+ self.runtime_env_overrides["MLA_TOOL_RUNTIME_DEFAULTS_LOG_MODE"] = str(tool_runtime_defaults_log_mode or "fingerprint").strip().lower() or "fingerprint"
179
236
  if tool_hooks is not None:
180
237
  self.runtime_env_overrides["MLA_TOOL_HOOKS_JSON"] = json.dumps(tool_hooks, ensure_ascii=False)
181
238
  if context_hooks is not None:
@@ -203,6 +260,7 @@ class InfiAgent:
203
260
  self.fresh_interval_sec = max(0, int(fresh_interval_sec)) if fresh_interval_sec is not None else None
204
261
  self.mcp_servers = mcp_servers
205
262
  self.tool_runtime_defaults = tool_runtime_defaults
263
+ self.tool_runtime_defaults_log_mode = str(tool_runtime_defaults_log_mode or "fingerprint").strip().lower() or "fingerprint"
206
264
  self.tool_hooks = tool_hooks
207
265
  self.context_hooks = context_hooks
208
266
  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 +322,8 @@ class InfiAgent:
264
322
  config["mcp_servers"] = self.mcp_servers
265
323
  if self.tool_runtime_defaults is not None:
266
324
  config["tool_runtime_defaults"] = self.tool_runtime_defaults
325
+ if self.tool_runtime_defaults_log_mode:
326
+ config["tool_runtime_defaults_log_mode"] = self.tool_runtime_defaults_log_mode
267
327
  if self.tool_hooks is not None:
268
328
  config["tool_hooks"] = self.tool_hooks
269
329
  if self.context_hooks is not None:
@@ -327,6 +387,9 @@ class InfiAgent:
327
387
  user_history_recent_items: Optional[int] = None,
328
388
  max_turns: Optional[int] = None,
329
389
  tool_runtime_defaults: Optional[Dict[str, Dict[str, Any]]] = None,
390
+ tool_runtime_defaults_log_mode: Optional[str] = None,
391
+ system_add_path: Optional[str] = None,
392
+ system_add_content: Optional[str] = None,
330
393
  ) -> Dict[str, Any]:
331
394
  target_task_id = self._resolve_task_id(task_id=task_id, workspace=workspace)
332
395
  Path(target_task_id).mkdir(parents=True, exist_ok=True)
@@ -357,6 +420,13 @@ class InfiAgent:
357
420
  extra_runtime_overrides["MLA_MAX_TURNS"] = str(max(1, int(max_turns)))
358
421
  if tool_runtime_defaults is not None:
359
422
  extra_runtime_overrides["MLA_TOOL_RUNTIME_DEFAULTS_JSON"] = json.dumps(tool_runtime_defaults, ensure_ascii=False)
423
+ if tool_runtime_defaults_log_mode is not None:
424
+ extra_runtime_overrides["MLA_TOOL_RUNTIME_DEFAULTS_LOG_MODE"] = str(tool_runtime_defaults_log_mode or "fingerprint").strip().lower() or "fingerprint"
425
+ _materialize_system_add(
426
+ task_dir=Path(target_task_id),
427
+ system_add_path=system_add_path,
428
+ system_add_content=system_add_content,
429
+ )
360
430
 
361
431
  with self._runtime_scope(extra_runtime_overrides or None):
362
432
  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.6
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.6-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.6",
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,58 @@ 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
+
298
+ def test_run_can_materialize_system_add_directory(self):
299
+ root = (self.base / "system_add_dir_root").resolve()
300
+ task_id = str((self.base / "system_add_dir_task").resolve())
301
+ source_dir = (self.base / "system_add_src").resolve()
302
+ source_dir.mkdir(parents=True, exist_ok=True)
303
+ (source_dir / "system-add.md").write_text("DEFAULT_MARKER", encoding="utf-8")
304
+ (source_dir / "system-add.alpha_agent.md").write_text("ALPHA_MARKER", encoding="utf-8")
305
+ agent = infiagent(user_data_root=str(root))
306
+
307
+ with patch("infiagent.sdk.is_task_running", return_value=True):
308
+ result = agent.run(
309
+ "noop",
310
+ task_id=task_id,
311
+ system_add_path=str(source_dir),
312
+ )
313
+
314
+ self.assertEqual(result["status"], "busy")
315
+ self.assertEqual((Path(task_id) / "system-add.md").read_text(encoding="utf-8"), "DEFAULT_MARKER")
316
+ self.assertEqual((Path(task_id) / "system-add.alpha_agent.md").read_text(encoding="utf-8"), "ALPHA_MARKER")
317
+
318
+ def test_run_can_materialize_agent_specific_system_add_file(self):
319
+ root = (self.base / "system_add_file_root").resolve()
320
+ task_id = str((self.base / "system_add_file_task").resolve())
321
+ source_file = (self.base / "system-add.alpha_agent.md").resolve()
322
+ source_file.write_text("ALPHA_ONLY_MARKER", encoding="utf-8")
323
+ agent = infiagent(user_data_root=str(root))
324
+
325
+ with patch("infiagent.sdk.is_task_running", return_value=True):
326
+ result = agent.run(
327
+ "noop",
328
+ task_id=task_id,
329
+ system_add_path=str(source_file),
330
+ )
331
+
332
+ self.assertEqual(result["status"], "busy")
333
+ self.assertEqual((Path(task_id) / "system-add.alpha_agent.md").read_text(encoding="utf-8"), "ALPHA_ONLY_MARKER")
334
+
274
335
  def test_add_message_resume_if_needed_uses_resume_when_stack_exists(self):
275
336
  root = (self.base / "resume_root").resolve()
276
337
  task_id = str((self.base / "resume_task").resolve())
@@ -160,6 +160,21 @@ class TaskHistoryIndexTests(unittest.TestCase):
160
160
  self.assertEqual(total_count, 3)
161
161
  self.assertEqual(selected, [{"c": 3}])
162
162
 
163
+ def test_agent_specific_system_add_takes_precedence_over_default(self):
164
+ task_id = str((self.root / "task_system_add").resolve())
165
+ task_dir = Path(task_id)
166
+ task_dir.mkdir(parents=True, exist_ok=True)
167
+ (task_dir / "system-add.md").write_text("DEFAULT_SYSTEM_ADD", encoding="utf-8")
168
+ (task_dir / "system-add.alpha_agent.md").write_text("ALPHA_SYSTEM_ADD", encoding="utf-8")
169
+
170
+ with runtime_env_scope({"MLA_USER_DATA_ROOT": str(self.root)}):
171
+ hierarchy = _DummyHierarchyManager({"history": [], "current": {}, "runtime": {}})
172
+ builder = ContextBuilder(hierarchy, {}, _DummyConfigLoader(), llm_client=None)
173
+ content = builder._build_task_system_add(task_id, "alpha_agent")
174
+
175
+ self.assertIn("ALPHA_SYSTEM_ADD", content)
176
+ self.assertNotIn("DEFAULT_SYSTEM_ADD", content)
177
+
163
178
 
164
179
  if __name__ == "__main__":
165
180
  unittest.main()
@@ -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