agentengine-sdk-python 0.6.2__py3-none-any.whl → 0.6.9__py3-none-any.whl

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 (490) hide show
  1. agentengine_sdk_python-0.6.9.dist-info/METADATA +179 -0
  2. agentengine_sdk_python-0.6.9.dist-info/RECORD +487 -0
  3. {agentengine_sdk_python-0.6.2.dist-info → agentengine_sdk_python-0.6.9.dist-info}/WHEEL +1 -1
  4. agentengine_sdk_python-0.6.9.dist-info/entry_points.txt +3 -0
  5. agentengine_sdk_python-0.6.9.dist-info/licenses/LICENSE +175 -0
  6. agentengine_sdk_python-0.6.9.dist-info/top_level.txt +2 -0
  7. ksadk/__init__.py +13 -0
  8. ksadk/__main__.py +4 -0
  9. ksadk/a2a/__init__.py +15 -0
  10. ksadk/a2a/card_builder.py +64 -0
  11. ksadk/a2a/client.py +309 -0
  12. ksadk/a2a/executor.py +201 -0
  13. ksadk/a2a/server.py +79 -0
  14. ksadk/agents/__init__.py +20 -0
  15. ksadk/agents/base.py +370 -0
  16. ksadk/agents/context.py +38 -0
  17. ksadk/agents/event.py +35 -0
  18. ksadk/agents/loop_agent.py +71 -0
  19. ksadk/agents/parallel_agent.py +109 -0
  20. ksadk/agents/runner_adapter.py +24 -0
  21. ksadk/agents/sequential_agent.py +34 -0
  22. ksadk/api/__init__.py +3 -0
  23. ksadk/api/client.py +2227 -0
  24. ksadk/builders/__init__.py +20 -0
  25. ksadk/builders/base.py +66 -0
  26. ksadk/builders/code_builder.py +1990 -0
  27. ksadk/builders/container_builder.py +786 -0
  28. ksadk/builders/framework_requirements.py +59 -0
  29. ksadk/builders/ks3_uploader.py +389 -0
  30. ksadk/builders/mcp_builder.py +476 -0
  31. ksadk/builders/requirements_utils.py +75 -0
  32. ksadk/cli/__init__.py +531 -0
  33. ksadk/cli/__main__.py +4 -0
  34. ksadk/cli/agent_ref.py +204 -0
  35. ksadk/cli/cmd_a2a.py +167 -0
  36. ksadk/cli/cmd_agent.py +201 -0
  37. ksadk/cli/cmd_build.py +270 -0
  38. ksadk/cli/cmd_completion.py +304 -0
  39. ksadk/cli/cmd_config.py +758 -0
  40. ksadk/cli/cmd_create.py +2277 -0
  41. ksadk/cli/cmd_dashboard.py +900 -0
  42. ksadk/cli/cmd_deploy.py +704 -0
  43. ksadk/cli/cmd_destroy.py +345 -0
  44. ksadk/cli/cmd_files.py +1227 -0
  45. ksadk/cli/cmd_hermes.py +1259 -0
  46. ksadk/cli/cmd_invoke.py +1336 -0
  47. ksadk/cli/cmd_launch.py +564 -0
  48. ksadk/cli/cmd_mcp.py +1174 -0
  49. ksadk/cli/cmd_model.py +302 -0
  50. ksadk/cli/cmd_openclaw.py +3918 -0
  51. ksadk/cli/cmd_run.py +232 -0
  52. ksadk/cli/cmd_status.py +588 -0
  53. ksadk/cli/cmd_version.py +522 -0
  54. ksadk/cli/cmd_web.py +288 -0
  55. ksadk/cli/deploy_utils.py +87 -0
  56. ksadk/cli/dry_run.py +214 -0
  57. ksadk/cli/env_options.py +82 -0
  58. ksadk/cli/error_utils.py +525 -0
  59. ksadk/cli/global_options.py +31 -0
  60. ksadk/cli/local_runtime.py +97 -0
  61. ksadk/cli/model_catalog.py +136 -0
  62. ksadk/cli/network_options.py +410 -0
  63. ksadk/cli/resource_common.py +621 -0
  64. ksadk/cli/storage.py +84 -0
  65. ksadk/cli/ui.py +431 -0
  66. ksadk/cli/workflow_common.py +552 -0
  67. ksadk/common/__init__.py +14 -0
  68. ksadk/common/aicp_env.py +128 -0
  69. ksadk/common/auth.py +190 -0
  70. ksadk/common/constants.py +84 -0
  71. ksadk/common/llm_utils.py +61 -0
  72. ksadk/configs/__init__.py +61 -0
  73. ksadk/configs/env_registry.py +342 -0
  74. ksadk/configs/global_config.py +200 -0
  75. ksadk/configs/settings.py +706 -0
  76. ksadk/conversations/__init__.py +95 -0
  77. ksadk/conversations/attachment_storage.py +379 -0
  78. ksadk/conversations/attachments.py +774 -0
  79. ksadk/conversations/compaction_pipeline.py +387 -0
  80. ksadk/conversations/compaction_prompt.py +128 -0
  81. ksadk/conversations/context.py +303 -0
  82. ksadk/conversations/model_context.py +360 -0
  83. ksadk/conversations/model_options.py +136 -0
  84. ksadk/conversations/normalize.py +446 -0
  85. ksadk/conversations/reasoning_markup.py +91 -0
  86. ksadk/conversations/run_kinds.py +61 -0
  87. ksadk/conversations/run_status.py +53 -0
  88. ksadk/conversations/runtime.py +5208 -0
  89. ksadk/conversations/semantic_summary.py +359 -0
  90. ksadk/conversations/session_title.py +254 -0
  91. ksadk/deployment/__init__.py +83 -0
  92. ksadk/deployment/agent_access.py +226 -0
  93. ksadk/deployment/base.py +229 -0
  94. ksadk/deployment/manager.py +332 -0
  95. ksadk/deployment/providers/__init__.py +10 -0
  96. ksadk/deployment/providers/serverless.py +1105 -0
  97. ksadk/deployment/registry.py +120 -0
  98. ksadk/deployment/state.py +78 -0
  99. ksadk/deployment/ui_config.py +21 -0
  100. ksadk/detection/__init__.py +7 -0
  101. ksadk/detection/detector.py +431 -0
  102. ksadk/detection/mcp_detector.py +250 -0
  103. ksadk/hermes_terminal.py +467 -0
  104. ksadk/identity/__init__.py +17 -0
  105. ksadk/identity/resolver.py +385 -0
  106. ksadk/knowledge_base/__init__.py +62 -0
  107. ksadk/knowledge_base/adk_tool.py +47 -0
  108. ksadk/knowledge_base/client.py +297 -0
  109. ksadk/knowledge_base/langchain_tool.py +55 -0
  110. ksadk/knowledge_base/service.py +66 -0
  111. ksadk/knowledge_base/tool.py +50 -0
  112. ksadk/markdown.py +169 -0
  113. ksadk/mcp_runtime/__init__.py +231 -0
  114. ksadk/memory/__init__.py +57 -0
  115. ksadk/memory/adk/__init__.py +51 -0
  116. ksadk/memory/adk/backends/__init__.py +5 -0
  117. ksadk/memory/adk/backends/base_ltm_backend.py +52 -0
  118. ksadk/memory/adk/backends/http_ltm_backend.py +183 -0
  119. ksadk/memory/adk/backends/inmemory_ltm_backend.py +96 -0
  120. ksadk/memory/adk/backends/sdk_ltm_backend.py +456 -0
  121. ksadk/memory/adk/long_term_memory.py +273 -0
  122. ksadk/memory/adk/short_term_memory.py +289 -0
  123. ksadk/memory/adk_tool.py +31 -0
  124. ksadk/memory/backends/__init__.py +6 -0
  125. ksadk/memory/backends/base.py +103 -0
  126. ksadk/memory/backends/memory.py +112 -0
  127. ksadk/memory/backends/redis.py +146 -0
  128. ksadk/memory/langchain_tool.py +39 -0
  129. ksadk/memory/ltm_backend_factory.py +24 -0
  130. ksadk/memory/manager.py +215 -0
  131. ksadk/memory/service.py +172 -0
  132. ksadk/memory/tool.py +96 -0
  133. ksadk/model_policy.py +223 -0
  134. ksadk/openclaw_gateway.py +378 -0
  135. ksadk/runners/__init__.py +8 -0
  136. ksadk/runners/adk_runner.py +1135 -0
  137. ksadk/runners/base_runner.py +305 -0
  138. ksadk/runners/deepagents_runner.py +13 -0
  139. ksadk/runners/factory.py +73 -0
  140. ksadk/runners/langchain_runner.py +539 -0
  141. ksadk/runners/langgraph_runner.py +852 -0
  142. ksadk/runners/patch_langchain.py +187 -0
  143. ksadk/runners/remote_runner.py +667 -0
  144. ksadk/runners/usage_accumulator.py +38 -0
  145. ksadk/runners/utils/__init__.py +19 -0
  146. ksadk/runners/utils/langfuse.py +230 -0
  147. ksadk/runners/utils/loader.py +62 -0
  148. ksadk/runtime_context.py +166 -0
  149. ksadk/runtime_state.py +25 -0
  150. ksadk/sandbox/__init__.py +28 -0
  151. ksadk/sandbox/backends/__init__.py +9 -0
  152. ksadk/sandbox/backends/e2b.py +154 -0
  153. ksadk/sandbox/backends/local_process.py +131 -0
  154. ksadk/sandbox/base.py +101 -0
  155. ksadk/sandbox/factory.py +53 -0
  156. ksadk/sandbox/registry.py +187 -0
  157. ksadk/server/__init__.py +7 -0
  158. ksadk/server/api_models.py +73 -0
  159. ksadk/server/app.py +3789 -0
  160. ksadk/server/static/assets/ArtifactsPanel-C0meuOdi.js +1 -0
  161. ksadk/server/static/assets/CodeBlock-BbI4HPtJ.js +9 -0
  162. ksadk/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  163. ksadk/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  164. ksadk/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  165. ksadk/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  166. ksadk/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  167. ksadk/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  168. ksadk/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  169. ksadk/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  170. ksadk/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  171. ksadk/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  172. ksadk/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  173. ksadk/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  174. ksadk/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  175. ksadk/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  176. ksadk/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  177. ksadk/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  178. ksadk/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  179. ksadk/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  180. ksadk/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  181. ksadk/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  182. ksadk/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  183. ksadk/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  184. ksadk/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  185. ksadk/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  186. ksadk/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  187. ksadk/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  188. ksadk/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  189. ksadk/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  190. ksadk/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  191. ksadk/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  192. ksadk/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  193. ksadk/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  194. ksadk/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  195. ksadk/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  196. ksadk/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  197. ksadk/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  198. ksadk/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  199. ksadk/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  200. ksadk/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  201. ksadk/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  202. ksadk/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  203. ksadk/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  204. ksadk/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  205. ksadk/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  206. ksadk/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  207. ksadk/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  208. ksadk/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  209. ksadk/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  210. ksadk/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  211. ksadk/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  212. ksadk/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  213. ksadk/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  214. ksadk/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  215. ksadk/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  216. ksadk/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  217. ksadk/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  218. ksadk/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  219. ksadk/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  220. ksadk/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  221. ksadk/server/static/assets/MathMessageMarkdown-DMLQYoLp.js +8 -0
  222. ksadk/server/static/assets/MathMessageMarkdown-DeYh8QPr.css +1 -0
  223. ksadk/server/static/assets/MermaidBlock-DCR8WZ17.js +303 -0
  224. ksadk/server/static/assets/NativeTerminalPanel-CHOd7Rch.css +1 -0
  225. ksadk/server/static/assets/NativeTerminalPanel-CKUvWhUz.js +1 -0
  226. ksadk/server/static/assets/addon-fit-DthTIhi3.js +1 -0
  227. ksadk/server/static/assets/apl-CnwPGSsG.js +1 -0
  228. ksadk/server/static/assets/arc-bj2rZnP5.js +1 -0
  229. ksadk/server/static/assets/architecture-7EHR7CIX-Cr6Xz1_c.js +1 -0
  230. ksadk/server/static/assets/architectureDiagram-3BPJPVTR-2u1ltDIj.js +36 -0
  231. ksadk/server/static/assets/asciiarmor-qTkVPQu6.js +1 -0
  232. ksadk/server/static/assets/asn1-Dr8qZg38.js +1 -0
  233. ksadk/server/static/assets/asterisk-Bja0s6e1.js +1 -0
  234. ksadk/server/static/assets/blockDiagram-GPEHLZMM-D6fvdK20.js +132 -0
  235. ksadk/server/static/assets/brainfuck-D5EjA2JK.js +1 -0
  236. ksadk/server/static/assets/c4Diagram-AAUBKEIU-BK82L5n5.js +10 -0
  237. ksadk/server/static/assets/channel-BSSOwFIb.js +1 -0
  238. ksadk/server/static/assets/chunk-2J33WTMH-DLVdkeyQ.js +1 -0
  239. ksadk/server/static/assets/chunk-4BX2VUAB-BbwsYcbW.js +1 -0
  240. ksadk/server/static/assets/chunk-55IACEB6-DOairxzw.js +1 -0
  241. ksadk/server/static/assets/chunk-727SXJPM-hCO487gs.js +206 -0
  242. ksadk/server/static/assets/chunk-AQP2D5EJ-XU8vDOuG.js +231 -0
  243. ksadk/server/static/assets/chunk-FMBD7UC4-PrapyfMu.js +15 -0
  244. ksadk/server/static/assets/chunk-ND2GUHAM-CboKhTZ3.js +1 -0
  245. ksadk/server/static/assets/chunk-QZHKN3VN-XXpdiwUL.js +1 -0
  246. ksadk/server/static/assets/classDiagram-4FO5ZUOK-C5HvGiyK.js +1 -0
  247. ksadk/server/static/assets/classDiagram-v2-Q7XG4LA2-C5HvGiyK.js +1 -0
  248. ksadk/server/static/assets/clike-DHH8Ad3s.js +1 -0
  249. ksadk/server/static/assets/clojure-BflJGmDX.js +1 -0
  250. ksadk/server/static/assets/cmake-CyVbuzPu.js +1 -0
  251. ksadk/server/static/assets/cobol-B_OZ4V-R.js +1 -0
  252. ksadk/server/static/assets/coffeescript-B2pKbFk8.js +1 -0
  253. ksadk/server/static/assets/commonlisp-CcllspGY.js +1 -0
  254. ksadk/server/static/assets/cose-bilkent-S5V4N54A-_N8bJ-EU.js +1 -0
  255. ksadk/server/static/assets/crystal-M5-qzICs.js +1 -0
  256. ksadk/server/static/assets/css-CYpP4FRV.js +1 -0
  257. ksadk/server/static/assets/cypher-p9eYesGn.js +1 -0
  258. ksadk/server/static/assets/cytoscape.esm-DelgaX4f.js +321 -0
  259. ksadk/server/static/assets/d-BhMjBjQP.js +1 -0
  260. ksadk/server/static/assets/dagre-BM42HDAG-FoDlo5J2.js +4 -0
  261. ksadk/server/static/assets/dagre-Bx709z4p.js +1 -0
  262. ksadk/server/static/assets/defaultLocale-C8Fc0cco.js +1 -0
  263. ksadk/server/static/assets/diagram-2AECGRRQ-BBp6ebBw.js +43 -0
  264. ksadk/server/static/assets/diagram-5GNKFQAL-CqOvG1PR.js +10 -0
  265. ksadk/server/static/assets/diagram-KO2AKTUF-O9T3t6ba.js +3 -0
  266. ksadk/server/static/assets/diagram-LMA3HP47-CGG8ekBO.js +24 -0
  267. ksadk/server/static/assets/diagram-OG6HWLK6-4BmH1EEg.js +24 -0
  268. ksadk/server/static/assets/diff-ChtP43wD.js +1 -0
  269. ksadk/server/static/assets/dist-6kSZvCZh.js +1 -0
  270. ksadk/server/static/assets/dist-B67uF2uK.js +1 -0
  271. ksadk/server/static/assets/dist-BMKM66B4.js +1 -0
  272. ksadk/server/static/assets/dist-BVzcWa6D.js +1 -0
  273. ksadk/server/static/assets/dist-Bk1l05Ni.js +1 -0
  274. ksadk/server/static/assets/dist-BkJjNih3.js +1 -0
  275. ksadk/server/static/assets/dist-BmuTWcm7.js +9 -0
  276. ksadk/server/static/assets/dist-C2DKRFVK.js +1 -0
  277. ksadk/server/static/assets/dist-CWiTDN_V.js +6 -0
  278. ksadk/server/static/assets/dist-CZ6C3x8B.js +23 -0
  279. ksadk/server/static/assets/dist-CiZHB6ZW.js +1 -0
  280. ksadk/server/static/assets/dist-Cp1_jKwf.js +1 -0
  281. ksadk/server/static/assets/dist-Cwhk4lwI.js +2 -0
  282. ksadk/server/static/assets/dist-D5JGcxBx.js +11 -0
  283. ksadk/server/static/assets/dist-D99wf6_X.js +1 -0
  284. ksadk/server/static/assets/dist-DCpZrjaK.js +1 -0
  285. ksadk/server/static/assets/dist-DI-oVAXw.js +1 -0
  286. ksadk/server/static/assets/dist-DLMjL01k.js +1 -0
  287. ksadk/server/static/assets/dist-DLeM1OCK.js +1 -0
  288. ksadk/server/static/assets/dist-DM0rEQPk.js +1 -0
  289. ksadk/server/static/assets/dist-DbaH3p5h.js +1 -0
  290. ksadk/server/static/assets/dist-S4klkK5W.js +1 -0
  291. ksadk/server/static/assets/dockerfile-BLkNEvjs.js +1 -0
  292. ksadk/server/static/assets/dtd-DTF72YNO.js +1 -0
  293. ksadk/server/static/assets/dylan-C6jEEEk-.js +1 -0
  294. ksadk/server/static/assets/ebnf-D4c0_ac3.js +1 -0
  295. ksadk/server/static/assets/ecl-BSZaIHnp.js +1 -0
  296. ksadk/server/static/assets/eiffel-BEjRio4Q.js +1 -0
  297. ksadk/server/static/assets/elm-Cshzl8qu.js +1 -0
  298. ksadk/server/static/assets/erDiagram-TEJ5UH35-oJhaci7S.js +85 -0
  299. ksadk/server/static/assets/erlang-DaB2Rkuy.js +1 -0
  300. ksadk/server/static/assets/eventmodeling-FCH6USID-CIgwHJLL.js +1 -0
  301. ksadk/server/static/assets/factor-D7LVTn2l.js +1 -0
  302. ksadk/server/static/assets/fcl-ClOhbFR7.js +1 -0
  303. ksadk/server/static/assets/flowDiagram-I6XJVG4X-DtTmUan-.js +162 -0
  304. ksadk/server/static/assets/forth-Cezjo90N.js +1 -0
  305. ksadk/server/static/assets/fortran-Bt6PBEDR.js +1 -0
  306. ksadk/server/static/assets/ganttDiagram-6RSMTGT7-BSsb_eij.js +292 -0
  307. ksadk/server/static/assets/gas-BHEdbvp9.js +1 -0
  308. ksadk/server/static/assets/gherkin-oBAE_ms0.js +1 -0
  309. ksadk/server/static/assets/gitGraph-WXDBUCRP-BVAJ7uo0.js +1 -0
  310. ksadk/server/static/assets/gitGraphDiagram-PVQCEYII-BR5s6Pws.js +106 -0
  311. ksadk/server/static/assets/graphlib-B8gBHxth.js +1 -0
  312. ksadk/server/static/assets/groovy-BC3IOsC8.js +1 -0
  313. ksadk/server/static/assets/haskell-BRsoo5mP.js +1 -0
  314. ksadk/server/static/assets/haxe-DIz0ZZqd.js +1 -0
  315. ksadk/server/static/assets/http-CLVgA2GD.js +1 -0
  316. ksadk/server/static/assets/idl-BUZw3wgd.js +1 -0
  317. ksadk/server/static/assets/index-BH7-pC0B.js +165 -0
  318. ksadk/server/static/assets/index-DAURbCsP.css +1 -0
  319. ksadk/server/static/assets/info-J43DQDTF-MT80V4ge.js +1 -0
  320. ksadk/server/static/assets/infoDiagram-5YYISTIA-DYPc5cvh.js +2 -0
  321. ksadk/server/static/assets/init-D6jRqBbL.js +1 -0
  322. ksadk/server/static/assets/ishikawaDiagram-YF4QCWOH-MoBdALDg.js +70 -0
  323. ksadk/server/static/assets/javascript-9Tg8ixDm.js +1 -0
  324. ksadk/server/static/assets/journeyDiagram-JHISSGLW-DgLiQT8l.js +139 -0
  325. ksadk/server/static/assets/julia-CQfgDRfP.js +1 -0
  326. ksadk/server/static/assets/kanban-definition-UN3LZRKU-CsFx112F.js +89 -0
  327. ksadk/server/static/assets/katex-DRsiwpM2.js +265 -0
  328. ksadk/server/static/assets/linear-TNRQ5Orv.js +1 -0
  329. ksadk/server/static/assets/livescript-BXxG0Yva.js +1 -0
  330. ksadk/server/static/assets/lua-CiA1ziua.js +1 -0
  331. ksadk/server/static/assets/mathematica-u8YMmbU0.js +1 -0
  332. ksadk/server/static/assets/mbox-BEMVcqjs.js +1 -0
  333. ksadk/server/static/assets/mermaid-parser.core-D2eMVOgo.js +161 -0
  334. ksadk/server/static/assets/mindmap-definition-RKZ34NQL-BtByYFhL.js +96 -0
  335. ksadk/server/static/assets/mirc-C9zpzAZU.js +1 -0
  336. ksadk/server/static/assets/mllike-B45xgp2S.js +1 -0
  337. ksadk/server/static/assets/modelica-CqHI_q-D.js +1 -0
  338. ksadk/server/static/assets/mscgen-qgSLujhx.js +1 -0
  339. ksadk/server/static/assets/mumps-CW_TBmxz.js +1 -0
  340. ksadk/server/static/assets/nginx-BMaDbqW3.js +1 -0
  341. ksadk/server/static/assets/nsis-AQ_alPln.js +1 -0
  342. ksadk/server/static/assets/ntriples-d28e9m0E.js +1 -0
  343. ksadk/server/static/assets/octave-D2Q8cUp1.js +1 -0
  344. ksadk/server/static/assets/ordinal-hYBb2elL.js +1 -0
  345. ksadk/server/static/assets/oz-BwTct_5T.js +1 -0
  346. ksadk/server/static/assets/packet-YPE3B663-BLKhbXZB.js +1 -0
  347. ksadk/server/static/assets/pascal-Dp_KdFgX.js +1 -0
  348. ksadk/server/static/assets/perl-CdEHsPfU.js +1 -0
  349. ksadk/server/static/assets/pie-LRSECV5Y-DFOikjSY.js +1 -0
  350. ksadk/server/static/assets/pieDiagram-4H26LBE5-DPnuCB8c.js +30 -0
  351. ksadk/server/static/assets/pig-AF4Hwhju.js +1 -0
  352. ksadk/server/static/assets/powershell-CzG71I4L.js +1 -0
  353. ksadk/server/static/assets/properties-C357ku5U.js +1 -0
  354. ksadk/server/static/assets/protobuf-D1ij_kNL.js +1 -0
  355. ksadk/server/static/assets/pug-Bugr-47h.js +1 -0
  356. ksadk/server/static/assets/puppet-B4hC2X4m.js +1 -0
  357. ksadk/server/static/assets/python-BqYw9LYJ.js +1 -0
  358. ksadk/server/static/assets/q-B9NhS7L_.js +1 -0
  359. ksadk/server/static/assets/quadrantDiagram-W4KKPZXB-miFpCPv4.js +7 -0
  360. ksadk/server/static/assets/r-DADKenSm.js +1 -0
  361. ksadk/server/static/assets/radar-GUYGQ44K-095b1Ikw.js +1 -0
  362. ksadk/server/static/assets/requirementDiagram-4Y6WPE33-mjB_yYkW.js +84 -0
  363. ksadk/server/static/assets/rpm-gpDK5sbt.js +1 -0
  364. ksadk/server/static/assets/ruby-DsYpTuWg.js +1 -0
  365. ksadk/server/static/assets/sankeyDiagram-5OEKKPKP-D7hSlZZZ.js +40 -0
  366. ksadk/server/static/assets/sas-C2OyD2Y6.js +1 -0
  367. ksadk/server/static/assets/scheme-CyDdOh7e.js +1 -0
  368. ksadk/server/static/assets/sequenceDiagram-3UESZ5HK-D9Cx6hC3.js +162 -0
  369. ksadk/server/static/assets/shell-Du5Qg9im.js +1 -0
  370. ksadk/server/static/assets/sieve-BAxa3IjF.js +1 -0
  371. ksadk/server/static/assets/simple-mode-DRpGK0lJ.js +1 -0
  372. ksadk/server/static/assets/smalltalk-BLp5-jwC.js +1 -0
  373. ksadk/server/static/assets/solr-BBopId9w.js +1 -0
  374. ksadk/server/static/assets/sparql-Dz-mlCAC.js +1 -0
  375. ksadk/server/static/assets/spreadsheet-CTIncYxj.js +1 -0
  376. ksadk/server/static/assets/sql-DcCJ9jop.js +1 -0
  377. ksadk/server/static/assets/stateDiagram-AJRCARHV-D_zrg47o.js +1 -0
  378. ksadk/server/static/assets/stateDiagram-v2-BHNVJYJU-J9kCb0nC.js +1 -0
  379. ksadk/server/static/assets/stex-sDrdk2BW.js +1 -0
  380. ksadk/server/static/assets/stylus-DLLZ8dgm.js +1 -0
  381. ksadk/server/static/assets/swift-DKB6_1j6.js +1 -0
  382. ksadk/server/static/assets/tcl-BGfruO1u.js +1 -0
  383. ksadk/server/static/assets/textile-DWBqthVk.js +1 -0
  384. ksadk/server/static/assets/tiddlywiki-VlUiK86J.js +1 -0
  385. ksadk/server/static/assets/tiki-CxVlf5KZ.js +1 -0
  386. ksadk/server/static/assets/timeline-definition-PNZ67QCA-CwSec0Wa.js +120 -0
  387. ksadk/server/static/assets/toml-LvoKBwCs.js +1 -0
  388. ksadk/server/static/assets/treeView-BLDUP644-yinfJEY6.js +1 -0
  389. ksadk/server/static/assets/treemap-LRROVOQU-DosUqN1Q.js +1 -0
  390. ksadk/server/static/assets/troff-C2dAgh7P.js +1 -0
  391. ksadk/server/static/assets/ttcn-BePYh-hG.js +1 -0
  392. ksadk/server/static/assets/ttcn-cfg-CY0aot7Q.js +1 -0
  393. ksadk/server/static/assets/turtle-BDLWE2cD.js +1 -0
  394. ksadk/server/static/assets/vb-BthdM_4N.js +1 -0
  395. ksadk/server/static/assets/vbscript-D9f6rSsU.js +1 -0
  396. ksadk/server/static/assets/velocity-CqftRsjg.js +1 -0
  397. ksadk/server/static/assets/vennDiagram-CIIHVFJN-agCVobiF.js +34 -0
  398. ksadk/server/static/assets/verilog-D-x6ne0Z.js +1 -0
  399. ksadk/server/static/assets/vhdl-CMrOq2q1.js +1 -0
  400. ksadk/server/static/assets/wardley-L42UT6IY-Bvp7-5uH.js +1 -0
  401. ksadk/server/static/assets/wardleyDiagram-YWT4CUSO-TmrlhWNt.js +78 -0
  402. ksadk/server/static/assets/webidl-D5jiJvOU.js +1 -0
  403. ksadk/server/static/assets/xquery-fj_R-kMw.js +1 -0
  404. ksadk/server/static/assets/xterm-DooSxjI5.js +36 -0
  405. ksadk/server/static/assets/xychartDiagram-2RQKCTM6-DV71V-ah.js +7 -0
  406. ksadk/server/static/assets/yacas-CXXgtw0p.js +1 -0
  407. ksadk/server/static/assets/z80-CL1naaMV.js +1 -0
  408. ksadk/server/static/favicon.svg +1 -0
  409. ksadk/server/static/icons.svg +24 -0
  410. ksadk/server/static/index.html +14 -0
  411. ksadk/server/terminal_sessions.py +551 -0
  412. ksadk/sessions/__init__.py +283 -0
  413. ksadk/sessions/base.py +354 -0
  414. ksadk/sessions/continuity.py +313 -0
  415. ksadk/sessions/errors.py +7 -0
  416. ksadk/sessions/in_memory.py +273 -0
  417. ksadk/sessions/local_service.py +949 -0
  418. ksadk/sessions/postgres_service.py +838 -0
  419. ksadk/sessions/sqlite_service.py +13 -0
  420. ksadk/skills/__init__.py +9 -0
  421. ksadk/skills/loader.py +46 -0
  422. ksadk/skills/models.py +120 -0
  423. ksadk/skills/package_store.py +104 -0
  424. ksadk/skills/runtime/__init__.py +17 -0
  425. ksadk/skills/runtime/agent.py +183 -0
  426. ksadk/skills/runtime/artifacts.py +39 -0
  427. ksadk/skills/runtime/backends/__init__.py +1 -0
  428. ksadk/skills/runtime/backends/disabled.py +8 -0
  429. ksadk/skills/runtime/backends/e2b.py +168 -0
  430. ksadk/skills/runtime/backends/local.py +95 -0
  431. ksadk/skills/runtime/base.py +103 -0
  432. ksadk/skills/runtime/executor.py +219 -0
  433. ksadk/skills/runtime/factory.py +37 -0
  434. ksadk/skills/runtime/loader.py +131 -0
  435. ksadk/skills/runtime/registry.py +150 -0
  436. ksadk/skills/runtime/request.py +67 -0
  437. ksadk/skills/service_client.py +239 -0
  438. ksadk/skills/service_env.py +58 -0
  439. ksadk/skills/tool_defs.py +221 -0
  440. ksadk/terminal_client.py +69 -0
  441. ksadk/terminal_exec_policy.py +229 -0
  442. ksadk/tools/__init__.py +17 -0
  443. ksadk/tools/gateway.py +230 -0
  444. ksadk/tools/result_budget.py +154 -0
  445. ksadk/toolsets/__init__.py +852 -0
  446. ksadk/toolsets/_langchain.py +11 -0
  447. ksadk/toolsets/platform.py +93 -0
  448. ksadk/toolsets/sandbox.py +310 -0
  449. ksadk/toolsets/skills.py +217 -0
  450. ksadk/toolsets/web.py +266 -0
  451. ksadk/toolsets/workspace.py +878 -0
  452. ksadk/toolsets/workspace_state.py +44 -0
  453. ksadk/tracing/__init__.py +37 -0
  454. ksadk/tracing/exporters/__init__.py +1 -0
  455. ksadk/tracing/exporters/inmemory_exporter.py +116 -0
  456. ksadk/tracing/exporters/langfuse_exporter.py +445 -0
  457. ksadk/tracing/setup.py +829 -0
  458. ksadk/tracing/span_utils.py +114 -0
  459. ksadk/tui/__init__.py +12 -0
  460. ksadk/tui/app.py +400 -0
  461. ksadk/tui/clipboard.py +100 -0
  462. ksadk/tui/widgets/__init__.py +22 -0
  463. ksadk/tui/widgets/assistant.py +89 -0
  464. ksadk/tui/widgets/base.py +54 -0
  465. ksadk/tui/widgets/chat_input.py +246 -0
  466. ksadk/tui/widgets/history.py +156 -0
  467. ksadk/tui/widgets/system.py +87 -0
  468. ksadk/tui/widgets/thinking.py +110 -0
  469. ksadk/tui/widgets/tool_call.py +161 -0
  470. ksadk/tui/widgets/user.py +37 -0
  471. ksadk/ui_config.py +168 -0
  472. ksadk/version.py +4 -0
  473. ksadk_runtime_common/__init__.py +20 -0
  474. ksadk_runtime_common/memory_backend/__init__.py +29 -0
  475. ksadk_runtime_common/memory_backend/manifest.py +79 -0
  476. ksadk_runtime_common/memory_backend/providers/__init__.py +6 -0
  477. ksadk_runtime_common/memory_backend/providers/lancedb.py +151 -0
  478. ksadk_runtime_common/memory_backend/providers/mem0.py +74 -0
  479. ksadk_runtime_common/memory_backend/registry.py +56 -0
  480. ksadk_runtime_common/memory_backend/render.py +71 -0
  481. ksadk_runtime_common/schemas/memory_backend_manifest.schema.json +148 -0
  482. ksadk_runtime_common/workspace_files/__init__.py +29 -0
  483. ksadk_runtime_common/workspace_files/bootstrap.py +56 -0
  484. ksadk_runtime_common/workspace_files/constants.py +9 -0
  485. ksadk_runtime_common/workspace_files/path_utils.py +71 -0
  486. ksadk_runtime_common/workspace_files/preview.py +96 -0
  487. ksadk_runtime_common/workspace_files/router.py +254 -0
  488. agentengine_sdk_python-0.6.2.dist-info/METADATA +0 -46
  489. agentengine_sdk_python-0.6.2.dist-info/RECORD +0 -4
  490. agentengine_sdk_python-0.6.2.dist-info/top_level.txt +0 -1
