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.
- agentengine_sdk_python-0.6.9.dist-info/METADATA +179 -0
- agentengine_sdk_python-0.6.9.dist-info/RECORD +487 -0
- {agentengine_sdk_python-0.6.2.dist-info → agentengine_sdk_python-0.6.9.dist-info}/WHEEL +1 -1
- agentengine_sdk_python-0.6.9.dist-info/entry_points.txt +3 -0
- agentengine_sdk_python-0.6.9.dist-info/licenses/LICENSE +175 -0
- agentengine_sdk_python-0.6.9.dist-info/top_level.txt +2 -0
- ksadk/__init__.py +13 -0
- ksadk/__main__.py +4 -0
- ksadk/a2a/__init__.py +15 -0
- ksadk/a2a/card_builder.py +64 -0
- ksadk/a2a/client.py +309 -0
- ksadk/a2a/executor.py +201 -0
- ksadk/a2a/server.py +79 -0
- ksadk/agents/__init__.py +20 -0
- ksadk/agents/base.py +370 -0
- ksadk/agents/context.py +38 -0
- ksadk/agents/event.py +35 -0
- ksadk/agents/loop_agent.py +71 -0
- ksadk/agents/parallel_agent.py +109 -0
- ksadk/agents/runner_adapter.py +24 -0
- ksadk/agents/sequential_agent.py +34 -0
- ksadk/api/__init__.py +3 -0
- ksadk/api/client.py +2227 -0
- ksadk/builders/__init__.py +20 -0
- ksadk/builders/base.py +66 -0
- ksadk/builders/code_builder.py +1990 -0
- ksadk/builders/container_builder.py +786 -0
- ksadk/builders/framework_requirements.py +59 -0
- ksadk/builders/ks3_uploader.py +389 -0
- ksadk/builders/mcp_builder.py +476 -0
- ksadk/builders/requirements_utils.py +75 -0
- ksadk/cli/__init__.py +531 -0
- ksadk/cli/__main__.py +4 -0
- ksadk/cli/agent_ref.py +204 -0
- ksadk/cli/cmd_a2a.py +167 -0
- ksadk/cli/cmd_agent.py +201 -0
- ksadk/cli/cmd_build.py +270 -0
- ksadk/cli/cmd_completion.py +304 -0
- ksadk/cli/cmd_config.py +758 -0
- ksadk/cli/cmd_create.py +2277 -0
- ksadk/cli/cmd_dashboard.py +900 -0
- ksadk/cli/cmd_deploy.py +704 -0
- ksadk/cli/cmd_destroy.py +345 -0
- ksadk/cli/cmd_files.py +1227 -0
- ksadk/cli/cmd_hermes.py +1259 -0
- ksadk/cli/cmd_invoke.py +1336 -0
- ksadk/cli/cmd_launch.py +564 -0
- ksadk/cli/cmd_mcp.py +1174 -0
- ksadk/cli/cmd_model.py +302 -0
- ksadk/cli/cmd_openclaw.py +3918 -0
- ksadk/cli/cmd_run.py +232 -0
- ksadk/cli/cmd_status.py +588 -0
- ksadk/cli/cmd_version.py +522 -0
- ksadk/cli/cmd_web.py +288 -0
- ksadk/cli/deploy_utils.py +87 -0
- ksadk/cli/dry_run.py +214 -0
- ksadk/cli/env_options.py +82 -0
- ksadk/cli/error_utils.py +525 -0
- ksadk/cli/global_options.py +31 -0
- ksadk/cli/local_runtime.py +97 -0
- ksadk/cli/model_catalog.py +136 -0
- ksadk/cli/network_options.py +410 -0
- ksadk/cli/resource_common.py +621 -0
- ksadk/cli/storage.py +84 -0
- ksadk/cli/ui.py +431 -0
- ksadk/cli/workflow_common.py +552 -0
- ksadk/common/__init__.py +14 -0
- ksadk/common/aicp_env.py +128 -0
- ksadk/common/auth.py +190 -0
- ksadk/common/constants.py +84 -0
- ksadk/common/llm_utils.py +61 -0
- ksadk/configs/__init__.py +61 -0
- ksadk/configs/env_registry.py +342 -0
- ksadk/configs/global_config.py +200 -0
- ksadk/configs/settings.py +706 -0
- ksadk/conversations/__init__.py +95 -0
- ksadk/conversations/attachment_storage.py +379 -0
- ksadk/conversations/attachments.py +774 -0
- ksadk/conversations/compaction_pipeline.py +387 -0
- ksadk/conversations/compaction_prompt.py +128 -0
- ksadk/conversations/context.py +303 -0
- ksadk/conversations/model_context.py +360 -0
- ksadk/conversations/model_options.py +136 -0
- ksadk/conversations/normalize.py +446 -0
- ksadk/conversations/reasoning_markup.py +91 -0
- ksadk/conversations/run_kinds.py +61 -0
- ksadk/conversations/run_status.py +53 -0
- ksadk/conversations/runtime.py +5208 -0
- ksadk/conversations/semantic_summary.py +359 -0
- ksadk/conversations/session_title.py +254 -0
- ksadk/deployment/__init__.py +83 -0
- ksadk/deployment/agent_access.py +226 -0
- ksadk/deployment/base.py +229 -0
- ksadk/deployment/manager.py +332 -0
- ksadk/deployment/providers/__init__.py +10 -0
- ksadk/deployment/providers/serverless.py +1105 -0
- ksadk/deployment/registry.py +120 -0
- ksadk/deployment/state.py +78 -0
- ksadk/deployment/ui_config.py +21 -0
- ksadk/detection/__init__.py +7 -0
- ksadk/detection/detector.py +431 -0
- ksadk/detection/mcp_detector.py +250 -0
- ksadk/hermes_terminal.py +467 -0
- ksadk/identity/__init__.py +17 -0
- ksadk/identity/resolver.py +385 -0
- ksadk/knowledge_base/__init__.py +62 -0
- ksadk/knowledge_base/adk_tool.py +47 -0
- ksadk/knowledge_base/client.py +297 -0
- ksadk/knowledge_base/langchain_tool.py +55 -0
- ksadk/knowledge_base/service.py +66 -0
- ksadk/knowledge_base/tool.py +50 -0
- ksadk/markdown.py +169 -0
- ksadk/mcp_runtime/__init__.py +231 -0
- ksadk/memory/__init__.py +57 -0
- ksadk/memory/adk/__init__.py +51 -0
- ksadk/memory/adk/backends/__init__.py +5 -0
- ksadk/memory/adk/backends/base_ltm_backend.py +52 -0
- ksadk/memory/adk/backends/http_ltm_backend.py +183 -0
- ksadk/memory/adk/backends/inmemory_ltm_backend.py +96 -0
- ksadk/memory/adk/backends/sdk_ltm_backend.py +456 -0
- ksadk/memory/adk/long_term_memory.py +273 -0
- ksadk/memory/adk/short_term_memory.py +289 -0
- ksadk/memory/adk_tool.py +31 -0
- ksadk/memory/backends/__init__.py +6 -0
- ksadk/memory/backends/base.py +103 -0
- ksadk/memory/backends/memory.py +112 -0
- ksadk/memory/backends/redis.py +146 -0
- ksadk/memory/langchain_tool.py +39 -0
- ksadk/memory/ltm_backend_factory.py +24 -0
- ksadk/memory/manager.py +215 -0
- ksadk/memory/service.py +172 -0
- ksadk/memory/tool.py +96 -0
- ksadk/model_policy.py +223 -0
- ksadk/openclaw_gateway.py +378 -0
- ksadk/runners/__init__.py +8 -0
- ksadk/runners/adk_runner.py +1135 -0
- ksadk/runners/base_runner.py +305 -0
- ksadk/runners/deepagents_runner.py +13 -0
- ksadk/runners/factory.py +73 -0
- ksadk/runners/langchain_runner.py +539 -0
- ksadk/runners/langgraph_runner.py +852 -0
- ksadk/runners/patch_langchain.py +187 -0
- ksadk/runners/remote_runner.py +667 -0
- ksadk/runners/usage_accumulator.py +38 -0
- ksadk/runners/utils/__init__.py +19 -0
- ksadk/runners/utils/langfuse.py +230 -0
- ksadk/runners/utils/loader.py +62 -0
- ksadk/runtime_context.py +166 -0
- ksadk/runtime_state.py +25 -0
- ksadk/sandbox/__init__.py +28 -0
- ksadk/sandbox/backends/__init__.py +9 -0
- ksadk/sandbox/backends/e2b.py +154 -0
- ksadk/sandbox/backends/local_process.py +131 -0
- ksadk/sandbox/base.py +101 -0
- ksadk/sandbox/factory.py +53 -0
- ksadk/sandbox/registry.py +187 -0
- ksadk/server/__init__.py +7 -0
- ksadk/server/api_models.py +73 -0
- ksadk/server/app.py +3789 -0
- ksadk/server/static/assets/ArtifactsPanel-C0meuOdi.js +1 -0
- ksadk/server/static/assets/CodeBlock-BbI4HPtJ.js +9 -0
- ksadk/server/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- ksadk/server/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- ksadk/server/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- ksadk/server/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- ksadk/server/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- ksadk/server/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- ksadk/server/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- ksadk/server/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- ksadk/server/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- ksadk/server/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- ksadk/server/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- ksadk/server/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- ksadk/server/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- ksadk/server/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- ksadk/server/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- ksadk/server/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- ksadk/server/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- ksadk/server/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- ksadk/server/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- ksadk/server/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- ksadk/server/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- ksadk/server/static/assets/MathMessageMarkdown-DMLQYoLp.js +8 -0
- ksadk/server/static/assets/MathMessageMarkdown-DeYh8QPr.css +1 -0
- ksadk/server/static/assets/MermaidBlock-DCR8WZ17.js +303 -0
- ksadk/server/static/assets/NativeTerminalPanel-CHOd7Rch.css +1 -0
- ksadk/server/static/assets/NativeTerminalPanel-CKUvWhUz.js +1 -0
- ksadk/server/static/assets/addon-fit-DthTIhi3.js +1 -0
- ksadk/server/static/assets/apl-CnwPGSsG.js +1 -0
- ksadk/server/static/assets/arc-bj2rZnP5.js +1 -0
- ksadk/server/static/assets/architecture-7EHR7CIX-Cr6Xz1_c.js +1 -0
- ksadk/server/static/assets/architectureDiagram-3BPJPVTR-2u1ltDIj.js +36 -0
- ksadk/server/static/assets/asciiarmor-qTkVPQu6.js +1 -0
- ksadk/server/static/assets/asn1-Dr8qZg38.js +1 -0
- ksadk/server/static/assets/asterisk-Bja0s6e1.js +1 -0
- ksadk/server/static/assets/blockDiagram-GPEHLZMM-D6fvdK20.js +132 -0
- ksadk/server/static/assets/brainfuck-D5EjA2JK.js +1 -0
- ksadk/server/static/assets/c4Diagram-AAUBKEIU-BK82L5n5.js +10 -0
- ksadk/server/static/assets/channel-BSSOwFIb.js +1 -0
- ksadk/server/static/assets/chunk-2J33WTMH-DLVdkeyQ.js +1 -0
- ksadk/server/static/assets/chunk-4BX2VUAB-BbwsYcbW.js +1 -0
- ksadk/server/static/assets/chunk-55IACEB6-DOairxzw.js +1 -0
- ksadk/server/static/assets/chunk-727SXJPM-hCO487gs.js +206 -0
- ksadk/server/static/assets/chunk-AQP2D5EJ-XU8vDOuG.js +231 -0
- ksadk/server/static/assets/chunk-FMBD7UC4-PrapyfMu.js +15 -0
- ksadk/server/static/assets/chunk-ND2GUHAM-CboKhTZ3.js +1 -0
- ksadk/server/static/assets/chunk-QZHKN3VN-XXpdiwUL.js +1 -0
- ksadk/server/static/assets/classDiagram-4FO5ZUOK-C5HvGiyK.js +1 -0
- ksadk/server/static/assets/classDiagram-v2-Q7XG4LA2-C5HvGiyK.js +1 -0
- ksadk/server/static/assets/clike-DHH8Ad3s.js +1 -0
- ksadk/server/static/assets/clojure-BflJGmDX.js +1 -0
- ksadk/server/static/assets/cmake-CyVbuzPu.js +1 -0
- ksadk/server/static/assets/cobol-B_OZ4V-R.js +1 -0
- ksadk/server/static/assets/coffeescript-B2pKbFk8.js +1 -0
- ksadk/server/static/assets/commonlisp-CcllspGY.js +1 -0
- ksadk/server/static/assets/cose-bilkent-S5V4N54A-_N8bJ-EU.js +1 -0
- ksadk/server/static/assets/crystal-M5-qzICs.js +1 -0
- ksadk/server/static/assets/css-CYpP4FRV.js +1 -0
- ksadk/server/static/assets/cypher-p9eYesGn.js +1 -0
- ksadk/server/static/assets/cytoscape.esm-DelgaX4f.js +321 -0
- ksadk/server/static/assets/d-BhMjBjQP.js +1 -0
- ksadk/server/static/assets/dagre-BM42HDAG-FoDlo5J2.js +4 -0
- ksadk/server/static/assets/dagre-Bx709z4p.js +1 -0
- ksadk/server/static/assets/defaultLocale-C8Fc0cco.js +1 -0
- ksadk/server/static/assets/diagram-2AECGRRQ-BBp6ebBw.js +43 -0
- ksadk/server/static/assets/diagram-5GNKFQAL-CqOvG1PR.js +10 -0
- ksadk/server/static/assets/diagram-KO2AKTUF-O9T3t6ba.js +3 -0
- ksadk/server/static/assets/diagram-LMA3HP47-CGG8ekBO.js +24 -0
- ksadk/server/static/assets/diagram-OG6HWLK6-4BmH1EEg.js +24 -0
- ksadk/server/static/assets/diff-ChtP43wD.js +1 -0
- ksadk/server/static/assets/dist-6kSZvCZh.js +1 -0
- ksadk/server/static/assets/dist-B67uF2uK.js +1 -0
- ksadk/server/static/assets/dist-BMKM66B4.js +1 -0
- ksadk/server/static/assets/dist-BVzcWa6D.js +1 -0
- ksadk/server/static/assets/dist-Bk1l05Ni.js +1 -0
- ksadk/server/static/assets/dist-BkJjNih3.js +1 -0
- ksadk/server/static/assets/dist-BmuTWcm7.js +9 -0
- ksadk/server/static/assets/dist-C2DKRFVK.js +1 -0
- ksadk/server/static/assets/dist-CWiTDN_V.js +6 -0
- ksadk/server/static/assets/dist-CZ6C3x8B.js +23 -0
- ksadk/server/static/assets/dist-CiZHB6ZW.js +1 -0
- ksadk/server/static/assets/dist-Cp1_jKwf.js +1 -0
- ksadk/server/static/assets/dist-Cwhk4lwI.js +2 -0
- ksadk/server/static/assets/dist-D5JGcxBx.js +11 -0
- ksadk/server/static/assets/dist-D99wf6_X.js +1 -0
- ksadk/server/static/assets/dist-DCpZrjaK.js +1 -0
- ksadk/server/static/assets/dist-DI-oVAXw.js +1 -0
- ksadk/server/static/assets/dist-DLMjL01k.js +1 -0
- ksadk/server/static/assets/dist-DLeM1OCK.js +1 -0
- ksadk/server/static/assets/dist-DM0rEQPk.js +1 -0
- ksadk/server/static/assets/dist-DbaH3p5h.js +1 -0
- ksadk/server/static/assets/dist-S4klkK5W.js +1 -0
- ksadk/server/static/assets/dockerfile-BLkNEvjs.js +1 -0
- ksadk/server/static/assets/dtd-DTF72YNO.js +1 -0
- ksadk/server/static/assets/dylan-C6jEEEk-.js +1 -0
- ksadk/server/static/assets/ebnf-D4c0_ac3.js +1 -0
- ksadk/server/static/assets/ecl-BSZaIHnp.js +1 -0
- ksadk/server/static/assets/eiffel-BEjRio4Q.js +1 -0
- ksadk/server/static/assets/elm-Cshzl8qu.js +1 -0
- ksadk/server/static/assets/erDiagram-TEJ5UH35-oJhaci7S.js +85 -0
- ksadk/server/static/assets/erlang-DaB2Rkuy.js +1 -0
- ksadk/server/static/assets/eventmodeling-FCH6USID-CIgwHJLL.js +1 -0
- ksadk/server/static/assets/factor-D7LVTn2l.js +1 -0
- ksadk/server/static/assets/fcl-ClOhbFR7.js +1 -0
- ksadk/server/static/assets/flowDiagram-I6XJVG4X-DtTmUan-.js +162 -0
- ksadk/server/static/assets/forth-Cezjo90N.js +1 -0
- ksadk/server/static/assets/fortran-Bt6PBEDR.js +1 -0
- ksadk/server/static/assets/ganttDiagram-6RSMTGT7-BSsb_eij.js +292 -0
- ksadk/server/static/assets/gas-BHEdbvp9.js +1 -0
- ksadk/server/static/assets/gherkin-oBAE_ms0.js +1 -0
- ksadk/server/static/assets/gitGraph-WXDBUCRP-BVAJ7uo0.js +1 -0
- ksadk/server/static/assets/gitGraphDiagram-PVQCEYII-BR5s6Pws.js +106 -0
- ksadk/server/static/assets/graphlib-B8gBHxth.js +1 -0
- ksadk/server/static/assets/groovy-BC3IOsC8.js +1 -0
- ksadk/server/static/assets/haskell-BRsoo5mP.js +1 -0
- ksadk/server/static/assets/haxe-DIz0ZZqd.js +1 -0
- ksadk/server/static/assets/http-CLVgA2GD.js +1 -0
- ksadk/server/static/assets/idl-BUZw3wgd.js +1 -0
- ksadk/server/static/assets/index-BH7-pC0B.js +165 -0
- ksadk/server/static/assets/index-DAURbCsP.css +1 -0
- ksadk/server/static/assets/info-J43DQDTF-MT80V4ge.js +1 -0
- ksadk/server/static/assets/infoDiagram-5YYISTIA-DYPc5cvh.js +2 -0
- ksadk/server/static/assets/init-D6jRqBbL.js +1 -0
- ksadk/server/static/assets/ishikawaDiagram-YF4QCWOH-MoBdALDg.js +70 -0
- ksadk/server/static/assets/javascript-9Tg8ixDm.js +1 -0
- ksadk/server/static/assets/journeyDiagram-JHISSGLW-DgLiQT8l.js +139 -0
- ksadk/server/static/assets/julia-CQfgDRfP.js +1 -0
- ksadk/server/static/assets/kanban-definition-UN3LZRKU-CsFx112F.js +89 -0
- ksadk/server/static/assets/katex-DRsiwpM2.js +265 -0
- ksadk/server/static/assets/linear-TNRQ5Orv.js +1 -0
- ksadk/server/static/assets/livescript-BXxG0Yva.js +1 -0
- ksadk/server/static/assets/lua-CiA1ziua.js +1 -0
- ksadk/server/static/assets/mathematica-u8YMmbU0.js +1 -0
- ksadk/server/static/assets/mbox-BEMVcqjs.js +1 -0
- ksadk/server/static/assets/mermaid-parser.core-D2eMVOgo.js +161 -0
- ksadk/server/static/assets/mindmap-definition-RKZ34NQL-BtByYFhL.js +96 -0
- ksadk/server/static/assets/mirc-C9zpzAZU.js +1 -0
- ksadk/server/static/assets/mllike-B45xgp2S.js +1 -0
- ksadk/server/static/assets/modelica-CqHI_q-D.js +1 -0
- ksadk/server/static/assets/mscgen-qgSLujhx.js +1 -0
- ksadk/server/static/assets/mumps-CW_TBmxz.js +1 -0
- ksadk/server/static/assets/nginx-BMaDbqW3.js +1 -0
- ksadk/server/static/assets/nsis-AQ_alPln.js +1 -0
- ksadk/server/static/assets/ntriples-d28e9m0E.js +1 -0
- ksadk/server/static/assets/octave-D2Q8cUp1.js +1 -0
- ksadk/server/static/assets/ordinal-hYBb2elL.js +1 -0
- ksadk/server/static/assets/oz-BwTct_5T.js +1 -0
- ksadk/server/static/assets/packet-YPE3B663-BLKhbXZB.js +1 -0
- ksadk/server/static/assets/pascal-Dp_KdFgX.js +1 -0
- ksadk/server/static/assets/perl-CdEHsPfU.js +1 -0
- ksadk/server/static/assets/pie-LRSECV5Y-DFOikjSY.js +1 -0
- ksadk/server/static/assets/pieDiagram-4H26LBE5-DPnuCB8c.js +30 -0
- ksadk/server/static/assets/pig-AF4Hwhju.js +1 -0
- ksadk/server/static/assets/powershell-CzG71I4L.js +1 -0
- ksadk/server/static/assets/properties-C357ku5U.js +1 -0
- ksadk/server/static/assets/protobuf-D1ij_kNL.js +1 -0
- ksadk/server/static/assets/pug-Bugr-47h.js +1 -0
- ksadk/server/static/assets/puppet-B4hC2X4m.js +1 -0
- ksadk/server/static/assets/python-BqYw9LYJ.js +1 -0
- ksadk/server/static/assets/q-B9NhS7L_.js +1 -0
- ksadk/server/static/assets/quadrantDiagram-W4KKPZXB-miFpCPv4.js +7 -0
- ksadk/server/static/assets/r-DADKenSm.js +1 -0
- ksadk/server/static/assets/radar-GUYGQ44K-095b1Ikw.js +1 -0
- ksadk/server/static/assets/requirementDiagram-4Y6WPE33-mjB_yYkW.js +84 -0
- ksadk/server/static/assets/rpm-gpDK5sbt.js +1 -0
- ksadk/server/static/assets/ruby-DsYpTuWg.js +1 -0
- ksadk/server/static/assets/sankeyDiagram-5OEKKPKP-D7hSlZZZ.js +40 -0
- ksadk/server/static/assets/sas-C2OyD2Y6.js +1 -0
- ksadk/server/static/assets/scheme-CyDdOh7e.js +1 -0
- ksadk/server/static/assets/sequenceDiagram-3UESZ5HK-D9Cx6hC3.js +162 -0
- ksadk/server/static/assets/shell-Du5Qg9im.js +1 -0
- ksadk/server/static/assets/sieve-BAxa3IjF.js +1 -0
- ksadk/server/static/assets/simple-mode-DRpGK0lJ.js +1 -0
- ksadk/server/static/assets/smalltalk-BLp5-jwC.js +1 -0
- ksadk/server/static/assets/solr-BBopId9w.js +1 -0
- ksadk/server/static/assets/sparql-Dz-mlCAC.js +1 -0
- ksadk/server/static/assets/spreadsheet-CTIncYxj.js +1 -0
- ksadk/server/static/assets/sql-DcCJ9jop.js +1 -0
- ksadk/server/static/assets/stateDiagram-AJRCARHV-D_zrg47o.js +1 -0
- ksadk/server/static/assets/stateDiagram-v2-BHNVJYJU-J9kCb0nC.js +1 -0
- ksadk/server/static/assets/stex-sDrdk2BW.js +1 -0
- ksadk/server/static/assets/stylus-DLLZ8dgm.js +1 -0
- ksadk/server/static/assets/swift-DKB6_1j6.js +1 -0
- ksadk/server/static/assets/tcl-BGfruO1u.js +1 -0
- ksadk/server/static/assets/textile-DWBqthVk.js +1 -0
- ksadk/server/static/assets/tiddlywiki-VlUiK86J.js +1 -0
- ksadk/server/static/assets/tiki-CxVlf5KZ.js +1 -0
- ksadk/server/static/assets/timeline-definition-PNZ67QCA-CwSec0Wa.js +120 -0
- ksadk/server/static/assets/toml-LvoKBwCs.js +1 -0
- ksadk/server/static/assets/treeView-BLDUP644-yinfJEY6.js +1 -0
- ksadk/server/static/assets/treemap-LRROVOQU-DosUqN1Q.js +1 -0
- ksadk/server/static/assets/troff-C2dAgh7P.js +1 -0
- ksadk/server/static/assets/ttcn-BePYh-hG.js +1 -0
- ksadk/server/static/assets/ttcn-cfg-CY0aot7Q.js +1 -0
- ksadk/server/static/assets/turtle-BDLWE2cD.js +1 -0
- ksadk/server/static/assets/vb-BthdM_4N.js +1 -0
- ksadk/server/static/assets/vbscript-D9f6rSsU.js +1 -0
- ksadk/server/static/assets/velocity-CqftRsjg.js +1 -0
- ksadk/server/static/assets/vennDiagram-CIIHVFJN-agCVobiF.js +34 -0
- ksadk/server/static/assets/verilog-D-x6ne0Z.js +1 -0
- ksadk/server/static/assets/vhdl-CMrOq2q1.js +1 -0
- ksadk/server/static/assets/wardley-L42UT6IY-Bvp7-5uH.js +1 -0
- ksadk/server/static/assets/wardleyDiagram-YWT4CUSO-TmrlhWNt.js +78 -0
- ksadk/server/static/assets/webidl-D5jiJvOU.js +1 -0
- ksadk/server/static/assets/xquery-fj_R-kMw.js +1 -0
- ksadk/server/static/assets/xterm-DooSxjI5.js +36 -0
- ksadk/server/static/assets/xychartDiagram-2RQKCTM6-DV71V-ah.js +7 -0
- ksadk/server/static/assets/yacas-CXXgtw0p.js +1 -0
- ksadk/server/static/assets/z80-CL1naaMV.js +1 -0
- ksadk/server/static/favicon.svg +1 -0
- ksadk/server/static/icons.svg +24 -0
- ksadk/server/static/index.html +14 -0
- ksadk/server/terminal_sessions.py +551 -0
- ksadk/sessions/__init__.py +283 -0
- ksadk/sessions/base.py +354 -0
- ksadk/sessions/continuity.py +313 -0
- ksadk/sessions/errors.py +7 -0
- ksadk/sessions/in_memory.py +273 -0
- ksadk/sessions/local_service.py +949 -0
- ksadk/sessions/postgres_service.py +838 -0
- ksadk/sessions/sqlite_service.py +13 -0
- ksadk/skills/__init__.py +9 -0
- ksadk/skills/loader.py +46 -0
- ksadk/skills/models.py +120 -0
- ksadk/skills/package_store.py +104 -0
- ksadk/skills/runtime/__init__.py +17 -0
- ksadk/skills/runtime/agent.py +183 -0
- ksadk/skills/runtime/artifacts.py +39 -0
- ksadk/skills/runtime/backends/__init__.py +1 -0
- ksadk/skills/runtime/backends/disabled.py +8 -0
- ksadk/skills/runtime/backends/e2b.py +168 -0
- ksadk/skills/runtime/backends/local.py +95 -0
- ksadk/skills/runtime/base.py +103 -0
- ksadk/skills/runtime/executor.py +219 -0
- ksadk/skills/runtime/factory.py +37 -0
- ksadk/skills/runtime/loader.py +131 -0
- ksadk/skills/runtime/registry.py +150 -0
- ksadk/skills/runtime/request.py +67 -0
- ksadk/skills/service_client.py +239 -0
- ksadk/skills/service_env.py +58 -0
- ksadk/skills/tool_defs.py +221 -0
- ksadk/terminal_client.py +69 -0
- ksadk/terminal_exec_policy.py +229 -0
- ksadk/tools/__init__.py +17 -0
- ksadk/tools/gateway.py +230 -0
- ksadk/tools/result_budget.py +154 -0
- ksadk/toolsets/__init__.py +852 -0
- ksadk/toolsets/_langchain.py +11 -0
- ksadk/toolsets/platform.py +93 -0
- ksadk/toolsets/sandbox.py +310 -0
- ksadk/toolsets/skills.py +217 -0
- ksadk/toolsets/web.py +266 -0
- ksadk/toolsets/workspace.py +878 -0
- ksadk/toolsets/workspace_state.py +44 -0
- ksadk/tracing/__init__.py +37 -0
- ksadk/tracing/exporters/__init__.py +1 -0
- ksadk/tracing/exporters/inmemory_exporter.py +116 -0
- ksadk/tracing/exporters/langfuse_exporter.py +445 -0
- ksadk/tracing/setup.py +829 -0
- ksadk/tracing/span_utils.py +114 -0
- ksadk/tui/__init__.py +12 -0
- ksadk/tui/app.py +400 -0
- ksadk/tui/clipboard.py +100 -0
- ksadk/tui/widgets/__init__.py +22 -0
- ksadk/tui/widgets/assistant.py +89 -0
- ksadk/tui/widgets/base.py +54 -0
- ksadk/tui/widgets/chat_input.py +246 -0
- ksadk/tui/widgets/history.py +156 -0
- ksadk/tui/widgets/system.py +87 -0
- ksadk/tui/widgets/thinking.py +110 -0
- ksadk/tui/widgets/tool_call.py +161 -0
- ksadk/tui/widgets/user.py +37 -0
- ksadk/ui_config.py +168 -0
- ksadk/version.py +4 -0
- ksadk_runtime_common/__init__.py +20 -0
- ksadk_runtime_common/memory_backend/__init__.py +29 -0
- ksadk_runtime_common/memory_backend/manifest.py +79 -0
- ksadk_runtime_common/memory_backend/providers/__init__.py +6 -0
- ksadk_runtime_common/memory_backend/providers/lancedb.py +151 -0
- ksadk_runtime_common/memory_backend/providers/mem0.py +74 -0
- ksadk_runtime_common/memory_backend/registry.py +56 -0
- ksadk_runtime_common/memory_backend/render.py +71 -0
- ksadk_runtime_common/schemas/memory_backend_manifest.schema.json +148 -0
- ksadk_runtime_common/workspace_files/__init__.py +29 -0
- ksadk_runtime_common/workspace_files/bootstrap.py +56 -0
- ksadk_runtime_common/workspace_files/constants.py +9 -0
- ksadk_runtime_common/workspace_files/path_utils.py +71 -0
- ksadk_runtime_common/workspace_files/preview.py +96 -0
- ksadk_runtime_common/workspace_files/router.py +254 -0
- agentengine_sdk_python-0.6.2.dist-info/METADATA +0 -46
- agentengine_sdk_python-0.6.2.dist-info/RECORD +0 -4
- 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