orcakit-harness-agent 0.7.0__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 (280) hide show
  1. orcakit_harness_agent-0.7.0/.gitignore +59 -0
  2. orcakit_harness_agent-0.7.0/CHANGELOG.md +55 -0
  3. orcakit_harness_agent-0.7.0/LICENSE +21 -0
  4. orcakit_harness_agent-0.7.0/PKG-INFO +286 -0
  5. orcakit_harness_agent-0.7.0/README.md +219 -0
  6. orcakit_harness_agent-0.7.0/pyproject.toml +256 -0
  7. orcakit_harness_agent-0.7.0/src/harness_agent/__init__.py +76 -0
  8. orcakit_harness_agent-0.7.0/src/harness_agent/acp/__init__.py +27 -0
  9. orcakit_harness_agent-0.7.0/src/harness_agent/acp/client.py +199 -0
  10. orcakit_harness_agent-0.7.0/src/harness_agent/acp/models.py +161 -0
  11. orcakit_harness_agent-0.7.0/src/harness_agent/acp/permissions.py +206 -0
  12. orcakit_harness_agent-0.7.0/src/harness_agent/acp/server.py +276 -0
  13. orcakit_harness_agent-0.7.0/src/harness_agent/acp/service.py +390 -0
  14. orcakit_harness_agent-0.7.0/src/harness_agent/acp/tool_adapter.py +83 -0
  15. orcakit_harness_agent-0.7.0/src/harness_agent/agent.py +1082 -0
  16. orcakit_harness_agent-0.7.0/src/harness_agent/backends/__init__.py +289 -0
  17. orcakit_harness_agent-0.7.0/src/harness_agent/backends/compat.py +37 -0
  18. orcakit_harness_agent-0.7.0/src/harness_agent/backends/cos.py +570 -0
  19. orcakit_harness_agent-0.7.0/src/harness_agent/backends/probe.py +214 -0
  20. orcakit_harness_agent-0.7.0/src/harness_agent/backends/utils.py +57 -0
  21. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/__init__.py +3 -0
  22. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/_sync.py +98 -0
  23. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/__init__.py +8 -0
  24. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/en/AGENTS.md +113 -0
  25. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/en/BOOTSTRAP.md +34 -0
  26. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/en/MEMORY.md +28 -0
  27. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/en/PROACTIVE.md +59 -0
  28. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/en/USER.md +42 -0
  29. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/zh/AGENTS.md +113 -0
  30. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/zh/BOOTSTRAP.md +34 -0
  31. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/zh/MEMORY.md +28 -0
  32. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/zh/PROACTIVE.md +65 -0
  33. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/md_files/zh/USER.md +42 -0
  34. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/__init__.py +1 -0
  35. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/apple-notes/SKILL.md +106 -0
  36. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/apple-reminders/SKILL.md +199 -0
  37. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/architecture-diagram/SKILL.md +164 -0
  38. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/architecture-diagram/templates/template.html +319 -0
  39. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-art/SKILL.md +338 -0
  40. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/README.md +290 -0
  41. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/SKILL.md +257 -0
  42. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/references/architecture.md +802 -0
  43. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/references/composition.md +892 -0
  44. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/references/effects.md +1865 -0
  45. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/references/inputs.md +685 -0
  46. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/references/optimization.md +688 -0
  47. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/references/scenes.md +1011 -0
  48. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/references/shaders.md +1385 -0
  49. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ascii-video/references/troubleshooting.md +367 -0
  50. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/docker-management/SKILL.md +297 -0
  51. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/excalidraw/SKILL.md +215 -0
  52. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/excalidraw/references/colors.md +44 -0
  53. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/excalidraw/references/dark-mode.md +68 -0
  54. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/excalidraw/references/examples.md +141 -0
  55. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/excalidraw/scripts/upload.py +135 -0
  56. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/fastmcp/SKILL.md +313 -0
  57. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/fastmcp/references/fastmcp-cli.md +110 -0
  58. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/fastmcp/scripts/scaffold_fastmcp.py +55 -0
  59. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/fastmcp/templates/api_wrapper.py +53 -0
  60. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/fastmcp/templates/database_server.py +76 -0
  61. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/fastmcp/templates/file_processor.py +54 -0
  62. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/findmy/SKILL.md +150 -0
  63. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/imessage/SKILL.md +118 -0
  64. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/install-skill/SKILL.md +195 -0
  65. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/jupyter-live-kernel/SKILL.md +186 -0
  66. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/jupyter-live-kernel/scripts/jupyter_live_kernel.py +2190 -0
  67. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/llm-wiki/SKILL.md +524 -0
  68. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/README.md +23 -0
  69. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/SKILL.md +285 -0
  70. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/animation-design-thinking.md +161 -0
  71. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/animations.md +282 -0
  72. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/camera-and-3d.md +135 -0
  73. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/decorations.md +202 -0
  74. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/equations.md +216 -0
  75. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/graphs-and-data.md +163 -0
  76. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/mobjects.md +333 -0
  77. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/paper-explainer.md +255 -0
  78. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/production-quality.md +190 -0
  79. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/rendering.md +185 -0
  80. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/scene-planning.md +118 -0
  81. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/troubleshooting.md +135 -0
  82. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/updaters-and-trackers.md +260 -0
  83. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/references/visual-design.md +124 -0
  84. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/manim-video/scripts/setup.sh +14 -0
  85. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/mcporter/SKILL.md +225 -0
  86. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/memory-management/SKILL.md +55 -0
  87. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/nano-pdf/SKILL.md +68 -0
  88. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ocr-and-documents/DESCRIPTION.md +3 -0
  89. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ocr-and-documents/SKILL.md +187 -0
  90. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ocr-and-documents/scripts/extract_marker.py +98 -0
  91. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/ocr-and-documents/scripts/extract_pymupdf.py +116 -0
  92. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/plan/SKILL.md +355 -0
  93. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/LICENSE.txt +30 -0
  94. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/SKILL.md +256 -0
  95. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/editing.md +205 -0
  96. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/pptxgenjs.md +420 -0
  97. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/__init__.py +0 -0
  98. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/add_slide.py +199 -0
  99. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/clean.py +279 -0
  100. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/helpers/__init__.py +0 -0
  101. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/helpers/merge_runs.py +192 -0
  102. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/helpers/simplify_redlines.py +192 -0
  103. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/pack.py +153 -0
  104. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  105. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  106. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  107. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  108. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  109. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  110. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  111. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  112. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  113. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  114. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  115. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  116. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  117. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  118. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  119. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  120. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  121. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  122. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  123. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  124. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  125. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  126. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  127. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  128. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  129. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  130. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  131. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ecma/fourth-edition/opc-contentTypes.xsd +42 -0
  132. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ecma/fourth-edition/opc-coreProperties.xsd +50 -0
  133. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ecma/fourth-edition/opc-digSig.xsd +49 -0
  134. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/ecma/fourth-edition/opc-relationships.xsd +33 -0
  135. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/mce/mc.xsd +75 -0
  136. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  137. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  138. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  139. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  140. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  141. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  142. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/powerpoint/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  143. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/skill-creator/SKILL.md +272 -0
  144. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/systematic-debugging/SKILL.md +425 -0
  145. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/using-workspace/SKILL.md +49 -0
  146. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/watchers/SKILL.md +132 -0
  147. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/watchers/scripts/_watermark.py +145 -0
  148. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/watchers/scripts/watch_github.py +153 -0
  149. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/watchers/scripts/watch_http_json.py +132 -0
  150. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/watchers/scripts/watch_rss.py +115 -0
  151. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/web-search/SKILL.md +108 -0
  152. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/skills/web-search/scripts/web_search.py +288 -0
  153. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/templates.py +46 -0
  154. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/__init__.py +17 -0
  155. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/acp_runner.py +309 -0
  156. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/browser_use.py +423 -0
  157. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/current_time.py +76 -0
  158. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/desktop_screenshot.py +133 -0
  159. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/memory_tools.py +79 -0
  160. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/send_file.py +109 -0
  161. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/web_fetch.py +61 -0
  162. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/web_search/__init__.py +18 -0
  163. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/web_search/_registry.py +137 -0
  164. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/web_search/brave.py +53 -0
  165. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/web_search/google.py +60 -0
  166. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/web_search/kimi.py +53 -0
  167. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/web_search/searchfree.py +74 -0
  168. orcakit_harness_agent-0.7.0/src/harness_agent/builtin/tools/web_search/tavily.py +60 -0
  169. orcakit_harness_agent-0.7.0/src/harness_agent/cli/__init__.py +54 -0
  170. orcakit_harness_agent-0.7.0/src/harness_agent/cli/agents/__init__.py +8 -0
  171. orcakit_harness_agent-0.7.0/src/harness_agent/cli/agents/manager.py +111 -0
  172. orcakit_harness_agent-0.7.0/src/harness_agent/cli/agents/profile.py +68 -0
  173. orcakit_harness_agent-0.7.0/src/harness_agent/cli/commands/__init__.py +1 -0
  174. orcakit_harness_agent-0.7.0/src/harness_agent/cli/commands/agent_cmd.py +144 -0
  175. orcakit_harness_agent-0.7.0/src/harness_agent/cli/commands/chat.py +93 -0
  176. orcakit_harness_agent-0.7.0/src/harness_agent/cli/commands/config_cmd.py +169 -0
  177. orcakit_harness_agent-0.7.0/src/harness_agent/cli/commands/init_cmd.py +135 -0
  178. orcakit_harness_agent-0.7.0/src/harness_agent/cli/commands/skill.py +78 -0
  179. orcakit_harness_agent-0.7.0/src/harness_agent/cli/commands/update.py +43 -0
  180. orcakit_harness_agent-0.7.0/src/harness_agent/cli/config/__init__.py +7 -0
  181. orcakit_harness_agent-0.7.0/src/harness_agent/cli/config/loader.py +96 -0
  182. orcakit_harness_agent-0.7.0/src/harness_agent/cli/config/paths.py +98 -0
  183. orcakit_harness_agent-0.7.0/src/harness_agent/cli/config/schema.py +46 -0
  184. orcakit_harness_agent-0.7.0/src/harness_agent/cli/main.py +45 -0
  185. orcakit_harness_agent-0.7.0/src/harness_agent/cli/providers/__init__.py +33 -0
  186. orcakit_harness_agent-0.7.0/src/harness_agent/cli/providers/registry.py +37 -0
  187. orcakit_harness_agent-0.7.0/src/harness_agent/cli/providers/setup_wizard.py +224 -0
  188. orcakit_harness_agent-0.7.0/src/harness_agent/cli/py.typed +0 -0
  189. orcakit_harness_agent-0.7.0/src/harness_agent/cli/repl/__init__.py +7 -0
  190. orcakit_harness_agent-0.7.0/src/harness_agent/cli/repl/commands.py +442 -0
  191. orcakit_harness_agent-0.7.0/src/harness_agent/cli/repl/handler.py +345 -0
  192. orcakit_harness_agent-0.7.0/src/harness_agent/cli/repl/loop.py +201 -0
  193. orcakit_harness_agent-0.7.0/src/harness_agent/cli/repl/slash_router.py +114 -0
  194. orcakit_harness_agent-0.7.0/src/harness_agent/cli/repl/state.py +43 -0
  195. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/__init__.py +7 -0
  196. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/completer.py +184 -0
  197. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/file_ref.py +216 -0
  198. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/input.py +52 -0
  199. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/renderer.py +131 -0
  200. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/spinner.py +23 -0
  201. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/theme.py +81 -0
  202. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/thinking.py +122 -0
  203. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/token_bar.py +142 -0
  204. orcakit_harness_agent-0.7.0/src/harness_agent/cli/ui/toolbar.py +33 -0
  205. orcakit_harness_agent-0.7.0/src/harness_agent/config/__init__.py +717 -0
  206. orcakit_harness_agent-0.7.0/src/harness_agent/config/env.py +147 -0
  207. orcakit_harness_agent-0.7.0/src/harness_agent/init.py +201 -0
  208. orcakit_harness_agent-0.7.0/src/harness_agent/llm/__init__.py +7 -0
  209. orcakit_harness_agent-0.7.0/src/harness_agent/llm/factory.py +475 -0
  210. orcakit_harness_agent-0.7.0/src/harness_agent/manager.py +420 -0
  211. orcakit_harness_agent-0.7.0/src/harness_agent/mcp.py +206 -0
  212. orcakit_harness_agent-0.7.0/src/harness_agent/messages.py +73 -0
  213. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/__init__.py +9 -0
  214. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/bootstrap.py +207 -0
  215. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/mcp_tools.py +106 -0
  216. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/media_offload.py +392 -0
  217. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/memory.py +454 -0
  218. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/model_router.py +135 -0
  219. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/pii.py +110 -0
  220. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/runtime.py +53 -0
  221. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/skill_filter.py +119 -0
  222. orcakit_harness_agent-0.7.0/src/harness_agent/middleware/tool_guard.py +79 -0
  223. orcakit_harness_agent-0.7.0/src/harness_agent/observability/__init__.py +12 -0
  224. orcakit_harness_agent-0.7.0/src/harness_agent/observability/langfuse.py +111 -0
  225. orcakit_harness_agent-0.7.0/src/harness_agent/observability/logging.py +99 -0
  226. orcakit_harness_agent-0.7.0/src/harness_agent/plugins/__init__.py +26 -0
  227. orcakit_harness_agent-0.7.0/src/harness_agent/plugins/context.py +90 -0
  228. orcakit_harness_agent-0.7.0/src/harness_agent/plugins/loader.py +111 -0
  229. orcakit_harness_agent-0.7.0/src/harness_agent/plugins/manifest.py +59 -0
  230. orcakit_harness_agent-0.7.0/src/harness_agent/plugins/registry.py +94 -0
  231. orcakit_harness_agent-0.7.0/src/harness_agent/plugins/tools.py +101 -0
  232. orcakit_harness_agent-0.7.0/src/harness_agent/protocols/__init__.py +57 -0
  233. orcakit_harness_agent-0.7.0/src/harness_agent/protocols/base.py +69 -0
  234. orcakit_harness_agent-0.7.0/src/harness_agent/protocols/langgraph.py +194 -0
  235. orcakit_harness_agent-0.7.0/src/harness_agent/protocols/mcp.py +168 -0
  236. orcakit_harness_agent-0.7.0/src/harness_agent/protocols/openai.py +209 -0
  237. orcakit_harness_agent-0.7.0/src/harness_agent/protocols/think_splitter.py +88 -0
  238. orcakit_harness_agent-0.7.0/src/harness_agent/providers/__init__.py +159 -0
  239. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/__init__.py +0 -0
  240. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/anthropic.png +0 -0
  241. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/custom-provider.svg +15 -0
  242. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/dashscope.png +0 -0
  243. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/deepseek.png +0 -0
  244. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/gemini.png +0 -0
  245. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/groq.png +0 -0
  246. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/mimo.svg +17 -0
  247. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/minimax.png +0 -0
  248. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/modelscope.png +0 -0
  249. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/moonshot.webp +0 -0
  250. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/ollama.png +0 -0
  251. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/openai.png +0 -0
  252. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/openrouter.png +0 -0
  253. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/silicon.png +0 -0
  254. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/tencent-coding-plan.png +0 -0
  255. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/tencent-token-plan.png +0 -0
  256. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/volces.svg +1 -0
  257. orcakit_harness_agent-0.7.0/src/harness_agent/providers/logos/zhipu.png +0 -0
  258. orcakit_harness_agent-0.7.0/src/harness_agent/providers/provider_template.json +289 -0
  259. orcakit_harness_agent-0.7.0/src/harness_agent/py.typed +0 -0
  260. orcakit_harness_agent-0.7.0/src/harness_agent/registry.py +105 -0
  261. orcakit_harness_agent-0.7.0/src/harness_agent/request.py +214 -0
  262. orcakit_harness_agent-0.7.0/src/harness_agent/security/__init__.py +21 -0
  263. orcakit_harness_agent-0.7.0/src/harness_agent/security/models.py +323 -0
  264. orcakit_harness_agent-0.7.0/src/harness_agent/security/tool_guard/__init__.py +15 -0
  265. orcakit_harness_agent-0.7.0/src/harness_agent/security/tool_guard/engine.py +97 -0
  266. orcakit_harness_agent-0.7.0/src/harness_agent/security/tool_guard/models.py +114 -0
  267. orcakit_harness_agent-0.7.0/src/harness_agent/security/tool_guard/rule_guardian.py +239 -0
  268. orcakit_harness_agent-0.7.0/src/harness_agent/security/tool_guard/rules/dangerous_shell_commands.yaml +310 -0
  269. orcakit_harness_agent-0.7.0/src/harness_agent/slash/__init__.py +37 -0
  270. orcakit_harness_agent-0.7.0/src/harness_agent/slash/core.py +202 -0
  271. orcakit_harness_agent-0.7.0/src/harness_agent/slash/dispatcher.py +8 -0
  272. orcakit_harness_agent-0.7.0/src/harness_agent/slash/handlers.py +109 -0
  273. orcakit_harness_agent-0.7.0/src/harness_agent/slash/runtime.py +140 -0
  274. orcakit_harness_agent-0.7.0/src/harness_agent/teams/__init__.py +36 -0
  275. orcakit_harness_agent-0.7.0/src/harness_agent/teams/inbox.py +275 -0
  276. orcakit_harness_agent-0.7.0/src/harness_agent/teams/mentions.py +23 -0
  277. orcakit_harness_agent-0.7.0/src/harness_agent/teams/processor.py +90 -0
  278. orcakit_harness_agent-0.7.0/src/harness_agent/teams/team_manager.py +434 -0
  279. orcakit_harness_agent-0.7.0/src/harness_agent/teams/tools.py +154 -0
  280. orcakit_harness_agent-0.7.0/src/harness_agent/teams/util.py +32 -0