ksadk/cli/__init__.py ADDED
@@ -0,0 +1,531 @@
1
+ """
2
+ AgentEngine CLI - 命令行工具入口
3
+
4
+ 使用方式:
5
+ agentengine init myapp # 初始化项目
6
+ agentengine run # 本地运行
7
+ agentengine web # 本地调试 UI (Invoke)
8
+ agentengine build # 构建镜像
9
+ agentengine deploy # 部署到云端
10
+ agentengine launch # 一键构建+部署
11
+ agentengine agent list # 列出已部署 Agent
12
+ agentengine agent status # 查看单个 Agent 状态
13
+ agentengine agent invoke # 与 Agent 交互
14
+ agentengine agent delete # 删除实例
15
+
16
+ 别名: ksadk (向后兼容)
17
+ """
18
+
19
+ import os
20
+ import sys
21
+
22
+ import click
23
+ from rich.cells import cell_len
24
+
25
+ from ksadk.cli.dry_run import dry_run_option
26
+ from ksadk.cli.error_utils import (
27
+ CLIError,
28
+ cli_error_from_exception,
29
+ emit_cli_error,
30
+ is_debug_mode_enabled,
31
+ )
32
+ from ksadk.cli.global_options import ensure_global_cli_options
33
+ from ksadk.cli.resource_common import CONTEXT_SETTINGS
34
+ from ksadk.cli.ui import no_color_option, output_option, should_render_banner
35
+ from ksadk.version import VERSION
36
+
37
+
38
+ def _gradient_line(text: str, colors: list) -> str:
39
+ """为文本添加渐变颜色效果"""
40
+ if not text.strip():
41
+ return text + "\n"
42
+ result = ""
43
+ visible_chars = [c for c in text if c.strip()]
44
+ if not visible_chars:
45
+ return text + "\n"
46
+ step = max(1, len(visible_chars) // len(colors))
47
+ color_idx = 0
48
+ char_count = 0
49
+ for c in text:
50
+ if c.strip():
51
+ result += click.style(c, fg=colors[min(color_idx, len(colors) - 1)], bold=True)
52
+ char_count += 1
53
+ if char_count >= step and color_idx < len(colors) - 1:
54
+ color_idx += 1
55
+ char_count = 0
56
+ else:
57
+ result += c
58
+ return result + "\n"
59
+
60
+
61
+ # 金山云品牌渐变色: 红 -> 橙 -> 黄
62
+ BRAND_COLORS = [(255, 87, 51), (255, 140, 0), (255, 193, 7), (255, 215, 0)]
63
+ ROOT_HELP_COMMANDS = {
64
+ "a2a",
65
+ "agent",
66
+ "build",
67
+ "completion",
68
+ "dashboard",
69
+ "deploy",
70
+ "files",
71
+ "init",
72
+ "hermes",
73
+ "launch",
74
+ "mcp",
75
+ "openclaw",
76
+ "run",
77
+ "version",
78
+ "web",
79
+ }
80
+ ROOT_HELP_TOOL_COMMANDS = {
81
+ "config",
82
+ }
83
+ SHORT_HELP_MAP = {
84
+ "a2a": "暴露 A2A 服务与 Agent Card",
85
+ "agent": "Agent 资源管理",
86
+ "build": "构建部署制品",
87
+ "completion": "Shell 补全管理",
88
+ "dashboard": "打开云端 Agent Dashboard",
89
+ "deploy": "部署到云端",
90
+ "files": "管理 workspace 文件",
91
+ "hermes": "Hermes Agent 资源管理",
92
+ "init": "创建新项目",
93
+ "launch": "一键构建+部署",
94
+ "mcp": "MCP 资源管理",
95
+ "openclaw": "OpenClaw 资源管理",
96
+ "run": "运行 Agent",
97
+ "version": "Agent 版本管理",
98
+ "web": "本地调试 Agent Invoke UI",
99
+ "config": "项目配置与模型设置",
100
+ }
101
+
102
+
103
+ def _terminal_cell_width(text: str) -> int:
104
+ return cell_len(click.unstyle(text))
105
+
106
+
107
+ def _pad_to_terminal_cells(text: str, width: int) -> str:
108
+ return text + " " * max(width - _terminal_cell_width(text), 0)
109
+
110
+
111
+ COLORED_HELP_LABEL_WIDTH = 28
112
+
113
+
114
+ def _write_colored_help_row(
115
+ formatter: click.HelpFormatter,
116
+ label: str,
117
+ description: str,
118
+ *,
119
+ end: str = "\n\n",
120
+ ) -> None:
121
+ label_cell = _pad_to_terminal_cells(label, COLORED_HELP_LABEL_WIDTH)
122
+ formatter.write(click.style(f" {label_cell}", fg="cyan"))
123
+ formatter.write(click.style(f"{description}{end}", fg="white"))
124
+
125
+
126
+ # ASCII 艺术字 Banner
127
+ BANNER = r"""
128
+ _ _ _____ _
129
+ / \ __ _ ___ _ __ | |_| ____|_ __ __ _(_)_ __ ___
130
+ / _ \ / _` |/ _ \ '_ \| __| _| | '_ \ / _` | | '_ \ / _ \
131
+ / ___ \ (_| | __/ | | | |_| |___| | | | (_| | | | | | __/
132
+ /_/ \_\__, |\___|_| |_|\__|_____|_| |_|\__, |_|_| |_|\___|
133
+ |___/ |___/
134
+ """
135
+
136
+
137
+ class ColoredHelpGroup(click.Group):
138
+ """带颜色帮助文本的命令组"""
139
+
140
+ def format_help(self, ctx, formatter):
141
+ """覆盖默认帮助格式,添加颜色"""
142
+ if not should_render_banner():
143
+ return self.format_help_plain(ctx, formatter)
144
+
145
+ # 渐变 Banner
146
+ formatter.write("\n")
147
+ for line in BANNER.strip().split("\n"):
148
+ formatter.write(_gradient_line(" " + line, BRAND_COLORS))
149
+
150
+ # 副标题 + 版本号
151
+ formatter.write(click.style("\n 金山云", fg="red", bold=True))
152
+ formatter.write(click.style(" AgentEngine", fg="yellow", bold=True))
153
+ formatter.write(click.style(" v" + VERSION, fg="bright_black"))
154
+ formatter.write(click.style(" - AI Agent 开发与部署平台\n\n", fg="white"))
155
+
156
+ # 描述
157
+ formatter.write(click.style(" 支持 ", fg="white"))
158
+ formatter.write(click.style("Hermes", fg="yellow"))
159
+ formatter.write(click.style(" / ", fg="white"))
160
+ formatter.write(click.style("OpenClaw", fg="yellow"))
161
+ formatter.write(click.style(" / ", fg="white"))
162
+ formatter.write(click.style("DeepAgents", fg="yellow"))
163
+ formatter.write(click.style(" / ", fg="white"))
164
+ formatter.write(click.style("LangGraph", fg="yellow"))
165
+ formatter.write(click.style(" / ", fg="white"))
166
+ formatter.write(click.style("LangChain", fg="yellow"))
167
+ formatter.write(click.style(" / ", fg="white"))
168
+ formatter.write(click.style("Google ADK", fg="yellow"))
169
+ formatter.write(click.style(" 的本地运行与云端部署\n\n", fg="white"))
170
+
171
+ # 本地开发
172
+ formatter.write(click.style(" 📦 本地开发:\n\n", fg="green", bold=True))
173
+ _write_colored_help_row(formatter, "agentengine init", "初始化项目")
174
+ _write_colored_help_row(formatter, "agentengine run", "运行 API Server")
175
+ _write_colored_help_row(formatter, "agentengine web", "本地调试 Agent Invoke UI")
176
+
177
+ # 云端部署
178
+ formatter.write(click.style(" 🚀 云端部署:\n\n", fg="blue", bold=True))
179
+ _write_colored_help_row(formatter, "agentengine build", "构建部署制品")
180
+ _write_colored_help_row(formatter, "agentengine deploy", "部署到云端")
181
+ _write_colored_help_row(formatter, "agentengine launch", "一键构建+部署")
182
+ _write_colored_help_row(formatter, "agentengine agent", "Agent 资源管理")
183
+ _write_colored_help_row(formatter, "agentengine dashboard", "打开云端 Agent Dashboard")
184
+ _write_colored_help_row(formatter, "agentengine hermes", "Hermes Agent 资源管理")
185
+ _write_colored_help_row(formatter, "agentengine openclaw", "OpenClaw 资源管理")
186
+
187
+ # 配置与工具
188
+ formatter.write(click.style(" 🧰 配置:\n\n", fg="yellow", bold=True))
189
+ _write_colored_help_row(formatter, "agentengine config", "项目配置向导与模型配置")
190
+
191
+ # 自定义 Options 格式化
192
+ self.format_options_colored(ctx, formatter)
193
+
194
+ # 自定义 Commands 格式化
195
+ self.format_commands_colored(ctx, formatter)
196
+
197
+ def format_options_colored(self, ctx, formatter):
198
+ """自定义选项格式化"""
199
+ formatter.write(click.style(" ⚙️ 选项:\n\n", fg="yellow", bold=True))
200
+ _write_colored_help_row(formatter, "--output", "输出格式(pretty/json)")
201
+ _write_colored_help_row(formatter, "--no-color", "禁用颜色输出")
202
+ _write_colored_help_row(formatter, "--version", "显示版本号")
203
+ _write_colored_help_row(formatter, "-h, --help", "显示帮助信息", end="\n")
204
+
205
+ def format_commands(self, ctx, formatter):
206
+ """覆盖默认的 Commands 格式化,防止重复输出"""
207
+ # 什么也不做,Commands 已在 format_help 中自定义输出
208
+ pass
209
+
210
+ def format_help_plain(self, ctx, formatter):
211
+ formatter.write_usage(ctx.command_path, "[OPTIONS] COMMAND [ARGS]...")
212
+ formatter.write_paragraph()
213
+ formatter.write_text("AgentEngine CLI")
214
+ formatter.write_text(
215
+ "支持 Hermes / OpenClaw / DeepAgents / LangGraph / LangChain / Google ADK 的本地运行与云端部署。"
216
+ )
217
+
218
+ formatter.write_paragraph()
219
+ formatter.write_text("工作流命令:")
220
+ for name in sorted(ROOT_HELP_COMMANDS):
221
+ formatter.write_text(f" agentengine {name:<10} {SHORT_HELP_MAP.get(name, '')}")
222
+
223
+ formatter.write_paragraph()
224
+ formatter.write_text("配置:")
225
+ for name in sorted(ROOT_HELP_TOOL_COMMANDS):
226
+ formatter.write_text(f" agentengine {name:<10} {SHORT_HELP_MAP.get(name, '')}")
227
+
228
+ formatter.write_paragraph()
229
+ formatter.write_text("全局选项:")
230
+ formatter.write_text(" --output 输出格式(pretty/json)")
231
+ formatter.write_text(" --no-color 禁用颜色输出")
232
+ formatter.write_text(" --dry-run 全局 Dry Run(仅打印请求,不执行)")
233
+ formatter.write_text(" --version 显示版本号")
234
+ formatter.write_text(" -h, --help 显示帮助信息")
235
+
236
+ formatter.write_paragraph()
237
+ formatter.write_text("使用 `agentengine <command> --help` 查看子命令帮助。")
238
+
239
+ def format_commands_colored(self, ctx, formatter):
240
+ """自定义命令列表格式,更简洁美观"""
241
+ icon_map = {
242
+ "a2a": "↔️",
243
+ "agent": "🤖",
244
+ "build": "🔨",
245
+ "completion": "⌨️",
246
+ "dashboard": "🖥️",
247
+ "deploy": "🚀",
248
+ "files": "📄",
249
+ "hermes": "⌁",
250
+ "init": "📁",
251
+ "launch": "✨",
252
+ "mcp": "🔌",
253
+ "openclaw": "🦞",
254
+ "run": "▶️",
255
+ "version": "🏷️",
256
+ "web": "🌐",
257
+ }
258
+
259
+ commands = []
260
+ for subcommand in self.list_commands(ctx):
261
+ cmd = self.get_command(ctx, subcommand)
262
+ if cmd is None:
263
+ continue
264
+ if getattr(cmd, "hidden", False):
265
+ continue
266
+ if subcommand not in ROOT_HELP_COMMANDS:
267
+ continue
268
+ commands.append((subcommand, cmd))
269
+
270
+ if not commands:
271
+ return
272
+
273
+ formatter.write(click.style("\n 📋 可用命令:\n\n", fg="magenta", bold=True))
274
+
275
+ # Emoji、变体选择符和 CJK 字符的 Python len 与终端 cell 宽度不同。
276
+ # 这里按 cell 宽度补齐,保证命令列和说明列在真实终端里同列。
277
+ icon_width = max(_terminal_cell_width(icon) for icon in icon_map.values())
278
+ max_cmd_width = max(max(_terminal_cell_width(name) for name, _ in commands), 16)
279
+
280
+ for subcommand, cmd in commands:
281
+ # 使用预定义的简短描述
282
+ help_text = SHORT_HELP_MAP.get(subcommand, "")
283
+ if not help_text and cmd.help:
284
+ # 只取 docstring 第一行
285
+ help_text = cmd.help.split("\n")[0].strip()
286
+
287
+ # 格式化输出
288
+ icon = icon_map.get(subcommand, "•")
289
+ icon_cell = _pad_to_terminal_cells(icon, icon_width)
290
+ name_cell = _pad_to_terminal_cells(subcommand, max_cmd_width)
291
+ formatter.write(click.style(f" {icon_cell} ", fg="cyan"))
292
+ formatter.write(click.style(f"{name_cell} ", fg="cyan"))
293
+ formatter.write(click.style(f"{help_text}\n\n", fg="white"))
294
+
295
+ @click.group(cls=ColoredHelpGroup, context_settings=CONTEXT_SETTINGS)
296
+ @click.version_option(version=VERSION, prog_name="AgentEngine")
297
+ @no_color_option(hidden=False)
298
+ @output_option()
299
+ @dry_run_option("全局 Dry Run(仅打印请求,不执行)", expose_value=False)
300
+ def cli(output_mode: str | None):
301
+ """AgentEngine CLI"""
302
+ _ = output_mode
303
+
304
+
305
+ # 延迟导入子命令,避免循环依赖
306
+ def _add_command_once(group: click.Group, command, *, name: str | None = None):
307
+ """仅在未注册时添加命令,避免重复导入时抛错。"""
308
+ command_name = name or command.name
309
+ if command_name and command_name not in group.commands:
310
+ ensure_global_cli_options(command)
311
+ group.add_command(command, name=name)
312
+
313
+
314
+ def _register_commands():
315
+ from ksadk.cli.cmd_create import create
316
+ from ksadk.cli.cmd_deploy import deploy
317
+ from ksadk.cli.cmd_run import run
318
+ from ksadk.cli.cmd_web import web
319
+
320
+ # 注册现有命令
321
+ _add_command_once(cli, run)
322
+ _add_command_once(cli, deploy)
323
+ _add_command_once(cli, web)
324
+
325
+ # init 作为主命令 (PRD 规范)
326
+ _add_command_once(cli, create, name="init")
327
+
328
+ # 注册新命令 (如果存在)
329
+ try:
330
+ from ksadk.cli.cmd_a2a import a2a
331
+
332
+ _add_command_once(cli, a2a)
333
+ except ImportError:
334
+ pass
335
+
336
+ try:
337
+ from ksadk.cli.cmd_files import files
338
+
339
+ _add_command_once(cli, files)
340
+ except ImportError:
341
+ pass
342
+
343
+ try:
344
+ from ksadk.cli.cmd_config import config
345
+
346
+ _add_command_once(cli, config)
347
+ except ImportError:
348
+ pass
349
+
350
+ try:
351
+ from ksadk.cli.cmd_model import model
352
+
353
+ _add_command_once(cli, model)
354
+ except ImportError:
355
+ pass
356
+
357
+ try:
358
+ from ksadk.cli.cmd_build import build
359
+
360
+ _add_command_once(cli, build)
361
+ except ImportError:
362
+ pass
363
+
364
+ try:
365
+ from ksadk.cli.cmd_launch import launch
366
+
367
+ _add_command_once(cli, launch)
368
+ except ImportError:
369
+ pass
370
+
371
+ try:
372
+ from ksadk.cli.cmd_agent import agent
373
+
374
+ _add_command_once(cli, agent)
375
+ except ImportError:
376
+ pass
377
+
378
+ try:
379
+ from ksadk.cli.cmd_status import status
380
+
381
+ _add_command_once(cli, status)
382
+ except ImportError:
383
+ pass
384
+
385
+ try:
386
+ from ksadk.cli.cmd_invoke import invoke
387
+
388
+ _add_command_once(cli, invoke)
389
+ except ImportError:
390
+ pass
391
+
392
+ try:
393
+ from ksadk.cli.cmd_dashboard import dashboard
394
+
395
+ _add_command_once(cli, dashboard)
396
+ except ImportError:
397
+ pass
398
+
399
+ try:
400
+ from ksadk.cli.cmd_destroy import delete, destroy
401
+
402
+ _add_command_once(cli, delete)
403
+ _add_command_once(cli, destroy)
404
+ except ImportError:
405
+ pass
406
+
407
+ # MCP 命令组
408
+ try:
409
+ from ksadk.cli.cmd_mcp import mcp
410
+
411
+ _add_command_once(cli, mcp)
412
+ except ImportError:
413
+ pass
414
+
415
+ # Completion 命令组
416
+ try:
417
+ from ksadk.cli.cmd_completion import completion
418
+
419
+ _add_command_once(cli, completion)
420
+ except ImportError:
421
+ pass
422
+
423
+ # Version 命令组
424
+ try:
425
+ from ksadk.cli.cmd_version import version
426
+
427
+ _add_command_once(cli, version)
428
+ except ImportError:
429
+ pass
430
+
431
+ # OpenClaw 命令组
432
+ try:
433
+ from ksadk.cli.cmd_openclaw import openclaw
434
+
435
+ _add_command_once(cli, openclaw)
436
+ except ImportError:
437
+ pass
438
+
439
+ # Hermes 命令组
440
+ try:
441
+ from ksadk.cli.cmd_hermes import hermes
442
+
443
+ _add_command_once(cli, hermes)
444
+ except ImportError:
445
+ pass
446
+
447
+ def main():
448
+ # 全局加载 .env 文件
449
+ try:
450
+ from dotenv import find_dotenv, load_dotenv
451
+
452
+ # 使用 find_dotenv(usecwd=True) 确保从当前工作目录开始查找 .env 文件
453
+ # 如果当前目录不存在(已被删除),跳过 .env 加载
454
+ try:
455
+ dotenv_path = find_dotenv(usecwd=True)
456
+ except (FileNotFoundError, OSError):
457
+ # 当前工作目录不存在,跳过 .env 加载
458
+ dotenv_path = None
459
+
460
+ if dotenv_path:
461
+ # 编码尝试顺序: utf-8-sig (带BOM) -> utf-8 -> 系统默认编码
462
+ encodings_to_try = ["utf-8-sig", "utf-8"]
463
+ loaded = False
464
+
465
+ for enc in encodings_to_try:
466
+ try:
467
+ load_dotenv(dotenv_path, override=False, encoding=enc)
468
+ loaded = True
469
+ break
470
+ except UnicodeDecodeError:
471
+ continue
472
+
473
+ if not loaded:
474
+ # 回退到系统默认编码 (Windows 上通常是 GBK/cp936)
475
+ import locale
476
+ fallback_encoding = locale.getpreferredencoding(False)
477
+ try:
478
+ load_dotenv(dotenv_path, override=False, encoding=fallback_encoding)
479
+ click.echo(
480
+ click.style(
481
+ f"⚠️ 警告: .env 文件使用 {fallback_encoding} 编码,建议转换为 UTF-8\n",
482
+ fg="yellow"
483
+ ),
484
+ err=True
485
+ )
486
+ except UnicodeDecodeError:
487
+ click.echo(
488
+ click.style(
489
+ f"❌ 错误: .env 文件编码无法识别,请确保使用 UTF-8 编码保存\n"
490
+ f" 文件路径: {dotenv_path}\n",
491
+ fg="red"
492
+ ),
493
+ err=True
494
+ )
495
+ except ImportError:
496
+ pass
497
+
498
+ # 全局配置回退: .env 未设置的变量从 ~/.agentengine/settings.json 补充
499
+ try:
500
+ from ksadk.configs.global_config import get_env_from_global_config
501
+ global_env = get_env_from_global_config()
502
+ injected_keys = []
503
+ for key, value in global_env.items():
504
+ if not os.environ.get(key):
505
+ os.environ[key] = value
506
+ injected_keys.append(key)
507
+ if injected_keys:
508
+ os.environ["KSADK_GLOBAL_CONFIG_ENV_KEYS"] = ",".join(sorted(injected_keys))
509
+ except Exception:
510
+ pass
511
+
512
+ _register_commands()
513
+ if len(sys.argv) <= 1:
514
+ cli.main(args=["--help"], prog_name="agentengine", standalone_mode=False)
515
+ raise SystemExit(0)
516
+ try:
517
+ cli.main(prog_name="agentengine", standalone_mode=False)
518
+ except click.exceptions.Exit as e:
519
+ raise SystemExit(e.exit_code) from None
520
+ except Exception as e:
521
+ if is_debug_mode_enabled():
522
+ raise
523
+ cli_error = cli_error_from_exception(e, show_help=True)
524
+ if isinstance(e, CLIError):
525
+ cli_error = e
526
+ emit_cli_error(cli_error)
527
+ raise SystemExit(cli_error.exit_code) from None
528
+
529
+
530
+ if __name__ == "__main__":
531
+ main()
ksadk/cli/__main__.py ADDED
@@ -0,0 +1,4 @@
1
+ from ksadk.cli import main
2
+
3
+ if __name__ == "__main__":
4
+ main()