agentengine-sdk-python 0.8.2__py3-none-any.whl → 0.8.4__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.8.2.dist-info → agentengine_sdk_python-0.8.4.dist-info}/METADATA +22 -28
- agentengine_sdk_python-0.8.4.dist-info/RECORD +1070 -0
- ksadk/_build_provenance.json +1 -0
- ksadk/agui/_agent_helpers.py +4 -0
- ksadk/api/client.py +108 -91
- ksadk/builders/code_builder.py +36 -9
- ksadk/builders/framework_requirements.py +2 -1
- ksadk/builders/ks3_uploader.py +36 -7
- ksadk/builders/managed_runtime_builder.py +4 -0
- ksadk/cli/__init__.py +38 -3
- ksadk/cli/cmd_managed_runtime.py +13 -1
- ksadk/cli/cmd_plugin.py +662 -0
- ksadk/cli/cmd_web.py +2 -5
- ksadk/cli/runtime_bootstrap.py +23 -1
- ksadk/codex/client.py +424 -96
- ksadk/codex/projection.py +24 -0
- ksadk/codex/runtime.py +83 -283
- ksadk/common/auth.py +16 -10
- ksadk/configs/env_registry.py +59 -3
- ksadk/configs/settings.py +9 -0
- ksadk/context_engine/contributors.py +73 -8
- ksadk/conversations/__init__.py +19 -0
- ksadk/conversations/context.py +104 -24
- ksadk/conversations/contracts.py +266 -0
- ksadk/conversations/message_projection.py +154 -15
- ksadk/conversations/projector.py +614 -0
- ksadk/conversations/reducer.py +98 -0
- ksadk/conversations/runtime_invocation.py +5 -0
- ksadk/conversations/runtime_payloads.py +1 -0
- ksadk/conversations/runtime_preparation.py +30 -27
- ksadk/conversations/runtime_resume.py +50 -2
- ksadk/conversations/runtime_stream_events.py +5 -0
- ksadk/conversations/runtime_streaming.py +25 -7
- ksadk/deployment/env_forward.py +2 -2
- ksadk/deployment/providers/serverless.py +1 -1
- ksadk/events/_v1_compat/projection.py +2 -0
- ksadk/events/adapters/_codex_validators.py +18 -7
- ksadk/events/adapters/codex.py +190 -0
- ksadk/events/adapters/langgraph.py +15 -1
- ksadk/events/canonical_store.py +3 -1
- ksadk/events/projections.py +1 -1
- ksadk/harness/__init__.py +45 -35
- ksadk/harness/config.py +2 -2
- ksadk/harness/runtime.py +75 -16
- ksadk/harness/tools.py +38 -13
- ksadk/interaction/provider.py +1 -0
- ksadk/interaction/providers/langgraph.py +1 -0
- ksadk/kernel/bootstrap.py +28 -4
- ksadk/kernel/contract_fingerprints.py +5 -4
- ksadk/kernel/contracts.py +8 -0
- ksadk/kernel/control.py +1 -0
- ksadk/kernel/ingress.py +36 -2
- ksadk/kernel/memory_store.py +1 -0
- ksadk/kernel/postgres_store.py +1 -0
- ksadk/kernel/sqlite_store.py +28 -0
- ksadk/kernel/store.py +3 -0
- ksadk/kernel/worker.py +76 -10
- ksadk/knowledge_base/client.py +57 -27
- ksadk/mcp_runtime/__init__.py +12 -4
- ksadk/memory/adk/backends/sdk_ltm_backend.py +161 -41
- ksadk/memory/adk/resilient_session_service.py +25 -17
- ksadk/memory/adk/short_term_memory.py +26 -9
- ksadk/memory/models.py +7 -4
- ksadk/memory/provider_resolver.py +3 -0
- ksadk/memory/providers/local_sqlite.py +7 -0
- ksadk/model_proxy/server.py +10 -5
- ksadk/plugins/__init__.py +171 -0
- ksadk/plugins/artifacts.py +275 -0
- ksadk/plugins/bridges/__init__.py +47 -0
- ksadk/plugins/bridges/codex.py +659 -0
- ksadk/plugins/bridges/dsh.py +1300 -0
- ksadk/plugins/builtins.py +746 -0
- ksadk/plugins/bundle.py +246 -0
- ksadk/plugins/bundle_security.py +191 -0
- ksadk/plugins/codex_manifest.py +983 -0
- ksadk/plugins/composition.py +537 -0
- ksadk/plugins/context_contributor.py +437 -0
- ksadk/plugins/contracts.py +569 -0
- ksadk/plugins/delivery.py +153 -0
- ksadk/plugins/dsh_installation_digest.py +71 -0
- ksadk/plugins/dsh_toolchain.py +1024 -0
- ksadk/plugins/ecosystem_bridge.py +1105 -0
- ksadk/plugins/ecosystem_probe.py +191 -0
- ksadk/plugins/host.py +787 -0
- ksadk/plugins/kernel_adapter.py +205 -0
- ksadk/plugins/providers/__init__.py +108 -0
- ksadk/plugins/providers/bundles/dsh-knowledge/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-knowledge/index.mjs +53 -0
- ksadk/plugins/providers/bundles/dsh-knowledge/package.json +16 -0
- ksadk/plugins/providers/bundles/dsh-memory/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-memory/index.mjs +175 -0
- ksadk/plugins/providers/bundles/dsh-memory/package.json +16 -0
- ksadk/plugins/providers/bundles/dsh-platform-resources/client.mjs +166 -0
- ksadk/plugins/providers/bundles/dsh-platform-resources/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-platform-resources/index.mjs +9 -0
- ksadk/plugins/providers/bundles/dsh-platform-resources/package.json +12 -0
- ksadk/plugins/providers/bundles/dsh-skill-center/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-skill-center/index.mjs +125 -0
- ksadk/plugins/providers/bundles/dsh-skill-center/package.json +16 -0
- ksadk/plugins/providers/bundles/ksadk-codex/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/ksadk-codex/index.mjs +18 -0
- ksadk/plugins/providers/bundles/ksadk-codex/package.json +19 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/index.mjs +870 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/package.json +27 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-studio/client.js +92 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-studio/index.mjs +15 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-studio/package.json +7 -0
- ksadk/plugins/providers/bundles/ksadk-harness/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/ksadk-harness/index.mjs +19 -0
- ksadk/plugins/providers/bundles/ksadk-harness/package.json +19 -0
- ksadk/plugins/providers/codex.py +988 -0
- ksadk/plugins/providers/codex_dsh.py +83 -0
- ksadk/plugins/providers/codex_native.py +368 -0
- ksadk/plugins/providers/codex_turn.py +301 -0
- ksadk/plugins/providers/dsh.py +951 -0
- ksadk/plugins/providers/dsh_capabilities.py +1389 -0
- ksadk/plugins/providers/dsh_descriptor_host.py +226 -0
- ksadk/plugins/providers/dsh_mcp.py +467 -0
- ksadk/plugins/providers/harness.py +632 -0
- ksadk/plugins/providers/harness_dsh.py +91 -0
- ksadk/plugins/providers/legacy.py +215 -0
- ksadk/plugins/providers/legacy_catalog.py +100 -0
- ksadk/plugins/providers/mcp_projection.py +150 -0
- ksadk/plugins/providers/platform_resources.py +657 -0
- ksadk/plugins/providers/shipped_dsh.py +370 -0
- ksadk/plugins/resolver.py +338 -0
- ksadk/plugins/subagent_providers/__init__.py +12 -0
- ksadk/plugins/subagent_providers/codex.py +443 -0
- ksadk/plugins/subagents.py +333 -0
- ksadk/resource_runtime/__init__.py +4 -0
- ksadk/resource_runtime/broker.py +616 -0
- ksadk/resource_runtime/build_artifacts.py +165 -0
- ksadk/resource_runtime/contracts.py +138 -0
- ksadk/resource_runtime/discovery_receipts.py +100 -0
- ksadk/resource_runtime/discovery_skills.py +172 -0
- ksadk/resource_runtime/errors.py +6 -0
- ksadk/resource_runtime/ipc.py +142 -0
- ksadk/resource_runtime/kernel_approval.py +165 -0
- ksadk/resource_runtime/knowledge.py +114 -0
- ksadk/resource_runtime/langgraph.py +94 -0
- ksadk/resource_runtime/leases.py +191 -0
- ksadk/resource_runtime/managed_projection.py +186 -0
- ksadk/resource_runtime/mcp_server.py +138 -0
- ksadk/resource_runtime/memory_provider.py +318 -0
- ksadk/resource_runtime/memory_receipts.py +34 -0
- ksadk/resource_runtime/operation_ledger.py +211 -0
- ksadk/resource_runtime/plugin_config.py +48 -0
- ksadk/resource_runtime/policy_authorization.py +54 -0
- ksadk/resource_runtime/process.py +110 -0
- ksadk/resource_runtime/skill_artifacts.py +153 -0
- ksadk/resource_runtime/skill_runtime.py +42 -0
- ksadk/resource_runtime/skill_workspace.py +118 -0
- ksadk/resource_runtime/skills.py +215 -0
- ksadk/resource_runtime/snapshots.py +180 -0
- ksadk/resource_runtime/socket_server.py +103 -0
- ksadk/resource_runtime/supervisor.py +380 -0
- ksadk/resource_runtime/worker.py +504 -0
- ksadk/runners/_langgraph_runner_streams.py +74 -6
- ksadk/runners/adk_runner.py +149 -11
- ksadk/runners/base_runner.py +29 -1
- ksadk/runners/langgraph_runner.py +475 -145
- ksadk/runtime/_runner_adapter/stream_mapping.py +193 -60
- ksadk/runtime/adapter.py +3 -0
- ksadk/runtime/conversation_execution.py +92 -16
- ksadk/runtime/executor.py +78 -2
- ksadk/runtime/factory.py +30 -200
- ksadk/runtime/framework_adapters.py +41 -0
- ksadk/runtime/preprocessing.py +10 -2
- ksadk/runtime/runner_adapter.py +78 -14
- ksadk/runtime_context.py +40 -2
- ksadk/sandbox/__init__.py +2 -1
- ksadk/sandbox/backends/e2b.py +52 -11
- ksadk/sandbox/backends/local_process.py +9 -0
- ksadk/sandbox/base.py +2 -0
- ksadk/sandbox/e2b_connection.py +66 -0
- ksadk/sandbox/factory.py +72 -0
- ksadk/scheduler/__init__.py +18 -0
- ksadk/scheduler/calendar.py +102 -0
- ksadk/scheduler/contracts.py +254 -0
- ksadk/scheduler/dispatcher.py +129 -0
- ksadk/scheduler/engine.py +416 -0
- ksadk/scheduler/sqlite_store.py +581 -0
- ksadk/server/composition.py +2 -0
- ksadk/server/factory.py +5 -0
- ksadk/server/persistence_capability.py +516 -0
- ksadk/server/routes/control.py +210 -46
- ksadk/server/routes/dependencies.py +15 -0
- ksadk/server/routes/models.py +47 -4
- ksadk/server/routes/projection.py +252 -12
- ksadk/server/routes/sessions.py +284 -107
- ksadk/server/routes/streaming.py +43 -9
- ksadk/server/static/assets/{ArtifactsPanel-DSU1sWD_.js → ArtifactsPanel-CGbWlMNh.js} +1 -1
- ksadk/server/static/assets/{CodeBlock-DOH6MVcn.js → CodeBlock-b4C7upmO.js} +3 -3
- ksadk/server/static/assets/{MathMessageMarkdown-BL8my1R2.js → MathMessageMarkdown-DbdW5A4_.js} +4 -4
- ksadk/server/static/assets/{MermaidBlock-Dz4IP-Tx.js → MermaidBlock-BEBN4Ksz.js} +6 -6
- ksadk/server/static/assets/{NativeTerminalPanel-DUrK0JpZ.js → NativeTerminalPanel-zvL-WpAn.js} +1 -1
- ksadk/server/static/assets/{abnfDiagram-VCTEODGH-g20pFzNV.js → abnfDiagram-VCTEODGH-BYafW7Za.js} +1 -1
- ksadk/server/static/assets/{arc-C4FzinUA.js → arc-bTohInsS.js} +1 -1
- ksadk/server/static/assets/architecture-7GRP2DOG-BW5UtSnx.js +1 -0
- ksadk/server/static/assets/{architectureDiagram-5GKGNRK7-DpIqL5h4.js → architectureDiagram-5GKGNRK7-Ch5Lbzsi.js} +1 -1
- ksadk/server/static/assets/{blockDiagram-NRAW4CY4-BjkljTNz.js → blockDiagram-NRAW4CY4-kqF4MDOG.js} +1 -1
- ksadk/server/static/assets/{c4Diagram-UCG6FXSJ-Dk_ieq2X.js → c4Diagram-UCG6FXSJ-8uSRIODv.js} +1 -1
- ksadk/server/static/assets/channel-CF5Up3hQ.js +1 -0
- ksadk/server/static/assets/chunk-2Q5K7J3B-KkXX47WI.js +1 -0
- ksadk/server/static/assets/{chunk-5VM5RSS4-BVHAchFb.js → chunk-5VM5RSS4-DkhehZDr.js} +1 -1
- ksadk/server/static/assets/{chunk-F27PBJKO-C-ipQzuS.js → chunk-F27PBJKO-BdXhtPe9.js} +1 -1
- ksadk/server/static/assets/{chunk-G27WJ6UU-C2EyJbIK.js → chunk-G27WJ6UU-DPTpvpwi.js} +1 -1
- ksadk/server/static/assets/{chunk-JWPE2WC7-vYvVJb_M.js → chunk-JWPE2WC7-Pqoh38el.js} +1 -1
- ksadk/server/static/assets/{chunk-LCL6LL3I-BcI6ysPT.js → chunk-LCL6LL3I-DeU00qC-.js} +1 -1
- ksadk/server/static/assets/{chunk-POPQ4Y6H-C030x_Z1.js → chunk-POPQ4Y6H-CzxScFkr.js} +1 -1
- ksadk/server/static/assets/{chunk-RHFEMEQ7-yyGpsz4n.js → chunk-RHFEMEQ7-DpqMx-ux.js} +1 -1
- ksadk/server/static/assets/{chunk-SVP7TREG-BLTlmMU7.js → chunk-SVP7TREG-C6t0SypQ.js} +1 -1
- ksadk/server/static/assets/{chunk-XXDRQBXY-C_32ArgP.js → chunk-XXDRQBXY-DVaeafZk.js} +1 -1
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-Cz81acRQ.js +1 -0
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-Cz81acRQ.js +1 -0
- ksadk/server/static/assets/{cose-bilkent-JH36ORCC-9YQYwdl0.js → cose-bilkent-JH36ORCC-Bf9D3tzJ.js} +1 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-DVWs8a2t.js +1 -0
- ksadk/server/static/assets/{cynefinDiagram-5FMLGOSQ-ErLF5N13.js → cynefinDiagram-5FMLGOSQ-B9cY3iTz.js} +1 -1
- ksadk/server/static/assets/{dagre-3AP2YEHR-DFiQF-6f.js → dagre-3AP2YEHR-CSwlx3CB.js} +1 -1
- ksadk/server/static/assets/{dagre-BuhGnRI1.js → dagre-UBpgon5q.js} +1 -1
- ksadk/server/static/assets/{diagram-S7CK7UJ4-Bt1v8-GC.js → diagram-S7CK7UJ4-C9akhN9a.js} +1 -1
- ksadk/server/static/assets/{diagram-UQ7AKVKN-DSCxJdBK.js → diagram-UQ7AKVKN-CgedhTPI.js} +1 -1
- ksadk/server/static/assets/{diagram-VSXAHHWV-DHfYwp_9.js → diagram-VSXAHHWV-Cjucz5BY.js} +1 -1
- ksadk/server/static/assets/{diagram-VX7I27RA-DdzD-4Le.js → diagram-VX7I27RA-Dd4Vleyn.js} +1 -1
- ksadk/server/static/assets/{diagram-Z3DM3KII-Du-nAJ9F.js → diagram-Z3DM3KII-CZ2jGtYW.js} +1 -1
- ksadk/server/static/assets/{dist-B7seoj3d.js → dist-B2_CVgKv.js} +1 -1
- ksadk/server/static/assets/{dist-CSh_DE14.js → dist-B3FR1SKK.js} +1 -1
- ksadk/server/static/assets/{dist-DUX-id_F.js → dist-BIr4DSRq.js} +1 -1
- ksadk/server/static/assets/{dist-C_wsv-Qd.js → dist-BgV_owcB.js} +1 -1
- ksadk/server/static/assets/{dist-W-TIVntx.js → dist-Bj730Ib4.js} +1 -1
- ksadk/server/static/assets/{dist-BytlxIDT.js → dist-BnaTiyzN.js} +1 -1
- ksadk/server/static/assets/{dist-CXYYBw3_.js → dist-C1NMAY5a.js} +1 -1
- ksadk/server/static/assets/{dist-dDdADKFA.js → dist-C5_ZAZsG.js} +1 -1
- ksadk/server/static/assets/{dist-BVDffZ0U.js → dist-CB9iJrvg.js} +1 -1
- ksadk/server/static/assets/{dist-Bf2M8m3N.js → dist-CFzsn6BG.js} +1 -1
- ksadk/server/static/assets/{dist-ngtN0DJB.js → dist-Cf125P_m.js} +1 -1
- ksadk/server/static/assets/{dist-BE7bu-DL.js → dist-ClYUxfeK.js} +1 -1
- ksadk/server/static/assets/{dist-DNp6rLRA.js → dist-DFD6Qa6T.js} +1 -1
- ksadk/server/static/assets/{dist-BX8z72IC.js → dist-DVCOWtha.js} +1 -1
- ksadk/server/static/assets/{dist-dydu68Fl.js → dist-D_ctSS2i.js} +1 -1
- ksadk/server/static/assets/{dist-ClxGviKw.js → dist-DiixqL0J.js} +1 -1
- ksadk/server/static/assets/{dist-BjU6y-A2.js → dist-DoVSwoDb.js} +1 -1
- ksadk/server/static/assets/{dist-Dq9gLD7L.js → dist-DvFK7p5S.js} +1 -1
- ksadk/server/static/assets/{dist-8hqcx0sU.js → dist-QfkEHOlb.js} +1 -1
- ksadk/server/static/assets/{dist-CttYUqzS.js → dist-btbmmX5O.js} +1 -1
- ksadk/server/static/assets/{dist-DmldrHd_.js → dist-fBO2v5Kt.js} +1 -1
- ksadk/server/static/assets/{dist-DnfXs8Vn.js → dist-ufY3F5p6.js} +1 -1
- ksadk/server/static/assets/{ebnfDiagram-PWID7BFC-Da9C9NO1.js → ebnfDiagram-PWID7BFC-Ci8NqqZu.js} +1 -1
- ksadk/server/static/assets/{erDiagram-SSCWMZ5O-EAGqqR79.js → erDiagram-SSCWMZ5O-CCIOhLZG.js} +1 -1
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-CQqR2hg3.js +1 -0
- ksadk/server/static/assets/flowDiagram-A5DVABFB-DDRRbGPm.js +1 -0
- ksadk/server/static/assets/{ganttDiagram-EL5Y4UJY-DqJsKb59.js → ganttDiagram-EL5Y4UJY-Cp_r9Hb6.js} +1 -1
- ksadk/server/static/assets/gitGraph-4MIJSDKK-fgWEf7UD.js +1 -0
- ksadk/server/static/assets/{gitGraphDiagram-WWUBYQGX-B6g4dtDi.js → gitGraphDiagram-WWUBYQGX-Dlhc8Wr8.js} +1 -1
- ksadk/server/static/assets/index-DcTML1Up.css +2 -0
- ksadk/server/static/assets/index-Dh2XHqPK.js +244 -0
- ksadk/server/static/assets/info-A6RAGUB7-BUecLTdt.js +1 -0
- ksadk/server/static/assets/{infoDiagram-RXCK75RN-Djm_nbd5.js → infoDiagram-RXCK75RN-CO0rRTRA.js} +1 -1
- ksadk/server/static/assets/{ishikawaDiagram-5VMMS53U-DWya9SG2.js → ishikawaDiagram-5VMMS53U-CHiaedSS.js} +1 -1
- ksadk/server/static/assets/{journeyDiagram-EYS64GPL-DutxhSNI.js → journeyDiagram-EYS64GPL-CHcCIB09.js} +1 -1
- ksadk/server/static/assets/{kanban-definition-3QL26DDD-DJdOF8Fm.js → kanban-definition-3QL26DDD-CJ_ebBZf.js} +1 -1
- ksadk/server/static/assets/{katex-vFWytM5c.js → katex-B4weu383.js} +1 -1
- ksadk/server/static/assets/{linear-BHjG8b-J.js → linear-V-MgYHW1.js} +1 -1
- ksadk/server/static/assets/{mermaid-parser.core-KGSy4jWT.js → mermaid-parser.core-CBijEX_c.js} +2 -2
- ksadk/server/static/assets/{mindmap-definition-FBJOCRG2-9-HC88D4.js → mindmap-definition-FBJOCRG2-Bc-pQvpp.js} +1 -1
- ksadk/server/static/assets/packet-AYTQ26CC-BeW-btFv.js +1 -0
- ksadk/server/static/assets/{pegDiagram-XKGWAZYB-DrEZd4fD.js → pegDiagram-XKGWAZYB-D7genGLl.js} +1 -1
- ksadk/server/static/assets/pie-WAS4IAKB-X0xh4SaT.js +1 -0
- ksadk/server/static/assets/{pieDiagram-E7YTZNPT-DpjqOFFp.js → pieDiagram-E7YTZNPT-Bxj32zwD.js} +1 -1
- ksadk/server/static/assets/{quadrantDiagram-AXDQQJYC-BiNhgOXX.js → quadrantDiagram-AXDQQJYC-BURv2mGh.js} +1 -1
- ksadk/server/static/assets/radar-RG4KPBEZ-DzRMSqjd.js +1 -0
- ksadk/server/static/assets/railroad-74A4TZTK-Cc44icX-.js +1 -0
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-D6S4BdV-.js +1 -0
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-vD3aVE2o.js +1 -0
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-CYbW_b4T.js +1 -0
- ksadk/server/static/assets/{railroadDiagram-O6MQD6OU-_Y3Ojg6G.js → railroadDiagram-O6MQD6OU-CCsh3avW.js} +1 -1
- ksadk/server/static/assets/{requirementDiagram-EFPCY7ZU-DeCFdg9K.js → requirementDiagram-EFPCY7ZU-_FRRBKEd.js} +1 -1
- ksadk/server/static/assets/{sankeyDiagram-P5KCCOFB-CPH75rhw.js → sankeyDiagram-P5KCCOFB-C-gr2o9M.js} +1 -1
- ksadk/server/static/assets/{sequenceDiagram-WJ2MYXX4-OEpQQdr4.js → sequenceDiagram-WJ2MYXX4-D97NmfKg.js} +1 -1
- ksadk/server/static/assets/{sizeCapture-X5ZJPWSS-heUErzhI.js → sizeCapture-X5ZJPWSS-DjrPC5FX.js} +1 -1
- ksadk/server/static/assets/{stateDiagram-HBIQ2CUA-DvA3jSMB.js → stateDiagram-HBIQ2CUA-DzMNg1hh.js} +1 -1
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BIcjKFhF.js +1 -0
- ksadk/server/static/assets/{swimlanes-XN3QIQJK-CR-dfN_t.js → swimlanes-XN3QIQJK-Cssf_CsU.js} +1 -1
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-tq3K3Ybl.js +8 -0
- ksadk/server/static/assets/{timeline-definition-24CTP7MA-DAVJf1TX.js → timeline-definition-24CTP7MA-BWTHzyS1.js} +1 -1
- ksadk/server/static/assets/treeView-Q6P3EWNA-DBXt3GdU.js +1 -0
- ksadk/server/static/assets/treemap-WGGIJYW6-DrCy4E_l.js +1 -0
- ksadk/server/static/assets/{vennDiagram-4TSXK5OY-DwM8eDkh.js → vennDiagram-4TSXK5OY-BSKgJsmR.js} +1 -1
- ksadk/server/static/assets/wardley-WFR3VGLG-CefhOliM.js +1 -0
- ksadk/server/static/assets/{wardleyDiagram-VM6X3IG4-DZL-Zz2t.js → wardleyDiagram-VM6X3IG4-eflHNoaZ.js} +1 -1
- ksadk/server/static/assets/{xychartDiagram-S5SC5T6Z-Dy6Yh_hu.js → xychartDiagram-S5SC5T6Z-eYqrQ-v4.js} +1 -1
- ksadk/server/static/index.html +2 -2
- ksadk/session_context.py +66 -0
- ksadk/sessions/__init__.py +11 -21
- ksadk/sessions/_local_service_sync.py +263 -1
- ksadk/sessions/base.py +176 -0
- ksadk/sessions/errors.py +4 -0
- ksadk/sessions/in_memory.py +309 -19
- ksadk/sessions/local_service.py +83 -1
- ksadk/sessions/persistence.py +275 -0
- ksadk/sessions/postgres_service.py +358 -0
- ksadk/sessions/resilience.py +8 -0
- ksadk/sessions/resilient.py +362 -4
- ksadk/sessions/topology.py +135 -0
- ksadk/skills/models.py +26 -4
- ksadk/skills/package_store.py +186 -38
- ksadk/skills/runtime/agent.py +31 -6
- ksadk/skills/runtime/artifact_delivery.py +139 -0
- ksadk/skills/runtime/backends/e2b.py +98 -6
- ksadk/skills/runtime/backends/local.py +73 -8
- ksadk/skills/runtime/base.py +3 -0
- ksadk/skills/runtime/executor.py +2 -0
- ksadk/skills/runtime/loader.py +10 -2
- ksadk/skills/runtime/pinned.py +114 -0
- ksadk/skills/runtime/request.py +31 -0
- ksadk/skills/service_client.py +211 -24
- ksadk/studio/agent_lifecycle.py +26 -20
- ksadk/studio/api.py +714 -90
- ksadk/studio/api_catalog_routes.py +23 -0
- ksadk/studio/api_contracts.py +34 -1
- ksadk/studio/api_plugin_routes.py +911 -0
- ksadk/studio/api_resource_connections.py +183 -0
- ksadk/studio/attachment_store.py +187 -0
- ksadk/studio/authoring.py +10 -4
- ksadk/studio/authoring_coordinator.py +31 -16
- ksadk/studio/builder.py +199 -43
- ksadk/studio/cloud.py +346 -104
- ksadk/studio/cloud_shared_web.py +565 -0
- ksadk/studio/codex_agent_service.py +140 -27
- ksadk/studio/codex_builder.py +294 -16
- ksadk/studio/codex_credentials.py +90 -0
- ksadk/studio/codex_manifest.py +51 -4
- ksadk/studio/codex_plugin_store.py +746 -0
- ksadk/studio/codex_provider_build.py +231 -0
- ksadk/studio/codex_run.py +200 -29
- ksadk/studio/compatibility_report.py +456 -0
- ksadk/studio/compiler.py +84 -15
- ksadk/studio/contracts.py +249 -4
- ksadk/studio/dsh_application.py +137 -0
- ksadk/studio/dsh_capability_service.py +1107 -0
- ksadk/studio/dsh_models.py +59 -0
- ksadk/studio/dsh_provider_registration.py +1075 -0
- ksadk/studio/event_store.py +54 -6
- ksadk/studio/framework_run.py +37 -4
- ksadk/studio/hosted_kernel.py +89 -14
- ksadk/studio/mcp_runtime.py +11 -3
- ksadk/studio/model_client.py +2 -2
- ksadk/studio/operations.py +12 -2
- ksadk/studio/plugin_composition.py +468 -0
- ksadk/studio/plugin_kernel_adapter.py +28 -0
- ksadk/studio/plugin_runtime.py +831 -0
- ksadk/studio/resource_authority.py +637 -0
- ksadk/studio/resource_binding_validation.py +77 -0
- ksadk/studio/resource_build_admission.py +196 -0
- ksadk/studio/resource_build_materializer.py +149 -0
- ksadk/studio/resource_catalog.py +149 -3
- ksadk/studio/resource_connections.py +220 -0
- ksadk/studio/run_service.py +1144 -96
- ksadk/studio/runtime_source.py +24 -8
- ksadk/studio/scheduler_assistant.py +317 -0
- ksadk/studio/scheduler_runtime.py +383 -0
- ksadk/studio/scheduler_service.py +214 -0
- ksadk/studio/service.py +1131 -95
- ksadk/studio/shared_web.py +610 -87
- ksadk/studio/soul.py +52 -0
- ksadk/studio/static/assets/CodeBlock-DCUUY0PL-BLjA7kbS.js +41 -0
- ksadk/studio/static/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- ksadk/studio/static/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- ksadk/studio/static/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- ksadk/studio/static/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- ksadk/studio/static/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- ksadk/studio/static/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- ksadk/studio/static/assets/MathMessageMarkdown-CBcDrAw--BEOyPC3w.css +1 -0
- ksadk/studio/static/assets/MathMessageMarkdown-CBcDrAw--CUYIXwgI.js +8 -0
- ksadk/studio/static/assets/MermaidBlock-DBFTztfQ-BTYKWEbD.js +44 -0
- ksadk/studio/static/assets/PrismRenderer-wiXRHURw.js +3 -0
- ksadk/studio/static/assets/abnfDiagram-VCTEODGH-CLETGjKq.js +1 -0
- ksadk/studio/static/assets/arc-Pry-7G1_.js +1 -0
- ksadk/studio/static/assets/architecture-7GRP2DOG-hXMiO_AU.js +1 -0
- ksadk/studio/static/assets/architectureDiagram-5GKGNRK7-B5EQysk6.js +36 -0
- ksadk/studio/static/assets/array-BifhSqXX.js +1 -0
- ksadk/studio/static/assets/blockDiagram-I7D4REHJ-CFmPl1de.js +129 -0
- ksadk/studio/static/assets/c4Diagram-7LVT6UL2-BRrGu8qt.js +38 -0
- ksadk/studio/static/assets/channel-BqO-gtEw.js +1 -0
- ksadk/studio/static/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- ksadk/studio/static/assets/chunk-4HAMMTFA-D220vUtq.js +62 -0
- ksadk/studio/static/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- ksadk/studio/static/assets/chunk-75Z2AOVW-C8lLv_qc.js +2 -0
- ksadk/studio/static/assets/chunk-DU6HZSFF-C4DtVpCu.js +128 -0
- ksadk/studio/static/assets/chunk-F27PBJKO-Cpw14SNG.js +1 -0
- ksadk/studio/static/assets/chunk-FOHPRMQF-DHwB1DNv.js +161 -0
- ksadk/studio/static/assets/chunk-GMAD6QVW-DiQA-u2N.js +72 -0
- ksadk/studio/static/assets/chunk-GVQU2GXP-DUdNBUCi.js +1 -0
- ksadk/studio/static/assets/chunk-IMKFNOWR-BSlbjT_b.js +231 -0
- ksadk/studio/static/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- ksadk/studio/static/assets/chunk-L3NEJ4N5-Db8Ab22W.js +1 -0
- ksadk/studio/static/assets/chunk-OSK3NFVY-M2m6G3j4.js +10 -0
- ksadk/studio/static/assets/chunk-P2QGCYS3-DezaQxiK.js +1 -0
- ksadk/studio/static/assets/chunk-POPQ4Y6H-DOpufJ3t.js +1 -0
- ksadk/studio/static/assets/chunk-PWAF6VOD-CfLb1gSc.js +1 -0
- ksadk/studio/static/assets/chunk-SHT3W25Y-DAyIVp5H.js +168 -0
- ksadk/studio/static/assets/chunk-SVP7TREG-DulomOrS.js +88 -0
- ksadk/studio/static/assets/chunk-TICWLB2K-bHJYoflj.js +206 -0
- ksadk/studio/static/assets/chunk-XXDRQBXY-7PcdR2B1.js +1 -0
- ksadk/studio/static/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- ksadk/studio/static/assets/classDiagram-ZZMXUADV-D_bW8JjA.js +1 -0
- ksadk/studio/static/assets/classDiagram-v2-VYDZK3BY-D_bW8JjA.js +1 -0
- ksadk/studio/static/assets/cose-bilkent-JH36ORCC-snL88wkX.js +1 -0
- ksadk/studio/static/assets/cynefin-OW5HDTMX-Bd1YhRo1.js +1 -0
- ksadk/studio/static/assets/cynefinDiagram-5FMLGOSQ-BBrIG_mI.js +62 -0
- ksadk/studio/static/assets/cytoscape.esm-CGd-uY3x.js +321 -0
- ksadk/studio/static/assets/dagre-GXQ25YYZ-DtF1nGdY.js +4 -0
- ksadk/studio/static/assets/dagre-PrKaheQc.js +1 -0
- ksadk/studio/static/assets/defaultLocale-BFoDCU3G.js +1 -0
- ksadk/studio/static/assets/diagram-S7CK7UJ4-0BZ98mya.js +30 -0
- ksadk/studio/static/assets/diagram-UQ7AKVKN-6mLKEo6L.js +41 -0
- ksadk/studio/static/assets/diagram-VSXAHHWV-CJBIaiZ2.js +3 -0
- ksadk/studio/static/assets/diagram-VX7I27RA-BohLEE1C.js +24 -0
- ksadk/studio/static/assets/diagram-Z3DM3KII-D8KIGonG.js +24 -0
- ksadk/studio/static/assets/dist-v5Q1xZ2K.js +1 -0
- ksadk/studio/static/assets/ebnfDiagram-PWID7BFC-C99HU61t.js +1 -0
- ksadk/studio/static/assets/erDiagram-RLTQ6QDP-DLGry2Ap.js +99 -0
- ksadk/studio/static/assets/eventmodeling-NTZA5JFV-B1_5Ac8j.js +1 -0
- ksadk/studio/static/assets/flowDiagram-HODETNUW-DD5hmicn.js +1 -0
- ksadk/studio/static/assets/ganttDiagram-EL5Y4UJY-BPJrVLSG.js +292 -0
- ksadk/studio/static/assets/gitGraph-4MIJSDKK-Cy_ZQBGi.js +1 -0
- ksadk/studio/static/assets/gitGraphDiagram-WWUBYQGX-CZCUz4MT.js +106 -0
- ksadk/studio/static/assets/graphlib-DS17s2tU.js +1 -0
- ksadk/studio/static/assets/index-CeHL9ARV.css +2 -0
- ksadk/studio/static/assets/index-D9QEcVpL.js +320 -0
- ksadk/studio/static/assets/info-A6RAGUB7-DBzDQB_I.js +1 -0
- ksadk/studio/static/assets/infoDiagram-27XIBGKW-B-sq07Hi.js +2 -0
- ksadk/studio/static/assets/init-C-OQMol4.js +1 -0
- ksadk/studio/static/assets/ishikawaDiagram-5VMMS53U-CljI2wyf.js +70 -0
- ksadk/studio/static/assets/journeyDiagram-3NMN7TZE-D50Fo2sL.js +139 -0
- ksadk/studio/static/assets/kanban-definition-UXKFOSKX-DimfOTam.js +89 -0
- ksadk/studio/static/assets/katex-DhON-x74.js +257 -0
- ksadk/studio/static/assets/line-CX5BOOUP.js +1 -0
- ksadk/studio/static/assets/linear-BCxN9JLv.js +1 -0
- ksadk/studio/static/assets/mermaid-parser.core-BdCz8fkS.js +7 -0
- ksadk/studio/static/assets/mindmap-definition-YA3MSWOX-Bizzqy5R.js +96 -0
- ksadk/studio/static/assets/ordinal-BDEzSJ7C.js +1 -0
- ksadk/studio/static/assets/packet-AYTQ26CC-gPln-_kG.js +1 -0
- ksadk/studio/static/assets/path-fybaL0A-.js +1 -0
- ksadk/studio/static/assets/pegDiagram-XKGWAZYB-Dy3fB-gW.js +1 -0
- ksadk/studio/static/assets/pie-WAS4IAKB-qZdHMr7B.js +1 -0
- ksadk/studio/static/assets/pieDiagram-E7YTZNPT-B9mrFSDF.js +39 -0
- ksadk/studio/static/assets/quadrantDiagram-AXDQQJYC-NzUfCbMR.js +7 -0
- ksadk/studio/static/assets/radar-RG4KPBEZ-BZlnaea9.js +1 -0
- ksadk/studio/static/assets/railroad-74A4TZTK-Ce3__H9c.js +1 -0
- ksadk/studio/static/assets/railroad-abnf-HS5TGJTU-DqQn7EzD.js +1 -0
- ksadk/studio/static/assets/railroad-ebnf-LZEXJU2U-B55kCA8F.js +1 -0
- ksadk/studio/static/assets/railroad-peg-WCYAUIDC-DfQnvkHd.js +1 -0
- ksadk/studio/static/assets/railroadDiagram-O6MQD6OU-DnhMjZCk.js +1 -0
- ksadk/studio/static/assets/requirementDiagram-BXWQKSXE-BF3d103U.js +84 -0
- ksadk/studio/static/assets/rolldown-runtime-Dy4uBu1J-DK3Fl9T5.js +1 -0
- ksadk/studio/static/assets/rough.esm-Dy-Kn_BL.js +1 -0
- ksadk/studio/static/assets/sankeyDiagram-P5KCCOFB-Bo-JTwt0.js +40 -0
- ksadk/studio/static/assets/sequenceDiagram-WJ2MYXX4-Dh4wZtUm.js +162 -0
- ksadk/studio/static/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
- ksadk/studio/static/assets/src-SFn9St9H.js +1 -0
- ksadk/studio/static/assets/stateDiagram-D77RDMKH-DH774G6d.js +1 -0
- ksadk/studio/static/assets/stateDiagram-v2-MP3YSRHH-DZvVWPBo.js +1 -0
- ksadk/studio/static/assets/swimlanes-42K2YHIH-Bl13OvTX.js +1 -0
- ksadk/studio/static/assets/swimlanesDiagram-VR7AAH4N-BnFOTALJ.js +8 -0
- ksadk/studio/static/assets/timeline-definition-24CTP7MA-DxmSSjRB.js +120 -0
- ksadk/studio/static/assets/treeView-Q6P3EWNA-D5Nn9Swz.js +1 -0
- ksadk/studio/static/assets/treemap-WGGIJYW6-CgHgnQhE.js +1 -0
- ksadk/studio/static/assets/vennDiagram-4TSXK5OY-B9QEXcJq.js +34 -0
- ksadk/studio/static/assets/wardley-WFR3VGLG-DXrK2RRY.js +1 -0
- ksadk/studio/static/assets/wardleyDiagram-VM6X3IG4-Ba1AOWoe.js +78 -0
- ksadk/studio/static/assets/xychartDiagram-S5SC5T6Z-Cr5pt5Y-.js +7 -0
- ksadk/studio/static/index.html +2 -2
- ksadk/studio/validator.py +1 -1
- ksadk/studio/workspace.py +1 -0
- ksadk/version.py +1 -1
- ksadk_runtime_common/workspace_files/path_utils.py +41 -0
- agentengine_sdk_python-0.8.2.dist-info/RECORD +0 -778
- ksadk/server/static/assets/architecture-7GRP2DOG-DjKratdf.js +0 -1
- ksadk/server/static/assets/channel-4cQHKtx1.js +0 -1
- ksadk/server/static/assets/chunk-2Q5K7J3B-DmgWkESh.js +0 -1
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js +0 -1
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js +0 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-DjEM48Qp.js +0 -1
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js +0 -1
- ksadk/server/static/assets/flowDiagram-A5DVABFB-BBKL0x3P.js +0 -1
- ksadk/server/static/assets/gitGraph-4MIJSDKK-Dw63mrhw.js +0 -1
- ksadk/server/static/assets/index-8ipRcQ-M.js +0 -240
- ksadk/server/static/assets/index-ByFCqjlh.css +0 -2
- ksadk/server/static/assets/info-A6RAGUB7-B6iAblII.js +0 -1
- ksadk/server/static/assets/packet-AYTQ26CC-BOYAipuq.js +0 -1
- ksadk/server/static/assets/pie-WAS4IAKB-Ctq0Kbku.js +0 -1
- ksadk/server/static/assets/radar-RG4KPBEZ-DN0-ul_0.js +0 -1
- ksadk/server/static/assets/railroad-74A4TZTK-C6cC_to0.js +0 -1
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-BimjIuRc.js +0 -1
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-CvY65ABq.js +0 -1
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-D72Iq_Tv.js +0 -1
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BgQY03nz.js +0 -1
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js +0 -8
- ksadk/server/static/assets/treeView-Q6P3EWNA-BMpO0wsB.js +0 -1
- ksadk/server/static/assets/treemap-WGGIJYW6-Et0aqzU3.js +0 -1
- ksadk/server/static/assets/wardley-WFR3VGLG-CbY0mhpl.js +0 -1
- ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js +0 -3
- ksadk/studio/static/assets/index-BLpcdrgW.css +0 -1
- ksadk/studio/static/assets/index-CYekR2Xv.js +0 -260
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.4.dist-info}/WHEEL +0 -0
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.4.dist-info}/entry_points.txt +0 -0
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.4.dist-info}/licenses/LICENSE +0 -0
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.4.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""Identity-aware reducer for a ConversationItem surface.
|
|
2
|
+
|
|
3
|
+
This reducer deliberately does not deduplicate by author or text. Providers
|
|
4
|
+
may emit the same content in two different items, and both are user-visible
|
|
5
|
+
truth. Reconnect de-duplication is limited to a previously applied source
|
|
6
|
+
event for the same item.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from collections import OrderedDict
|
|
12
|
+
|
|
13
|
+
from ksadk.conversations.contracts import ConversationItem
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ConversationItemReducer:
|
|
17
|
+
"""Apply append/replace/completed operations while preserving item identity."""
|
|
18
|
+
|
|
19
|
+
def __init__(self) -> None:
|
|
20
|
+
self._items: OrderedDict[str, ConversationItem] = OrderedDict()
|
|
21
|
+
self._source_events: set[tuple[str, str]] = set()
|
|
22
|
+
|
|
23
|
+
def apply(self, item: ConversationItem) -> bool:
|
|
24
|
+
"""Apply one item operation and return whether this changed the view."""
|
|
25
|
+
|
|
26
|
+
keys = {(item.item_id, source_id) for source_id in item.source_event_ids}
|
|
27
|
+
if keys and keys.issubset(self._source_events):
|
|
28
|
+
return False
|
|
29
|
+
|
|
30
|
+
existing = self._items.get(item.item_id)
|
|
31
|
+
if existing is not None and _terminal(existing) and not _terminal(item):
|
|
32
|
+
# A reconnect may replay an older delta after the terminal snapshot
|
|
33
|
+
# has already arrived on the live connection. Remember its event
|
|
34
|
+
# identity, but never regress a completed item back to streaming or
|
|
35
|
+
# append the stale delta a second time.
|
|
36
|
+
self._source_events.update(keys)
|
|
37
|
+
return False
|
|
38
|
+
if existing is None:
|
|
39
|
+
merged = item
|
|
40
|
+
elif item.operation == "append":
|
|
41
|
+
merged = item.model_copy(
|
|
42
|
+
update={
|
|
43
|
+
"payload": _append_payload(existing.payload, item.payload),
|
|
44
|
+
"source_event_ids": _merge_sources(
|
|
45
|
+
existing.source_event_ids,
|
|
46
|
+
item.source_event_ids,
|
|
47
|
+
),
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
else:
|
|
51
|
+
merged = item.model_copy(
|
|
52
|
+
update={
|
|
53
|
+
"source_event_ids": _merge_sources(
|
|
54
|
+
existing.source_event_ids,
|
|
55
|
+
item.source_event_ids,
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
self._items[item.item_id] = merged
|
|
60
|
+
self._source_events.update(keys)
|
|
61
|
+
return True
|
|
62
|
+
|
|
63
|
+
def items(self) -> tuple[ConversationItem, ...]:
|
|
64
|
+
"""Return presentation items in first-seen order."""
|
|
65
|
+
|
|
66
|
+
return tuple(self._items.values())
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _append_payload(
|
|
70
|
+
existing: dict[str, object],
|
|
71
|
+
update: dict[str, object],
|
|
72
|
+
) -> dict[str, object]:
|
|
73
|
+
merged = dict(existing)
|
|
74
|
+
for key, value in update.items():
|
|
75
|
+
previous = merged.get(key)
|
|
76
|
+
if key == "text" and isinstance(previous, str) and isinstance(value, str):
|
|
77
|
+
merged[key] = previous + value
|
|
78
|
+
elif key in {"data", "operations"} and isinstance(previous, list) and isinstance(
|
|
79
|
+
value, list
|
|
80
|
+
):
|
|
81
|
+
merged[key] = [*previous, *value]
|
|
82
|
+
else:
|
|
83
|
+
merged[key] = value
|
|
84
|
+
return merged
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _merge_sources(
|
|
88
|
+
current: tuple[str, ...],
|
|
89
|
+
incoming: tuple[str, ...],
|
|
90
|
+
) -> tuple[str, ...]:
|
|
91
|
+
return tuple(dict.fromkeys((*current, *incoming)))
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def _terminal(item: ConversationItem) -> bool:
|
|
95
|
+
return item.lifecycle in {"completed", "failed"}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
__all__ = ["ConversationItemReducer"]
|
|
@@ -123,6 +123,7 @@ async def invoke_conversation_once(
|
|
|
123
123
|
agent_system: str = "",
|
|
124
124
|
agent_task: str = "",
|
|
125
125
|
prompt_integration_mode: str = "",
|
|
126
|
+
resume_lifecycle_prepared: bool = False,
|
|
126
127
|
) -> tuple[str, dict[str, Any]]:
|
|
127
128
|
"""非流式 turn 编排入口。
|
|
128
129
|
|
|
@@ -159,6 +160,7 @@ async def invoke_conversation_once(
|
|
|
159
160
|
agent_system=agent_system,
|
|
160
161
|
agent_task=agent_task,
|
|
161
162
|
prompt_integration_mode=prompt_integration_mode,
|
|
163
|
+
resume_lifecycle_prepared=resume_lifecycle_prepared,
|
|
162
164
|
)
|
|
163
165
|
# prepared 之后的 run_status 写入复用 prepared 的 mode/trigger
|
|
164
166
|
run_mode = prepared.run_mode
|
|
@@ -184,7 +186,10 @@ async def invoke_conversation_once(
|
|
|
184
186
|
user_input=prepared.user_input,
|
|
185
187
|
)
|
|
186
188
|
prepared.memory_recall_events = ambient_contexts.get("memory_recall_events", [])
|
|
189
|
+
from ksadk.session_context import SessionContext
|
|
190
|
+
|
|
187
191
|
runtime_context = PlatformInvocationContext(
|
|
192
|
+
session=SessionContext.from_payload(prepared.session_context),
|
|
188
193
|
agent_id=agent_id,
|
|
189
194
|
user_id=user_id,
|
|
190
195
|
account_id=str(account_id or ""),
|
|
@@ -49,6 +49,7 @@ from ksadk.conversations.runtime_metadata import (
|
|
|
49
49
|
)
|
|
50
50
|
from ksadk.conversations.runtime_observability import _latest_deferred_tool_names
|
|
51
51
|
from ksadk.conversations.runtime_payloads import PreparedConversationTurn
|
|
52
|
+
from ksadk.session_context import split_session_context
|
|
52
53
|
from ksadk.conversations.runtime_persistence import (
|
|
53
54
|
append_conversation_event,
|
|
54
55
|
append_run_resume_event,
|
|
@@ -110,6 +111,7 @@ async def build_run_input(
|
|
|
110
111
|
deployment_mode: str = "local",
|
|
111
112
|
agent_max_input_tokens: int | None = None,
|
|
112
113
|
agent_reserve_output_tokens: int | None = None,
|
|
114
|
+
resume_lifecycle_prepared: bool = False,
|
|
113
115
|
) -> PreparedConversationTurn:
|
|
114
116
|
"""构建一次 turn 的标准运行输入,并在进入模型前做上下文投影/压缩。
|
|
115
117
|
|
|
@@ -138,7 +140,7 @@ async def build_run_input(
|
|
|
138
140
|
model,
|
|
139
141
|
model_metadata=model_metadata,
|
|
140
142
|
)
|
|
141
|
-
normalized_request_metadata =
|
|
143
|
+
session_context, normalized_request_metadata = split_session_context(request_metadata)
|
|
142
144
|
normalized_custom_metadata = dict(custom_metadata or {})
|
|
143
145
|
policy_model = model or os.getenv("OPENAI_MODEL_NAME") or os.getenv("MODEL_NAME")
|
|
144
146
|
normalized_model_options = {
|
|
@@ -170,39 +172,37 @@ async def build_run_input(
|
|
|
170
172
|
if resume_input is not None:
|
|
171
173
|
if not session_id:
|
|
172
174
|
raise ValueError("Responses resume input requires session_id")
|
|
173
|
-
existing_events = await service.get_events(resolved_session_id)
|
|
174
175
|
normalized_resume_input = dict(resume_input)
|
|
175
176
|
if _is_checkpoint_resume_input(normalized_resume_input):
|
|
176
177
|
normalized_resume_input = _normalize_checkpoint_resume_input(normalized_resume_input)
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
run_trigger=RUN_TRIGGER_CHECKPOINT_RESUME,
|
|
201
|
-
)
|
|
178
|
+
if not resume_lifecycle_prepared:
|
|
179
|
+
await append_run_resume_event(
|
|
180
|
+
session_id=resolved_session_id,
|
|
181
|
+
author=agent_id,
|
|
182
|
+
run_id=str(normalized_resume_input["run_id"]),
|
|
183
|
+
checkpoint_id=str(normalized_resume_input["checkpoint_id"]),
|
|
184
|
+
resume_attempt_id=str(normalized_resume_input["resume_attempt_id"]),
|
|
185
|
+
framework=str(normalized_resume_input["framework"]),
|
|
186
|
+
framework_ref=normalized_resume_input["framework_ref"],
|
|
187
|
+
invocation_id=resolved_invocation_id,
|
|
188
|
+
session_service_provider=provider,
|
|
189
|
+
)
|
|
190
|
+
# run_resume 与 ActiveRunStatus 分属不同事件类型,因此补写 resuming。
|
|
191
|
+
await append_run_status_event(
|
|
192
|
+
session_id=resolved_session_id,
|
|
193
|
+
author=agent_id,
|
|
194
|
+
status="resuming",
|
|
195
|
+
invocation_id=resolved_invocation_id,
|
|
196
|
+
detail="checkpoint_resume",
|
|
197
|
+
session_service_provider=provider,
|
|
198
|
+
run_mode=caller_run_mode,
|
|
199
|
+
run_trigger=RUN_TRIGGER_CHECKPOINT_RESUME,
|
|
200
|
+
)
|
|
202
201
|
event_history = await service.get_events(resolved_session_id)
|
|
203
202
|
history = build_history_from_events(event_history)
|
|
204
203
|
responses_history = project_responses_history(event_history)
|
|
205
204
|
return PreparedConversationTurn(
|
|
205
|
+
session_context=session_context.to_payload(),
|
|
206
206
|
session_id=resolved_session_id,
|
|
207
207
|
invocation_id=resolved_invocation_id,
|
|
208
208
|
user_input="",
|
|
@@ -239,6 +239,7 @@ async def build_run_input(
|
|
|
239
239
|
provider_ref=provider_ref,
|
|
240
240
|
)
|
|
241
241
|
|
|
242
|
+
existing_events = await service.get_events(resolved_session_id)
|
|
242
243
|
is_approval_resume = _is_approval_resume_input(normalized_resume_input)
|
|
243
244
|
existing_tool_receipt_event = None
|
|
244
245
|
if is_approval_resume and not _has_pending_approval(existing_events):
|
|
@@ -319,6 +320,7 @@ async def build_run_input(
|
|
|
319
320
|
history = build_history_from_events(event_history)
|
|
320
321
|
responses_history = project_responses_history(event_history)
|
|
321
322
|
return PreparedConversationTurn(
|
|
323
|
+
session_context=session_context.to_payload(),
|
|
322
324
|
session_id=resolved_session_id,
|
|
323
325
|
invocation_id=resolved_invocation_id,
|
|
324
326
|
user_input=resume_text,
|
|
@@ -478,6 +480,7 @@ async def build_run_input(
|
|
|
478
480
|
working_state = _latest_checkpoint_working_state(event_history)
|
|
479
481
|
|
|
480
482
|
prepared = PreparedConversationTurn(
|
|
483
|
+
session_context=session_context.to_payload(),
|
|
481
484
|
session_id=resolved_session_id,
|
|
482
485
|
invocation_id=resolved_invocation_id,
|
|
483
486
|
user_id=resolved_user_id,
|
|
@@ -185,6 +185,48 @@ def _parse_approval_arguments(value: Any) -> dict[str, Any]:
|
|
|
185
185
|
|
|
186
186
|
|
|
187
187
|
def _approval_decision_from_resume(resume_input: Mapping[str, Any]) -> dict[str, Any]:
|
|
188
|
+
# ksadk_resume + decisions 协议(HumanInTheLoopMiddleware):
|
|
189
|
+
# resume_input.value.decisions[0].type 为 approve/edit/reject。
|
|
190
|
+
value = resume_input.get("value")
|
|
191
|
+
if isinstance(value, Mapping):
|
|
192
|
+
decisions = value.get("decisions")
|
|
193
|
+
if isinstance(decisions, list) and decisions:
|
|
194
|
+
first = decisions[0]
|
|
195
|
+
if isinstance(first, Mapping):
|
|
196
|
+
decision_type = str(first.get("type") or "").strip().lower()
|
|
197
|
+
if decision_type in {"approve", "edit"}:
|
|
198
|
+
approved = True
|
|
199
|
+
if decision_type == "edit":
|
|
200
|
+
# edit 带修改后的参数;记录到 decision 供下游使用。
|
|
201
|
+
edited = first.get("edited_action")
|
|
202
|
+
if isinstance(edited, Mapping):
|
|
203
|
+
return {
|
|
204
|
+
"approved": True,
|
|
205
|
+
"approval_request_id": str(
|
|
206
|
+
resume_input.get("approval_request_id")
|
|
207
|
+
or resume_input.get("interrupt_id")
|
|
208
|
+
or resume_input.get("id")
|
|
209
|
+
or ""
|
|
210
|
+
),
|
|
211
|
+
"edited_action": dict(edited),
|
|
212
|
+
}
|
|
213
|
+
elif decision_type in {"reject", "respond"}:
|
|
214
|
+
approved = False
|
|
215
|
+
else:
|
|
216
|
+
approved = True
|
|
217
|
+
decision = {
|
|
218
|
+
"approved": approved,
|
|
219
|
+
"approval_request_id": str(
|
|
220
|
+
resume_input.get("approval_request_id")
|
|
221
|
+
or resume_input.get("interrupt_id")
|
|
222
|
+
or resume_input.get("id")
|
|
223
|
+
or ""
|
|
224
|
+
),
|
|
225
|
+
}
|
|
226
|
+
message = first.get("message") or first.get("feedback")
|
|
227
|
+
if message is not None:
|
|
228
|
+
decision["reason"] = str(message)
|
|
229
|
+
return decision
|
|
188
230
|
if "approve" in resume_input:
|
|
189
231
|
approved = bool(resume_input.get("approve"))
|
|
190
232
|
elif "approved" in resume_input:
|
|
@@ -624,7 +666,11 @@ def _extract_agentengine_metadata(result: Mapping[str, Any] | None) -> dict[str,
|
|
|
624
666
|
agentengine = metadata.get("agentengine")
|
|
625
667
|
if not isinstance(agentengine, Mapping):
|
|
626
668
|
return {}
|
|
627
|
-
return {
|
|
669
|
+
return {
|
|
670
|
+
"agentengine": {
|
|
671
|
+
key: value for key, value in agentengine.items() if key != "session_context"
|
|
672
|
+
}
|
|
673
|
+
}
|
|
628
674
|
|
|
629
675
|
|
|
630
676
|
def _checkpoint_event_args_from_agentengine_metadata(
|
|
@@ -682,7 +728,9 @@ def _merge_agentengine_metadata(
|
|
|
682
728
|
agentengine = metadata.get("agentengine")
|
|
683
729
|
if not isinstance(agentengine, Mapping):
|
|
684
730
|
continue
|
|
685
|
-
next_agentengine =
|
|
731
|
+
next_agentengine = {
|
|
732
|
+
key: value for key, value in agentengine.items() if key != "session_context"
|
|
733
|
+
}
|
|
686
734
|
merged.update(next_agentengine)
|
|
687
735
|
framework_ref = agentengine.get("framework_ref")
|
|
688
736
|
if isinstance(framework_ref, Mapping):
|
|
@@ -136,6 +136,7 @@ async def _iter_conversation_turn_events(
|
|
|
136
136
|
agent_system: str = "",
|
|
137
137
|
agent_task: str = "",
|
|
138
138
|
prompt_integration_mode: str = "",
|
|
139
|
+
resume_lifecycle_prepared: bool = False,
|
|
139
140
|
) -> AsyncIterator[dict[str, Any]]:
|
|
140
141
|
"""Internal semantic event stream shared by protocol serializers."""
|
|
141
142
|
provider = session_service_provider or resolve_session_service
|
|
@@ -198,6 +199,7 @@ async def _iter_conversation_turn_events(
|
|
|
198
199
|
agent_system=agent_system,
|
|
199
200
|
agent_task=agent_task,
|
|
200
201
|
prompt_integration_mode=prompt_integration_mode,
|
|
202
|
+
resume_lifecycle_prepared=resume_lifecycle_prepared,
|
|
201
203
|
)
|
|
202
204
|
# prepared 之后的 run_status 写入复用 prepared 的 mode/trigger
|
|
203
205
|
run_mode = prepared.run_mode
|
|
@@ -224,7 +226,10 @@ async def _iter_conversation_turn_events(
|
|
|
224
226
|
user_input=prepared.user_input,
|
|
225
227
|
)
|
|
226
228
|
prepared.memory_recall_events = ambient_contexts.get("memory_recall_events", [])
|
|
229
|
+
from ksadk.session_context import SessionContext
|
|
230
|
+
|
|
227
231
|
runtime_context = PlatformInvocationContext(
|
|
232
|
+
session=SessionContext.from_payload(prepared.session_context),
|
|
228
233
|
agent_id=agent_id,
|
|
229
234
|
user_id=user_id,
|
|
230
235
|
account_id=str(account_id or ""),
|
|
@@ -39,6 +39,7 @@ async def stream_conversation_turn(
|
|
|
39
39
|
invocation_id: Optional[str] = None,
|
|
40
40
|
session_service_provider: Callable[[], Any] | None = None,
|
|
41
41
|
run_mode: str = RUN_MODE_FOREGROUND,
|
|
42
|
+
resume_lifecycle_prepared: bool = False,
|
|
42
43
|
) -> AsyncIterator[str]:
|
|
43
44
|
"""Legacy ksadk response SSE stream used by hosted chat and chat-completions."""
|
|
44
45
|
events = _iter_conversation_turn_events(
|
|
@@ -60,6 +61,7 @@ async def stream_conversation_turn(
|
|
|
60
61
|
invocation_id=invocation_id,
|
|
61
62
|
session_service_provider=session_service_provider,
|
|
62
63
|
run_mode=run_mode,
|
|
64
|
+
resume_lifecycle_prepared=resume_lifecycle_prepared,
|
|
63
65
|
)
|
|
64
66
|
async for chunk in _stream_conversation_semantic_events(
|
|
65
67
|
events=events,
|
|
@@ -151,7 +153,7 @@ async def _stream_conversation_semantic_events(
|
|
|
151
153
|
yield _response_sse(
|
|
152
154
|
"response.tool_call",
|
|
153
155
|
{
|
|
154
|
-
"name": event.get("name"),
|
|
156
|
+
"name": event.get("tool_name") or event.get("name"),
|
|
155
157
|
"args": event.get("args", {}),
|
|
156
158
|
"run_id": event.get("run_id"),
|
|
157
159
|
"stage": event.get("stage"),
|
|
@@ -164,7 +166,7 @@ async def _stream_conversation_semantic_events(
|
|
|
164
166
|
yield _response_sse(
|
|
165
167
|
"response.tool_result",
|
|
166
168
|
{
|
|
167
|
-
"name": event.get("name"),
|
|
169
|
+
"name": event.get("tool_name") or event.get("name"),
|
|
168
170
|
"output": event.get("output", ""),
|
|
169
171
|
"run_id": event.get("run_id"),
|
|
170
172
|
},
|
|
@@ -174,7 +176,7 @@ async def _stream_conversation_semantic_events(
|
|
|
174
176
|
f"response.ksadk.{event_type}",
|
|
175
177
|
{
|
|
176
178
|
"type": event_type,
|
|
177
|
-
"name": event.get("name"),
|
|
179
|
+
"name": event.get("tool_name") or event.get("name"),
|
|
178
180
|
"args": event.get("args", {}),
|
|
179
181
|
"output": event.get("output", ""),
|
|
180
182
|
"run_id": event.get("run_id"),
|
|
@@ -228,6 +230,7 @@ async def stream_responses_conversation_turn(
|
|
|
228
230
|
invocation_id: Optional[str] = None,
|
|
229
231
|
session_service_provider: Callable[[], Any] | None = None,
|
|
230
232
|
run_mode: str = RUN_MODE_FOREGROUND,
|
|
233
|
+
resume_lifecycle_prepared: bool = False,
|
|
231
234
|
) -> AsyncIterator[str]:
|
|
232
235
|
"""OpenAI Responses-style SSE stream."""
|
|
233
236
|
response_id = f"resp_{uuid.uuid4().hex}"
|
|
@@ -476,12 +479,14 @@ async def _stream_responses_semantic_events(
|
|
|
476
479
|
call_id = str(event.get("run_id") or f"call_{uuid.uuid4().hex[:12]}")
|
|
477
480
|
item_id = f"fc_{uuid.uuid4().hex[:12]}"
|
|
478
481
|
call_output_index = _next_output_index()
|
|
482
|
+
# tool_name 是 runner stream 的字段名;name 用于向后兼容旧事件源。
|
|
483
|
+
tool_name = event.get("tool_name") or event.get("name") or "unknown"
|
|
479
484
|
item = {
|
|
480
485
|
"id": item_id,
|
|
481
486
|
"type": "function_call",
|
|
482
487
|
"status": "in_progress",
|
|
483
488
|
"call_id": call_id,
|
|
484
|
-
"name":
|
|
489
|
+
"name": tool_name,
|
|
485
490
|
"arguments": "",
|
|
486
491
|
}
|
|
487
492
|
yield _response_sse(
|
|
@@ -505,7 +510,7 @@ async def _stream_responses_semantic_events(
|
|
|
505
510
|
"response.ksadk.tool_call",
|
|
506
511
|
{
|
|
507
512
|
"type": "tool_call",
|
|
508
|
-
"name":
|
|
513
|
+
"name": tool_name,
|
|
509
514
|
"args": event.get("args", {}),
|
|
510
515
|
"run_id": event.get("run_id"),
|
|
511
516
|
"stage": event.get("stage"),
|
|
@@ -520,7 +525,7 @@ async def _stream_responses_semantic_events(
|
|
|
520
525
|
yield _response_sse(
|
|
521
526
|
"response.ksadk.tool_result",
|
|
522
527
|
{
|
|
523
|
-
"name": event.get("name"),
|
|
528
|
+
"name": event.get("tool_name") or event.get("name"),
|
|
524
529
|
"output": event.get("output", ""),
|
|
525
530
|
"run_id": event.get("run_id"),
|
|
526
531
|
},
|
|
@@ -532,7 +537,7 @@ async def _stream_responses_semantic_events(
|
|
|
532
537
|
f"response.ksadk.{event_type}",
|
|
533
538
|
{
|
|
534
539
|
"type": event_type,
|
|
535
|
-
"name": event.get("name"),
|
|
540
|
+
"name": event.get("tool_name") or event.get("name"),
|
|
536
541
|
"args": event.get("args", {}),
|
|
537
542
|
"output": event.get("output", ""),
|
|
538
543
|
"run_id": event.get("run_id"),
|
|
@@ -569,6 +574,19 @@ async def _stream_responses_semantic_events(
|
|
|
569
574
|
"arguments": arguments,
|
|
570
575
|
"server_label": str(interrupt_info.get("server_label") or "ksadk"),
|
|
571
576
|
}
|
|
577
|
+
# 透传 HumanInTheLoopMiddleware 的可读描述和允许决策类型,
|
|
578
|
+
# 供前端审批卡展示操作说明和 edit 按钮。
|
|
579
|
+
if interrupt_info.get("description"):
|
|
580
|
+
approval_item["description"] = str(interrupt_info.get("description"))
|
|
581
|
+
review_configs = interrupt_info.get("review_configs")
|
|
582
|
+
if isinstance(review_configs, list) and review_configs:
|
|
583
|
+
first_review = review_configs[0]
|
|
584
|
+
if isinstance(first_review, Mapping):
|
|
585
|
+
allowed = first_review.get("allowed_decisions")
|
|
586
|
+
if isinstance(allowed, list) and allowed:
|
|
587
|
+
approval_item["allowed_decisions"] = [
|
|
588
|
+
str(d) for d in allowed
|
|
589
|
+
]
|
|
572
590
|
approval_output_index = _next_output_index()
|
|
573
591
|
yield _response_sse(
|
|
574
592
|
"response.output_item.added",
|
ksadk/deployment/env_forward.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""部署时的 shell 进程环境变量转发规则。
|
|
2
2
|
|
|
3
3
|
通用 deploy (serverless/kcf/kce) 与 hermes/openclaw deploy 共用同一套规则:
|
|
4
|
-
按前缀 (KSADK_/OPENAI_/KSYUN_/E2B_) + 显式 allowlist 转发 shell 环境变量,
|
|
4
|
+
按前缀 (KSADK_/OPENAI_/KSYUN_/E2B_/AGENTENGINE_/AGENTKIT_) + 显式 allowlist 转发 shell 环境变量,
|
|
5
5
|
denylist 中的 CLI/builders/configs/web 模块本地键不转发。
|
|
6
6
|
"""
|
|
7
7
|
|
|
@@ -37,7 +37,7 @@ DEPLOY_PROCESS_ENV_ALLOWLIST = frozenset(
|
|
|
37
37
|
"KSYUN_SECRET_KEY",
|
|
38
38
|
}
|
|
39
39
|
)
|
|
40
|
-
DEPLOY_PROCESS_ENV_PREFIXES = ("KSADK_", "OPENAI_", "KSYUN_", "E2B_")
|
|
40
|
+
DEPLOY_PROCESS_ENV_PREFIXES = ("KSADK_", "OPENAI_", "KSYUN_", "E2B_", "AGENTENGINE_", "AGENTKIT_")
|
|
41
41
|
DEPLOY_PROCESS_ENV_DENYLIST = frozenset(
|
|
42
42
|
{spec.name for spec in ENV_VAR_REGISTRY if spec.module in {"builders", "cli", "configs", "web"}}
|
|
43
43
|
) | frozenset(
|
|
@@ -370,6 +370,8 @@ def _project_item_completed(
|
|
|
370
370
|
if text_projection or event.item_kind in {"message", "reasoning"}:
|
|
371
371
|
return text_projection
|
|
372
372
|
if event.item_kind == "data":
|
|
373
|
+
if event.source.metadata.get("operation_batch") is True:
|
|
374
|
+
return ()
|
|
373
375
|
ref = _a2ui_surface_ref(event, context)
|
|
374
376
|
if ref is None:
|
|
375
377
|
return ()
|
|
@@ -8,15 +8,19 @@ from typing import Any, Literal, NoReturn, cast
|
|
|
8
8
|
|
|
9
9
|
from pydantic import JsonValue
|
|
10
10
|
|
|
11
|
-
_CODEX_ERROR_INFO_VALUES = frozenset(
|
|
11
|
+
_CODEX_ERROR_INFO_VALUES = frozenset(
|
|
12
|
+
"""
|
|
12
13
|
contextWindowExceeded sessionBudgetExceeded usageLimitExceeded serverOverloaded
|
|
13
14
|
cyberPolicy internalServerError unauthorized badRequest threadRollbackFailed
|
|
14
15
|
sandboxError other
|
|
15
|
-
""".split()
|
|
16
|
-
|
|
16
|
+
""".split()
|
|
17
|
+
)
|
|
18
|
+
_CODEX_ERROR_INFO_VARIANTS = frozenset(
|
|
19
|
+
"""
|
|
17
20
|
httpConnectionFailed responseStreamConnectionFailed responseStreamDisconnected
|
|
18
21
|
responseTooManyFailedAttempts activeTurnNotSteerable
|
|
19
|
-
""".split()
|
|
22
|
+
""".split()
|
|
23
|
+
)
|
|
20
24
|
|
|
21
25
|
|
|
22
26
|
class CodexMappingError(ValueError):
|
|
@@ -151,16 +155,23 @@ def _question_schema(
|
|
|
151
155
|
)
|
|
152
156
|
)
|
|
153
157
|
option_details.append(_json_value(option))
|
|
158
|
+
multiple = bool(question.get("isMultiSelect", False))
|
|
159
|
+
allow_other = bool(question.get("isOther", False))
|
|
154
160
|
property_schema: dict[str, JsonValue] = {
|
|
155
|
-
"type": "string",
|
|
161
|
+
"type": "array" if multiple else "string",
|
|
156
162
|
"title": header,
|
|
157
163
|
"description": prompt,
|
|
158
164
|
"x-codex-options": option_details,
|
|
159
165
|
"x-codex-is-secret": is_secret,
|
|
160
166
|
"x-codex-is-other": bool(question.get("isOther", False)),
|
|
161
167
|
}
|
|
162
|
-
|
|
163
|
-
|
|
168
|
+
value_schema: dict[str, JsonValue] = {"type": "string", "minLength": 1}
|
|
169
|
+
if labels and not allow_other:
|
|
170
|
+
value_schema["enum"] = cast(JsonValue, labels)
|
|
171
|
+
if multiple:
|
|
172
|
+
property_schema.update({"items": value_schema, "minItems": 1, "uniqueItems": True})
|
|
173
|
+
else:
|
|
174
|
+
property_schema.update(value_schema)
|
|
164
175
|
properties[question_id] = property_schema
|
|
165
176
|
required.append(question_id)
|
|
166
177
|
prompts.append(prompt)
|