@@ -0,0 +1,59 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ dist/
9
+ *.egg-info/
10
+ *.egg
11
+ .eggs/
12
+ wheels/
13
+ *.whl
14
+
15
+ # Virtual environments
16
+ .venv/
17
+ venv/
18
+ env/
19
+ ENV/
20
+
21
+ # Tooling caches
22
+ .pytest_cache/
23
+ .mypy_cache/
24
+ .ruff_cache/
25
+ .coverage
26
+ .coverage.*
27
+ htmlcov/
28
+ coverage.xml
29
+ .tox/
30
+ .nox/
31
+
32
+ # IDE
33
+ .vscode/
34
+ .idea/
35
+ *.swp
36
+ *.swo
37
+ .DS_Store
38
+
39
+ # uv
40
+ # Keep uv.lock tracked; ignore only local downloads
41
+ .uv/
42
+
43
+ # hatch-vcs auto-generated version file (single source of truth = git tag)
44
+ src/harness_agent/_version.py
45
+
46
+ # Local agent runtime artifacts (when using examples/)
47
+ agent_root/
48
+ .e2e_root/
49
+ .cos_e2e_root/
50
+ .init_demo_root/
51
+ .skills_tour_root/
52
+ *.sqlite
53
+ *.sqlite-journal
54
+ sessions/
55
+
56
+ # Direnv
57
+ .envrc
58
+ .env
59
+ .env.local
@@ -0,0 +1,55 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Fixed
11
+
12
+ - `teams`: `@agent` mentions now resolve peer agents by name (same path as `ask_agent` sync) via `resolve_mention_targets` / `ask_peer_sync`; hosts can call `TeamManager.prepare_request_mentions` for full request handling.
13
+
14
+ ### Added
15
+ - MCP server integration via `langchain-mcp-adapters`: `HarnessAgentConfig.mcp_server_configs`,
16
+ `mcp_default_servers`, per-request opt-in on `ChatRequest` (`mcp_servers` / `mcp_use_default`),
17
+ and `HarnessAgentManager` shared `mcp_server_configs` merged into each agent.
18
+ - `harness_agent.providers` module: `ModelPreset`, `ProviderPreset` dataclasses and `load_provider_templates(templates_path=None)` — core layer, no CLI dependency.
19
+ - `AgentManager.list_provider_templates(templates_path=None)` — returns built-in or custom provider presets.
20
+ - `ChatRequest` per-request `skills` filter and optional `agent_id` (written to `RunnableConfig.configurable`).
21
+ - `SkillFilterMiddleware` restricts the skills system prompt to `ChatRequest.skills` when set.
22
+
23
+ ### Changed
24
+ - Renamed internal package `harness_agent.models` → `harness_agent.llm` (`ChatModelFactory` import path).
25
+ - Bootstrap middleware stays registered when `bootstrap_enabled=True` even if `BOOTSTRAP.md` is seeded after agent construction; `HarnessAgentManager.create_agent(..., init_workspace=True)` recompiles the graph after seeding. Marker detection uses the agent backend (`/.bootstrapped`); completing onboarding auto-writes the marker when `USER.md` is updated.
26
+ - `HarnessAgentManager.create_agent()` auto-generated `agent_id` is now a 6-character
27
+ lowercase alphanumeric string (was uuid4).
28
+ - `ProviderConfig` now has a required `id` field (was the dict key in `HarnessAgentConfig.providers`).
29
+ - `HarnessAgentConfig.providers` is now `list[ProviderConfig]` instead of `dict[str, ProviderConfig]`.
30
+ Old dict-format JSON configs are automatically migrated on load via `from_dict`.
31
+ - `ChatModelFactory` now accepts `list[ProviderConfig]` instead of `HarnessAgentConfig`.
32
+ - `HarnessAgent` accepts an optional `model_factory: ChatModelFactory` keyword argument.
33
+ When provided, the factory is reused directly instead of building a new one.
34
+ - `AgentManager` accepts an optional `providers: list[ProviderConfig]` constructor argument.
35
+ When provided, a shared `ChatModelFactory` is built once and reused for all managed agents.
36
+ - **Breaking:** `HarnessAgentManager` CRUD methods renamed for clarity: `create()` → `create_agent()`,
37
+ `get()` → `get_agent()`, `remove()` → `remove_agent()`, `list()` → `list_agents()`.
38
+ - `HarnessAgentManager.create_agent()` now builds and caches `HarnessAgent` eagerly (previously built lazily per-stream).
39
+ The cached instance is reused across all subsequent `stream()` calls for that agent.
40
+ - `HarnessAgentManager.create_agent()` gains `init_workspace: bool = True` — workspace is initialised automatically on agent creation.
41
+ - `HarnessAgentManager.remove_agent()` now calls `agent.close()` to release resources (SqliteSaver, etc.) before removing the entry.
42
+ - `AgentManager` gains a `close()` method that closes all cached agents and clears the registry.
43
+ - `AgentManager` supports both sync (`with`) and async (`async with`) context manager protocols.
44
+ - `AgentEntry` gains an `agent` field exposing the cached `HarnessAgent` instance (e.g. `entry.agent.backend` for direct backend access).
45
+ - `provider_template.json` moved from `builtin/providers/` to `providers/`.
46
+
47
+ ### Removed
48
+ - `harness_agent.builtin.providers` compatibility shim (use `harness_agent.providers` instead).
49
+ - `cli/providers/registry.py` is now a thin re-export of core types.
50
+ - CLI: `harness-agent`(无参数)现在直接进入 chat REPL,不再显示 help 文本(`--help` 行为不变)
51
+ - CLI: 启动时自动加载 `.env` 文件(项目目录 `<cwd>/.env` 优先,回退到 `~/.harness-agent/.env`;不覆盖已有 shell 环境变量)
52
+ - CLI: REPL 新增 `/env` 命令,支持 `set`/`get`/`list`/`unset`/`reload` 操作,写入 `~/.harness-agent/.env`
53
+ - CLI: `/model` 改为交互式编号列表选择,去掉 `/model <name>` 直接设置
54
+ - CLI: 自动补全 slash 命令列表改为从命令注册表动态生成,修复缺少 `/env`、`/agent` 等命令的问题
55
+ - `python-dotenv>=1.0` 加入 `cli` optional extra 依赖
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OrcaKit
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,286 @@
1
+ Metadata-Version: 2.4
2
+ Name: orcakit-harness-agent
3
+ Version: 0.7.0
4
+ Summary: Production-grade Harness Agent built on top of LangChain Deep Agents.
5
+ Project-URL: Homepage, https://github.com/orcakit/harness-agent
6
+ Project-URL: Repository, https://github.com/orcakit/harness-agent
7
+ Project-URL: Issues, https://github.com/orcakit/harness-agent/issues
8
+ Project-URL: Changelog, https://github.com/orcakit/harness-agent/blob/main/CHANGELOG.md
9
+ Author: orcakit
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: agent,deep-agents,harness,langchain,langgraph,llm
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Requires-Python: >=3.11
23
+ Requires-Dist: deepagents<1.0,>=0.6
24
+ Requires-Dist: harness-browser>=0.1.1
25
+ Requires-Dist: harness-memory>=0.1
26
+ Requires-Dist: httpx>=0.27
27
+ Requires-Dist: langchain-anthropic<2.0,>=1.4
28
+ Requires-Dist: langchain-core<2.0,>=1.4
29
+ Requires-Dist: langchain-mcp-adapters>=0.3.0
30
+ Requires-Dist: langchain-openai>=0.3
31
+ Requires-Dist: langchain<2.0,>=1.3
32
+ Requires-Dist: langgraph-checkpoint-sqlite>=2.0
33
+ Requires-Dist: langgraph<2.0,>=1.0
34
+ Requires-Dist: markdownify>=0.13
35
+ Requires-Dist: mcp>=1.27.1
36
+ Requires-Dist: pyyaml>=6.0
37
+ Provides-Extra: acp
38
+ Requires-Dist: agent-client-protocol>=0.9.0; extra == 'acp'
39
+ Requires-Dist: psutil>=5.9; extra == 'acp'
40
+ Provides-Extra: bedrock
41
+ Requires-Dist: langchain-aws>=0.2; extra == 'bedrock'
42
+ Provides-Extra: brave
43
+ Requires-Dist: langchain-community>=0.3; extra == 'brave'
44
+ Provides-Extra: cli
45
+ Requires-Dist: click>=8.1; extra == 'cli'
46
+ Requires-Dist: prompt-toolkit>=3.0; extra == 'cli'
47
+ Requires-Dist: python-dotenv>=1.0; extra == 'cli'
48
+ Requires-Dist: rich>=13.0; extra == 'cli'
49
+ Provides-Extra: cos
50
+ Requires-Dist: cos-python-sdk-v5>=1.9; extra == 'cos'
51
+ Provides-Extra: desktop
52
+ Requires-Dist: mss>=9.0; extra == 'desktop'
53
+ Provides-Extra: google-search
54
+ Requires-Dist: google-api-python-client>=2.0; extra == 'google-search'
55
+ Requires-Dist: langchain-community>=0.3; extra == 'google-search'
56
+ Provides-Extra: observability
57
+ Requires-Dist: langfuse>=4.9.0; extra == 'observability'
58
+ Provides-Extra: remote-backends
59
+ Requires-Dist: deepagents-backends>=0.2; (python_version >= '3.12') and extra == 'remote-backends'
60
+ Provides-Extra: tavily
61
+ Requires-Dist: langchain-tavily>=0.1; extra == 'tavily'
62
+ Provides-Extra: web-search-all
63
+ Requires-Dist: google-api-python-client>=2.0; extra == 'web-search-all'
64
+ Requires-Dist: langchain-community>=0.3; extra == 'web-search-all'
65
+ Requires-Dist: langchain-tavily>=0.1; extra == 'web-search-all'
66
+ Description-Content-Type: text/markdown
67
+
68
+ <p align="center">
69
+ <img src="assets/images/banner.jpeg" alt="Harness Agent Banner" width="100%" />
70
+ </p>
71
+
72
+ <h1 align="center">Harness Agent</h1>
73
+
74
+ <p align="center">
75
+ <strong>Production-grade AI agent platform built on LangChain Deep Agents.</strong>
76
+ </p>
77
+
78
+ <p align="center">
79
+ <a href="https://pypi.org/project/orcakit-harness-agent/"><img src="https://img.shields.io/pypi/v/orcakit-harness-agent" alt="PyPI" /></a>
80
+ <a href="https://github.com/orcakit/harness-agent/actions/workflows/ci.yml"><img src="https://github.com/orcakit/harness-agent/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
81
+ <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.11+-blue.svg" alt="Python 3.11+" /></a>
82
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
83
+ </p>
84
+
85
+ <p align="center">
86
+ <b>English</b> · <a href="README_CN.md">中文</a>
87
+ </p>
88
+
89
+ ---
90
+
91
+ ## Highlights
92
+
93
+ - **Deep Agent Architecture** — Built on LangGraph with hierarchical agent routing, tool orchestration, and stateful conversation management
94
+ - **Multi-Agent Management** — `AgentManager` registry with metadata/tags, per-thread cancel, and id-based stream routing
95
+ - **Multi-Model Support** — OpenAI, Anthropic, AWS Bedrock, and any OpenAI-compatible endpoint out of the box; 17 provider presets in a user-editable JSON template
96
+ - **Built-in Tool Ecosystem** — Browser automation, desktop screenshots, web search (Tavily/Brave/Google/Kimi), and extensible skill system
97
+ - **Production Ready** — Checkpoint persistence, configurable backends (SQLite, S3, COS, PostgreSQL), and structured logging
98
+ - **Terminal-First CLI** — Rich interactive chat interface with skill management, config wizard, and workspace initialization
99
+
100
+ ---
101
+
102
+ ## Overview
103
+
104
+ Harness Agent is an open-source AI agent framework that provides a complete runtime for building, deploying, and managing autonomous AI agents. It wraps LangChain Deep Agents with batteries-included tooling: multi-provider model routing, persistent memory via [harness-memory](https://github.com/orcakit/harness-memory), browser automation via [harness-browser](https://github.com/orcakit/harness-browser), and a terminal CLI for interactive use.
105
+
106
+ The project is a single Python package with an optional CLI extra:
107
+
108
+ | Install | Description |
109
+ |---------|-------------|
110
+ | `pip install orcakit-harness-agent` | Core SDK — agent runtime, model routing, tools, skills, backends |
111
+ | `pip install orcakit-harness-agent[cli]` | Adds the terminal CLI — interactive chat, config, skill management |
112
+
113
+ ---
114
+
115
+ ## Core Technology
116
+
117
+ | Layer | Technology | Purpose |
118
+ |-------|-----------|---------|
119
+ | Agent Runtime | [LangGraph](https://github.com/langchain-ai/langgraph) + [Deep Agents](https://pypi.org/project/deepagents/) | Stateful graph execution with hierarchical agent routing |
120
+ | Model Providers | LangChain model integrations | Unified interface for OpenAI, Anthropic, Bedrock, and custom endpoints |
121
+ | Memory | [harness-memory](https://github.com/orcakit/harness-memory) | Hierarchical recall with FTS search and pluggable backends |
122
+ | Browser | [harness-browser](https://github.com/orcakit/harness-browser) | CDP-based browser automation with profile-persistent login |
123
+ | Checkpointing | LangGraph Checkpoint + SQLite/Postgres | Conversation state persistence across sessions |
124
+ | CLI Framework | Click + Rich + Textual | Terminal UI with streaming output and rich formatting |
125
+
126
+ ---
127
+
128
+ ## Features
129
+
130
+ ### Agent Runtime
131
+ - Hierarchical agent routing with configurable delegation
132
+ - **`AgentManager`** — in-memory registry for creating and managing multiple agents by `agent_id`
133
+ - Stateful conversation management with checkpoint persistence
134
+ - Per-thread stream cancellation via `manager.cancel(agent_id, thread_id)`
135
+ - Middleware pipeline for request/response interception
136
+ - Configurable system prompts and persona management
137
+
138
+ ### Model Routing
139
+ - **OpenAI** — GPT-4o, GPT-4, GPT-3.5, and any compatible endpoint
140
+ - **Anthropic** — Claude 4 Sonnet, Claude 4 Opus, Claude 3.5 family
141
+ - **AWS Bedrock** — Claude, Titan, and other Bedrock models
142
+ - **Custom** — Any OpenAI-compatible API via base URL configuration
143
+
144
+ ### Built-in Tools
145
+ - **Browser Automation** — Navigate, click, type, screenshot via harness-browser
146
+ - **Desktop Screenshot** — Full-screen capture for visual context
147
+ - **Web Search** — Tavily, Brave, Google, Kimi (auto-detect or explicit selection)
148
+ - **Extensible Skills** — Custom tool registration with typed schemas
149
+
150
+ ### Storage Backends
151
+ - **SQLite** — Zero-config local persistence (default)
152
+ - **Tencent Cloud COS** — Object storage for attachments and artifacts
153
+ - **Remote Backends** — S3, PostgreSQL, Azure, GCS, MongoDB, Redis via `deepagents-backends`
154
+
155
+ ### CLI
156
+ - Interactive streaming chat with rich markdown rendering
157
+ - Workspace initialization (`harness-agent init`)
158
+ - Provider configuration wizard (`harness-agent config provider add`)
159
+ - Skill management and discovery
160
+
161
+ ---
162
+
163
+ ## Quick Start
164
+
165
+ ```bash
166
+ # Install the CLI (includes core SDK)
167
+ pip install orcakit-harness-agent[cli]
168
+
169
+ # Initialize workspace
170
+ harness-agent init
171
+
172
+ # Configure a model provider
173
+ harness-agent config provider add
174
+
175
+ # Start chatting
176
+ harness-agent chat
177
+ ```
178
+
179
+ ### Programmatic Usage
180
+
181
+ ```python
182
+ from harness_agent import HarnessAgentManager, HarnessAgentConfig, ProviderConfig, ChatRequest
183
+
184
+ config = HarnessAgentConfig(
185
+ workspace_dir="./workspace",
186
+ providers=[ProviderConfig(id="openai", api_key="sk-...", models=["gpt-4o"])],
187
+ )
188
+
189
+ manager = HarnessAgentManager()
190
+ entry = manager.create_agent(config)
191
+
192
+ async for chunk in manager.stream(entry.agent_id, ChatRequest(messages="Hello!")):
193
+ print(chunk.content, end="", flush=True)
194
+ ```
195
+
196
+ > **Advanced:** For direct backend operations, access the cached agent via `entry.agent`.
197
+ > `HarnessAgent` can also be constructed directly, but `AgentManager` is the recommended
198
+ > entry point for all new code.
199
+
200
+ ### Multi-Agent Management
201
+
202
+ ```python
203
+ from harness_agent import HarnessAgentManager, HarnessAgentConfig, ProviderConfig
204
+
205
+ manager = HarnessAgentManager()
206
+
207
+ # Register agents with metadata and tags
208
+ entry = manager.create_agent(
209
+ config,
210
+ metadata={"tenant": "acme", "env": "prod"},
211
+ tags=["fast", "gpt4o"],
212
+ )
213
+
214
+ # Query agents by metadata / tags
215
+ agents = manager.list_agents(metadata={"env": "prod"}, tags=["fast"])
216
+
217
+ # Stream by agent_id
218
+ async for chunk in manager.stream(entry.agent_id, request):
219
+ print(chunk)
220
+
221
+ # Cancel mid-stream
222
+ manager.cancel(entry.agent_id, request.thread_id)
223
+ ```
224
+
225
+ ---
226
+
227
+ ## Architecture
228
+
229
+ ```
230
+ src/harness_agent/ Core SDK — agent runtime, model routing, tools, skills, backends
231
+ src/harness_agent/cli/ Terminal CLI — thin view layer over the SDK
232
+ ```
233
+
234
+ The CLI is a thin view layer that delegates all agent logic to the core SDK. This separation enables future UIs (web, IDE extensions) to reuse the same SDK.
235
+
236
+ ---
237
+
238
+ ## Development
239
+
240
+ **Prerequisites:** Python 3.11+, [uv](https://docs.astral.sh/uv/)
241
+
242
+ ```bash
243
+ git clone https://github.com/orcakit/harness-agent.git
244
+ cd harness-agent
245
+ make install # install dev dependencies
246
+ make all # lint + typecheck + test (CI ship bar)
247
+ ```
248
+
249
+ | Command | Description |
250
+ |---------|-------------|
251
+ | `make lint` | Ruff check + format check |
252
+ | `make format` | Auto-fix and format |
253
+ | `make typecheck` | mypy strict |
254
+ | `make test` | pytest with coverage |
255
+ | `make build` | Build wheel + sdist |
256
+
257
+ ---
258
+
259
+ ## Contributing
260
+
261
+ Contributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) and run `make all` before opening a PR.
262
+
263
+ Security issues: see [SECURITY.md](SECURITY.md).
264
+
265
+ ---
266
+
267
+ ## Release
268
+
269
+ Tag `v<version>` (e.g., `v0.2.0`) to trigger a PyPI release via GitHub Actions with trusted publishing.
270
+
271
+ ---
272
+
273
+ ## Related Projects
274
+
275
+ | Project | Description |
276
+ |---------|-------------|
277
+ | [orca (Octop)](https://github.com/orcakit/orca) | Self-hosted multi-user AI control plane |
278
+ | [harness-memory](https://github.com/orcakit/harness-memory) | Pluggable memory system with hierarchical recall and FTS |
279
+ | [harness-browser](https://github.com/orcakit/harness-browser) | AI-friendly browser automation via CDP |
280
+ | [harness-gateway](https://github.com/orcakit/harness-gateway) | Multi-platform IM channel bridge for AI agents |
281
+
282
+ ---
283
+
284
+ ## License
285
+
286
+ [MIT](LICENSE)
@@ -0,0 +1,219 @@
1
+ <p align="center">
2
+ <img src="assets/images/banner.jpeg" alt="Harness Agent Banner" width="100%" />
3
+ </p>
4
+
5
+ <h1 align="center">Harness Agent</h1>
6
+
7
+ <p align="center">
8
+ <strong>Production-grade AI agent platform built on LangChain Deep Agents.</strong>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://pypi.org/project/orcakit-harness-agent/"><img src="https://img.shields.io/pypi/v/orcakit-harness-agent" alt="PyPI" /></a>
13
+ <a href="https://github.com/orcakit/harness-agent/actions/workflows/ci.yml"><img src="https://github.com/orcakit/harness-agent/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
14
+ <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.11+-blue.svg" alt="Python 3.11+" /></a>
15
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <b>English</b> · <a href="README_CN.md">中文</a>
20
+ </p>
21
+
22
+ ---
23
+
24
+ ## Highlights
25
+
26
+ - **Deep Agent Architecture** — Built on LangGraph with hierarchical agent routing, tool orchestration, and stateful conversation management
27
+ - **Multi-Agent Management** — `AgentManager` registry with metadata/tags, per-thread cancel, and id-based stream routing
28
+ - **Multi-Model Support** — OpenAI, Anthropic, AWS Bedrock, and any OpenAI-compatible endpoint out of the box; 17 provider presets in a user-editable JSON template
29
+ - **Built-in Tool Ecosystem** — Browser automation, desktop screenshots, web search (Tavily/Brave/Google/Kimi), and extensible skill system
30
+ - **Production Ready** — Checkpoint persistence, configurable backends (SQLite, S3, COS, PostgreSQL), and structured logging
31
+ - **Terminal-First CLI** — Rich interactive chat interface with skill management, config wizard, and workspace initialization
32
+
33
+ ---
34
+
35
+ ## Overview
36
+
37
+ Harness Agent is an open-source AI agent framework that provides a complete runtime for building, deploying, and managing autonomous AI agents. It wraps LangChain Deep Agents with batteries-included tooling: multi-provider model routing, persistent memory via [harness-memory](https://github.com/orcakit/harness-memory), browser automation via [harness-browser](https://github.com/orcakit/harness-browser), and a terminal CLI for interactive use.
38
+
39
+ The project is a single Python package with an optional CLI extra:
40
+
41
+ | Install | Description |
42
+ |---------|-------------|
43
+ | `pip install orcakit-harness-agent` | Core SDK — agent runtime, model routing, tools, skills, backends |
44
+ | `pip install orcakit-harness-agent[cli]` | Adds the terminal CLI — interactive chat, config, skill management |
45
+
46
+ ---
47
+
48
+ ## Core Technology
49
+
50
+ | Layer | Technology | Purpose |
51
+ |-------|-----------|---------|
52
+ | Agent Runtime | [LangGraph](https://github.com/langchain-ai/langgraph) + [Deep Agents](https://pypi.org/project/deepagents/) | Stateful graph execution with hierarchical agent routing |
53
+ | Model Providers | LangChain model integrations | Unified interface for OpenAI, Anthropic, Bedrock, and custom endpoints |
54
+ | Memory | [harness-memory](https://github.com/orcakit/harness-memory) | Hierarchical recall with FTS search and pluggable backends |
55
+ | Browser | [harness-browser](https://github.com/orcakit/harness-browser) | CDP-based browser automation with profile-persistent login |
56
+ | Checkpointing | LangGraph Checkpoint + SQLite/Postgres | Conversation state persistence across sessions |
57
+ | CLI Framework | Click + Rich + Textual | Terminal UI with streaming output and rich formatting |
58
+
59
+ ---
60
+
61
+ ## Features
62
+
63
+ ### Agent Runtime
64
+ - Hierarchical agent routing with configurable delegation
65
+ - **`AgentManager`** — in-memory registry for creating and managing multiple agents by `agent_id`
66
+ - Stateful conversation management with checkpoint persistence
67
+ - Per-thread stream cancellation via `manager.cancel(agent_id, thread_id)`
68
+ - Middleware pipeline for request/response interception
69
+ - Configurable system prompts and persona management
70
+
71
+ ### Model Routing
72
+ - **OpenAI** — GPT-4o, GPT-4, GPT-3.5, and any compatible endpoint
73
+ - **Anthropic** — Claude 4 Sonnet, Claude 4 Opus, Claude 3.5 family
74
+ - **AWS Bedrock** — Claude, Titan, and other Bedrock models
75
+ - **Custom** — Any OpenAI-compatible API via base URL configuration
76
+
77
+ ### Built-in Tools
78
+ - **Browser Automation** — Navigate, click, type, screenshot via harness-browser
79
+ - **Desktop Screenshot** — Full-screen capture for visual context
80
+ - **Web Search** — Tavily, Brave, Google, Kimi (auto-detect or explicit selection)
81
+ - **Extensible Skills** — Custom tool registration with typed schemas
82
+
83
+ ### Storage Backends
84
+ - **SQLite** — Zero-config local persistence (default)
85
+ - **Tencent Cloud COS** — Object storage for attachments and artifacts
86
+ - **Remote Backends** — S3, PostgreSQL, Azure, GCS, MongoDB, Redis via `deepagents-backends`
87
+
88
+ ### CLI
89
+ - Interactive streaming chat with rich markdown rendering
90
+ - Workspace initialization (`harness-agent init`)
91
+ - Provider configuration wizard (`harness-agent config provider add`)
92
+ - Skill management and discovery
93
+
94
+ ---
95
+
96
+ ## Quick Start
97
+
98
+ ```bash
99
+ # Install the CLI (includes core SDK)
100
+ pip install orcakit-harness-agent[cli]
101
+
102
+ # Initialize workspace
103
+ harness-agent init
104
+
105
+ # Configure a model provider
106
+ harness-agent config provider add
107
+
108
+ # Start chatting
109
+ harness-agent chat
110
+ ```
111
+
112
+ ### Programmatic Usage
113
+
114
+ ```python
115
+ from harness_agent import HarnessAgentManager, HarnessAgentConfig, ProviderConfig, ChatRequest
116
+
117
+ config = HarnessAgentConfig(
118
+ workspace_dir="./workspace",
119
+ providers=[ProviderConfig(id="openai", api_key="sk-...", models=["gpt-4o"])],
120
+ )
121
+
122
+ manager = HarnessAgentManager()
123
+ entry = manager.create_agent(config)
124
+
125
+ async for chunk in manager.stream(entry.agent_id, ChatRequest(messages="Hello!")):
126
+ print(chunk.content, end="", flush=True)
127
+ ```
128
+
129
+ > **Advanced:** For direct backend operations, access the cached agent via `entry.agent`.
130
+ > `HarnessAgent` can also be constructed directly, but `AgentManager` is the recommended
131
+ > entry point for all new code.
132
+
133
+ ### Multi-Agent Management
134
+
135
+ ```python
136
+ from harness_agent import HarnessAgentManager, HarnessAgentConfig, ProviderConfig
137
+
138
+ manager = HarnessAgentManager()
139
+
140
+ # Register agents with metadata and tags
141
+ entry = manager.create_agent(
142
+ config,
143
+ metadata={"tenant": "acme", "env": "prod"},
144
+ tags=["fast", "gpt4o"],
145
+ )
146
+
147
+ # Query agents by metadata / tags
148
+ agents = manager.list_agents(metadata={"env": "prod"}, tags=["fast"])
149
+
150
+ # Stream by agent_id
151
+ async for chunk in manager.stream(entry.agent_id, request):
152
+ print(chunk)
153
+
154
+ # Cancel mid-stream
155
+ manager.cancel(entry.agent_id, request.thread_id)
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Architecture
161
+
162
+ ```
163
+ src/harness_agent/ Core SDK — agent runtime, model routing, tools, skills, backends
164
+ src/harness_agent/cli/ Terminal CLI — thin view layer over the SDK
165
+ ```
166
+
167
+ The CLI is a thin view layer that delegates all agent logic to the core SDK. This separation enables future UIs (web, IDE extensions) to reuse the same SDK.
168
+
169
+ ---
170
+
171
+ ## Development
172
+
173
+ **Prerequisites:** Python 3.11+, [uv](https://docs.astral.sh/uv/)
174
+
175
+ ```bash
176
+ git clone https://github.com/orcakit/harness-agent.git
177
+ cd harness-agent
178
+ make install # install dev dependencies
179
+ make all # lint + typecheck + test (CI ship bar)
180
+ ```
181
+
182
+ | Command | Description |
183
+ |---------|-------------|
184
+ | `make lint` | Ruff check + format check |
185
+ | `make format` | Auto-fix and format |
186
+ | `make typecheck` | mypy strict |
187
+ | `make test` | pytest with coverage |
188
+ | `make build` | Build wheel + sdist |
189
+
190
+ ---
191
+
192
+ ## Contributing
193
+
194
+ Contributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) and run `make all` before opening a PR.
195
+
196
+ Security issues: see [SECURITY.md](SECURITY.md).
197
+
198
+ ---
199
+
200
+ ## Release
201
+
202
+ Tag `v<version>` (e.g., `v0.2.0`) to trigger a PyPI release via GitHub Actions with trusted publishing.
203
+
204
+ ---
205
+
206
+ ## Related Projects
207
+
208
+ | Project | Description |
209
+ |---------|-------------|
210
+ | [orca (Octop)](https://github.com/orcakit/orca) | Self-hosted multi-user AI control plane |
211
+ | [harness-memory](https://github.com/orcakit/harness-memory) | Pluggable memory system with hierarchical recall and FTS |
212
+ | [harness-browser](https://github.com/orcakit/harness-browser) | AI-friendly browser automation via CDP |
213
+ | [harness-gateway](https://github.com/orcakit/harness-gateway) | Multi-platform IM channel bridge for AI agents |
214
+
215
+ ---
216
+
217
+ ## License
218
+
219
+ [MIT](LICENSE)