agentengine-sdk-python 0.7.0__py3-none-any.whl → 0.8.1__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.7.0.dist-info → agentengine_sdk_python-0.8.1.dist-info}/METADATA +52 -20
- agentengine_sdk_python-0.8.1.dist-info/RECORD +644 -0
- {agentengine_sdk_python-0.7.0.dist-info → agentengine_sdk_python-0.8.1.dist-info}/WHEEL +1 -1
- ksadk/a2a/__init__.py +180 -11
- ksadk/a2a/bootstrap.py +332 -0
- ksadk/a2a/card.py +15 -0
- ksadk/a2a/context_store.py +203 -0
- ksadk/a2a/control_plane.py +1056 -0
- ksadk/a2a/credential.py +99 -0
- ksadk/a2a/event_adapter.py +149 -0
- ksadk/a2a/executor.py +361 -137
- ksadk/a2a/external_transport.py +516 -0
- ksadk/a2a/identity.py +304 -0
- ksadk/a2a/ids.py +22 -0
- ksadk/a2a/langgraph.py +285 -0
- ksadk/a2a/resume_store.py +201 -0
- ksadk/a2a/routes.py +112 -0
- ksadk/a2a/server.py +102 -62
- ksadk/a2a/service_env.py +33 -0
- ksadk/a2a/space_client.py +1122 -0
- ksadk/a2a/task_adapter.py +423 -0
- ksadk/a2a/task_event_dispatcher.py +167 -0
- ksadk/a2a/task_event_outbox.py +326 -0
- ksadk/a2a/task_store.py +206 -0
- ksadk/a2a_card.py +101 -0
- ksadk/a2ui/__init__.py +27 -0
- ksadk/a2ui/core.py +186 -0
- ksadk/a2ui/models.py +166 -0
- ksadk/a2ui/renderer.py +198 -0
- ksadk/agui/__init__.py +9 -0
- ksadk/agui/a2ui_projection.py +92 -0
- ksadk/agui/agent.py +872 -0
- ksadk/agui/config.py +92 -0
- ksadk/agui/routes.py +47 -0
- ksadk/api/client.py +238 -204
- ksadk/api/environment.py +27 -0
- ksadk/builders/__init__.py +2 -0
- ksadk/builders/base.py +16 -14
- ksadk/builders/code_builder.py +375 -270
- ksadk/builders/container_builder.py +240 -200
- ksadk/builders/framework_requirements.py +31 -12
- ksadk/builders/ks3_uploader.py +60 -29
- ksadk/builders/managed_runtime_builder.py +173 -0
- ksadk/builders/mcp_builder.py +91 -92
- ksadk/builders/requirements_utils.py +1 -5
- ksadk/cli/__init__.py +97 -171
- ksadk/cli/cmd_a2a.py +255 -84
- ksadk/cli/cmd_agent.py +19 -5
- ksadk/cli/cmd_build.py +158 -29
- ksadk/cli/cmd_completion.py +47 -35
- ksadk/cli/cmd_config.py +267 -198
- ksadk/cli/cmd_create.py +507 -740
- ksadk/cli/cmd_dashboard.py +120 -45
- ksadk/cli/cmd_deploy.py +135 -59
- ksadk/cli/cmd_destroy.py +44 -14
- ksadk/cli/cmd_eval.py +386 -0
- ksadk/cli/cmd_files.py +63 -24
- ksadk/cli/cmd_hermes.py +313 -135
- ksadk/cli/cmd_invoke.py +184 -122
- ksadk/cli/cmd_launch.py +76 -28
- ksadk/cli/cmd_mcp.py +98 -64
- ksadk/cli/cmd_model.py +14 -5
- ksadk/cli/cmd_openclaw.py +564 -268
- ksadk/cli/cmd_replay.py +71 -0
- ksadk/cli/cmd_run.py +58 -73
- ksadk/cli/cmd_status.py +80 -31
- ksadk/cli/cmd_studio.py +110 -0
- ksadk/cli/cmd_version.py +20 -13
- ksadk/cli/cmd_web.py +95 -18
- ksadk/cli/deploy_utils.py +20 -20
- ksadk/cli/dry_run.py +7 -4
- ksadk/cli/env_options.py +83 -0
- ksadk/cli/error_utils.py +37 -12
- ksadk/cli/global_options.py +4 -3
- ksadk/cli/local_runtime.py +1 -2
- ksadk/cli/model_catalog.py +6 -2
- ksadk/cli/network_options.py +41 -19
- ksadk/cli/resource_common.py +6 -2
- ksadk/cli/runtime_bootstrap.py +51 -0
- ksadk/cli/storage.py +0 -1
- ksadk/cli/ui.py +11 -3
- ksadk/cli/workflow_common.py +52 -18
- ksadk/codex/__init__.py +12 -0
- ksadk/codex/client.py +1042 -0
- ksadk/codex/phase.py +143 -0
- ksadk/codex/runtime.py +940 -0
- ksadk/common/aicp_env.py +0 -1
- ksadk/common/auth.py +2 -2
- ksadk/common/constants.py +1 -3
- ksadk/common/kop_client.py +232 -0
- ksadk/common/llm_utils.py +17 -13
- ksadk/compat/__init__.py +5 -0
- ksadk/compat/adk_compat.py +200 -0
- ksadk/compat/copilotkit_a2ui.py +330 -0
- ksadk/configs/__init__.py +12 -14
- ksadk/configs/env_registry.py +661 -116
- ksadk/configs/global_config.py +3 -2
- ksadk/configs/settings.py +133 -209
- ksadk/conversations/__init__.py +85 -92
- ksadk/conversations/attachment_storage.py +16 -11
- ksadk/conversations/attachments.py +44 -36
- ksadk/conversations/compaction_pipeline.py +12 -12
- ksadk/conversations/compaction_prompt.py +9 -5
- ksadk/conversations/context.py +221 -6
- ksadk/conversations/message_projection.py +438 -51
- ksadk/conversations/model_context.py +12 -6
- ksadk/conversations/model_options.py +0 -1
- ksadk/conversations/normalize.py +20 -16
- ksadk/conversations/reasoning_markup.py +1 -1
- ksadk/conversations/runtime.py +339 -5255
- ksadk/conversations/runtime_compaction.py +333 -0
- ksadk/conversations/runtime_constants.py +27 -0
- ksadk/conversations/runtime_governance.py +185 -0
- ksadk/conversations/runtime_input.py +660 -0
- ksadk/conversations/runtime_invocation.py +395 -0
- ksadk/conversations/runtime_metadata.py +475 -0
- ksadk/conversations/runtime_observability.py +367 -0
- ksadk/conversations/runtime_payloads.py +272 -0
- ksadk/conversations/runtime_persistence.py +440 -0
- ksadk/conversations/runtime_preparation.py +426 -0
- ksadk/conversations/runtime_resume.py +836 -0
- ksadk/conversations/runtime_stream_events.py +902 -0
- ksadk/conversations/runtime_streaming.py +700 -0
- ksadk/conversations/semantic_summary.py +17 -5
- ksadk/conversations/session_title.py +6 -3
- ksadk/deployment/__init__.py +15 -16
- ksadk/deployment/agent_access.py +12 -23
- ksadk/deployment/base.py +51 -38
- ksadk/deployment/managed_runtime.py +33 -0
- ksadk/deployment/manager.py +85 -71
- ksadk/deployment/providers/serverless.py +379 -210
- ksadk/deployment/registry.py +38 -32
- ksadk/deployment/state.py +11 -11
- ksadk/deployment/ui_config.py +1 -1
- ksadk/detection/__init__.py +1 -1
- ksadk/detection/detector.py +146 -83
- ksadk/detection/mcp_detector.py +9 -6
- ksadk/evaluation/__init__.py +84 -0
- ksadk/evaluation/a2a_adapter.py +444 -0
- ksadk/evaluation/adapters.py +54 -0
- ksadk/evaluation/contracts.py +409 -0
- ksadk/evaluation/evalset.py +351 -0
- ksadk/evaluation/evaluators.py +461 -0
- ksadk/evaluation/executor.py +118 -0
- ksadk/evaluation/storage.py +68 -0
- ksadk/evaluation/target.py +73 -0
- ksadk/events/__init__.py +25 -0
- ksadk/events/parser.py +191 -0
- ksadk/events/replay.py +37 -0
- ksadk/events/runtime_event.py +273 -0
- ksadk/events/store.py +317 -0
- ksadk/harness/__init__.py +35 -0
- ksadk/harness/app.py +269 -0
- ksadk/harness/config.py +181 -0
- ksadk/harness/reasoner.py +105 -0
- ksadk/harness/runtime.py +364 -0
- ksadk/harness/sandbox.py +141 -0
- ksadk/harness/tools.py +222 -0
- ksadk/hermes_terminal.py +28 -12
- ksadk/identity/resolver.py +15 -9
- ksadk/ids.py +32 -0
- ksadk/knowledge_base/adk_tool.py +1 -1
- ksadk/knowledge_base/client.py +38 -33
- ksadk/managed_a2a_card.py +160 -0
- ksadk/managed_runtime.py +195 -0
- ksadk/markdown.py +5 -2
- ksadk/mcp_runtime/__init__.py +9 -6
- ksadk/memory/__init__.py +1 -1
- ksadk/memory/adk/__init__.py +2 -0
- ksadk/memory/adk/backends/base_ltm_backend.py +2 -6
- ksadk/memory/adk/backends/http_ltm_backend.py +13 -21
- ksadk/memory/adk/backends/inmemory_ltm_backend.py +7 -13
- ksadk/memory/adk/backends/sdk_ltm_backend.py +36 -36
- ksadk/memory/adk/long_term_memory.py +34 -37
- ksadk/memory/adk/resilient_session_service.py +4 -5
- ksadk/memory/adk/short_term_memory.py +12 -21
- ksadk/memory/adk_tool.py +3 -2
- ksadk/memory/backends/base.py +19 -19
- ksadk/memory/backends/memory.py +24 -25
- ksadk/memory/backends/redis.py +31 -30
- ksadk/memory/langchain_tool.py +2 -1
- ksadk/memory/manager.py +52 -47
- ksadk/memory/service.py +16 -6
- ksadk/memory/tool.py +4 -0
- ksadk/model_policy.py +15 -7
- ksadk/model_proxy/__init__.py +51 -0
- ksadk/model_proxy/bootstrap.py +80 -0
- ksadk/model_proxy/cache.py +165 -0
- ksadk/model_proxy/config.py +66 -0
- ksadk/model_proxy/demo_webui.py +115 -0
- ksadk/model_proxy/detect.py +145 -0
- ksadk/model_proxy/gate.py +68 -0
- ksadk/model_proxy/namespace.py +201 -0
- ksadk/model_proxy/protocol_proxy.py +22 -0
- ksadk/model_proxy/server.py +443 -0
- ksadk/model_proxy/transform.py +735 -0
- ksadk/openclaw_gateway.py +29 -14
- ksadk/runners/adk_runner.py +354 -146
- ksadk/runners/base_runner.py +71 -29
- ksadk/runners/deepagents_runner.py +0 -1
- ksadk/runners/factory.py +18 -5
- ksadk/runners/langchain_runner.py +29 -742
- ksadk/runners/langgraph_runner.py +417 -97
- ksadk/runners/patch_langchain.py +16 -16
- ksadk/runners/remote_runner.py +134 -33
- ksadk/runners/usage_accumulator.py +1 -0
- ksadk/runners/utils/__init__.py +0 -10
- ksadk/runners/utils/loader.py +23 -7
- ksadk/runtime/__init__.py +67 -0
- ksadk/runtime/adapter.py +412 -0
- ksadk/runtime/conversation_execution.py +553 -0
- ksadk/runtime/executor.py +251 -0
- ksadk/runtime/factory.py +156 -0
- ksadk/runtime/framework_adapters.py +118 -0
- ksadk/runtime/launch.py +48 -0
- ksadk/runtime/preprocessing.py +131 -0
- ksadk/runtime/runner_adapter.py +1032 -0
- ksadk/runtime/runner_loading.py +36 -0
- ksadk/runtime_context.py +18 -3
- ksadk/runtime_state.py +0 -1
- ksadk/sandbox/__init__.py +4 -1
- ksadk/sandbox/backends/__init__.py +4 -1
- ksadk/sandbox/backends/e2b.py +13 -5
- ksadk/sandbox/backends/local_process.py +11 -3
- ksadk/sandbox/base.py +10 -15
- ksadk/sandbox/factory.py +14 -4
- ksadk/sandbox/registry.py +57 -6
- ksadk/server/__init__.py +39 -4
- ksadk/server/api_models.py +15 -5
- ksadk/server/app.py +24 -3928
- ksadk/server/composition.py +47 -0
- ksadk/server/factory.py +622 -0
- ksadk/server/routes/__init__.py +1 -0
- ksadk/server/routes/checkpoint_resolution.py +116 -0
- ksadk/server/routes/common.py +682 -0
- ksadk/server/routes/control.py +331 -0
- ksadk/server/routes/dependencies.py +98 -0
- ksadk/server/routes/misc.py +425 -0
- ksadk/server/routes/models.py +451 -0
- ksadk/server/routes/openai_compat.py +229 -0
- ksadk/server/routes/projection.py +848 -0
- ksadk/server/routes/routers.py +52 -0
- ksadk/server/routes/run.py +519 -0
- ksadk/server/routes/sessions.py +644 -0
- ksadk/server/routes/streaming.py +265 -0
- ksadk/server/routes/workspace.py +414 -0
- ksadk/server/static/assets/{ArtifactsPanel-D-SSn2ee.js → ArtifactsPanel-CakCqxEN.js} +1 -1
- ksadk/server/static/assets/CodeBlock-CynLknyO.js +9 -0
- ksadk/server/static/assets/MathMessageMarkdown-3sQdOysS.js +8 -0
- ksadk/server/static/assets/MermaidBlock-NERD_ef7.js +303 -0
- ksadk/server/static/assets/NativeTerminalPanel-CiHWf82q.js +1 -0
- ksadk/server/static/assets/{arc-BA13sHc9.js → arc-DrgjcKhl.js} +1 -1
- ksadk/server/static/assets/architecture-7EHR7CIX-CpZLRCcY.js +1 -0
- ksadk/server/static/assets/{architectureDiagram-3BPJPVTR-DzJzgVoL.js → architectureDiagram-3BPJPVTR-BXoVRbQ6.js} +1 -1
- ksadk/server/static/assets/{blockDiagram-GPEHLZMM-UTdVcZhn.js → blockDiagram-GPEHLZMM-BnaB3Ywv.js} +1 -1
- ksadk/server/static/assets/{c4Diagram-AAUBKEIU-Dix0GD4m.js → c4Diagram-AAUBKEIU-Dw4weZcp.js} +1 -1
- ksadk/server/static/assets/channel-Dt3rQTFI.js +1 -0
- ksadk/server/static/assets/{chunk-2J33WTMH-C2JxuZ42.js → chunk-2J33WTMH-ChjpLK7j.js} +1 -1
- ksadk/server/static/assets/{chunk-4BX2VUAB-Be57QPgD.js → chunk-4BX2VUAB-B9drTgOW.js} +1 -1
- ksadk/server/static/assets/{chunk-55IACEB6-WjSuy4nv.js → chunk-55IACEB6-CK4ROATy.js} +1 -1
- ksadk/server/static/assets/{chunk-727SXJPM-BOovP-b5.js → chunk-727SXJPM-B9KtTTgw.js} +1 -1
- ksadk/server/static/assets/{chunk-AQP2D5EJ-DOmZNmWj.js → chunk-AQP2D5EJ-1O1mki3m.js} +1 -1
- ksadk/server/static/assets/{chunk-FMBD7UC4-DzwlodkU.js → chunk-FMBD7UC4-B_fH2YuH.js} +1 -1
- ksadk/server/static/assets/{chunk-ND2GUHAM-DMqAikEU.js → chunk-ND2GUHAM-D6rFLaVV.js} +1 -1
- ksadk/server/static/assets/chunk-QZHKN3VN-iXEZtKQc.js +1 -0
- ksadk/server/static/assets/classDiagram-4FO5ZUOK-DIveV17Q.js +1 -0
- ksadk/server/static/assets/classDiagram-v2-Q7XG4LA2-DIveV17Q.js +1 -0
- ksadk/server/static/assets/{cose-bilkent-S5V4N54A-Zhy2GBnP.js → cose-bilkent-S5V4N54A-ChNs_Mdk.js} +1 -1
- ksadk/server/static/assets/{dagre-BM42HDAG-CbKrtIUz.js → dagre-BM42HDAG-D0QXg_MQ.js} +1 -1
- ksadk/server/static/assets/{diagram-2AECGRRQ-BRApgQRK.js → diagram-2AECGRRQ-DBDDKwBQ.js} +1 -1
- ksadk/server/static/assets/{diagram-5GNKFQAL-D0xbnDiK.js → diagram-5GNKFQAL-BkwDOxmO.js} +1 -1
- ksadk/server/static/assets/{diagram-KO2AKTUF-CVugVI9L.js → diagram-KO2AKTUF-Bv8waYvY.js} +1 -1
- ksadk/server/static/assets/{diagram-LMA3HP47-DozUGgee.js → diagram-LMA3HP47-e1VECDdu.js} +1 -1
- ksadk/server/static/assets/{diagram-OG6HWLK6-ZOYsKlru.js → diagram-OG6HWLK6-Ds9adfRl.js} +1 -1
- ksadk/server/static/assets/{dist-DpKtt4Bo.js → dist-4N2NMVYg.js} +1 -1
- ksadk/server/static/assets/{dist-CkEKJFtk.js → dist-B-jNR6Vn.js} +1 -1
- ksadk/server/static/assets/{dist-D57wnGWd.js → dist-B5J2uhNk.js} +1 -1
- ksadk/server/static/assets/{dist-8_SfK1IP.js → dist-B5oS1zcj.js} +1 -1
- ksadk/server/static/assets/{dist-DMezvBGJ.js → dist-BB3-OwTQ.js} +1 -1
- ksadk/server/static/assets/{dist-2hInLS_J.js → dist-BIlKoW0k.js} +1 -1
- ksadk/server/static/assets/{dist-BrCcQ47T.js → dist-BjOdlDjj.js} +1 -1
- ksadk/server/static/assets/{dist-BmlMPsCc.js → dist-C1sz5Eo3.js} +1 -1
- ksadk/server/static/assets/{dist-B0NP_Z0z.js → dist-CWV4lDr1.js} +1 -1
- ksadk/server/static/assets/{dist-D-xOD048.js → dist-CmZHzlwZ.js} +1 -1
- ksadk/server/static/assets/{dist-DL_NKc_z.js → dist-D6MpCZtz.js} +1 -1
- ksadk/server/static/assets/{dist-DyOkZmze.js → dist-DJN_6Y39.js} +1 -1
- ksadk/server/static/assets/{dist-DmFaq_Iy.js → dist-DQU9EWw-.js} +1 -1
- ksadk/server/static/assets/{dist-gX6GOLKq.js → dist-DWKByxWV.js} +1 -1
- ksadk/server/static/assets/{dist-DyWsb78Q.js → dist-Dli7qW-B.js} +1 -1
- ksadk/server/static/assets/{dist-BIJVDMuB.js → dist-DsHPdk3W.js} +1 -1
- ksadk/server/static/assets/{dist-Dp0k7bWI.js → dist-X4TnqwOK.js} +1 -1
- ksadk/server/static/assets/{dist-8EEyGgDx.js → dist-_pHPTyZ-.js} +1 -1
- ksadk/server/static/assets/{dist-CPBtqRTW.js → dist-fhOuWds5.js} +1 -1
- ksadk/server/static/assets/{dist-D-JMdWPQ.js → dist-gLnrGsoU.js} +1 -1
- ksadk/server/static/assets/{dist-BssVmjIo.js → dist-j6Dxmf_j.js} +1 -1
- ksadk/server/static/assets/{dist-C3HIIaN5.js → dist-o2OVmKvt.js} +1 -1
- ksadk/server/static/assets/{erDiagram-TEJ5UH35-Bk-9bgE5.js → erDiagram-TEJ5UH35-BPItFKH6.js} +1 -1
- ksadk/server/static/assets/eventmodeling-FCH6USID-DYFSxbqr.js +1 -0
- ksadk/server/static/assets/{flowDiagram-I6XJVG4X-Dn9kZVuZ.js → flowDiagram-I6XJVG4X-BbYB9w5Y.js} +1 -1
- ksadk/server/static/assets/{ganttDiagram-6RSMTGT7-BGxXlJqm.js → ganttDiagram-6RSMTGT7-TQXa0KXv.js} +1 -1
- ksadk/server/static/assets/gitGraph-WXDBUCRP-DyNYp6BN.js +1 -0
- ksadk/server/static/assets/{gitGraphDiagram-PVQCEYII-C7Q0X-wi.js → gitGraphDiagram-PVQCEYII-bKblCnpa.js} +1 -1
- ksadk/server/static/assets/index-R52pJJvg.js +177 -0
- ksadk/server/static/assets/index-jJr3_955.css +2 -0
- ksadk/server/static/assets/info-J43DQDTF-WUx7qTde.js +1 -0
- ksadk/server/static/assets/{infoDiagram-5YYISTIA-BO_CSqq5.js → infoDiagram-5YYISTIA-BGVT7J_i.js} +1 -1
- ksadk/server/static/assets/{ishikawaDiagram-YF4QCWOH-eYLPLd46.js → ishikawaDiagram-YF4QCWOH-K0OOfVna.js} +1 -1
- ksadk/server/static/assets/{journeyDiagram-JHISSGLW-De9geSb0.js → journeyDiagram-JHISSGLW-8LeOJaZp.js} +1 -1
- ksadk/server/static/assets/{kanban-definition-UN3LZRKU-Cs80kQto.js → kanban-definition-UN3LZRKU-C6uCgZrW.js} +1 -1
- ksadk/server/static/assets/{katex-DSrCFD8n.js → katex-CYWseY5E.js} +1 -1
- ksadk/server/static/assets/{linear-CN9sbKTF.js → linear-hdBcYzM8.js} +1 -1
- ksadk/server/static/assets/{mermaid-parser.core-DlgSBU8l.js → mermaid-parser.core-BWrDjSZM.js} +2 -2
- ksadk/server/static/assets/{mindmap-definition-RKZ34NQL-9afz7Oug.js → mindmap-definition-RKZ34NQL-Bjy_2v4_.js} +1 -1
- ksadk/server/static/assets/packet-YPE3B663-BN13y_xl.js +1 -0
- ksadk/server/static/assets/pie-LRSECV5Y-ftSLXhhc.js +1 -0
- ksadk/server/static/assets/{pieDiagram-4H26LBE5-DPv_VstN.js → pieDiagram-4H26LBE5-GmmqNiVH.js} +1 -1
- ksadk/server/static/assets/{quadrantDiagram-W4KKPZXB-o77wZ1XK.js → quadrantDiagram-W4KKPZXB-BmkRbwCg.js} +1 -1
- ksadk/server/static/assets/radar-GUYGQ44K-jaICkIeO.js +1 -0
- ksadk/server/static/assets/{requirementDiagram-4Y6WPE33-BYVw81VC.js → requirementDiagram-4Y6WPE33-DSWFqL7c.js} +1 -1
- ksadk/server/static/assets/{sankeyDiagram-5OEKKPKP-B7nZFMKT.js → sankeyDiagram-5OEKKPKP-l6iXmU65.js} +1 -1
- ksadk/server/static/assets/{sequenceDiagram-3UESZ5HK-BGRRrFw5.js → sequenceDiagram-3UESZ5HK-Cq6UBeQB.js} +1 -1
- ksadk/server/static/assets/{stateDiagram-AJRCARHV-BUfHCoPs.js → stateDiagram-AJRCARHV-qzTQpg3Y.js} +1 -1
- ksadk/server/static/assets/stateDiagram-v2-BHNVJYJU-BYCoYGAN.js +1 -0
- ksadk/server/static/assets/{timeline-definition-PNZ67QCA-FbCTGrf9.js → timeline-definition-PNZ67QCA-DEz24vV0.js} +1 -1
- ksadk/server/static/assets/treeView-BLDUP644-Cpib_vlz.js +1 -0
- ksadk/server/static/assets/treemap-LRROVOQU-DQxfmVHK.js +1 -0
- ksadk/server/static/assets/{vennDiagram-CIIHVFJN-DWgwtPsJ.js → vennDiagram-CIIHVFJN-CMCixki2.js} +1 -1
- ksadk/server/static/assets/wardley-L42UT6IY-BQYHnnkU.js +1 -0
- ksadk/server/static/assets/{wardleyDiagram-YWT4CUSO-2x8G-tTM.js → wardleyDiagram-YWT4CUSO-CVzB8F9K.js} +1 -1
- ksadk/server/static/assets/{xychartDiagram-2RQKCTM6-Drma3AYl.js → xychartDiagram-2RQKCTM6-BFBqBLc1.js} +1 -1
- ksadk/server/static/index.html +2 -2
- ksadk/server/terminal_sessions.py +111 -58
- ksadk/sessions/__init__.py +69 -19
- ksadk/sessions/base.py +31 -11
- ksadk/sessions/continuity.py +2 -3
- ksadk/sessions/in_memory.py +46 -2
- ksadk/sessions/local_service.py +148 -17
- ksadk/sessions/postgres_service.py +143 -25
- ksadk/sessions/resilient.py +36 -8
- ksadk/skills/models.py +17 -5
- ksadk/skills/package_store.py +5 -2
- ksadk/skills/runtime/agent.py +20 -5
- ksadk/skills/runtime/artifacts.py +1 -5
- ksadk/skills/runtime/backends/e2b.py +10 -4
- ksadk/skills/runtime/backends/local.py +15 -3
- ksadk/skills/runtime/base.py +1 -2
- ksadk/skills/runtime/executor.py +10 -3
- ksadk/skills/runtime/factory.py +4 -2
- ksadk/skills/runtime/loader.py +1 -2
- ksadk/skills/runtime/registry.py +15 -10
- ksadk/skills/runtime/request.py +3 -1
- ksadk/skills/service_client.py +47 -16
- ksadk/skills/tool_defs.py +15 -10
- ksadk/studio/__init__.py +5 -0
- ksadk/studio/agent_avatar_assets.py +120 -0
- ksadk/studio/agent_lifecycle.py +51 -0
- ksadk/studio/api.py +1046 -0
- ksadk/studio/api_catalog_routes.py +324 -0
- ksadk/studio/api_contracts.py +177 -0
- ksadk/studio/api_helpers.py +132 -0
- ksadk/studio/authoring.py +524 -0
- ksadk/studio/authoring_coordinator.py +285 -0
- ksadk/studio/builder.py +320 -0
- ksadk/studio/capabilities.py +351 -0
- ksadk/studio/cloud.py +278 -0
- ksadk/studio/codex_agent_service.py +583 -0
- ksadk/studio/codex_builder.py +324 -0
- ksadk/studio/codex_manifest.py +278 -0
- ksadk/studio/codex_run.py +352 -0
- ksadk/studio/compiler.py +189 -0
- ksadk/studio/contracts.py +644 -0
- ksadk/studio/errors.py +47 -0
- ksadk/studio/evaluation.py +192 -0
- ksadk/studio/event_store.py +284 -0
- ksadk/studio/framework_run.py +114 -0
- ksadk/studio/identifiers.py +33 -0
- ksadk/studio/mcp_runtime.py +229 -0
- ksadk/studio/model_client.py +543 -0
- ksadk/studio/model_profile_service.py +214 -0
- ksadk/studio/operations.py +243 -0
- ksadk/studio/otel_trace.py +754 -0
- ksadk/studio/pagination.py +182 -0
- ksadk/studio/python_tool_inspection.py +183 -0
- ksadk/studio/repository.py +306 -0
- ksadk/studio/resource_catalog.py +1217 -0
- ksadk/studio/run_service.py +707 -0
- ksadk/studio/runtime_catalog.py +74 -0
- ksadk/studio/runtime_source.py +339 -0
- ksadk/studio/service.py +1141 -0
- ksadk/studio/shared_web.py +994 -0
- ksadk/studio/skill_discovery.py +628 -0
- ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js +3 -0
- ksadk/studio/static/assets/index-CaEN0eTR.css +1 -0
- ksadk/studio/static/assets/index-DI2eY_NH.js +252 -0
- ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js +9 -0
- ksadk/studio/static/assets/rolldown-runtime-hePW80VL.js +1 -0
- ksadk/studio/static/index.html +15 -0
- ksadk/studio/templates.py +630 -0
- ksadk/studio/validator.py +246 -0
- ksadk/studio/workspace.py +137 -0
- ksadk/terminal_exec_policy.py +3 -4
- ksadk/tools/gateway.py +101 -15
- ksadk/tools/result_budget.py +12 -4
- ksadk/toolsets/__init__.py +161 -37
- ksadk/toolsets/a2a.py +426 -0
- ksadk/toolsets/platform.py +21 -5
- ksadk/toolsets/sandbox.py +82 -16
- ksadk/toolsets/skills.py +200 -39
- ksadk/toolsets/web.py +123 -26
- ksadk/toolsets/workspace.py +212 -101
- ksadk/tracing/__init__.py +19 -21
- ksadk/tracing/exporters/inmemory_exporter.py +62 -51
- ksadk/tracing/setup.py +135 -506
- ksadk/tracing/span_utils.py +0 -41
- ksadk/tui/loop.py +78 -30
- ksadk/tui/stream_render.py +1 -0
- ksadk/ui_config.py +5 -3
- ksadk/version.py +1 -1
- ksadk_runtime_common/memory_backend/registry.py +56 -56
- ksadk_runtime_common/schemas/runtime_event_v1.json +95 -0
- ksadk_runtime_common/workspace_files/router.py +8 -2
- agentengine_sdk_python-0.7.0.dist-info/RECORD +0 -482
- ksadk/a2a/card_builder.py +0 -64
- ksadk/a2a/client.py +0 -309
- ksadk/runners/utils/langfuse.py +0 -230
- ksadk/server/static/assets/CodeBlock-P16VOLYi.js +0 -9
- ksadk/server/static/assets/MathMessageMarkdown-CdGiQWHR.js +0 -8
- ksadk/server/static/assets/MermaidBlock-IOcal8cm.js +0 -303
- ksadk/server/static/assets/NativeTerminalPanel-DGSDWsei.js +0 -1
- ksadk/server/static/assets/architecture-7EHR7CIX-BvUlsA6l.js +0 -1
- ksadk/server/static/assets/channel-CTuydARX.js +0 -1
- ksadk/server/static/assets/chunk-QZHKN3VN-BnCydivS.js +0 -1
- ksadk/server/static/assets/classDiagram-4FO5ZUOK-BNHg45Be.js +0 -1
- ksadk/server/static/assets/classDiagram-v2-Q7XG4LA2-BNHg45Be.js +0 -1
- ksadk/server/static/assets/eventmodeling-FCH6USID-DsAgWnlf.js +0 -1
- ksadk/server/static/assets/gitGraph-WXDBUCRP-BIao9Yjg.js +0 -1
- ksadk/server/static/assets/index-C00Lwg3L.js +0 -165
- ksadk/server/static/assets/index-DAURbCsP.css +0 -1
- ksadk/server/static/assets/info-J43DQDTF-CyipqGxU.js +0 -1
- ksadk/server/static/assets/packet-YPE3B663-CGkyRxlg.js +0 -1
- ksadk/server/static/assets/pie-LRSECV5Y-M0uWAf4n.js +0 -1
- ksadk/server/static/assets/radar-GUYGQ44K-Bdbm24-x.js +0 -1
- ksadk/server/static/assets/stateDiagram-v2-BHNVJYJU-8xBN_gLM.js +0 -1
- ksadk/server/static/assets/treeView-BLDUP644-npMo0ak1.js +0 -1
- ksadk/server/static/assets/treemap-LRROVOQU-CHdzrrdo.js +0 -1
- ksadk/server/static/assets/wardley-L42UT6IY-BEQz7wyy.js +0 -1
- ksadk/tracing/exporters/langfuse_exporter.py +0 -445
- {agentengine_sdk_python-0.7.0.dist-info → agentengine_sdk_python-0.8.1.dist-info}/entry_points.txt +0 -0
- {agentengine_sdk_python-0.7.0.dist-info → agentengine_sdk_python-0.8.1.dist-info}/licenses/LICENSE +0 -0
- {agentengine_sdk_python-0.7.0.dist-info → agentengine_sdk_python-0.8.1.dist-info}/top_level.txt +0 -0
ksadk/cli/__init__.py
CHANGED
|
@@ -67,6 +67,7 @@ ROOT_HELP_COMMANDS = {
|
|
|
67
67
|
"completion",
|
|
68
68
|
"dashboard",
|
|
69
69
|
"deploy",
|
|
70
|
+
"eval",
|
|
70
71
|
"files",
|
|
71
72
|
"init",
|
|
72
73
|
"hermes",
|
|
@@ -74,6 +75,7 @@ ROOT_HELP_COMMANDS = {
|
|
|
74
75
|
"mcp",
|
|
75
76
|
"openclaw",
|
|
76
77
|
"run",
|
|
78
|
+
"studio",
|
|
77
79
|
"version",
|
|
78
80
|
"web",
|
|
79
81
|
}
|
|
@@ -81,12 +83,13 @@ ROOT_HELP_TOOL_COMMANDS = {
|
|
|
81
83
|
"config",
|
|
82
84
|
}
|
|
83
85
|
SHORT_HELP_MAP = {
|
|
84
|
-
"a2a": "
|
|
86
|
+
"a2a": "A2A 协议服务与本地试调",
|
|
85
87
|
"agent": "Agent 资源管理",
|
|
86
88
|
"build": "构建部署制品",
|
|
87
89
|
"completion": "Shell 补全管理",
|
|
88
90
|
"dashboard": "打开云端 Agent Dashboard",
|
|
89
91
|
"deploy": "部署到云端",
|
|
92
|
+
"eval": "评测本地、A2A 或 Codex Agent",
|
|
90
93
|
"files": "管理 workspace 文件",
|
|
91
94
|
"hermes": "Hermes Agent 资源管理",
|
|
92
95
|
"init": "创建新项目",
|
|
@@ -94,6 +97,7 @@ SHORT_HELP_MAP = {
|
|
|
94
97
|
"mcp": "MCP 资源管理",
|
|
95
98
|
"openclaw": "OpenClaw 资源管理",
|
|
96
99
|
"run": "运行 Agent",
|
|
100
|
+
"studio": "启动本地 Agent 构建控制台",
|
|
97
101
|
"version": "Agent 版本管理",
|
|
98
102
|
"web": "本地调试 Agent Invoke UI",
|
|
99
103
|
"config": "项目配置与模型设置",
|
|
@@ -173,6 +177,8 @@ class ColoredHelpGroup(click.Group):
|
|
|
173
177
|
_write_colored_help_row(formatter, "agentengine init", "初始化项目")
|
|
174
178
|
_write_colored_help_row(formatter, "agentengine run", "运行 API Server")
|
|
175
179
|
_write_colored_help_row(formatter, "agentengine web", "本地调试 Agent Invoke UI")
|
|
180
|
+
_write_colored_help_row(formatter, "agentengine studio", "本地 Agent 构建控制台")
|
|
181
|
+
_write_colored_help_row(formatter, "agentengine eval", "评测本地、A2A 或 Codex Agent")
|
|
176
182
|
|
|
177
183
|
# 云端部署
|
|
178
184
|
formatter.write(click.style(" 🚀 云端部署:\n\n", fg="blue", bold=True))
|
|
@@ -180,6 +186,10 @@ class ColoredHelpGroup(click.Group):
|
|
|
180
186
|
_write_colored_help_row(formatter, "agentengine deploy", "部署到云端")
|
|
181
187
|
_write_colored_help_row(formatter, "agentengine launch", "一键构建+部署")
|
|
182
188
|
_write_colored_help_row(formatter, "agentengine agent", "Agent 资源管理")
|
|
189
|
+
_write_colored_help_row(formatter, "agentengine version", "Agent 版本管理")
|
|
190
|
+
_write_colored_help_row(formatter, "agentengine mcp", "MCP 资源管理")
|
|
191
|
+
_write_colored_help_row(formatter, "agentengine a2a", "A2A 协议服务与本地试调")
|
|
192
|
+
_write_colored_help_row(formatter, "agentengine files", "管理云端 workspace 文件")
|
|
183
193
|
_write_colored_help_row(formatter, "agentengine dashboard", "打开云端 Agent Dashboard")
|
|
184
194
|
_write_colored_help_row(formatter, "agentengine hermes", "Hermes Agent 资源管理")
|
|
185
195
|
_write_colored_help_row(formatter, "agentengine openclaw", "OpenClaw 资源管理")
|
|
@@ -187,13 +197,11 @@ class ColoredHelpGroup(click.Group):
|
|
|
187
197
|
# 配置与工具
|
|
188
198
|
formatter.write(click.style(" 🧰 配置:\n\n", fg="yellow", bold=True))
|
|
189
199
|
_write_colored_help_row(formatter, "agentengine config", "项目配置向导与模型配置")
|
|
200
|
+
_write_colored_help_row(formatter, "agentengine completion", "Shell 补全管理")
|
|
190
201
|
|
|
191
202
|
# 自定义 Options 格式化
|
|
192
203
|
self.format_options_colored(ctx, formatter)
|
|
193
204
|
|
|
194
|
-
# 自定义 Commands 格式化
|
|
195
|
-
self.format_commands_colored(ctx, formatter)
|
|
196
|
-
|
|
197
205
|
def format_options_colored(self, ctx, formatter):
|
|
198
206
|
"""自定义选项格式化"""
|
|
199
207
|
formatter.write(click.style(" ⚙️ 选项:\n\n", fg="yellow", bold=True))
|
|
@@ -212,7 +220,8 @@ class ColoredHelpGroup(click.Group):
|
|
|
212
220
|
formatter.write_paragraph()
|
|
213
221
|
formatter.write_text("AgentEngine CLI")
|
|
214
222
|
formatter.write_text(
|
|
215
|
-
"支持 Hermes / OpenClaw / DeepAgents / LangGraph / LangChain / Google ADK
|
|
223
|
+
"支持 Hermes / OpenClaw / DeepAgents / LangGraph / LangChain / Google ADK "
|
|
224
|
+
"的本地运行与云端部署。"
|
|
216
225
|
)
|
|
217
226
|
|
|
218
227
|
formatter.write_paragraph()
|
|
@@ -236,61 +245,6 @@ class ColoredHelpGroup(click.Group):
|
|
|
236
245
|
formatter.write_paragraph()
|
|
237
246
|
formatter.write_text("使用 `agentengine <command> --help` 查看子命令帮助。")
|
|
238
247
|
|
|
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
248
|
|
|
295
249
|
@click.group(cls=ColoredHelpGroup, context_settings=CONTEXT_SETTINGS)
|
|
296
250
|
@click.version_option(version=VERSION, prog_name="AgentEngine")
|
|
@@ -311,138 +265,108 @@ def _add_command_once(group: click.Group, command, *, name: str | None = None):
|
|
|
311
265
|
group.add_command(command, name=name)
|
|
312
266
|
|
|
313
267
|
|
|
314
|
-
def
|
|
315
|
-
|
|
316
|
-
from ksadk.cli.cmd_deploy import deploy
|
|
317
|
-
from ksadk.cli.cmd_run import run
|
|
318
|
-
from ksadk.cli.cmd_web import web
|
|
268
|
+
def _unavailable_command_stub(cmd_name: str, module_path: str, exc: Exception) -> click.Group:
|
|
269
|
+
"""命令加载失败时的**显式降级** stub:``-h`` 可见失败原因,调用报显式错误。
|
|
319
270
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
271
|
+
替代 ``except ImportError: pass`` 静默吞(goal-16 Windows bug:``agentengine a2a -h``
|
|
272
|
+
曾因 cmd_a2a import 失败被吞而报 "No such command 'a2a'")。降级后 ``-h`` 仍退出 0
|
|
273
|
+
并显示失败原因,调用子命令报显式 ClickException——失败显式可见,不再静默。
|
|
274
|
+
"""
|
|
324
275
|
|
|
325
|
-
|
|
326
|
-
|
|
276
|
+
@click.group(
|
|
277
|
+
cmd_name,
|
|
278
|
+
context_settings=dict(help_option_names=["-h", "--help"]),
|
|
279
|
+
help=f"(加载失败){cmd_name} 命令不可用:{exc}",
|
|
280
|
+
invoke_without_command=True,
|
|
281
|
+
no_args_is_help=False,
|
|
282
|
+
)
|
|
283
|
+
def _stub():
|
|
284
|
+
raise click.ClickException(f"命令 {cmd_name!r} 不可用:加载 {module_path} 失败({exc})")
|
|
327
285
|
|
|
328
|
-
|
|
329
|
-
try:
|
|
330
|
-
from ksadk.cli.cmd_a2a import a2a
|
|
331
|
-
|
|
332
|
-
_add_command_once(cli, a2a)
|
|
333
|
-
except ImportError:
|
|
334
|
-
pass
|
|
286
|
+
return _stub
|
|
335
287
|
|
|
336
|
-
try:
|
|
337
|
-
from ksadk.cli.cmd_files import files
|
|
338
288
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
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
|
|
289
|
+
def _warn_unavailable_optional_command(
|
|
290
|
+
cmd_names: tuple[str, ...], module_path: str, exc: Exception
|
|
291
|
+
) -> None:
|
|
292
|
+
"""Print actionable startup guidance while retaining the explicit command stub."""
|
|
293
|
+
command_list = ", ".join(repr(name) for name in cmd_names)
|
|
294
|
+
message = (
|
|
295
|
+
f"WARNING: optional command {command_list} is unavailable because {module_path} "
|
|
296
|
+
f"could not load: {exc}. The remaining ksadk commands are still available."
|
|
297
|
+
)
|
|
298
|
+
if "a2a" in cmd_names:
|
|
299
|
+
message += (
|
|
300
|
+
" KsADK 0.8 requires a2a-sdk==1.1.0; activate the intended virtual environment and "
|
|
301
|
+
'run `python -m pip install --upgrade "ksadk[a2a]"`. A2A 0.3 projects must use a '
|
|
302
|
+
"separate environment."
|
|
303
|
+
)
|
|
304
|
+
click.echo(message, err=True)
|
|
377
305
|
|
|
378
|
-
try:
|
|
379
|
-
from ksadk.cli.cmd_status import status
|
|
380
306
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
307
|
+
def _register_optional_command(cli: click.Group, module_path: str, *cmd_names: str) -> None:
|
|
308
|
+
"""注册可选命令组;导入或依赖 API 不兼容时注册显式降级 stub(不静默吞)。"""
|
|
309
|
+
import importlib
|
|
384
310
|
|
|
385
311
|
try:
|
|
386
|
-
|
|
312
|
+
module = importlib.import_module(module_path)
|
|
313
|
+
# Optional command imports can fail before an ImportError is raised when an installed
|
|
314
|
+
# optional SDK exposes an incompatible API. Keep the top-level CLI usable and make the
|
|
315
|
+
# unavailable command report the original reason instead of masking it as a CLI crash.
|
|
316
|
+
except (ImportError, AttributeError) as exc:
|
|
317
|
+
_warn_unavailable_optional_command(cmd_names, module_path, exc)
|
|
318
|
+
for cmd_name in cmd_names:
|
|
319
|
+
_add_command_once(cli, _unavailable_command_stub(cmd_name, module_path, exc))
|
|
320
|
+
return
|
|
321
|
+
for cmd_name in cmd_names:
|
|
322
|
+
_add_command_once(cli, getattr(module, cmd_name))
|
|
387
323
|
|
|
388
|
-
_add_command_once(cli, invoke)
|
|
389
|
-
except ImportError:
|
|
390
|
-
pass
|
|
391
324
|
|
|
392
|
-
|
|
393
|
-
|
|
325
|
+
def _register_commands():
|
|
326
|
+
from ksadk.cli.cmd_create import create
|
|
327
|
+
from ksadk.cli.cmd_deploy import deploy
|
|
328
|
+
from ksadk.cli.cmd_run import run
|
|
329
|
+
from ksadk.cli.cmd_web import web
|
|
394
330
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
331
|
+
# 注册现有命令
|
|
332
|
+
_add_command_once(cli, run)
|
|
333
|
+
_add_command_once(cli, deploy)
|
|
334
|
+
_add_command_once(cli, web)
|
|
398
335
|
|
|
399
|
-
|
|
400
|
-
|
|
336
|
+
# init 作为主命令 (PRD 规范)
|
|
337
|
+
_add_command_once(cli, create, name="init")
|
|
401
338
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
339
|
+
# 注册可选命令组;加载失败时显式降级(不静默吞,见 _register_optional_command)。
|
|
340
|
+
_register_optional_command(cli, "ksadk.cli.cmd_a2a", "a2a")
|
|
341
|
+
_register_optional_command(cli, "ksadk.cli.cmd_files", "files")
|
|
342
|
+
_register_optional_command(cli, "ksadk.cli.cmd_config", "config")
|
|
343
|
+
_register_optional_command(cli, "ksadk.cli.cmd_model", "model")
|
|
344
|
+
_register_optional_command(cli, "ksadk.cli.cmd_build", "build")
|
|
345
|
+
_register_optional_command(cli, "ksadk.cli.cmd_studio", "studio")
|
|
346
|
+
_register_optional_command(cli, "ksadk.cli.cmd_eval", "eval")
|
|
347
|
+
_register_optional_command(cli, "ksadk.cli.cmd_launch", "launch")
|
|
348
|
+
_register_optional_command(cli, "ksadk.cli.cmd_agent", "agent")
|
|
349
|
+
_register_optional_command(cli, "ksadk.cli.cmd_status", "status")
|
|
350
|
+
_register_optional_command(cli, "ksadk.cli.cmd_invoke", "invoke")
|
|
351
|
+
_register_optional_command(cli, "ksadk.cli.cmd_dashboard", "dashboard")
|
|
352
|
+
_register_optional_command(cli, "ksadk.cli.cmd_replay", "replay")
|
|
353
|
+
_register_optional_command(cli, "ksadk.cli.cmd_destroy", "delete", "destroy")
|
|
406
354
|
|
|
407
355
|
# MCP 命令组
|
|
408
|
-
|
|
409
|
-
from ksadk.cli.cmd_mcp import mcp
|
|
410
|
-
|
|
411
|
-
_add_command_once(cli, mcp)
|
|
412
|
-
except ImportError:
|
|
413
|
-
pass
|
|
356
|
+
_register_optional_command(cli, "ksadk.cli.cmd_mcp", "mcp")
|
|
414
357
|
|
|
415
358
|
# Completion 命令组
|
|
416
|
-
|
|
417
|
-
from ksadk.cli.cmd_completion import completion
|
|
418
|
-
|
|
419
|
-
_add_command_once(cli, completion)
|
|
420
|
-
except ImportError:
|
|
421
|
-
pass
|
|
359
|
+
_register_optional_command(cli, "ksadk.cli.cmd_completion", "completion")
|
|
422
360
|
|
|
423
361
|
# Version 命令组
|
|
424
|
-
|
|
425
|
-
from ksadk.cli.cmd_version import version
|
|
426
|
-
|
|
427
|
-
_add_command_once(cli, version)
|
|
428
|
-
except ImportError:
|
|
429
|
-
pass
|
|
362
|
+
_register_optional_command(cli, "ksadk.cli.cmd_version", "version")
|
|
430
363
|
|
|
431
364
|
# OpenClaw 命令组
|
|
432
|
-
|
|
433
|
-
from ksadk.cli.cmd_openclaw import openclaw
|
|
434
|
-
|
|
435
|
-
_add_command_once(cli, openclaw)
|
|
436
|
-
except ImportError:
|
|
437
|
-
pass
|
|
365
|
+
_register_optional_command(cli, "ksadk.cli.cmd_openclaw", "openclaw")
|
|
438
366
|
|
|
439
367
|
# Hermes 命令组
|
|
440
|
-
|
|
441
|
-
from ksadk.cli.cmd_hermes import hermes
|
|
368
|
+
_register_optional_command(cli, "ksadk.cli.cmd_hermes", "hermes")
|
|
442
369
|
|
|
443
|
-
_add_command_once(cli, hermes)
|
|
444
|
-
except ImportError:
|
|
445
|
-
pass
|
|
446
370
|
|
|
447
371
|
def main():
|
|
448
372
|
# 全局加载 .env 文件
|
|
@@ -473,24 +397,25 @@ def main():
|
|
|
473
397
|
if not loaded:
|
|
474
398
|
# 回退到系统默认编码 (Windows 上通常是 GBK/cp936)
|
|
475
399
|
import locale
|
|
400
|
+
|
|
476
401
|
fallback_encoding = locale.getpreferredencoding(False)
|
|
477
402
|
try:
|
|
478
403
|
load_dotenv(dotenv_path, override=False, encoding=fallback_encoding)
|
|
479
404
|
click.echo(
|
|
480
405
|
click.style(
|
|
481
406
|
f"⚠️ 警告: .env 文件使用 {fallback_encoding} 编码,建议转换为 UTF-8\n",
|
|
482
|
-
fg="yellow"
|
|
407
|
+
fg="yellow",
|
|
483
408
|
),
|
|
484
|
-
err=True
|
|
409
|
+
err=True,
|
|
485
410
|
)
|
|
486
411
|
except UnicodeDecodeError:
|
|
487
412
|
click.echo(
|
|
488
413
|
click.style(
|
|
489
414
|
f"❌ 错误: .env 文件编码无法识别,请确保使用 UTF-8 编码保存\n"
|
|
490
415
|
f" 文件路径: {dotenv_path}\n",
|
|
491
|
-
fg="red"
|
|
416
|
+
fg="red",
|
|
492
417
|
),
|
|
493
|
-
err=True
|
|
418
|
+
err=True,
|
|
494
419
|
)
|
|
495
420
|
except ImportError:
|
|
496
421
|
pass
|
|
@@ -498,6 +423,7 @@ def main():
|
|
|
498
423
|
# 全局配置回退: .env 未设置的变量从 ~/.agentengine/settings.json 补充
|
|
499
424
|
try:
|
|
500
425
|
from ksadk.configs.global_config import get_env_from_global_config
|
|
426
|
+
|
|
501
427
|
global_env = get_env_from_global_config()
|
|
502
428
|
injected_keys = []
|
|
503
429
|
for key, value in global_env.items():
|