agentengine-sdk-python 0.7.0__py3-none-any.whl → 0.8.0__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.0.dist-info}/METADATA +36 -20
- agentengine_sdk_python-0.8.0.dist-info/RECORD +578 -0
- ksadk/a2a/__init__.py +178 -11
- ksadk/a2a/bootstrap.py +334 -0
- ksadk/a2a/card.py +120 -0
- ksadk/a2a/context_store.py +203 -0
- ksadk/a2a/control_plane.py +818 -0
- ksadk/a2a/credential.py +99 -0
- ksadk/a2a/event_adapter.py +149 -0
- ksadk/a2a/executor.py +406 -89
- 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 +105 -0
- ksadk/a2a/server.py +107 -60
- ksadk/a2a/space_client.py +1101 -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/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 +857 -0
- ksadk/agui/config.py +86 -0
- ksadk/agui/routes.py +55 -0
- ksadk/api/client.py +233 -191
- ksadk/builders/__init__.py +2 -0
- ksadk/builders/base.py +16 -14
- ksadk/builders/code_builder.py +318 -236
- ksadk/builders/container_builder.py +187 -167
- ksadk/builders/framework_requirements.py +29 -11
- ksadk/builders/ks3_uploader.py +58 -27
- ksadk/builders/managed_runtime_builder.py +145 -0
- ksadk/builders/mcp_builder.py +91 -92
- ksadk/builders/requirements_utils.py +1 -5
- ksadk/cli/__init__.py +89 -171
- ksadk/cli/cmd_a2a.py +254 -70
- 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 +500 -720
- ksadk/cli/cmd_dashboard.py +120 -45
- ksadk/cli/cmd_deploy.py +117 -58
- ksadk/cli/cmd_destroy.py +44 -14
- ksadk/cli/cmd_files.py +63 -24
- ksadk/cli/cmd_hermes.py +168 -89
- ksadk/cli/cmd_invoke.py +184 -122
- ksadk/cli/cmd_launch.py +64 -28
- ksadk/cli/cmd_mcp.py +98 -64
- ksadk/cli/cmd_model.py +14 -5
- ksadk/cli/cmd_openclaw.py +483 -227
- ksadk/cli/cmd_replay.py +71 -0
- ksadk/cli/cmd_run.py +33 -10
- ksadk/cli/cmd_status.py +80 -31
- ksadk/cli/cmd_version.py +20 -13
- ksadk/cli/cmd_web.py +89 -13
- ksadk/cli/deploy_utils.py +20 -20
- ksadk/cli/dry_run.py +5 -3
- ksadk/cli/error_utils.py +37 -12
- ksadk/cli/global_options.py +1 -2
- ksadk/cli/local_runtime.py +1 -2
- ksadk/cli/model_catalog.py +6 -2
- ksadk/cli/network_options.py +34 -14
- ksadk/cli/resource_common.py +6 -2
- ksadk/cli/storage.py +0 -1
- ksadk/cli/ui.py +5 -3
- ksadk/cli/workflow_common.py +51 -17
- ksadk/codex/__init__.py +12 -0
- ksadk/codex/client.py +408 -0
- ksadk/codex/phase.py +143 -0
- ksadk/codex/runtime.py +449 -0
- ksadk/common/aicp_env.py +0 -1
- ksadk/common/auth.py +2 -2
- ksadk/common/constants.py +1 -3
- 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 -12
- ksadk/configs/env_registry.py +500 -100
- ksadk/configs/global_config.py +2 -1
- ksadk/configs/settings.py +151 -124
- ksadk/conversations/__init__.py +7 -5
- 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 +652 -0
- ksadk/conversations/runtime_invocation.py +395 -0
- ksadk/conversations/runtime_metadata.py +475 -0
- ksadk/conversations/runtime_observability.py +355 -0
- ksadk/conversations/runtime_payloads.py +272 -0
- ksadk/conversations/runtime_persistence.py +440 -0
- ksadk/conversations/runtime_preparation.py +418 -0
- ksadk/conversations/runtime_resume.py +816 -0
- ksadk/conversations/runtime_stream_events.py +902 -0
- ksadk/conversations/runtime_streaming.py +547 -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/manager.py +63 -65
- ksadk/deployment/providers/serverless.py +309 -202
- 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/events/__init__.py +25 -0
- ksadk/events/parser.py +191 -0
- ksadk/events/replay.py +37 -0
- ksadk/events/runtime_event.py +264 -0
- ksadk/events/store.py +317 -0
- ksadk/harness/__init__.py +34 -0
- ksadk/harness/app.py +278 -0
- ksadk/harness/config.py +181 -0
- ksadk/harness/reasoner.py +105 -0
- ksadk/harness/runner.py +211 -0
- ksadk/harness/sandbox.py +141 -0
- ksadk/harness/tools.py +222 -0
- ksadk/hermes_terminal.py +23 -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 +23 -29
- ksadk/managed_runtime.py +188 -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 +26 -33
- ksadk/memory/adk/long_term_memory.py +31 -35
- 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 +10 -8
- 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 +45 -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 +173 -0
- ksadk/model_proxy/protocol_proxy.py +22 -0
- ksadk/model_proxy/server.py +300 -0
- ksadk/model_proxy/transform.py +691 -0
- ksadk/openclaw_gateway.py +29 -14
- ksadk/runners/adk_runner.py +345 -120
- ksadk/runners/base_runner.py +46 -29
- ksadk/runners/codex_runner.py +132 -0
- ksadk/runners/deepagents_runner.py +0 -1
- ksadk/runners/factory.py +17 -5
- ksadk/runners/langchain_runner.py +29 -742
- ksadk/runners/langgraph_runner.py +352 -90
- ksadk/runners/patch_langchain.py +16 -16
- ksadk/runners/remote_runner.py +134 -33
- ksadk/runners/usage_accumulator.py +1 -0
- ksadk/runners/utils/langfuse.py +3 -3
- ksadk/runners/utils/loader.py +7 -7
- ksadk/runtime/__init__.py +41 -0
- ksadk/runtime/adapter.py +345 -0
- ksadk/runtime/framework_adapters.py +124 -0
- ksadk/runtime/preprocessing.py +118 -0
- ksadk/runtime/runner_adapter.py +873 -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/api_models.py +15 -5
- ksadk/server/app.py +455 -3885
- ksadk/server/composition.py +21 -0
- ksadk/server/factory.py +624 -0
- ksadk/server/routes/__init__.py +1 -0
- ksadk/server/routes/checkpoint_resolution.py +116 -0
- ksadk/server/routes/common.py +713 -0
- ksadk/server/routes/control.py +327 -0
- ksadk/server/routes/dependencies.py +98 -0
- ksadk/server/routes/misc.py +448 -0
- ksadk/server/routes/models.py +443 -0
- ksadk/server/routes/openai_compat.py +207 -0
- ksadk/server/routes/projection.py +795 -0
- ksadk/server/routes/routers.py +52 -0
- ksadk/server/routes/run.py +726 -0
- ksadk/server/routes/sessions.py +649 -0
- ksadk/server/routes/streaming.py +223 -0
- ksadk/server/routes/workspace.py +381 -0
- ksadk/server/static/assets/{ArtifactsPanel-D-SSn2ee.js → ArtifactsPanel-Cjnqt-8W.js} +1 -1
- ksadk/server/static/assets/CodeBlock-BqyqZfuB.js +9 -0
- ksadk/server/static/assets/MathMessageMarkdown-BpH7jiFM.js +8 -0
- ksadk/server/static/assets/MermaidBlock-DWuxETaJ.js +303 -0
- ksadk/server/static/assets/NativeTerminalPanel-MDTopWMO.js +1 -0
- ksadk/server/static/assets/{arc-BA13sHc9.js → arc-CFKwSk_B.js} +1 -1
- ksadk/server/static/assets/architecture-7EHR7CIX-CynqOWjZ.js +1 -0
- ksadk/server/static/assets/{architectureDiagram-3BPJPVTR-DzJzgVoL.js → architectureDiagram-3BPJPVTR-Dej8jX8c.js} +1 -1
- ksadk/server/static/assets/{blockDiagram-GPEHLZMM-UTdVcZhn.js → blockDiagram-GPEHLZMM-1F64jqvy.js} +1 -1
- ksadk/server/static/assets/{c4Diagram-AAUBKEIU-Dix0GD4m.js → c4Diagram-AAUBKEIU-9q7AUAKb.js} +1 -1
- ksadk/server/static/assets/channel-iUGv2N24.js +1 -0
- ksadk/server/static/assets/{chunk-2J33WTMH-C2JxuZ42.js → chunk-2J33WTMH-6qgwJm7Q.js} +1 -1
- ksadk/server/static/assets/{chunk-4BX2VUAB-Be57QPgD.js → chunk-4BX2VUAB-CsWIQRhc.js} +1 -1
- ksadk/server/static/assets/{chunk-55IACEB6-WjSuy4nv.js → chunk-55IACEB6-BK8paA20.js} +1 -1
- ksadk/server/static/assets/{chunk-727SXJPM-BOovP-b5.js → chunk-727SXJPM-B-JEhy7h.js} +1 -1
- ksadk/server/static/assets/{chunk-AQP2D5EJ-DOmZNmWj.js → chunk-AQP2D5EJ-DYBvMHAa.js} +1 -1
- ksadk/server/static/assets/{chunk-FMBD7UC4-DzwlodkU.js → chunk-FMBD7UC4-BGhvzDYt.js} +1 -1
- ksadk/server/static/assets/{chunk-ND2GUHAM-DMqAikEU.js → chunk-ND2GUHAM-D98vPd-E.js} +1 -1
- ksadk/server/static/assets/chunk-QZHKN3VN-YQIEXeF6.js +1 -0
- ksadk/server/static/assets/classDiagram-4FO5ZUOK-CDAUuoXK.js +1 -0
- ksadk/server/static/assets/classDiagram-v2-Q7XG4LA2-CDAUuoXK.js +1 -0
- ksadk/server/static/assets/{cose-bilkent-S5V4N54A-Zhy2GBnP.js → cose-bilkent-S5V4N54A-CX3yotHq.js} +1 -1
- ksadk/server/static/assets/{dagre-BM42HDAG-CbKrtIUz.js → dagre-BM42HDAG-C7TguAWo.js} +1 -1
- ksadk/server/static/assets/{diagram-2AECGRRQ-BRApgQRK.js → diagram-2AECGRRQ-Dd17_kws.js} +1 -1
- ksadk/server/static/assets/{diagram-5GNKFQAL-D0xbnDiK.js → diagram-5GNKFQAL-DVIClIil.js} +1 -1
- ksadk/server/static/assets/{diagram-KO2AKTUF-CVugVI9L.js → diagram-KO2AKTUF-Df_3gYQa.js} +1 -1
- ksadk/server/static/assets/{diagram-LMA3HP47-DozUGgee.js → diagram-LMA3HP47-BhLk6ZtA.js} +1 -1
- ksadk/server/static/assets/{diagram-OG6HWLK6-ZOYsKlru.js → diagram-OG6HWLK6-D4GNGvuu.js} +1 -1
- ksadk/server/static/assets/{dist-DmFaq_Iy.js → dist-6CVKuTAe.js} +1 -1
- ksadk/server/static/assets/{dist-8EEyGgDx.js → dist-BUHRxvDG.js} +1 -1
- ksadk/server/static/assets/{dist-B0NP_Z0z.js → dist-BZ9n9AjO.js} +1 -1
- ksadk/server/static/assets/{dist-DMezvBGJ.js → dist-BibcG1V9.js} +1 -1
- ksadk/server/static/assets/{dist-C3HIIaN5.js → dist-Bs-jQcRX.js} +1 -1
- ksadk/server/static/assets/{dist-BrCcQ47T.js → dist-C2xjE7cO.js} +1 -1
- ksadk/server/static/assets/{dist-Dp0k7bWI.js → dist-C7-3jInC.js} +1 -1
- ksadk/server/static/assets/{dist-D-xOD048.js → dist-C99THtIA.js} +1 -1
- ksadk/server/static/assets/{dist-CkEKJFtk.js → dist-CGcp2ex8.js} +1 -1
- ksadk/server/static/assets/{dist-DyOkZmze.js → dist-CVQRZjPu.js} +1 -1
- ksadk/server/static/assets/{dist-BssVmjIo.js → dist-Cf23NY4L.js} +1 -1
- ksadk/server/static/assets/{dist-BIJVDMuB.js → dist-CgF3fj15.js} +1 -1
- ksadk/server/static/assets/{dist-2hInLS_J.js → dist-Cwt7koer.js} +1 -1
- ksadk/server/static/assets/{dist-DyWsb78Q.js → dist-D82mtD2s.js} +1 -1
- ksadk/server/static/assets/{dist-D-JMdWPQ.js → dist-DF06ORQo.js} +1 -1
- ksadk/server/static/assets/{dist-BmlMPsCc.js → dist-DHn6nBzr.js} +1 -1
- ksadk/server/static/assets/{dist-gX6GOLKq.js → dist-Djgl2wVZ.js} +1 -1
- ksadk/server/static/assets/{dist-DpKtt4Bo.js → dist-DlzCRy0S.js} +1 -1
- ksadk/server/static/assets/{dist-8_SfK1IP.js → dist-DqNnNFrw.js} +1 -1
- ksadk/server/static/assets/{dist-D57wnGWd.js → dist-DyvYLMW9.js} +1 -1
- ksadk/server/static/assets/{dist-CPBtqRTW.js → dist-eoW6tZXA.js} +1 -1
- ksadk/server/static/assets/{dist-DL_NKc_z.js → dist-ivOya1LD.js} +1 -1
- ksadk/server/static/assets/{erDiagram-TEJ5UH35-Bk-9bgE5.js → erDiagram-TEJ5UH35-CnfRcY2M.js} +1 -1
- ksadk/server/static/assets/eventmodeling-FCH6USID-ChYO-ijM.js +1 -0
- ksadk/server/static/assets/{flowDiagram-I6XJVG4X-Dn9kZVuZ.js → flowDiagram-I6XJVG4X-DGaJjGNJ.js} +1 -1
- ksadk/server/static/assets/{ganttDiagram-6RSMTGT7-BGxXlJqm.js → ganttDiagram-6RSMTGT7-DpCoB2g9.js} +1 -1
- ksadk/server/static/assets/gitGraph-WXDBUCRP-BN_0Fk-j.js +1 -0
- ksadk/server/static/assets/{gitGraphDiagram-PVQCEYII-C7Q0X-wi.js → gitGraphDiagram-PVQCEYII-9IKVFBVT.js} +1 -1
- ksadk/server/static/assets/index-QSwCHuB8.js +177 -0
- ksadk/server/static/assets/index-jOPmTOZH.css +2 -0
- ksadk/server/static/assets/info-J43DQDTF-Cp6o3vId.js +1 -0
- ksadk/server/static/assets/{infoDiagram-5YYISTIA-BO_CSqq5.js → infoDiagram-5YYISTIA-CYIIsb8y.js} +1 -1
- ksadk/server/static/assets/{ishikawaDiagram-YF4QCWOH-eYLPLd46.js → ishikawaDiagram-YF4QCWOH-DLOHGvWw.js} +1 -1
- ksadk/server/static/assets/{journeyDiagram-JHISSGLW-De9geSb0.js → journeyDiagram-JHISSGLW-BIzKeejT.js} +1 -1
- ksadk/server/static/assets/{kanban-definition-UN3LZRKU-Cs80kQto.js → kanban-definition-UN3LZRKU-BWHoFSw2.js} +1 -1
- ksadk/server/static/assets/{katex-DSrCFD8n.js → katex-DATssjp1.js} +1 -1
- ksadk/server/static/assets/{linear-CN9sbKTF.js → linear-CvMBw9cA.js} +1 -1
- ksadk/server/static/assets/{mermaid-parser.core-DlgSBU8l.js → mermaid-parser.core-mGAcEwcq.js} +2 -2
- ksadk/server/static/assets/{mindmap-definition-RKZ34NQL-9afz7Oug.js → mindmap-definition-RKZ34NQL-CSAQxEAe.js} +1 -1
- ksadk/server/static/assets/packet-YPE3B663-wQzct3cT.js +1 -0
- ksadk/server/static/assets/pie-LRSECV5Y-BgTQiv-9.js +1 -0
- ksadk/server/static/assets/{pieDiagram-4H26LBE5-DPv_VstN.js → pieDiagram-4H26LBE5-By-ra07M.js} +1 -1
- ksadk/server/static/assets/{quadrantDiagram-W4KKPZXB-o77wZ1XK.js → quadrantDiagram-W4KKPZXB-CxIR4JXI.js} +1 -1
- ksadk/server/static/assets/radar-GUYGQ44K-BIq5fXsn.js +1 -0
- ksadk/server/static/assets/{requirementDiagram-4Y6WPE33-BYVw81VC.js → requirementDiagram-4Y6WPE33-DpW90iu3.js} +1 -1
- ksadk/server/static/assets/{sankeyDiagram-5OEKKPKP-B7nZFMKT.js → sankeyDiagram-5OEKKPKP-DpGa6EAV.js} +1 -1
- ksadk/server/static/assets/{sequenceDiagram-3UESZ5HK-BGRRrFw5.js → sequenceDiagram-3UESZ5HK-NTKNGGe5.js} +1 -1
- ksadk/server/static/assets/{stateDiagram-AJRCARHV-BUfHCoPs.js → stateDiagram-AJRCARHV-DGpd9yFG.js} +1 -1
- ksadk/server/static/assets/stateDiagram-v2-BHNVJYJU-B3o579IQ.js +1 -0
- ksadk/server/static/assets/{timeline-definition-PNZ67QCA-FbCTGrf9.js → timeline-definition-PNZ67QCA-jqoYs3jQ.js} +1 -1
- ksadk/server/static/assets/treeView-BLDUP644-Dqi-E0EM.js +1 -0
- ksadk/server/static/assets/treemap-LRROVOQU-ClQP9CJ9.js +1 -0
- ksadk/server/static/assets/{vennDiagram-CIIHVFJN-DWgwtPsJ.js → vennDiagram-CIIHVFJN-l3Z7-wbP.js} +1 -1
- ksadk/server/static/assets/wardley-L42UT6IY-8XLvnNIs.js +1 -0
- ksadk/server/static/assets/{wardleyDiagram-YWT4CUSO-2x8G-tTM.js → wardleyDiagram-YWT4CUSO-BR54GPmr.js} +1 -1
- ksadk/server/static/assets/{xychartDiagram-2RQKCTM6-Drma3AYl.js → xychartDiagram-2RQKCTM6-SkiH8GsK.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 +38 -17
- ksadk/skills/tool_defs.py +15 -10
- ksadk/terminal_exec_policy.py +3 -4
- ksadk/tools/gateway.py +92 -15
- ksadk/tools/result_budget.py +12 -4
- ksadk/toolsets/__init__.py +134 -36
- 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/exporters/inmemory_exporter.py +62 -51
- ksadk/tracing/exporters/langfuse_exporter.py +91 -76
- ksadk/tracing/setup.py +69 -53
- ksadk/tracing/span_utils.py +5 -2
- 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/schemas/runtime_event_v1.json +95 -0
- agentengine_sdk_python-0.7.0.dist-info/RECORD +0 -482
- 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
- {agentengine_sdk_python-0.7.0.dist-info → agentengine_sdk_python-0.8.0.dist-info}/WHEEL +0 -0
- {agentengine_sdk_python-0.7.0.dist-info → agentengine_sdk_python-0.8.0.dist-info}/entry_points.txt +0 -0
- {agentengine_sdk_python-0.7.0.dist-info → agentengine_sdk_python-0.8.0.dist-info}/licenses/LICENSE +0 -0
- {agentengine_sdk_python-0.7.0.dist-info → agentengine_sdk_python-0.8.0.dist-info}/top_level.txt +0 -0
ksadk/deployment/__init__.py
CHANGED
|
@@ -7,62 +7,61 @@
|
|
|
7
7
|
- serverless: 金山云 Serverless 计算引擎
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
+
# 导入并注册所有 Provider
|
|
11
|
+
from ksadk.deployment import providers as providers
|
|
10
12
|
from ksadk.deployment.base import (
|
|
11
13
|
BaseDeployProvider,
|
|
12
|
-
DeployTarget,
|
|
13
14
|
DeployResult,
|
|
14
15
|
DeployStatus,
|
|
16
|
+
DeployTarget,
|
|
17
|
+
NetworkConfig,
|
|
15
18
|
PackageInfo,
|
|
16
19
|
ResourceSpec,
|
|
17
20
|
ScalingConfig,
|
|
18
|
-
NetworkConfig,
|
|
19
21
|
)
|
|
20
22
|
from ksadk.deployment.registry import DeployProviderRegistry
|
|
21
23
|
|
|
22
|
-
# 导入并注册所有 Provider
|
|
23
|
-
from ksadk.deployment import providers
|
|
24
|
-
|
|
25
24
|
|
|
26
25
|
class DeploymentManager:
|
|
27
26
|
"""部署管理器 - 统一入口
|
|
28
|
-
|
|
27
|
+
|
|
29
28
|
使用方式:
|
|
30
29
|
manager = DeploymentManager()
|
|
31
30
|
provider = manager.get_provider("docker")
|
|
32
31
|
result = await provider.deploy(package_info, target)
|
|
33
32
|
"""
|
|
34
|
-
|
|
33
|
+
|
|
35
34
|
@staticmethod
|
|
36
|
-
def get_provider(name: str, config: dict = None) -> BaseDeployProvider:
|
|
35
|
+
def get_provider(name: str, config: dict | None = None) -> BaseDeployProvider:
|
|
37
36
|
"""获取部署 Provider
|
|
38
|
-
|
|
37
|
+
|
|
39
38
|
Args:
|
|
40
39
|
name: Provider 名称 (docker, k8s, serverless)
|
|
41
40
|
config: Provider 配置
|
|
42
|
-
|
|
41
|
+
|
|
43
42
|
Returns:
|
|
44
43
|
Provider 实例
|
|
45
44
|
"""
|
|
46
45
|
return DeployProviderRegistry.get(name, config)
|
|
47
|
-
|
|
46
|
+
|
|
48
47
|
@staticmethod
|
|
49
48
|
def list_providers() -> list:
|
|
50
49
|
"""列出所有可用 Provider"""
|
|
51
50
|
return DeployProviderRegistry.get_provider_info()
|
|
52
|
-
|
|
51
|
+
|
|
53
52
|
@staticmethod
|
|
54
53
|
def has_provider(name: str) -> bool:
|
|
55
54
|
"""检查 Provider 是否存在"""
|
|
56
55
|
return DeployProviderRegistry.has_provider(name)
|
|
57
|
-
|
|
56
|
+
|
|
58
57
|
# 向后兼容: create() 方法
|
|
59
58
|
@classmethod
|
|
60
|
-
def create(cls, target: str) ->
|
|
59
|
+
def create(cls, target: str) -> BaseDeployProvider:
|
|
61
60
|
"""创建部署目标
|
|
62
|
-
|
|
61
|
+
|
|
63
62
|
Args:
|
|
64
63
|
target: 部署目标 (docker, k8s, serverless)
|
|
65
|
-
|
|
64
|
+
|
|
66
65
|
Returns:
|
|
67
66
|
部署目标实例
|
|
68
67
|
"""
|
ksadk/deployment/agent_access.py
CHANGED
|
@@ -5,7 +5,6 @@ import inspect
|
|
|
5
5
|
from contextlib import nullcontext
|
|
6
6
|
from typing import Any, Awaitable, Callable, Mapping, Sequence
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
AgentAccessDetailFetcher = Callable[[str, bool], Awaitable[dict[str, Any]]]
|
|
10
9
|
AgentAccessErrorHandler = Callable[[Exception], None]
|
|
11
10
|
|
|
@@ -16,16 +15,13 @@ def canonicalize_agent_access_detail(detail: Mapping[str, Any] | None) -> dict[s
|
|
|
16
15
|
return {}
|
|
17
16
|
|
|
18
17
|
normalized = dict(detail)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
normalized.get("deployment")
|
|
27
|
-
if isinstance(normalized.get("deployment"), Mapping)
|
|
28
|
-
else {}
|
|
18
|
+
basic_value = normalized.get("basic")
|
|
19
|
+
basic: Mapping[str, Any] = basic_value if isinstance(basic_value, Mapping) else {}
|
|
20
|
+
quick_value = normalized.get("quick_access")
|
|
21
|
+
quick: Mapping[str, Any] = quick_value if isinstance(quick_value, Mapping) else {}
|
|
22
|
+
deployment_value = normalized.get("deployment")
|
|
23
|
+
deployment: Mapping[str, Any] = (
|
|
24
|
+
deployment_value if isinstance(deployment_value, Mapping) else {}
|
|
29
25
|
)
|
|
30
26
|
|
|
31
27
|
def _pick(*values: Any) -> Any:
|
|
@@ -74,9 +70,8 @@ def is_agent_not_visible_yet_error(exc: Exception) -> bool:
|
|
|
74
70
|
text = str(exc or "").lower()
|
|
75
71
|
if not text:
|
|
76
72
|
return False
|
|
77
|
-
return (
|
|
78
|
-
|
|
79
|
-
and ("未找到对应的 agent" in text or "not found" in text)
|
|
73
|
+
return ("http 404" in text or "status=404" in text or "code: 404" in text) and (
|
|
74
|
+
"未找到对应的 agent" in text or "not found" in text
|
|
80
75
|
)
|
|
81
76
|
|
|
82
77
|
|
|
@@ -99,7 +94,7 @@ def is_agent_not_found_error(exc: Exception) -> bool:
|
|
|
99
94
|
if isinstance(details, Mapping):
|
|
100
95
|
http_status = details.get("http_status")
|
|
101
96
|
try:
|
|
102
|
-
if int(http_status) == 404:
|
|
97
|
+
if http_status is not None and int(http_status) == 404:
|
|
103
98
|
return True
|
|
104
99
|
except (TypeError, ValueError):
|
|
105
100
|
pass
|
|
@@ -174,11 +169,7 @@ async def get_latest_agent_access(
|
|
|
174
169
|
|
|
175
170
|
fetcher = detail_fetcher or _default_detail_fetcher
|
|
176
171
|
retry_delay_values = [float(item) for item in (retry_delays or ())]
|
|
177
|
-
attempts = (
|
|
178
|
-
1 + len(retry_delay_values)
|
|
179
|
-
if retry_delay_values
|
|
180
|
-
else max(1, int(attempts or 1))
|
|
181
|
-
)
|
|
172
|
+
attempts = 1 + len(retry_delay_values) if retry_delay_values else max(1, int(attempts or 1))
|
|
182
173
|
last_exc: Exception | None = None
|
|
183
174
|
|
|
184
175
|
suppress_ctx = nullcontext()
|
|
@@ -205,9 +196,7 @@ async def get_latest_agent_access(
|
|
|
205
196
|
if delay > 0:
|
|
206
197
|
await asyncio.sleep(delay)
|
|
207
198
|
try:
|
|
208
|
-
detail = canonicalize_agent_access_detail(
|
|
209
|
-
await fetcher(agent_ref, include_api_key)
|
|
210
|
-
)
|
|
199
|
+
detail = canonicalize_agent_access_detail(await fetcher(agent_ref, include_api_key))
|
|
211
200
|
except Exception as exc:
|
|
212
201
|
last_exc = exc
|
|
213
202
|
if attempt < attempts - 1 and is_agent_not_visible_yet_error(exc):
|
ksadk/deployment/base.py
CHANGED
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
from abc import ABC, abstractmethod
|
|
6
|
-
from typing import Dict, Any, Optional, List
|
|
7
|
-
from pydantic import BaseModel, Field
|
|
8
6
|
from enum import Enum
|
|
7
|
+
from typing import Any, Dict, List, Optional
|
|
8
|
+
|
|
9
|
+
from pydantic import BaseModel, Field
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class DeployStatus(str, Enum):
|
|
12
13
|
"""部署状态"""
|
|
14
|
+
|
|
13
15
|
PENDING = "pending"
|
|
14
16
|
PACKAGING = "packaging"
|
|
15
17
|
BUILDING = "building"
|
|
@@ -26,12 +28,14 @@ class DeployStatus(str, Enum):
|
|
|
26
28
|
|
|
27
29
|
class ResourceSpec(BaseModel):
|
|
28
30
|
"""资源规格"""
|
|
31
|
+
|
|
29
32
|
cpu: str = "2"
|
|
30
33
|
memory: str = "4Gi"
|
|
31
34
|
|
|
32
35
|
|
|
33
36
|
class ScalingConfig(BaseModel):
|
|
34
37
|
"""扩缩容配置"""
|
|
38
|
+
|
|
35
39
|
min_replicas: int = 1
|
|
36
40
|
max_replicas: int = 10
|
|
37
41
|
concurrency: int = 10
|
|
@@ -39,6 +43,7 @@ class ScalingConfig(BaseModel):
|
|
|
39
43
|
|
|
40
44
|
class NetworkConfig(BaseModel):
|
|
41
45
|
"""网络配置"""
|
|
46
|
+
|
|
42
47
|
access_type: str = "public" # public | private
|
|
43
48
|
enable_https: bool = True
|
|
44
49
|
enable_public_access: Optional[bool] = None
|
|
@@ -58,10 +63,11 @@ class StorageSpec(BaseModel):
|
|
|
58
63
|
|
|
59
64
|
class DeployTarget(BaseModel):
|
|
60
65
|
"""部署目标配置"""
|
|
61
|
-
|
|
66
|
+
|
|
67
|
+
provider: str # serverless | faas | k8s | docker
|
|
62
68
|
region: str = "cn-north-1"
|
|
63
69
|
project_id: str = "default"
|
|
64
|
-
|
|
70
|
+
|
|
65
71
|
# 通用配置
|
|
66
72
|
resources: ResourceSpec = Field(default_factory=ResourceSpec)
|
|
67
73
|
scaling: ScalingConfig = Field(default_factory=ScalingConfig)
|
|
@@ -74,22 +80,24 @@ class DeployTarget(BaseModel):
|
|
|
74
80
|
|
|
75
81
|
class DeployResult(BaseModel):
|
|
76
82
|
"""部署结果"""
|
|
83
|
+
|
|
77
84
|
status: DeployStatus = DeployStatus.UNKNOWN
|
|
78
85
|
agent_id: Optional[str] = None
|
|
79
86
|
agent_name: Optional[str] = None
|
|
80
87
|
endpoint: Optional[str] = None
|
|
81
88
|
api_key: Optional[str] = None
|
|
82
89
|
message: str = ""
|
|
83
|
-
|
|
90
|
+
|
|
84
91
|
# 额外元数据
|
|
85
92
|
metadata: Dict[str, Any] = Field(default_factory=dict)
|
|
86
|
-
|
|
93
|
+
|
|
87
94
|
def is_success(self) -> bool:
|
|
88
95
|
return self.status in (DeployStatus.RUNNING, DeployStatus.DEPLOYING)
|
|
89
96
|
|
|
90
97
|
|
|
91
98
|
class PackageInfo(BaseModel):
|
|
92
99
|
"""打包信息"""
|
|
100
|
+
|
|
93
101
|
name: str
|
|
94
102
|
framework: str
|
|
95
103
|
build_dir: str
|
|
@@ -97,132 +105,137 @@ class PackageInfo(BaseModel):
|
|
|
97
105
|
dockerfile: Optional[str] = None
|
|
98
106
|
image: Optional[str] = None
|
|
99
107
|
entry_point: str = "agent.py"
|
|
100
|
-
|
|
108
|
+
|
|
101
109
|
# 额外信息
|
|
102
110
|
metadata: Dict[str, Any] = Field(default_factory=dict)
|
|
103
111
|
|
|
104
112
|
|
|
105
113
|
class BaseDeployProvider(ABC):
|
|
106
114
|
"""部署 Provider 基类
|
|
107
|
-
|
|
115
|
+
|
|
108
116
|
所有部署 Provider 必须继承此类并实现抽象方法。
|
|
109
117
|
"""
|
|
110
|
-
|
|
118
|
+
|
|
111
119
|
# Provider 标识
|
|
112
120
|
name: str = "base"
|
|
113
121
|
display_name: str = "Base Provider"
|
|
114
122
|
description: str = ""
|
|
115
|
-
|
|
123
|
+
|
|
116
124
|
# 能力标识
|
|
117
125
|
supports_streaming: bool = False
|
|
118
126
|
supports_scaling: bool = False
|
|
119
127
|
requires_image_registry: bool = False
|
|
120
|
-
|
|
121
|
-
def __init__(self, config: Dict[str, Any] = None):
|
|
128
|
+
|
|
129
|
+
def __init__(self, config: Optional[Dict[str, Any]] = None):
|
|
122
130
|
"""初始化 Provider
|
|
123
|
-
|
|
131
|
+
|
|
124
132
|
Args:
|
|
125
133
|
config: Provider 级别配置 (如 API Key、区域默认值等)
|
|
126
134
|
"""
|
|
127
135
|
self.config = config or {}
|
|
128
|
-
|
|
136
|
+
|
|
129
137
|
@abstractmethod
|
|
130
138
|
async def validate_config(self, target: DeployTarget) -> tuple[bool, str]:
|
|
131
139
|
"""验证部署配置
|
|
132
|
-
|
|
140
|
+
|
|
133
141
|
Args:
|
|
134
142
|
target: 部署目标配置
|
|
135
|
-
|
|
143
|
+
|
|
136
144
|
Returns:
|
|
137
145
|
(is_valid, error_message)
|
|
138
146
|
"""
|
|
139
147
|
pass
|
|
140
|
-
|
|
148
|
+
|
|
141
149
|
@abstractmethod
|
|
142
|
-
async def package(
|
|
150
|
+
async def package(
|
|
151
|
+
self,
|
|
152
|
+
project_dir: str,
|
|
153
|
+
detection_result: Any,
|
|
154
|
+
config: Optional[Dict[str, Any]] = None,
|
|
155
|
+
) -> PackageInfo:
|
|
143
156
|
"""打包项目
|
|
144
|
-
|
|
157
|
+
|
|
145
158
|
Args:
|
|
146
159
|
project_dir: 项目目录
|
|
147
160
|
detection_result: 框架检测结果
|
|
148
161
|
config: 项目配置 (agentengine.yaml)
|
|
149
|
-
|
|
162
|
+
|
|
150
163
|
Returns:
|
|
151
164
|
打包信息
|
|
152
165
|
"""
|
|
153
166
|
pass
|
|
154
|
-
|
|
167
|
+
|
|
155
168
|
@abstractmethod
|
|
156
169
|
async def build(self, package_info: PackageInfo, target: DeployTarget) -> PackageInfo:
|
|
157
170
|
"""构建镜像/代码包
|
|
158
|
-
|
|
171
|
+
|
|
159
172
|
Args:
|
|
160
173
|
package_info: 打包信息
|
|
161
174
|
target: 部署目标
|
|
162
|
-
|
|
175
|
+
|
|
163
176
|
Returns:
|
|
164
177
|
更新后的打包信息 (含镜像地址等)
|
|
165
178
|
"""
|
|
166
179
|
pass
|
|
167
|
-
|
|
180
|
+
|
|
168
181
|
@abstractmethod
|
|
169
182
|
async def deploy(self, package_info: PackageInfo, target: DeployTarget) -> DeployResult:
|
|
170
183
|
"""部署
|
|
171
|
-
|
|
184
|
+
|
|
172
185
|
Args:
|
|
173
186
|
package_info: 打包信息
|
|
174
187
|
target: 部署目标
|
|
175
|
-
|
|
188
|
+
|
|
176
189
|
Returns:
|
|
177
190
|
部署结果
|
|
178
191
|
"""
|
|
179
192
|
pass
|
|
180
|
-
|
|
193
|
+
|
|
181
194
|
@abstractmethod
|
|
182
195
|
async def get_status(self, agent_id: str, target: DeployTarget) -> DeployResult:
|
|
183
196
|
"""获取部署状态
|
|
184
|
-
|
|
197
|
+
|
|
185
198
|
Args:
|
|
186
199
|
agent_id: Agent ID
|
|
187
200
|
target: 部署目标
|
|
188
|
-
|
|
201
|
+
|
|
189
202
|
Returns:
|
|
190
203
|
部署状态
|
|
191
204
|
"""
|
|
192
205
|
pass
|
|
193
|
-
|
|
206
|
+
|
|
194
207
|
@abstractmethod
|
|
195
208
|
async def destroy(self, agent_id: str, target: DeployTarget) -> bool:
|
|
196
209
|
"""销毁部署
|
|
197
|
-
|
|
210
|
+
|
|
198
211
|
Args:
|
|
199
212
|
agent_id: Agent ID
|
|
200
213
|
target: 部署目标
|
|
201
|
-
|
|
214
|
+
|
|
202
215
|
Returns:
|
|
203
216
|
是否成功
|
|
204
217
|
"""
|
|
205
218
|
pass
|
|
206
|
-
|
|
219
|
+
|
|
207
220
|
async def list_agents(self, target: DeployTarget) -> List[DeployResult]:
|
|
208
221
|
"""列出所有 Agent (可选实现)
|
|
209
|
-
|
|
222
|
+
|
|
210
223
|
Args:
|
|
211
224
|
target: 部署目标
|
|
212
|
-
|
|
225
|
+
|
|
213
226
|
Returns:
|
|
214
227
|
Agent 列表
|
|
215
228
|
"""
|
|
216
229
|
raise NotImplementedError(f"{self.name} does not support list_agents")
|
|
217
|
-
|
|
230
|
+
|
|
218
231
|
async def invoke(self, agent_id: str, message: str, target: DeployTarget) -> str:
|
|
219
232
|
"""调用 Agent (可选实现)
|
|
220
|
-
|
|
233
|
+
|
|
221
234
|
Args:
|
|
222
235
|
agent_id: Agent ID
|
|
223
236
|
message: 输入消息
|
|
224
237
|
target: 部署目标
|
|
225
|
-
|
|
238
|
+
|
|
226
239
|
Returns:
|
|
227
240
|
Agent 响应
|
|
228
241
|
"""
|