agentengine-sdk-python 0.8.4__py3-none-any.whl → 0.8.5__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.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/METADATA +6 -3
- {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/RECORD +591 -365
- ksadk/_build_provenance.json +1 -1
- ksadk/_process.py +83 -0
- ksadk/_str_enum.py +17 -0
- ksadk/a2ui/core.py +3 -3
- ksadk/api/client.py +6 -0
- ksadk/builders/code_builder.py +38 -12
- ksadk/builders/framework_requirements.py +20 -2
- ksadk/cli/__init__.py +36 -0
- ksadk/cli/cmd_config.py +4 -4
- ksadk/cli/cmd_create.py +12 -12
- ksadk/cli/cmd_hermes.py +24 -2
- ksadk/cli/cmd_invoke.py +28 -5
- ksadk/cli/cmd_openclaw.py +26 -1
- ksadk/cli/cmd_plugin.py +70 -12
- ksadk/cli/cmd_studio.py +64 -16
- ksadk/cli/openclaw_env.py +1 -1
- ksadk/cli/resource_common.py +26 -0
- ksadk/codex/client.py +3 -2
- ksadk/configs/__init__.py +1 -1
- ksadk/configs/env_registry.py +125 -31
- ksadk/configs/env_registry_studio.py +86 -0
- ksadk/configs/global_config.py +1 -1
- ksadk/configs/settings.py +3 -3
- ksadk/connector/__init__.py +17 -0
- ksadk/connector/channel.py +477 -0
- ksadk/context_engine/capabilities.py +52 -4
- ksadk/conversations/attachment_storage.py +10 -3
- ksadk/conversations/attachments.py +16 -5
- ksadk/conversations/message_projection.py +23 -32
- ksadk/conversations/normalize.py +28 -10
- ksadk/conversations/runtime_baseline.py +37 -0
- ksadk/conversations/runtime_invocation.py +17 -4
- ksadk/conversations/runtime_observability.py +39 -10
- ksadk/conversations/runtime_payloads.py +8 -0
- ksadk/conversations/runtime_persistence.py +105 -9
- ksadk/conversations/runtime_preparation.py +13 -7
- ksadk/conversations/runtime_stream_events.py +29 -35
- ksadk/conversations/runtime_streaming.py +8 -0
- ksadk/events/adapters/_codex_items.py +16 -8
- ksadk/events/adapters/_langgraph_support.py +34 -0
- ksadk/events/session_event.py +2 -2
- ksadk/harness/__init__.py +14 -0
- ksadk/harness/app.py +11 -0
- ksadk/harness/artifact_store.py +213 -0
- ksadk/harness/capabilities.py +115 -0
- ksadk/harness/capability_runtime.py +237 -0
- ksadk/harness/closure_contract.py +92 -0
- ksadk/harness/compaction_record.py +122 -0
- ksadk/harness/compiler.py +284 -0
- ksadk/harness/conformance/__init__.py +33 -0
- ksadk/harness/conformance/contract.py +506 -0
- ksadk/harness/conformance/fixtures.py +102 -0
- ksadk/harness/context_engine.py +403 -0
- ksadk/harness/context_maintenance.py +259 -0
- ksadk/harness/context_manifest.py +188 -0
- ksadk/harness/context_tuning.py +168 -0
- ksadk/harness/draft_runtime.py +322 -0
- ksadk/harness/engine/__init__.py +40 -0
- ksadk/harness/engine/base.py +122 -0
- ksadk/harness/engine/budgets.py +108 -0
- ksadk/harness/engine/capability_declarations.py +59 -0
- ksadk/harness/engine/completion_guard.py +42 -0
- ksadk/harness/engine/context_pipeline.py +579 -0
- ksadk/harness/engine/graph_builder.py +859 -0
- ksadk/harness/engine/langgraph.py +931 -0
- ksadk/harness/engine/mcp_disclosure.py +750 -0
- ksadk/harness/engine/policy_runtime.py +70 -0
- ksadk/harness/engine/postgres_checkpointer.py +63 -0
- ksadk/harness/engine/run_control_bridge.py +80 -0
- ksadk/harness/engine/run_types.py +88 -0
- ksadk/harness/engine/skill_disclosure.py +189 -0
- ksadk/harness/engine/spans.py +41 -0
- ksadk/harness/engine/subagents.py +343 -0
- ksadk/harness/engine/thread_ids.py +112 -0
- ksadk/harness/engine/tool_dispatch.py +144 -0
- ksadk/harness/event_tree.py +212 -0
- ksadk/harness/events.py +461 -0
- ksadk/harness/execution_policy.py +94 -0
- ksadk/harness/insights.py +210 -0
- ksadk/harness/lifecycle.py +578 -0
- ksadk/harness/lifecycle_conformance.py +233 -0
- ksadk/harness/lifecycle_local_plane.py +104 -0
- ksadk/harness/loop/__init__.py +44 -0
- ksadk/harness/loop/reason.py +454 -0
- ksadk/harness/loop/tools.py +762 -0
- ksadk/harness/managed_runtime.py +884 -0
- ksadk/harness/mcp_matrix.py +474 -0
- ksadk/harness/mcp_runtime.py +471 -0
- ksadk/harness/memory_consolidation.py +157 -0
- ksadk/harness/memory_loop.py +156 -0
- ksadk/harness/memory_runtime.py +541 -0
- ksadk/harness/metrics.py +90 -0
- ksadk/harness/model_capability.py +253 -0
- ksadk/harness/model_provider.py +220 -0
- ksadk/harness/observability/__init__.py +29 -0
- ksadk/harness/observability/inspection.py +528 -0
- ksadk/harness/observability/metrics.py +167 -0
- ksadk/harness/observability/otel_exporter.py +218 -0
- ksadk/harness/prompt_cache.py +70 -0
- ksadk/harness/public_activity.py +154 -0
- ksadk/harness/readiness.py +249 -0
- ksadk/harness/reasoner.py +466 -13
- ksadk/harness/release_readiness.py +140 -0
- ksadk/harness/resource_ref.py +69 -0
- ksadk/harness/run_control.py +668 -0
- ksadk/harness/runtime.py +146 -111
- ksadk/harness/runtime_capabilities.py +158 -0
- ksadk/harness/runtime_server.py +514 -0
- ksadk/harness/sandbox_adapters.py +739 -0
- ksadk/harness/sandbox_backend.py +530 -0
- ksadk/harness/sandbox_conformance.py +288 -0
- ksadk/harness/sandbox_lease.py +77 -0
- ksadk/harness/sandbox_lease_conformance.py +259 -0
- ksadk/harness/sandbox_matrix.py +170 -0
- ksadk/harness/sandbox_reconciliation.py +140 -0
- ksadk/harness/sandbox_recovery.py +586 -0
- ksadk/harness/sandbox_recovery_conformance.py +246 -0
- ksadk/harness/session_store.py +243 -0
- ksadk/harness/skill_composition.py +212 -0
- ksadk/harness/skill_feedback.py +123 -0
- ksadk/harness/skill_matrix.py +233 -0
- ksadk/harness/skill_runtime.py +259 -0
- ksadk/harness/spec.py +332 -0
- ksadk/harness/state.py +153 -0
- ksadk/harness/strategies.py +149 -0
- ksadk/harness/subagent.py +253 -0
- ksadk/harness/tool_policy.py +131 -0
- ksadk/harness/tool_receipts.py +96 -0
- ksadk/harness/tool_reliability.py +81 -0
- ksadk/harness/user_errors.py +69 -0
- ksadk/harness/working_context.py +81 -0
- ksadk/harness/working_context_patch.py +99 -0
- ksadk/identity/resolver.py +18 -0
- ksadk/interaction/__init__.py +1 -1
- ksadk/interaction/ledger.py +1 -1
- ksadk/interaction/provider.py +1 -1
- ksadk/interaction/providers/__init__.py +3 -1
- ksadk/interaction/providers/adk.py +1 -1
- ksadk/interaction/providers/codex.py +1 -1
- ksadk/interaction/providers/harness.py +50 -0
- ksadk/interaction/providers/langgraph.py +1 -1
- ksadk/kernel/__init__.py +10 -0
- ksadk/kernel/approval_presentation.py +91 -0
- ksadk/kernel/authorization.py +1 -1
- ksadk/kernel/bootstrap.py +86 -102
- ksadk/kernel/contract_fingerprints.py +1 -1
- ksadk/kernel/contracts.py +5 -0
- ksadk/kernel/control.py +32 -1
- ksadk/kernel/execution_grants.py +221 -0
- ksadk/kernel/execution_grants_memory.py +133 -0
- ksadk/kernel/execution_grants_postgres.py +217 -0
- ksadk/kernel/execution_grants_sqlite.py +209 -0
- ksadk/kernel/ingress.py +27 -27
- ksadk/kernel/mapping.py +1 -1
- ksadk/kernel/memory_store.py +24 -11
- ksadk/kernel/postgres_store.py +63 -33
- ksadk/kernel/recovery.py +78 -14
- ksadk/kernel/sql/001_agent_kernel.sql +23 -0
- ksadk/kernel/sqlite_store.py +304 -25
- ksadk/kernel/state.py +2 -3
- ksadk/kernel/store.py +69 -2
- ksadk/kernel/worker.py +79 -41
- ksadk/kernel/worker_history.py +72 -0
- ksadk/kernel/worker_identity.py +47 -0
- ksadk/memory/coordinator.py +22 -6
- ksadk/memory/extraction.py +40 -1
- ksadk/memory/models.py +77 -1
- ksadk/memory/provider_resolver.py +5 -0
- ksadk/memory/providers/local_postgres.py +200 -0
- ksadk/memory/providers/local_sqlite.py +42 -3
- ksadk/memory/retrieval.py +189 -0
- ksadk/memory/store_adapter.py +150 -0
- ksadk/model_policy.py +2 -2
- ksadk/model_proxy/detect.py +254 -0
- ksadk/model_proxy/server.py +4 -2
- ksadk/model_proxy/transform.py +40 -2
- ksadk/plugins/__init__.py +1 -1
- ksadk/plugins/bridges/dsh.py +11 -0
- ksadk/plugins/builtins.py +40 -2
- ksadk/plugins/companion_artifacts.py +83 -0
- ksadk/plugins/companions.py +368 -0
- ksadk/plugins/contracts.py +1 -1
- ksadk/plugins/dsh_channels.py +156 -0
- ksadk/plugins/dsh_home.py +140 -0
- ksadk/plugins/dsh_teams.py +105 -0
- ksadk/plugins/dsh_toolchain.py +101 -19
- ksadk/plugins/execution_host.py +99 -0
- ksadk/plugins/providers/bundles/dsh-channels-client/client.js +19 -0
- ksadk/plugins/providers/bundles/dsh-channels-client/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-channels-client/index.mjs +7 -0
- ksadk/plugins/providers/bundles/dsh-channels-client/package.json +12 -0
- ksadk/plugins/providers/bundles/dsh-knowledge/package.json +1 -1
- ksadk/plugins/providers/bundles/dsh-memory/package.json +1 -1
- ksadk/plugins/providers/bundles/dsh-skill-center/package.json +1 -1
- ksadk/plugins/providers/bundles/dsh-teams-client/client.js +29 -0
- ksadk/plugins/providers/bundles/dsh-teams-client/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-client/index.mjs +11 -0
- ksadk/plugins/providers/bundles/dsh-teams-client/package.json +35 -0
- ksadk/plugins/providers/bundles/dsh-teams-leader-policy/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-leader-policy/index.mjs +13 -0
- ksadk/plugins/providers/bundles/dsh-teams-leader-policy/package.json +27 -0
- ksadk/plugins/providers/bundles/dsh-teams-profile/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-profile/index.mjs +12 -0
- ksadk/plugins/providers/bundles/dsh-teams-profile/package.json +26 -0
- ksadk/plugins/providers/bundles/dsh-teams-router/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-router/index.mjs +16 -0
- ksadk/plugins/providers/bundles/dsh-teams-router/package.json +27 -0
- ksadk/plugins/providers/bundles/dsh-teams-tasks/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-tasks/index.mjs +16 -0
- ksadk/plugins/providers/bundles/dsh-teams-tasks/package.json +27 -0
- ksadk/plugins/providers/bundles/dsh-teams-tools/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/dsh-teams-tools/index.mjs +25 -0
- ksadk/plugins/providers/bundles/dsh-teams-tools/package.json +29 -0
- ksadk/plugins/providers/bundles/dsh-teams-tools/tools.json +235 -0
- ksadk/plugins/providers/bundles/ksadk-codex/index.mjs +1 -1
- ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/index.mjs +51 -1
- ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/package.json +2 -2
- ksadk/plugins/providers/bundles/ksadk-dsh-companion-host/client.mjs +133 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-companion-host/index.mjs +14 -0
- ksadk/plugins/providers/bundles/ksadk-dsh-studio/client.js +27 -4
- ksadk/plugins/providers/bundles/ksadk-dsh-studio/index.mjs +9 -5
- ksadk/plugins/providers/bundles/ksadk-harness/index.mjs +1 -1
- ksadk/plugins/providers/codex.py +10 -2
- ksadk/plugins/providers/dsh_capabilities.py +61 -0
- ksadk/plugins/providers/harness.py +181 -33
- ksadk/plugins/providers/harness_delegation.py +593 -0
- ksadk/plugins/providers/harness_managed.py +456 -0
- ksadk/plugins/providers/harness_tools.py +326 -0
- ksadk/plugins/providers/shipped_dsh.py +4 -1
- ksadk/plugins/subagent_providers/codex.py +28 -6
- ksadk/plugins/teams/__init__.py +5 -0
- ksadk/plugins/teams/api.py +405 -0
- ksadk/plugins/teams/application.py +680 -0
- ksadk/plugins/teams/artifacts.py +60 -0
- ksadk/plugins/teams/context.py +96 -0
- ksadk/plugins/teams/contracts.py +136 -0
- ksadk/plugins/teams/domain.py +1427 -0
- ksadk/plugins/teams/domain_values.py +24 -0
- ksadk/plugins/teams/errors.py +13 -0
- ksadk/plugins/teams/migration.py +311 -0
- ksadk/plugins/teams/migration_cli.py +322 -0
- ksadk/plugins/teams/postgres_store.py +138 -0
- ksadk/plugins/teams/runtime.py +777 -0
- ksadk/plugins/teams/source_projection.py +84 -0
- ksadk/plugins/teams/store.py +311 -0
- ksadk/plugins/teams/task_decisions.py +423 -0
- ksadk/plugins/teams/transport.py +91 -0
- ksadk/plugins/teams/workspaces.py +255 -0
- ksadk/runners/_langgraph_runner_streams.py +121 -45
- ksadk/runners/_langgraph_state_reader.py +106 -0
- ksadk/runners/_session_identity.py +285 -0
- ksadk/runners/adk_runner.py +25 -60
- ksadk/runners/langgraph_runner.py +128 -111
- ksadk/runners/patch_langchain.py +47 -0
- ksadk/runners/usage_accumulator.py +11 -3
- ksadk/runtime/_runner_adapter/stream_mapping.py +52 -2
- ksadk/runtime/conversation_execution.py +25 -1
- ksadk/runtime/executor.py +9 -1
- ksadk/runtime/factory.py +36 -1
- ksadk/runtime/preprocessing.py +11 -3
- ksadk/runtime/runner_adapter.py +38 -9
- ksadk/runtime/skill_eval_result.py +36 -0
- ksadk/runtime/timing.py +46 -0
- ksadk/runtime/usage.py +49 -18
- ksadk/runtime_context.py +103 -1
- ksadk/sandbox/backends/e2b.py +245 -23
- ksadk/sandbox/backends/local_process.py +63 -39
- ksadk/sandbox/base.py +62 -1
- ksadk/sandbox/diagnostics.py +82 -0
- ksadk/sandbox/local_controls.py +746 -0
- ksadk/sandbox/local_launcher.py +90 -0
- ksadk/scheduler/dispatcher.py +1 -1
- ksadk/server/invocation_identity.py +118 -0
- ksadk/server/routes/common.py +32 -3
- ksadk/server/routes/control.py +64 -9
- ksadk/server/routes/dependencies.py +2 -1
- ksadk/server/routes/kernel_ingress.py +9 -1
- ksadk/server/routes/misc.py +233 -25
- ksadk/server/routes/models.py +3 -3
- ksadk/server/routes/openai_compat.py +76 -13
- ksadk/server/routes/run.py +106 -35
- ksadk/server/routes/sessions.py +244 -68
- ksadk/server/routes/workspace.py +130 -21
- ksadk/server/static/assets/{ArtifactsPanel-CGbWlMNh.js → ArtifactsPanel-C1YoaKhx.js} +1 -1
- ksadk/server/static/assets/{CodeBlock-b4C7upmO.js → CodeBlock-DHuAWfr5.js} +10 -7
- ksadk/server/static/assets/MathMessageMarkdown-cvdrBwYr.js +8 -0
- ksadk/server/static/assets/{MermaidBlock-BEBN4Ksz.js → MermaidBlock-DeBkbJvI.js} +9 -9
- ksadk/server/static/assets/{NativeTerminalPanel-zvL-WpAn.js → NativeTerminalPanel-oJj44_sV.js} +1 -1
- ksadk/server/static/assets/{abnfDiagram-VCTEODGH-BYafW7Za.js → abnfDiagram-VCTEODGH-Dhfv25o2.js} +1 -1
- ksadk/server/static/assets/{arc-bTohInsS.js → arc-C35w-pn1.js} +1 -1
- ksadk/server/static/assets/architecture-7GRP2DOG-BCsa26zi.js +1 -0
- ksadk/server/static/assets/{architectureDiagram-5GKGNRK7-Ch5Lbzsi.js → architectureDiagram-5GKGNRK7-FoMY_u6D.js} +1 -1
- ksadk/server/static/assets/{blockDiagram-NRAW4CY4-kqF4MDOG.js → blockDiagram-NRAW4CY4-zD4Rt7oE.js} +1 -1
- ksadk/server/static/assets/{c4Diagram-UCG6FXSJ-8uSRIODv.js → c4Diagram-UCG6FXSJ-BCtGGkhN.js} +1 -1
- ksadk/server/static/assets/channel-_KDifNys.js +1 -0
- ksadk/server/static/assets/chunk-2Q5K7J3B-HdVkJ9F0.js +1 -0
- ksadk/server/static/assets/{chunk-5VM5RSS4-DkhehZDr.js → chunk-5VM5RSS4-C2Ms13_k.js} +1 -1
- ksadk/server/static/assets/{chunk-F27PBJKO-BdXhtPe9.js → chunk-F27PBJKO-BoTj-qgx.js} +1 -1
- ksadk/server/static/assets/{chunk-G27WJ6UU-DPTpvpwi.js → chunk-G27WJ6UU-DOMyyjHH.js} +1 -1
- ksadk/server/static/assets/{chunk-JWPE2WC7-Pqoh38el.js → chunk-JWPE2WC7-DbJJqDli.js} +1 -1
- ksadk/server/static/assets/{chunk-LCL6LL3I-DeU00qC-.js → chunk-LCL6LL3I-CLuRCt_W.js} +1 -1
- ksadk/server/static/assets/{chunk-POPQ4Y6H-CzxScFkr.js → chunk-POPQ4Y6H-D0Dz847e.js} +1 -1
- ksadk/server/static/assets/{chunk-RHFEMEQ7-DpqMx-ux.js → chunk-RHFEMEQ7-BWSRzEcd.js} +1 -1
- ksadk/server/static/assets/{chunk-SVP7TREG-C6t0SypQ.js → chunk-SVP7TREG-CPoHqkCY.js} +1 -1
- ksadk/server/static/assets/{chunk-XXDRQBXY-DVaeafZk.js → chunk-XXDRQBXY-Bx1jS-X-.js} +1 -1
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-BVCW3ZqZ.js +1 -0
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-BVCW3ZqZ.js +1 -0
- ksadk/server/static/assets/{cose-bilkent-JH36ORCC-Bf9D3tzJ.js → cose-bilkent-JH36ORCC-LzyWm4m0.js} +1 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-CNXjFctL.js +1 -0
- ksadk/server/static/assets/{cynefinDiagram-5FMLGOSQ-B9cY3iTz.js → cynefinDiagram-5FMLGOSQ-BlW_bHED.js} +1 -1
- ksadk/server/static/assets/{dagre-3AP2YEHR-CSwlx3CB.js → dagre-3AP2YEHR-Bu_S86_i.js} +1 -1
- ksadk/server/static/assets/{dagre-UBpgon5q.js → dagre-B7nCawed.js} +1 -1
- ksadk/server/static/assets/{diagram-S7CK7UJ4-C9akhN9a.js → diagram-S7CK7UJ4-W_Zow2Km.js} +1 -1
- ksadk/server/static/assets/{diagram-UQ7AKVKN-CgedhTPI.js → diagram-UQ7AKVKN-CLIKAHON.js} +1 -1
- ksadk/server/static/assets/{diagram-VSXAHHWV-Cjucz5BY.js → diagram-VSXAHHWV-Dv6_QAlN.js} +1 -1
- ksadk/server/static/assets/{diagram-VX7I27RA-Dd4Vleyn.js → diagram-VX7I27RA-BWAWRDtZ.js} +1 -1
- ksadk/server/static/assets/{diagram-Z3DM3KII-CZ2jGtYW.js → diagram-Z3DM3KII-XA_rWMss.js} +1 -1
- ksadk/server/static/assets/dist-0X_j2Rcc.js +1 -0
- ksadk/server/static/assets/{dist-DiixqL0J.js → dist-1nXCdsej.js} +1 -1
- ksadk/server/static/assets/{dist-BIr4DSRq.js → dist-2vL2sAdF.js} +1 -1
- ksadk/server/static/assets/{dist-D_ctSS2i.js → dist-B3bA05-e.js} +1 -1
- ksadk/server/static/assets/{dist-ClYUxfeK.js → dist-BLpRy_Yx.js} +1 -1
- ksadk/server/static/assets/{dist-QfkEHOlb.js → dist-BO_UwatH.js} +1 -1
- ksadk/server/static/assets/{dist-B3FR1SKK.js → dist-BdNFAney.js} +1 -1
- ksadk/server/static/assets/{dist-BnaTiyzN.js → dist-C0J5_3qM.js} +1 -1
- ksadk/server/static/assets/{dist-Bj730Ib4.js → dist-CGt_UGeO.js} +1 -1
- ksadk/server/static/assets/{dist-CFzsn6BG.js → dist-CIRMvUM4.js} +1 -1
- ksadk/server/static/assets/{dist-BgV_owcB.js → dist-CIpWk_5f.js} +1 -1
- ksadk/server/static/assets/{dist-C5_ZAZsG.js → dist-CPyieXEf.js} +1 -1
- ksadk/server/static/assets/{dist-btbmmX5O.js → dist-D-92S-Fd.js} +1 -1
- ksadk/server/static/assets/{dist-fBO2v5Kt.js → dist-DNKuMzWc.js} +1 -1
- ksadk/server/static/assets/{dist-ufY3F5p6.js → dist-DWfdmz9s.js} +2 -2
- ksadk/server/static/assets/{dist-DVCOWtha.js → dist-DppE_r-D.js} +1 -1
- ksadk/server/static/assets/{dist-C1NMAY5a.js → dist-DyG6Ya-z.js} +1 -1
- ksadk/server/static/assets/{dist-CB9iJrvg.js → dist-M-SrdhhZ.js} +1 -1
- ksadk/server/static/assets/{dist-DvFK7p5S.js → dist-mqD5TZup.js} +1 -1
- ksadk/server/static/assets/{dist-Cf125P_m.js → dist-n3n6t_FO.js} +1 -1
- ksadk/server/static/assets/{dist-DFD6Qa6T.js → dist-qe8xjesy.js} +1 -1
- ksadk/server/static/assets/{dist-DoVSwoDb.js → dist-t6MzE0jU.js} +1 -1
- ksadk/server/static/assets/{ebnfDiagram-PWID7BFC-Ci8NqqZu.js → ebnfDiagram-PWID7BFC-BfCzF1Xi.js} +1 -1
- ksadk/server/static/assets/{erDiagram-SSCWMZ5O-CCIOhLZG.js → erDiagram-SSCWMZ5O-Dpz9_0zn.js} +1 -1
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-B5-8RH9c.js +1 -0
- ksadk/server/static/assets/flowDiagram-A5DVABFB-BppFxEKw.js +1 -0
- ksadk/server/static/assets/{ganttDiagram-EL5Y4UJY-Cp_r9Hb6.js → ganttDiagram-EL5Y4UJY-DDaG1f4_.js} +1 -1
- ksadk/server/static/assets/gitGraph-4MIJSDKK-B-AhYj4C.js +1 -0
- ksadk/server/static/assets/{gitGraphDiagram-WWUBYQGX-Dlhc8Wr8.js → gitGraphDiagram-WWUBYQGX-DcxzRwYC.js} +1 -1
- ksadk/server/static/assets/index-BMd2mucF.css +2 -0
- ksadk/server/static/assets/index-D5qyyhTH.js +244 -0
- ksadk/server/static/assets/info-A6RAGUB7-0uiKrC35.js +1 -0
- ksadk/server/static/assets/{infoDiagram-RXCK75RN-CO0rRTRA.js → infoDiagram-RXCK75RN-CYMdn6lQ.js} +1 -1
- ksadk/server/static/assets/{ishikawaDiagram-5VMMS53U-CHiaedSS.js → ishikawaDiagram-5VMMS53U-CLHFAD6c.js} +1 -1
- ksadk/server/static/assets/{journeyDiagram-EYS64GPL-CHcCIB09.js → journeyDiagram-EYS64GPL-BHSKQGAl.js} +1 -1
- ksadk/server/static/assets/{kanban-definition-3QL26DDD-CJ_ebBZf.js → kanban-definition-3QL26DDD-D5W3tjTT.js} +1 -1
- ksadk/server/static/assets/{katex-B4weu383.js → katex-mtjOi4KM.js} +1 -1
- ksadk/server/static/assets/{linear-V-MgYHW1.js → linear-BETqsxE_.js} +1 -1
- ksadk/server/static/assets/{mermaid-parser.core-CBijEX_c.js → mermaid-parser.core-DPWrvs90.js} +2 -2
- ksadk/server/static/assets/{mindmap-definition-FBJOCRG2-Bc-pQvpp.js → mindmap-definition-FBJOCRG2-CJG2mfBP.js} +1 -1
- ksadk/server/static/assets/packet-AYTQ26CC-BVTmZ_cw.js +1 -0
- ksadk/server/static/assets/{pegDiagram-XKGWAZYB-D7genGLl.js → pegDiagram-XKGWAZYB-GjAPNaqn.js} +1 -1
- ksadk/server/static/assets/pie-WAS4IAKB-DyfxBU7V.js +1 -0
- ksadk/server/static/assets/{pieDiagram-E7YTZNPT-Bxj32zwD.js → pieDiagram-E7YTZNPT-ToIewrqr.js} +1 -1
- ksadk/server/static/assets/{quadrantDiagram-AXDQQJYC-BURv2mGh.js → quadrantDiagram-AXDQQJYC-4d78KiEY.js} +1 -1
- ksadk/server/static/assets/radar-RG4KPBEZ-FFontjL2.js +1 -0
- ksadk/server/static/assets/railroad-74A4TZTK-D0Uidzen.js +1 -0
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-BOo_9T2h.js +1 -0
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-D6-BjW7Z.js +1 -0
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-CXx__yMm.js +1 -0
- ksadk/server/static/assets/{railroadDiagram-O6MQD6OU-CCsh3avW.js → railroadDiagram-O6MQD6OU-DKzx4xfv.js} +1 -1
- ksadk/server/static/assets/{requirementDiagram-EFPCY7ZU-_FRRBKEd.js → requirementDiagram-EFPCY7ZU-CJYljxQS.js} +1 -1
- ksadk/server/static/assets/{sankeyDiagram-P5KCCOFB-C-gr2o9M.js → sankeyDiagram-P5KCCOFB-DLU2fV1w.js} +1 -1
- ksadk/server/static/assets/{sequenceDiagram-WJ2MYXX4-D97NmfKg.js → sequenceDiagram-WJ2MYXX4-CVqysrA9.js} +1 -1
- ksadk/server/static/assets/{sizeCapture-X5ZJPWSS-DjrPC5FX.js → sizeCapture-X5ZJPWSS-BUxfmTHc.js} +1 -1
- ksadk/server/static/assets/{stateDiagram-HBIQ2CUA-DzMNg1hh.js → stateDiagram-HBIQ2CUA-CNFgYI9E.js} +1 -1
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BXAFScz8.js +1 -0
- ksadk/server/static/assets/{swimlanes-XN3QIQJK-Cssf_CsU.js → swimlanes-XN3QIQJK-B6qCMe8N.js} +1 -1
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-uIQ2lJKH.js +8 -0
- ksadk/server/static/assets/{timeline-definition-24CTP7MA-BWTHzyS1.js → timeline-definition-24CTP7MA-CMD3x_U_.js} +1 -1
- ksadk/server/static/assets/treeView-Q6P3EWNA-CK5GgucZ.js +1 -0
- ksadk/server/static/assets/treemap-WGGIJYW6-Bq1u1SpG.js +1 -0
- ksadk/server/static/assets/{vennDiagram-4TSXK5OY-BSKgJsmR.js → vennDiagram-4TSXK5OY-BqtUqvXM.js} +1 -1
- ksadk/server/static/assets/wardley-WFR3VGLG-QAt06uEz.js +1 -0
- ksadk/server/static/assets/{wardleyDiagram-VM6X3IG4-eflHNoaZ.js → wardleyDiagram-VM6X3IG4-B5KfDjI-.js} +1 -1
- ksadk/server/static/assets/{xychartDiagram-S5SC5T6Z-eYqrQ-v4.js → xychartDiagram-S5SC5T6Z-BaUlSZrn.js} +1 -1
- ksadk/server/static/index.html +2 -2
- ksadk/server/terminal_sessions.py +34 -2
- ksadk/sessions/invocation_identity.py +235 -0
- ksadk/skills/__init__.py +26 -0
- ksadk/skills/events.py +464 -0
- ksadk/skills/manifest_cache.py +263 -0
- ksadk/skills/mcp_server/__init__.py +0 -0
- ksadk/skills/mcp_server/_registry.py +33 -0
- ksadk/skills/mcp_server/_routing.py +26 -0
- ksadk/skills/mcp_server/_workspace_files.py +160 -0
- ksadk/skills/mcp_server/register.py +415 -0
- ksadk/skills/mcp_server/server.py +218 -0
- ksadk/skills/models.py +11 -0
- ksadk/skills/observability.py +132 -0
- ksadk/skills/package_store.py +75 -2
- ksadk/skills/runtime/agent.py +38 -5
- ksadk/skills/runtime/artifacts.py +87 -0
- ksadk/skills/runtime/backends/e2b.py +393 -52
- ksadk/skills/runtime/backends/local.py +621 -119
- ksadk/skills/runtime/base.py +78 -7
- ksadk/skills/runtime/executor.py +266 -1
- ksadk/skills/runtime/loader.py +108 -3
- ksadk/skills/runtime/request.py +18 -0
- ksadk/skills/tool_defs.py +108 -3
- ksadk/studio/api.py +592 -57
- ksadk/studio/api_contracts.py +8 -2
- ksadk/studio/api_plugin_routes.py +39 -12
- ksadk/studio/api_resource_connections.py +79 -41
- ksadk/studio/authoring.py +12 -6
- ksadk/studio/authoring_coordinator.py +4 -2
- ksadk/studio/builder.py +12 -0
- ksadk/studio/capabilities.py +23 -6
- ksadk/studio/channel_connections.py +333 -0
- ksadk/studio/cloud.py +30 -10
- ksadk/studio/cloud_shared_web.py +75 -2
- ksadk/studio/codex_agent_service.py +2 -2
- ksadk/studio/codex_builder.py +1 -1
- ksadk/studio/codex_run.py +6 -1
- ksadk/studio/compiler.py +10 -0
- ksadk/studio/configuration.py +182 -0
- ksadk/studio/contracts.py +33 -5
- ksadk/studio/dsh_application.py +135 -25
- ksadk/studio/dsh_capability_service.py +287 -20
- ksadk/studio/dsh_lifecycle.py +58 -0
- ksadk/studio/dsh_provider_registration.py +55 -16
- ksadk/studio/entry.py +53 -0
- ksadk/studio/event_store.py +36 -5
- ksadk/studio/execution_host.py +525 -0
- ksadk/studio/framework_run.py +32 -10
- ksadk/studio/hosted_kernel.py +1 -1
- ksadk/studio/kernel_registry.py +418 -0
- ksadk/studio/kernel_sqlite_migration.py +181 -0
- ksadk/studio/model_client.py +1178 -64
- ksadk/studio/model_profile_service.py +26 -11
- ksadk/studio/native_documents.py +172 -0
- ksadk/studio/plugin_composition.py +13 -2
- ksadk/studio/plugin_kernel_adapter.py +15 -0
- ksadk/studio/plugin_lifecycle.py +80 -0
- ksadk/studio/plugin_runtime.py +230 -17
- ksadk/studio/provider_recovery.py +59 -0
- ksadk/studio/recovery_page.py +70 -0
- ksadk/studio/resource_authority.py +59 -32
- ksadk/studio/resource_catalog.py +6 -0
- ksadk/studio/run_activity.py +895 -0
- ksadk/studio/run_documents.py +127 -0
- ksadk/studio/run_service.py +329 -33
- ksadk/studio/runtime_catalog.py +53 -10
- ksadk/studio/runtime_source.py +1 -1
- ksadk/studio/scheduler_runtime.py +32 -289
- ksadk/studio/service.py +398 -103
- ksadk/studio/shared_web.py +149 -36
- ksadk/studio/static/assets/ChannelsPage-D_PGmKVq.js +8 -0
- ksadk/studio/static/assets/CodeBlock-DMIf4h33-UIqo-BPW.js +44 -0
- ksadk/studio/static/assets/ExecutionTree-v3HexvPo-Bk8wzGSy.js +1 -0
- ksadk/studio/static/assets/MathMessageMarkdown-BesSeCYl-OhNwH4K9.js +8 -0
- ksadk/studio/static/assets/MermaidBlock-H_0qzQDf-BdXtxug_.js +11 -0
- ksadk/studio/static/assets/MessageMarkdown-CwMTvgFj-g0I-I4dD.js +59 -0
- ksadk/studio/static/assets/PrismRenderer-5pK6tUdb.js +3 -0
- ksadk/studio/static/assets/TeamsPage-DqX4HWKQ.js +3 -0
- ksadk/studio/static/assets/abnfDiagram-VCTEODGH-Bnb1O3tA.js +1 -0
- ksadk/studio/static/assets/architecture-7GRP2DOG-BMOPAkUC.js +1 -0
- ksadk/studio/static/assets/architectureDiagram-5GKGNRK7-5Zn1gqJv.js +36 -0
- ksadk/studio/static/assets/{blockDiagram-I7D4REHJ-CFmPl1de.js → blockDiagram-I7D4REHJ-CLB4L11u.js} +6 -6
- ksadk/studio/static/assets/{c4Diagram-7LVT6UL2-BRrGu8qt.js → c4Diagram-7LVT6UL2-BOma_Z_F.js} +7 -7
- ksadk/studio/static/assets/channel-r8itPEik.js +1 -0
- ksadk/studio/static/assets/chunk-2E4U76K2-BFf_huql.js +2 -0
- ksadk/studio/static/assets/chunk-2ZTRR5NV-C2qZJila.js +2 -0
- ksadk/studio/static/assets/chunk-3Z5EZCMW-DMniOlPd.js +1 -0
- ksadk/studio/static/assets/{chunk-4HAMMTFA-D220vUtq.js → chunk-4HAMMTFA-DVtDP4rm.js} +7 -7
- ksadk/studio/static/assets/chunk-5V3GS4D5-i-ZDOEnP.js +1 -0
- ksadk/studio/static/assets/chunk-6AZGARVD-BB6FqMl-.js +1 -0
- ksadk/studio/static/assets/chunk-6EIED4P4-DdUJkP0f.js +1 -0
- ksadk/studio/static/assets/chunk-6K3QC6MW-CqVsVn-y.js +1 -0
- ksadk/studio/static/assets/chunk-6TQVIW2G-DKlLbNIP.js +1 -0
- ksadk/studio/static/assets/chunk-747NJXEK-BFkZPlab.js +2 -0
- ksadk/studio/static/assets/chunk-75Z2AOVW-BZNhM4vB.js +2 -0
- ksadk/studio/static/assets/chunk-CLGD4ZFX-D-GTtyKs.js +1 -0
- ksadk/studio/static/assets/{chunk-DU6HZSFF-C4DtVpCu.js → chunk-DU6HZSFF-CpEZCUgg.js} +1 -1
- ksadk/studio/static/assets/chunk-F27PBJKO-D7pvKf0C.js +1 -0
- ksadk/studio/static/assets/{chunk-GMAD6QVW-DiQA-u2N.js → chunk-GMAD6QVW-DE_8H717.js} +6 -6
- ksadk/studio/static/assets/chunk-GVQU2GXP-BfEB0lNv.js +1 -0
- ksadk/studio/static/assets/chunk-I5DQTOEV-Hm2LfiYI.js +1 -0
- ksadk/studio/static/assets/chunk-ICYGCRZG-749o-pGJ.js +1 -0
- ksadk/studio/static/assets/chunk-IH6LHLGP-CC6I9F3i.js +1 -0
- ksadk/studio/static/assets/{chunk-IMKFNOWR-BSlbjT_b.js → chunk-IMKFNOWR-D38axYOR.js} +5 -5
- ksadk/studio/static/assets/chunk-KI3K4JFJ-Rma-0k_M.js +1 -0
- ksadk/studio/static/assets/chunk-L3NEJ4N5-Dq5xn7aL.js +1 -0
- ksadk/studio/static/assets/chunk-LNGE3PJU-DWpGwHrW.js +34 -0
- ksadk/studio/static/assets/{chunk-OSK3NFVY-M2m6G3j4.js → chunk-OSK3NFVY-DiCQjx9b.js} +5 -5
- ksadk/studio/static/assets/chunk-OUJLGHUK-D0j2JRSg.js +2 -0
- ksadk/studio/static/assets/{chunk-P2QGCYS3-DezaQxiK.js → chunk-P2QGCYS3-VdhKmfYq.js} +1 -1
- ksadk/studio/static/assets/chunk-POPQ4Y6H-C1_rzO5M.js +1 -0
- ksadk/studio/static/assets/chunk-PWAF6VOD-B45HvflI.js +1 -0
- ksadk/studio/static/assets/{chunk-SHT3W25Y-DAyIVp5H.js → chunk-SHT3W25Y-DsCFnRVE.js} +9 -9
- ksadk/studio/static/assets/{chunk-SVP7TREG-DulomOrS.js → chunk-SVP7TREG-DljApgRX.js} +1 -1
- ksadk/studio/static/assets/{chunk-TICWLB2K-bHJYoflj.js → chunk-TICWLB2K-DWqRtyqa.js} +6 -6
- ksadk/studio/static/assets/chunk-TLUHSLCS-DUeGgnD5.js +2 -0
- ksadk/studio/static/assets/chunk-UY3FDG6J-CnmaAkG5.js +1 -0
- ksadk/studio/static/assets/chunk-XHIXRSVI-BFQ6B8BE.js +1 -0
- ksadk/studio/static/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
- ksadk/studio/static/assets/classDiagram-ZZMXUADV-DjeMNJmu.js +1 -0
- ksadk/studio/static/assets/classDiagram-v2-VYDZK3BY-DjeMNJmu.js +1 -0
- ksadk/studio/static/assets/clsx-DB0hHKMi.js +1 -0
- ksadk/studio/static/assets/cose-bilkent-JH36ORCC-om8AY0Mc.js +1 -0
- ksadk/studio/static/assets/createLucideIcon-DR0LGTP5.js +1 -0
- ksadk/studio/static/assets/cynefin-OW5HDTMX-7tP7QfM3.js +1 -0
- ksadk/studio/static/assets/cynefinDiagram-5FMLGOSQ-6BrmK52S.js +62 -0
- ksadk/studio/static/assets/dagre-GXQ25YYZ-buZBRlwz.js +4 -0
- ksadk/studio/static/assets/{diagram-S7CK7UJ4-0BZ98mya.js → diagram-S7CK7UJ4-C6aH78c4.js} +3 -3
- ksadk/studio/static/assets/diagram-UQ7AKVKN-DY_tQ6C_.js +41 -0
- ksadk/studio/static/assets/diagram-VSXAHHWV-DX9p5cQT.js +3 -0
- ksadk/studio/static/assets/diagram-VX7I27RA-DB2WSH8X.js +24 -0
- ksadk/studio/static/assets/diagram-Z3DM3KII-Ce1BJwHE.js +24 -0
- ksadk/studio/static/assets/ebnfDiagram-PWID7BFC-Daukxwqf.js +1 -0
- ksadk/studio/static/assets/{erDiagram-RLTQ6QDP-DLGry2Ap.js → erDiagram-RLTQ6QDP-CGthTMmJ.js} +6 -6
- ksadk/studio/static/assets/eventmodeling-NTZA5JFV-BR2FzK4R.js +1 -0
- ksadk/studio/static/assets/flowDiagram-HODETNUW-CZ1tEenp.js +1 -0
- ksadk/studio/static/assets/ganttDiagram-EL5Y4UJY-BfoAZW9X.js +292 -0
- ksadk/studio/static/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +1 -0
- ksadk/studio/static/assets/gitGraphDiagram-WWUBYQGX-S985OIJF.js +106 -0
- ksadk/studio/static/assets/iconfont-4HN3C9Pg.woff2 +0 -0
- ksadk/studio/static/assets/index-CfEnms6Y.css +2 -0
- ksadk/studio/static/assets/index-Dp61rOWZ.js +0 -0
- ksadk/studio/static/assets/index.dom-BQenBtFm.js +1 -0
- ksadk/studio/static/assets/info-A6RAGUB7-BlU-8_xu.js +1 -0
- ksadk/studio/static/assets/infoDiagram-27XIBGKW-CO3W8tFn.js +2 -0
- ksadk/studio/static/assets/{ishikawaDiagram-5VMMS53U-CljI2wyf.js → ishikawaDiagram-5VMMS53U-BUGEl8cO.js} +2 -2
- ksadk/studio/static/assets/{journeyDiagram-3NMN7TZE-D50Fo2sL.js → journeyDiagram-3NMN7TZE-Ch2ZYxvr.js} +6 -6
- ksadk/studio/static/assets/{kanban-definition-UXKFOSKX-DimfOTam.js → kanban-definition-UXKFOSKX-Da-Fp4vC.js} +3 -3
- ksadk/studio/static/assets/kingsoft-cloud-BOcLiQ3e.ico +0 -0
- ksadk/studio/static/assets/{line-CX5BOOUP.js → line-BDaeq300.js} +1 -1
- ksadk/studio/static/assets/linear-DmucvK78.js +1 -0
- ksadk/studio/static/assets/mermaid-parser.core-Cj5mYdBi.js +4 -0
- ksadk/studio/static/assets/{mindmap-definition-YA3MSWOX-Bizzqy5R.js → mindmap-definition-YA3MSWOX-CvlsVQ38.js} +1 -1
- ksadk/studio/static/assets/packet-AYTQ26CC-BSJEH9Lb.js +1 -0
- ksadk/studio/static/assets/pegDiagram-XKGWAZYB-BuHuNgT5.js +1 -0
- ksadk/studio/static/assets/pie-WAS4IAKB-qxv01Y8W.js +1 -0
- ksadk/studio/static/assets/{pieDiagram-E7YTZNPT-B9mrFSDF.js → pieDiagram-E7YTZNPT-DlrWiSOv.js} +1 -1
- ksadk/studio/static/assets/preload-helper-CO68xz6u.js +1 -0
- ksadk/studio/static/assets/presentation-yYw7xK60-BmcZriri.js +1 -0
- ksadk/studio/static/assets/{quadrantDiagram-AXDQQJYC-NzUfCbMR.js → quadrantDiagram-AXDQQJYC-BA3hpUZM.js} +6 -6
- ksadk/studio/static/assets/radar-RG4KPBEZ-B6h6pWOs.js +1 -0
- ksadk/studio/static/assets/railroad-74A4TZTK-CGtTWdGc.js +1 -0
- ksadk/studio/static/assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js +1 -0
- ksadk/studio/static/assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js +1 -0
- ksadk/studio/static/assets/railroad-peg-WCYAUIDC-BQiIsX_p.js +1 -0
- ksadk/studio/static/assets/railroadDiagram-O6MQD6OU-BxpAazym.js +1 -0
- ksadk/studio/static/assets/{requirementDiagram-BXWQKSXE-BF3d103U.js → requirementDiagram-BXWQKSXE-E-Ge0FcV.js} +1 -1
- ksadk/studio/static/assets/sankeyDiagram-P5KCCOFB-CA6YKhQ3.js +40 -0
- ksadk/studio/static/assets/{sequenceDiagram-WJ2MYXX4-Dh4wZtUm.js → sequenceDiagram-WJ2MYXX4-CcElXGg4.js} +9 -9
- ksadk/studio/static/assets/src-B6xuSHsQ.js +1 -0
- ksadk/studio/static/assets/stateDiagram-D77RDMKH-DdXZOFqY.js +1 -0
- ksadk/studio/static/assets/stateDiagram-v2-MP3YSRHH-CJbOM-QK.js +1 -0
- ksadk/studio/static/assets/swimlanes-42K2YHIH-NtgEEHLY.js +1 -0
- ksadk/studio/static/assets/swimlanesDiagram-VR7AAH4N-D-AVlW8B.js +8 -0
- ksadk/studio/static/assets/{timeline-definition-24CTP7MA-DxmSSjRB.js → timeline-definition-24CTP7MA-CIuYhNy3.js} +7 -7
- ksadk/studio/static/assets/treeView-Q6P3EWNA-BTTYcvrF.js +1 -0
- ksadk/studio/static/assets/treemap-WGGIJYW6-Cg7tyfH8.js +1 -0
- ksadk/studio/static/assets/vennDiagram-4TSXK5OY-7HbApbrv.js +34 -0
- ksadk/studio/static/assets/wardley-WFR3VGLG-C6N1rULY.js +1 -0
- ksadk/studio/static/assets/{wardleyDiagram-VM6X3IG4-Ba1AOWoe.js → wardleyDiagram-VM6X3IG4-CMJiaedy.js} +1 -1
- ksadk/studio/static/assets/{xychartDiagram-S5SC5T6Z-Cr5pt5Y-.js → xychartDiagram-S5SC5T6Z-BdgtMvW2.js} +6 -6
- ksadk/studio/static/index.html +8 -2
- ksadk/studio/teams_catalog.py +133 -0
- ksadk/studio/teams_installation.py +214 -0
- ksadk/studio/teams_node.py +545 -0
- ksadk/studio/teams_node_runner.py +69 -0
- ksadk/studio/teams_remote.py +274 -0
- ksadk/studio/templates.py +40 -19
- ksadk/studio/validator.py +13 -0
- ksadk/studio/workspace.py +19 -4
- ksadk/studio/workspace_plugins.py +136 -0
- ksadk/studio/workspace_registry.py +286 -0
- ksadk/toolsets/__init__.py +11 -0
- ksadk/toolsets/skills.py +446 -378
- ksadk/toolsets/workspace.py +3 -3
- ksadk/toolsets/workspace_identity.py +15 -0
- ksadk/version.py +1 -1
- ksadk_runtime_common/memory_backend/providers/lancedb.py +56 -2
- ksadk_runtime_common/schemas/memory_backend_manifest.schema.json +148 -148
- ksadk_runtime_common/workspace_files/router.py +26 -13
- ksadk/server/static/assets/MathMessageMarkdown-DbdW5A4_.js +0 -8
- ksadk/server/static/assets/architecture-7GRP2DOG-BW5UtSnx.js +0 -1
- ksadk/server/static/assets/channel-CF5Up3hQ.js +0 -1
- ksadk/server/static/assets/chunk-2Q5K7J3B-KkXX47WI.js +0 -1
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-Cz81acRQ.js +0 -1
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-Cz81acRQ.js +0 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-DVWs8a2t.js +0 -1
- ksadk/server/static/assets/dist-B2_CVgKv.js +0 -1
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-CQqR2hg3.js +0 -1
- ksadk/server/static/assets/flowDiagram-A5DVABFB-DDRRbGPm.js +0 -1
- ksadk/server/static/assets/gitGraph-4MIJSDKK-fgWEf7UD.js +0 -1
- ksadk/server/static/assets/index-DcTML1Up.css +0 -2
- ksadk/server/static/assets/index-Dh2XHqPK.js +0 -244
- ksadk/server/static/assets/info-A6RAGUB7-BUecLTdt.js +0 -1
- ksadk/server/static/assets/packet-AYTQ26CC-BeW-btFv.js +0 -1
- ksadk/server/static/assets/pie-WAS4IAKB-X0xh4SaT.js +0 -1
- ksadk/server/static/assets/radar-RG4KPBEZ-DzRMSqjd.js +0 -1
- ksadk/server/static/assets/railroad-74A4TZTK-Cc44icX-.js +0 -1
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-D6S4BdV-.js +0 -1
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-vD3aVE2o.js +0 -1
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-CYbW_b4T.js +0 -1
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BIcjKFhF.js +0 -1
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-tq3K3Ybl.js +0 -8
- ksadk/server/static/assets/treeView-Q6P3EWNA-DBXt3GdU.js +0 -1
- ksadk/server/static/assets/treemap-WGGIJYW6-DrCy4E_l.js +0 -1
- ksadk/server/static/assets/wardley-WFR3VGLG-CefhOliM.js +0 -1
- ksadk/studio/static/assets/CodeBlock-DCUUY0PL-BLjA7kbS.js +0 -41
- ksadk/studio/static/assets/MathMessageMarkdown-CBcDrAw--CUYIXwgI.js +0 -8
- ksadk/studio/static/assets/MermaidBlock-DBFTztfQ-BTYKWEbD.js +0 -44
- ksadk/studio/static/assets/PrismRenderer-wiXRHURw.js +0 -3
- ksadk/studio/static/assets/abnfDiagram-VCTEODGH-CLETGjKq.js +0 -1
- ksadk/studio/static/assets/architecture-7GRP2DOG-hXMiO_AU.js +0 -1
- ksadk/studio/static/assets/architectureDiagram-5GKGNRK7-B5EQysk6.js +0 -36
- ksadk/studio/static/assets/channel-BqO-gtEw.js +0 -1
- ksadk/studio/static/assets/chunk-75Z2AOVW-C8lLv_qc.js +0 -2
- ksadk/studio/static/assets/chunk-F27PBJKO-Cpw14SNG.js +0 -1
- ksadk/studio/static/assets/chunk-GVQU2GXP-DUdNBUCi.js +0 -1
- ksadk/studio/static/assets/chunk-L3NEJ4N5-Db8Ab22W.js +0 -1
- ksadk/studio/static/assets/chunk-POPQ4Y6H-DOpufJ3t.js +0 -1
- ksadk/studio/static/assets/chunk-PWAF6VOD-CfLb1gSc.js +0 -1
- ksadk/studio/static/assets/chunk-XXDRQBXY-7PcdR2B1.js +0 -1
- ksadk/studio/static/assets/classDiagram-ZZMXUADV-D_bW8JjA.js +0 -1
- ksadk/studio/static/assets/classDiagram-v2-VYDZK3BY-D_bW8JjA.js +0 -1
- ksadk/studio/static/assets/cose-bilkent-JH36ORCC-snL88wkX.js +0 -1
- ksadk/studio/static/assets/cynefin-OW5HDTMX-Bd1YhRo1.js +0 -1
- ksadk/studio/static/assets/cynefinDiagram-5FMLGOSQ-BBrIG_mI.js +0 -62
- ksadk/studio/static/assets/dagre-GXQ25YYZ-DtF1nGdY.js +0 -4
- ksadk/studio/static/assets/diagram-UQ7AKVKN-6mLKEo6L.js +0 -41
- ksadk/studio/static/assets/diagram-VSXAHHWV-CJBIaiZ2.js +0 -3
- ksadk/studio/static/assets/diagram-VX7I27RA-BohLEE1C.js +0 -24
- ksadk/studio/static/assets/diagram-Z3DM3KII-D8KIGonG.js +0 -24
- ksadk/studio/static/assets/ebnfDiagram-PWID7BFC-C99HU61t.js +0 -1
- ksadk/studio/static/assets/eventmodeling-NTZA5JFV-B1_5Ac8j.js +0 -1
- ksadk/studio/static/assets/flowDiagram-HODETNUW-DD5hmicn.js +0 -1
- ksadk/studio/static/assets/ganttDiagram-EL5Y4UJY-BPJrVLSG.js +0 -292
- ksadk/studio/static/assets/gitGraph-4MIJSDKK-Cy_ZQBGi.js +0 -1
- ksadk/studio/static/assets/gitGraphDiagram-WWUBYQGX-CZCUz4MT.js +0 -106
- ksadk/studio/static/assets/index-CeHL9ARV.css +0 -2
- ksadk/studio/static/assets/index-D9QEcVpL.js +0 -320
- ksadk/studio/static/assets/info-A6RAGUB7-DBzDQB_I.js +0 -1
- ksadk/studio/static/assets/infoDiagram-27XIBGKW-B-sq07Hi.js +0 -2
- ksadk/studio/static/assets/linear-BCxN9JLv.js +0 -1
- ksadk/studio/static/assets/mermaid-parser.core-BdCz8fkS.js +0 -7
- ksadk/studio/static/assets/packet-AYTQ26CC-gPln-_kG.js +0 -1
- ksadk/studio/static/assets/pegDiagram-XKGWAZYB-Dy3fB-gW.js +0 -1
- ksadk/studio/static/assets/pie-WAS4IAKB-qZdHMr7B.js +0 -1
- ksadk/studio/static/assets/radar-RG4KPBEZ-BZlnaea9.js +0 -1
- ksadk/studio/static/assets/railroad-74A4TZTK-Ce3__H9c.js +0 -1
- ksadk/studio/static/assets/railroad-abnf-HS5TGJTU-DqQn7EzD.js +0 -1
- ksadk/studio/static/assets/railroad-ebnf-LZEXJU2U-B55kCA8F.js +0 -1
- ksadk/studio/static/assets/railroad-peg-WCYAUIDC-DfQnvkHd.js +0 -1
- ksadk/studio/static/assets/railroadDiagram-O6MQD6OU-DnhMjZCk.js +0 -1
- ksadk/studio/static/assets/sankeyDiagram-P5KCCOFB-Bo-JTwt0.js +0 -40
- ksadk/studio/static/assets/src-SFn9St9H.js +0 -1
- ksadk/studio/static/assets/stateDiagram-D77RDMKH-DH774G6d.js +0 -1
- ksadk/studio/static/assets/stateDiagram-v2-MP3YSRHH-DZvVWPBo.js +0 -1
- ksadk/studio/static/assets/swimlanes-42K2YHIH-Bl13OvTX.js +0 -1
- ksadk/studio/static/assets/swimlanesDiagram-VR7AAH4N-BnFOTALJ.js +0 -8
- ksadk/studio/static/assets/treeView-Q6P3EWNA-D5Nn9Swz.js +0 -1
- ksadk/studio/static/assets/treemap-WGGIJYW6-CgHgnQhE.js +0 -1
- ksadk/studio/static/assets/vennDiagram-4TSXK5OY-B9QEXcJq.js +0 -34
- ksadk/studio/static/assets/wardley-WFR3VGLG-DXrK2RRY.js +0 -1
- {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/WHEEL +0 -0
- {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/entry_points.txt +0 -0
- {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/licenses/LICENSE +0 -0
- {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/top_level.txt +0 -0
- /ksadk/studio/static/assets/{MathMessageMarkdown-CBcDrAw--BEOyPC3w.css → MathMessageMarkdown-BesSeCYl-BEOyPC3w.css} +0 -0
ksadk/server/routes/sessions.py
CHANGED
|
@@ -6,13 +6,23 @@ import os
|
|
|
6
6
|
from collections.abc import Mapping
|
|
7
7
|
from typing import Any
|
|
8
8
|
|
|
9
|
-
from fastapi import HTTPException
|
|
9
|
+
from fastapi import Depends, HTTPException
|
|
10
10
|
|
|
11
|
+
from ksadk.conversations.runtime_persistence import (
|
|
12
|
+
ensure_conversation_session,
|
|
13
|
+
require_conversation_session,
|
|
14
|
+
)
|
|
11
15
|
from ksadk.runtime.executor import project_legacy_runtime_capabilities
|
|
16
|
+
from ksadk.runtime_context import PlatformIdentityContext
|
|
12
17
|
from ksadk.server.factory import get_runtime_execution, get_state
|
|
13
18
|
from ksadk.sessions import SessionEvent
|
|
14
19
|
from ksadk.sessions.base import CheckpointEventQuery, SessionEventQuery
|
|
15
20
|
from ksadk.sessions.errors import CheckpointScanRestartRequired, SessionBackendUnavailable
|
|
21
|
+
from ksadk.sessions.invocation_identity import (
|
|
22
|
+
bind_or_validate_session_identity,
|
|
23
|
+
identity_can_adopt_any_legacy_user,
|
|
24
|
+
session_identity_binding_matches,
|
|
25
|
+
)
|
|
16
26
|
from ksadk.tools.gateway import tool_approval_capability
|
|
17
27
|
from ksadk.toolsets import describe_agentengine_tools
|
|
18
28
|
from ksadk_runtime_common.workspace_files import (
|
|
@@ -20,6 +30,7 @@ from ksadk_runtime_common.workspace_files import (
|
|
|
20
30
|
workspace_files_enabled,
|
|
21
31
|
)
|
|
22
32
|
|
|
33
|
+
from ..invocation_identity import resolve_trusted_invocation_identity
|
|
23
34
|
from . import dependencies as deps
|
|
24
35
|
from .common import (
|
|
25
36
|
_action_response,
|
|
@@ -59,8 +70,91 @@ from .routers import sessions_router, tools_router, ui_bootstrap_router
|
|
|
59
70
|
from .streaming import _cancel_detached_streams_for_session
|
|
60
71
|
|
|
61
72
|
|
|
73
|
+
async def _require_identity_action_session(
|
|
74
|
+
service: Any,
|
|
75
|
+
*,
|
|
76
|
+
session_id: str,
|
|
77
|
+
agent_id: str | None,
|
|
78
|
+
user_id: str | None,
|
|
79
|
+
invocation_identity: PlatformIdentityContext,
|
|
80
|
+
):
|
|
81
|
+
if invocation_identity.is_empty:
|
|
82
|
+
return await _require_action_session(
|
|
83
|
+
service,
|
|
84
|
+
session_id=session_id,
|
|
85
|
+
agent_id=agent_id,
|
|
86
|
+
user_id=user_id,
|
|
87
|
+
)
|
|
88
|
+
if not agent_id:
|
|
89
|
+
raise HTTPException(status_code=400, detail="AgentId is required")
|
|
90
|
+
return await require_conversation_session(
|
|
91
|
+
agent_id=agent_id,
|
|
92
|
+
user_id=str(user_id or ""),
|
|
93
|
+
session_id=session_id,
|
|
94
|
+
session_service_provider=lambda: service,
|
|
95
|
+
invocation_identity=invocation_identity,
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
async def _list_identity_session_metadata(
|
|
100
|
+
service: Any,
|
|
101
|
+
*,
|
|
102
|
+
agent_id: str,
|
|
103
|
+
user_id: str | None,
|
|
104
|
+
invocation_identity: PlatformIdentityContext,
|
|
105
|
+
) -> list[Any]:
|
|
106
|
+
"""List bound sessions; only the verified IAM account may adopt legacy rows."""
|
|
107
|
+
|
|
108
|
+
if invocation_identity.is_empty:
|
|
109
|
+
return await service.list_session_metadata(agent_id, user_id)
|
|
110
|
+
from ksadk.sessions.invocation_identity import identity_native_user_id
|
|
111
|
+
|
|
112
|
+
candidate_users: set[str | None] = {identity_native_user_id(invocation_identity)}
|
|
113
|
+
if identity_can_adopt_any_legacy_user(invocation_identity):
|
|
114
|
+
candidate_users.add(None)
|
|
115
|
+
elif (
|
|
116
|
+
invocation_identity.identity_namespace == "kscloud-iam"
|
|
117
|
+
and invocation_identity.subject_type == "user"
|
|
118
|
+
):
|
|
119
|
+
candidate_users.add(invocation_identity.subject_id)
|
|
120
|
+
sessions: list[Any] = []
|
|
121
|
+
seen: set[str] = set()
|
|
122
|
+
for candidate_user in candidate_users:
|
|
123
|
+
for session in await service.list_session_metadata(agent_id, candidate_user):
|
|
124
|
+
if session.id in seen:
|
|
125
|
+
continue
|
|
126
|
+
matches = await session_identity_binding_matches(
|
|
127
|
+
service=service,
|
|
128
|
+
session=session,
|
|
129
|
+
identity=invocation_identity,
|
|
130
|
+
)
|
|
131
|
+
if not matches:
|
|
132
|
+
try:
|
|
133
|
+
await bind_or_validate_session_identity(
|
|
134
|
+
service=service,
|
|
135
|
+
session=session,
|
|
136
|
+
identity=invocation_identity,
|
|
137
|
+
requested_user_id=session.user_id,
|
|
138
|
+
)
|
|
139
|
+
except HTTPException:
|
|
140
|
+
matches = False
|
|
141
|
+
else:
|
|
142
|
+
matches = True
|
|
143
|
+
if matches:
|
|
144
|
+
sessions.append(session)
|
|
145
|
+
seen.add(session.id)
|
|
146
|
+
sessions.sort(
|
|
147
|
+
key=lambda item: (item.updated_at, item.created_at, item.id),
|
|
148
|
+
reverse=True,
|
|
149
|
+
)
|
|
150
|
+
return sessions
|
|
151
|
+
|
|
152
|
+
|
|
62
153
|
@ui_bootstrap_router.post("/agentengine/api/v1/GetAgentUiBootstrap")
|
|
63
|
-
async def get_agent_ui_bootstrap(
|
|
154
|
+
async def get_agent_ui_bootstrap(
|
|
155
|
+
request: UiBootstrapRequest,
|
|
156
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
157
|
+
):
|
|
64
158
|
state = get_state()
|
|
65
159
|
executor, launch_context = get_runtime_execution()
|
|
66
160
|
detection = launch_context.detection
|
|
@@ -71,9 +165,7 @@ async def get_agent_ui_bootstrap(request: UiBootstrapRequest):
|
|
|
71
165
|
ui_spec = _resolve_agent_ui_spec()
|
|
72
166
|
capability_subject = executor.capability_subject(launch_context)
|
|
73
167
|
if capability_subject is not None:
|
|
74
|
-
wait_timeout = max(
|
|
75
|
-
0.1, float(os.getenv("KSADK_PERSISTENCE_PROBE_TIMEOUT") or "2")
|
|
76
|
-
)
|
|
168
|
+
wait_timeout = max(0.1, float(os.getenv("KSADK_PERSISTENCE_PROBE_TIMEOUT") or "2"))
|
|
77
169
|
capability_snapshot = await state.persistence_capability.get_snapshot(
|
|
78
170
|
runner=capability_subject,
|
|
79
171
|
framework=framework,
|
|
@@ -87,14 +179,10 @@ async def get_agent_ui_bootstrap(request: UiBootstrapRequest):
|
|
|
87
179
|
runtime_capability_matrix = executor.capability_matrix(launch_context)
|
|
88
180
|
else:
|
|
89
181
|
runtime_capability_matrix = executor.capability_matrix(launch_context)
|
|
90
|
-
persistence_status = dict(
|
|
91
|
-
await deps.get_persistence_status(framework=framework)
|
|
92
|
-
)
|
|
182
|
+
persistence_status = dict(await deps.get_persistence_status(framework=framework))
|
|
93
183
|
if isinstance(persistence_status.get("Session"), Mapping):
|
|
94
184
|
persistence = dict(persistence_status["Session"])
|
|
95
|
-
checkpoint_persistence = dict(
|
|
96
|
-
persistence_status.get("Checkpoint") or {}
|
|
97
|
-
)
|
|
185
|
+
checkpoint_persistence = dict(persistence_status.get("Checkpoint") or {})
|
|
98
186
|
else:
|
|
99
187
|
persistence = persistence_status
|
|
100
188
|
checkpoint_persistence = dict(persistence_status)
|
|
@@ -102,9 +190,7 @@ async def get_agent_ui_bootstrap(request: UiBootstrapRequest):
|
|
|
102
190
|
executor.native_capabilities(launch_context), runtime_capability_matrix
|
|
103
191
|
)
|
|
104
192
|
resume_capability = (
|
|
105
|
-
runtime_capabilities.get("ResumeRun")
|
|
106
|
-
if isinstance(runtime_capabilities, Mapping)
|
|
107
|
-
else None
|
|
193
|
+
runtime_capabilities.get("ResumeRun") if isinstance(runtime_capabilities, Mapping) else None
|
|
108
194
|
)
|
|
109
195
|
resume_capability = resume_capability if isinstance(resume_capability, Mapping) else {}
|
|
110
196
|
checkpoint_capability = (
|
|
@@ -116,9 +202,7 @@ async def get_agent_ui_bootstrap(request: UiBootstrapRequest):
|
|
|
116
202
|
checkpoint_capability if isinstance(checkpoint_capability, Mapping) else {}
|
|
117
203
|
)
|
|
118
204
|
cancel_capability = (
|
|
119
|
-
runtime_capabilities.get("CancelRun")
|
|
120
|
-
if isinstance(runtime_capabilities, Mapping)
|
|
121
|
-
else None
|
|
205
|
+
runtime_capabilities.get("CancelRun") if isinstance(runtime_capabilities, Mapping) else None
|
|
122
206
|
)
|
|
123
207
|
cancel_capability = cancel_capability if isinstance(cancel_capability, Mapping) else {}
|
|
124
208
|
checkpoint_resume_capability = {
|
|
@@ -196,7 +280,7 @@ async def get_agent_ui_bootstrap(request: UiBootstrapRequest):
|
|
|
196
280
|
},
|
|
197
281
|
"MCP": False,
|
|
198
282
|
"HostedRuntime": False,
|
|
199
|
-
"NativeTerminal": _build_native_terminal_capability(framework),
|
|
283
|
+
"NativeTerminal": _build_native_terminal_capability(framework, invocation_identity),
|
|
200
284
|
"BuiltinTools": describe_agentengine_tools(),
|
|
201
285
|
},
|
|
202
286
|
"WorkspaceFiles": build_workspace_files_bootstrap(enabled=workspace_enabled),
|
|
@@ -228,22 +312,49 @@ async def get_agent_ui_bootstrap(request: UiBootstrapRequest):
|
|
|
228
312
|
|
|
229
313
|
|
|
230
314
|
@sessions_router.post("/agentengine/api/v1/CreateSession")
|
|
231
|
-
async def create_session_action(
|
|
232
|
-
|
|
315
|
+
async def create_session_action(
|
|
316
|
+
request: CreateSessionActionRequest,
|
|
317
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
318
|
+
):
|
|
319
|
+
if invocation_identity.is_empty:
|
|
320
|
+
session = await _ensure_session(
|
|
321
|
+
request.AgentId, request.UserId or "user", request.SessionId
|
|
322
|
+
)
|
|
323
|
+
else:
|
|
324
|
+
session = await ensure_conversation_session(
|
|
325
|
+
agent_id=request.AgentId,
|
|
326
|
+
user_id=request.UserId or "user",
|
|
327
|
+
session_id=request.SessionId,
|
|
328
|
+
session_service_provider=deps.resolve_session_service,
|
|
329
|
+
invocation_identity=invocation_identity,
|
|
330
|
+
)
|
|
233
331
|
return _action_response("CreateSession", {"Session": await _session_to_action_payload(session)})
|
|
234
332
|
|
|
235
333
|
|
|
236
334
|
@sessions_router.post("/agentengine/api/v1/ListSessions")
|
|
237
|
-
async def list_sessions_action(
|
|
335
|
+
async def list_sessions_action(
|
|
336
|
+
request: ListSessionsActionRequest,
|
|
337
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
338
|
+
):
|
|
238
339
|
service = deps.resolve_session_service()
|
|
239
340
|
offset = (request.Page - 1) * request.PageSize
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
341
|
+
if invocation_identity.is_empty:
|
|
342
|
+
sessions = await service.list_sessions(
|
|
343
|
+
request.AgentId,
|
|
344
|
+
request.UserId,
|
|
345
|
+
offset=offset,
|
|
346
|
+
limit=request.PageSize,
|
|
347
|
+
)
|
|
348
|
+
total = await service.count_sessions(request.AgentId, request.UserId)
|
|
349
|
+
else:
|
|
350
|
+
all_sessions = await _list_identity_session_metadata(
|
|
351
|
+
service,
|
|
352
|
+
agent_id=request.AgentId,
|
|
353
|
+
user_id=request.UserId,
|
|
354
|
+
invocation_identity=invocation_identity,
|
|
355
|
+
)
|
|
356
|
+
total = len(all_sessions)
|
|
357
|
+
sessions = all_sessions[offset : offset + request.PageSize]
|
|
247
358
|
session_payloads = [await _session_to_action_payload(session) for session in sessions]
|
|
248
359
|
return _action_response(
|
|
249
360
|
"ListSessions",
|
|
@@ -260,13 +371,17 @@ async def list_sessions_action(request: ListSessionsActionRequest):
|
|
|
260
371
|
|
|
261
372
|
|
|
262
373
|
@sessions_router.post("/agentengine/api/v1/GetSession")
|
|
263
|
-
async def get_session_action(
|
|
374
|
+
async def get_session_action(
|
|
375
|
+
request: SessionIdRequest,
|
|
376
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
377
|
+
):
|
|
264
378
|
service = deps.resolve_session_service()
|
|
265
|
-
session = await
|
|
379
|
+
session = await _require_identity_action_session(
|
|
266
380
|
service,
|
|
267
381
|
session_id=request.SessionId,
|
|
268
382
|
agent_id=request.AgentId,
|
|
269
383
|
user_id=request.UserId,
|
|
384
|
+
invocation_identity=invocation_identity,
|
|
270
385
|
)
|
|
271
386
|
hydrated = await _hydrate_session(session)
|
|
272
387
|
if hydrated is None:
|
|
@@ -275,13 +390,17 @@ async def get_session_action(request: SessionIdRequest):
|
|
|
275
390
|
|
|
276
391
|
|
|
277
392
|
@sessions_router.post("/agentengine/api/v1/DeleteSession")
|
|
278
|
-
async def delete_session_action(
|
|
393
|
+
async def delete_session_action(
|
|
394
|
+
request: SessionIdRequest,
|
|
395
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
396
|
+
):
|
|
279
397
|
service = deps.resolve_session_service()
|
|
280
|
-
await
|
|
398
|
+
await _require_identity_action_session(
|
|
281
399
|
service,
|
|
282
400
|
session_id=request.SessionId,
|
|
283
401
|
agent_id=request.AgentId,
|
|
284
402
|
user_id=request.UserId,
|
|
403
|
+
invocation_identity=invocation_identity,
|
|
285
404
|
)
|
|
286
405
|
await _cancel_detached_streams_for_session(request.SessionId)
|
|
287
406
|
deleted = await service.delete_session(request.SessionId)
|
|
@@ -291,7 +410,10 @@ async def delete_session_action(request: SessionIdRequest):
|
|
|
291
410
|
|
|
292
411
|
|
|
293
412
|
@sessions_router.post("/agentengine/api/v1/ListSessionEvents")
|
|
294
|
-
async def list_session_events_action(
|
|
413
|
+
async def list_session_events_action(
|
|
414
|
+
request: ListSessionEventsActionRequest,
|
|
415
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
416
|
+
):
|
|
295
417
|
_executor, launch_context = get_runtime_execution()
|
|
296
418
|
service = deps.resolve_session_service()
|
|
297
419
|
session_id = str(request.SessionId or "").strip()
|
|
@@ -302,11 +424,31 @@ async def list_session_events_action(request: ListSessionEventsActionRequest):
|
|
|
302
424
|
# seq 游标是会话内序号,跨会话模式下不适用,直接忽略)
|
|
303
425
|
agent_id = str(request.AgentId or "").strip() or _runtime_agent_id(launch_context)
|
|
304
426
|
session_ids = None
|
|
305
|
-
if request.UserId is not None:
|
|
427
|
+
if request.UserId is not None or not invocation_identity.is_empty:
|
|
306
428
|
session_ids = [
|
|
307
429
|
session.id
|
|
308
|
-
for session in await
|
|
430
|
+
for session in await _list_identity_session_metadata(
|
|
431
|
+
service,
|
|
432
|
+
agent_id=agent_id,
|
|
433
|
+
user_id=request.UserId,
|
|
434
|
+
invocation_identity=invocation_identity,
|
|
435
|
+
)
|
|
309
436
|
]
|
|
437
|
+
if not invocation_identity.is_empty and not session_ids:
|
|
438
|
+
return _action_response(
|
|
439
|
+
"ListSessionEvents",
|
|
440
|
+
{
|
|
441
|
+
"Events": [],
|
|
442
|
+
"Total": 0,
|
|
443
|
+
"Offset": request.Offset or 0,
|
|
444
|
+
"Limit": request.Limit or 0,
|
|
445
|
+
"AfterSeqId": request.AfterSeqId,
|
|
446
|
+
"BeforeSeqId": request.BeforeSeqId,
|
|
447
|
+
"CheckpointIds": request.CheckpointIds,
|
|
448
|
+
"EventTypes": request.EventTypes,
|
|
449
|
+
"ScopedAllSessions": True,
|
|
450
|
+
},
|
|
451
|
+
)
|
|
310
452
|
query = SessionEventQuery(
|
|
311
453
|
session_ids=session_ids,
|
|
312
454
|
agent_id=agent_id,
|
|
@@ -342,11 +484,12 @@ async def list_session_events_action(request: ListSessionEventsActionRequest):
|
|
|
342
484
|
"ScopedAllSessions": True,
|
|
343
485
|
},
|
|
344
486
|
)
|
|
345
|
-
await
|
|
487
|
+
await _require_identity_action_session(
|
|
346
488
|
service,
|
|
347
489
|
session_id=session_id,
|
|
348
490
|
agent_id=request.AgentId,
|
|
349
491
|
user_id=request.UserId,
|
|
492
|
+
invocation_identity=invocation_identity,
|
|
350
493
|
)
|
|
351
494
|
query = SessionEventQuery(
|
|
352
495
|
session_ids=[session_id],
|
|
@@ -389,15 +532,19 @@ async def list_session_events_action(request: ListSessionEventsActionRequest):
|
|
|
389
532
|
|
|
390
533
|
|
|
391
534
|
@sessions_router.post("/agentengine/api/v1/ListSessionMessages")
|
|
392
|
-
async def list_session_messages_action(
|
|
535
|
+
async def list_session_messages_action(
|
|
536
|
+
request: ListSessionMessagesActionRequest,
|
|
537
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
538
|
+
):
|
|
393
539
|
from ksadk.conversations.message_projection import project_session_messages
|
|
394
540
|
|
|
395
541
|
service = deps.resolve_session_service()
|
|
396
|
-
await
|
|
542
|
+
await _require_identity_action_session(
|
|
397
543
|
service,
|
|
398
544
|
session_id=request.SessionId,
|
|
399
545
|
agent_id=request.AgentId,
|
|
400
546
|
user_id=request.UserId,
|
|
547
|
+
invocation_identity=invocation_identity,
|
|
401
548
|
)
|
|
402
549
|
total_events = await service.count_events(
|
|
403
550
|
request.SessionId,
|
|
@@ -426,6 +573,7 @@ async def list_session_messages_action(request: ListSessionMessagesActionRequest
|
|
|
426
573
|
include_reasoning=request.IncludeReasoning,
|
|
427
574
|
include_tool_events=request.IncludeToolEvents,
|
|
428
575
|
include_attachments=request.IncludeAttachments,
|
|
576
|
+
session_id=request.SessionId,
|
|
429
577
|
)
|
|
430
578
|
|
|
431
579
|
serialized_events, messages = project(events)
|
|
@@ -557,8 +705,7 @@ def _is_checkpoint_resumable(checkpoint: Mapping[str, Any]) -> bool:
|
|
|
557
705
|
checkpoint_status = str(checkpoint.get("CheckpointStatus") or "").strip().lower()
|
|
558
706
|
resume_status = str(checkpoint.get("ResumeStatus") or "").strip().lower()
|
|
559
707
|
return (
|
|
560
|
-
checkpoint_status not in {"expired", "disabled", "terminal"}
|
|
561
|
-
and resume_status != "disabled"
|
|
708
|
+
checkpoint_status not in {"expired", "disabled", "terminal"} and resume_status != "disabled"
|
|
562
709
|
)
|
|
563
710
|
|
|
564
711
|
|
|
@@ -599,20 +746,19 @@ async def _list_checkpoints_payload_legacy_filtered(
|
|
|
599
746
|
continue
|
|
600
747
|
if checkpoint_ids and checkpoint["CheckpointId"] not in checkpoint_ids:
|
|
601
748
|
continue
|
|
602
|
-
if
|
|
749
|
+
if (
|
|
603
750
|
request.Framework
|
|
604
|
-
|
|
751
|
+
and str(checkpoint["Framework"]).lower() != str(request.Framework).lower()
|
|
752
|
+
):
|
|
605
753
|
continue
|
|
606
754
|
if (
|
|
607
755
|
resume_status_filter
|
|
608
|
-
and str(checkpoint.get("ResumeStatus") or "").lower()
|
|
609
|
-
not in resume_status_filter
|
|
756
|
+
and str(checkpoint.get("ResumeStatus") or "").lower() not in resume_status_filter
|
|
610
757
|
):
|
|
611
758
|
continue
|
|
612
759
|
if (
|
|
613
760
|
resume_type_filter
|
|
614
|
-
and str(checkpoint.get("Scope") or "unknown").lower()
|
|
615
|
-
not in resume_type_filter
|
|
761
|
+
and str(checkpoint.get("Scope") or "unknown").lower() not in resume_type_filter
|
|
616
762
|
):
|
|
617
763
|
continue
|
|
618
764
|
checkpoints.append(checkpoint)
|
|
@@ -625,7 +771,7 @@ async def _list_checkpoints_payload_legacy_filtered(
|
|
|
625
771
|
key=lambda item: (item["Timestamp"], item["SessionId"], item["SeqId"]),
|
|
626
772
|
reverse=True,
|
|
627
773
|
)
|
|
628
|
-
checkpoints = checkpoints[offset: offset + request.Limit]
|
|
774
|
+
checkpoints = checkpoints[offset : offset + request.Limit]
|
|
629
775
|
return {
|
|
630
776
|
"Checkpoints": checkpoints,
|
|
631
777
|
"Total": len(checkpoints),
|
|
@@ -640,25 +786,45 @@ async def _list_checkpoints_payload_legacy_filtered(
|
|
|
640
786
|
}
|
|
641
787
|
|
|
642
788
|
|
|
643
|
-
async def _list_checkpoints_payload(
|
|
789
|
+
async def _list_checkpoints_payload(
|
|
790
|
+
request: ListSessionCheckpointsActionRequest,
|
|
791
|
+
invocation_identity: PlatformIdentityContext,
|
|
792
|
+
) -> dict[str, Any]:
|
|
644
793
|
service = deps.resolve_session_service()
|
|
645
794
|
session_ids = _normalize_action_id_list(request.SessionId)
|
|
646
795
|
checkpoint_ids = _normalize_action_id_list(request.CheckpointId)
|
|
647
796
|
if session_ids:
|
|
648
797
|
for session_id in session_ids:
|
|
649
|
-
await
|
|
798
|
+
await _require_identity_action_session(
|
|
650
799
|
service,
|
|
651
800
|
session_id=session_id,
|
|
652
801
|
agent_id=request.AgentId,
|
|
653
802
|
user_id=request.UserId,
|
|
803
|
+
invocation_identity=invocation_identity,
|
|
654
804
|
)
|
|
655
|
-
elif request.UserId is not None:
|
|
805
|
+
elif request.UserId is not None or not invocation_identity.is_empty:
|
|
656
806
|
session_ids = [
|
|
657
807
|
session.id
|
|
658
|
-
for session in await
|
|
659
|
-
|
|
808
|
+
for session in await _list_identity_session_metadata(
|
|
809
|
+
service,
|
|
810
|
+
agent_id=request.AgentId,
|
|
811
|
+
user_id=request.UserId,
|
|
812
|
+
invocation_identity=invocation_identity,
|
|
660
813
|
)
|
|
661
814
|
]
|
|
815
|
+
if not invocation_identity.is_empty and not session_ids:
|
|
816
|
+
return {
|
|
817
|
+
"Checkpoints": [],
|
|
818
|
+
"Total": 0,
|
|
819
|
+
"ResumableTotal": 0,
|
|
820
|
+
"HasResumableCheckpoint": False,
|
|
821
|
+
"SessionId": [],
|
|
822
|
+
"CheckpointId": checkpoint_ids,
|
|
823
|
+
"ResumeStatus": request.ResumeStatus,
|
|
824
|
+
"ResumeTypes": request.ResumeTypes,
|
|
825
|
+
"Offset": int(request.Offset or 0),
|
|
826
|
+
"Limit": request.Limit,
|
|
827
|
+
}
|
|
662
828
|
query = CheckpointEventQuery(
|
|
663
829
|
session_ids=session_ids or None,
|
|
664
830
|
agent_id=request.AgentId,
|
|
@@ -685,14 +851,10 @@ async def _list_checkpoints_payload(request: ListSessionCheckpointsActionRequest
|
|
|
685
851
|
not checkpoint_ids
|
|
686
852
|
or str(checkpoint.get("CheckpointId") or "") in checkpoint_ids
|
|
687
853
|
)
|
|
688
|
-
and (
|
|
689
|
-
query.run_id is None
|
|
690
|
-
or str(checkpoint.get("RunId") or "") == query.run_id
|
|
691
|
-
)
|
|
854
|
+
and (query.run_id is None or str(checkpoint.get("RunId") or "") == query.run_id)
|
|
692
855
|
and (
|
|
693
856
|
query.framework is None
|
|
694
|
-
or str(checkpoint.get("Framework") or "").lower()
|
|
695
|
-
== query.framework
|
|
857
|
+
or str(checkpoint.get("Framework") or "").lower() == query.framework
|
|
696
858
|
)
|
|
697
859
|
]
|
|
698
860
|
keys = [
|
|
@@ -713,13 +875,17 @@ async def _list_checkpoints_payload(request: ListSessionCheckpointsActionRequest
|
|
|
713
875
|
stats.get("latest_seq_ids") or {},
|
|
714
876
|
session_id=str(checkpoint.get("SessionId") or ""),
|
|
715
877
|
)
|
|
716
|
-
if
|
|
717
|
-
|
|
718
|
-
|
|
878
|
+
if (
|
|
879
|
+
resume_status_filter
|
|
880
|
+
and str(checkpoint.get("ResumeStatus") or "").strip().lower()
|
|
881
|
+
not in resume_status_filter
|
|
882
|
+
):
|
|
719
883
|
continue
|
|
720
|
-
if
|
|
721
|
-
|
|
722
|
-
|
|
884
|
+
if (
|
|
885
|
+
resume_type_filter
|
|
886
|
+
and str(checkpoint.get("Scope") or "unknown").strip().lower()
|
|
887
|
+
not in resume_type_filter
|
|
888
|
+
):
|
|
723
889
|
continue
|
|
724
890
|
resumable_total += int(_is_checkpoint_resumable(checkpoint))
|
|
725
891
|
if request.OnlyResumable and not _is_checkpoint_resumable(checkpoint):
|
|
@@ -761,18 +927,28 @@ async def _list_checkpoints_payload(request: ListSessionCheckpointsActionRequest
|
|
|
761
927
|
|
|
762
928
|
|
|
763
929
|
@sessions_router.post("/agentengine/api/v1/ListSessionCheckpoints")
|
|
764
|
-
async def list_session_checkpoints_action(
|
|
765
|
-
|
|
930
|
+
async def list_session_checkpoints_action(
|
|
931
|
+
request: ListSessionCheckpointsActionRequest,
|
|
932
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
933
|
+
):
|
|
934
|
+
return _action_response(
|
|
935
|
+
"ListSessionCheckpoints",
|
|
936
|
+
await _list_checkpoints_payload(request, invocation_identity),
|
|
937
|
+
)
|
|
766
938
|
|
|
767
939
|
|
|
768
940
|
@tools_router.post("/agentengine/api/v1/ListToolReceipts")
|
|
769
|
-
async def list_tool_receipts_action(
|
|
941
|
+
async def list_tool_receipts_action(
|
|
942
|
+
request: ListToolReceiptsActionRequest,
|
|
943
|
+
invocation_identity: PlatformIdentityContext = Depends(resolve_trusted_invocation_identity),
|
|
944
|
+
):
|
|
770
945
|
service = deps.resolve_session_service()
|
|
771
|
-
await
|
|
946
|
+
await _require_identity_action_session(
|
|
772
947
|
service,
|
|
773
948
|
session_id=request.SessionId,
|
|
774
949
|
agent_id=request.AgentId,
|
|
775
950
|
user_id=request.UserId,
|
|
951
|
+
invocation_identity=invocation_identity,
|
|
776
952
|
)
|
|
777
953
|
|
|
778
954
|
run_id_filter = str(request.RunId or "").strip()
|