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.
Files changed (673) hide show
  1. {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/METADATA +6 -3
  2. {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/RECORD +591 -365
  3. ksadk/_build_provenance.json +1 -1
  4. ksadk/_process.py +83 -0
  5. ksadk/_str_enum.py +17 -0
  6. ksadk/a2ui/core.py +3 -3
  7. ksadk/api/client.py +6 -0
  8. ksadk/builders/code_builder.py +38 -12
  9. ksadk/builders/framework_requirements.py +20 -2
  10. ksadk/cli/__init__.py +36 -0
  11. ksadk/cli/cmd_config.py +4 -4
  12. ksadk/cli/cmd_create.py +12 -12
  13. ksadk/cli/cmd_hermes.py +24 -2
  14. ksadk/cli/cmd_invoke.py +28 -5
  15. ksadk/cli/cmd_openclaw.py +26 -1
  16. ksadk/cli/cmd_plugin.py +70 -12
  17. ksadk/cli/cmd_studio.py +64 -16
  18. ksadk/cli/openclaw_env.py +1 -1
  19. ksadk/cli/resource_common.py +26 -0
  20. ksadk/codex/client.py +3 -2
  21. ksadk/configs/__init__.py +1 -1
  22. ksadk/configs/env_registry.py +125 -31
  23. ksadk/configs/env_registry_studio.py +86 -0
  24. ksadk/configs/global_config.py +1 -1
  25. ksadk/configs/settings.py +3 -3
  26. ksadk/connector/__init__.py +17 -0
  27. ksadk/connector/channel.py +477 -0
  28. ksadk/context_engine/capabilities.py +52 -4
  29. ksadk/conversations/attachment_storage.py +10 -3
  30. ksadk/conversations/attachments.py +16 -5
  31. ksadk/conversations/message_projection.py +23 -32
  32. ksadk/conversations/normalize.py +28 -10
  33. ksadk/conversations/runtime_baseline.py +37 -0
  34. ksadk/conversations/runtime_invocation.py +17 -4
  35. ksadk/conversations/runtime_observability.py +39 -10
  36. ksadk/conversations/runtime_payloads.py +8 -0
  37. ksadk/conversations/runtime_persistence.py +105 -9
  38. ksadk/conversations/runtime_preparation.py +13 -7
  39. ksadk/conversations/runtime_stream_events.py +29 -35
  40. ksadk/conversations/runtime_streaming.py +8 -0
  41. ksadk/events/adapters/_codex_items.py +16 -8
  42. ksadk/events/adapters/_langgraph_support.py +34 -0
  43. ksadk/events/session_event.py +2 -2
  44. ksadk/harness/__init__.py +14 -0
  45. ksadk/harness/app.py +11 -0
  46. ksadk/harness/artifact_store.py +213 -0
  47. ksadk/harness/capabilities.py +115 -0
  48. ksadk/harness/capability_runtime.py +237 -0
  49. ksadk/harness/closure_contract.py +92 -0
  50. ksadk/harness/compaction_record.py +122 -0
  51. ksadk/harness/compiler.py +284 -0
  52. ksadk/harness/conformance/__init__.py +33 -0
  53. ksadk/harness/conformance/contract.py +506 -0
  54. ksadk/harness/conformance/fixtures.py +102 -0
  55. ksadk/harness/context_engine.py +403 -0
  56. ksadk/harness/context_maintenance.py +259 -0
  57. ksadk/harness/context_manifest.py +188 -0
  58. ksadk/harness/context_tuning.py +168 -0
  59. ksadk/harness/draft_runtime.py +322 -0
  60. ksadk/harness/engine/__init__.py +40 -0
  61. ksadk/harness/engine/base.py +122 -0
  62. ksadk/harness/engine/budgets.py +108 -0
  63. ksadk/harness/engine/capability_declarations.py +59 -0
  64. ksadk/harness/engine/completion_guard.py +42 -0
  65. ksadk/harness/engine/context_pipeline.py +579 -0
  66. ksadk/harness/engine/graph_builder.py +859 -0
  67. ksadk/harness/engine/langgraph.py +931 -0
  68. ksadk/harness/engine/mcp_disclosure.py +750 -0
  69. ksadk/harness/engine/policy_runtime.py +70 -0
  70. ksadk/harness/engine/postgres_checkpointer.py +63 -0
  71. ksadk/harness/engine/run_control_bridge.py +80 -0
  72. ksadk/harness/engine/run_types.py +88 -0
  73. ksadk/harness/engine/skill_disclosure.py +189 -0
  74. ksadk/harness/engine/spans.py +41 -0
  75. ksadk/harness/engine/subagents.py +343 -0
  76. ksadk/harness/engine/thread_ids.py +112 -0
  77. ksadk/harness/engine/tool_dispatch.py +144 -0
  78. ksadk/harness/event_tree.py +212 -0
  79. ksadk/harness/events.py +461 -0
  80. ksadk/harness/execution_policy.py +94 -0
  81. ksadk/harness/insights.py +210 -0
  82. ksadk/harness/lifecycle.py +578 -0
  83. ksadk/harness/lifecycle_conformance.py +233 -0
  84. ksadk/harness/lifecycle_local_plane.py +104 -0
  85. ksadk/harness/loop/__init__.py +44 -0
  86. ksadk/harness/loop/reason.py +454 -0
  87. ksadk/harness/loop/tools.py +762 -0
  88. ksadk/harness/managed_runtime.py +884 -0
  89. ksadk/harness/mcp_matrix.py +474 -0
  90. ksadk/harness/mcp_runtime.py +471 -0
  91. ksadk/harness/memory_consolidation.py +157 -0
  92. ksadk/harness/memory_loop.py +156 -0
  93. ksadk/harness/memory_runtime.py +541 -0
  94. ksadk/harness/metrics.py +90 -0
  95. ksadk/harness/model_capability.py +253 -0
  96. ksadk/harness/model_provider.py +220 -0
  97. ksadk/harness/observability/__init__.py +29 -0
  98. ksadk/harness/observability/inspection.py +528 -0
  99. ksadk/harness/observability/metrics.py +167 -0
  100. ksadk/harness/observability/otel_exporter.py +218 -0
  101. ksadk/harness/prompt_cache.py +70 -0
  102. ksadk/harness/public_activity.py +154 -0
  103. ksadk/harness/readiness.py +249 -0
  104. ksadk/harness/reasoner.py +466 -13
  105. ksadk/harness/release_readiness.py +140 -0
  106. ksadk/harness/resource_ref.py +69 -0
  107. ksadk/harness/run_control.py +668 -0
  108. ksadk/harness/runtime.py +146 -111
  109. ksadk/harness/runtime_capabilities.py +158 -0
  110. ksadk/harness/runtime_server.py +514 -0
  111. ksadk/harness/sandbox_adapters.py +739 -0
  112. ksadk/harness/sandbox_backend.py +530 -0
  113. ksadk/harness/sandbox_conformance.py +288 -0
  114. ksadk/harness/sandbox_lease.py +77 -0
  115. ksadk/harness/sandbox_lease_conformance.py +259 -0
  116. ksadk/harness/sandbox_matrix.py +170 -0
  117. ksadk/harness/sandbox_reconciliation.py +140 -0
  118. ksadk/harness/sandbox_recovery.py +586 -0
  119. ksadk/harness/sandbox_recovery_conformance.py +246 -0
  120. ksadk/harness/session_store.py +243 -0
  121. ksadk/harness/skill_composition.py +212 -0
  122. ksadk/harness/skill_feedback.py +123 -0
  123. ksadk/harness/skill_matrix.py +233 -0
  124. ksadk/harness/skill_runtime.py +259 -0
  125. ksadk/harness/spec.py +332 -0
  126. ksadk/harness/state.py +153 -0
  127. ksadk/harness/strategies.py +149 -0
  128. ksadk/harness/subagent.py +253 -0
  129. ksadk/harness/tool_policy.py +131 -0
  130. ksadk/harness/tool_receipts.py +96 -0
  131. ksadk/harness/tool_reliability.py +81 -0
  132. ksadk/harness/user_errors.py +69 -0
  133. ksadk/harness/working_context.py +81 -0
  134. ksadk/harness/working_context_patch.py +99 -0
  135. ksadk/identity/resolver.py +18 -0
  136. ksadk/interaction/__init__.py +1 -1
  137. ksadk/interaction/ledger.py +1 -1
  138. ksadk/interaction/provider.py +1 -1
  139. ksadk/interaction/providers/__init__.py +3 -1
  140. ksadk/interaction/providers/adk.py +1 -1
  141. ksadk/interaction/providers/codex.py +1 -1
  142. ksadk/interaction/providers/harness.py +50 -0
  143. ksadk/interaction/providers/langgraph.py +1 -1
  144. ksadk/kernel/__init__.py +10 -0
  145. ksadk/kernel/approval_presentation.py +91 -0
  146. ksadk/kernel/authorization.py +1 -1
  147. ksadk/kernel/bootstrap.py +86 -102
  148. ksadk/kernel/contract_fingerprints.py +1 -1
  149. ksadk/kernel/contracts.py +5 -0
  150. ksadk/kernel/control.py +32 -1
  151. ksadk/kernel/execution_grants.py +221 -0
  152. ksadk/kernel/execution_grants_memory.py +133 -0
  153. ksadk/kernel/execution_grants_postgres.py +217 -0
  154. ksadk/kernel/execution_grants_sqlite.py +209 -0
  155. ksadk/kernel/ingress.py +27 -27
  156. ksadk/kernel/mapping.py +1 -1
  157. ksadk/kernel/memory_store.py +24 -11
  158. ksadk/kernel/postgres_store.py +63 -33
  159. ksadk/kernel/recovery.py +78 -14
  160. ksadk/kernel/sql/001_agent_kernel.sql +23 -0
  161. ksadk/kernel/sqlite_store.py +304 -25
  162. ksadk/kernel/state.py +2 -3
  163. ksadk/kernel/store.py +69 -2
  164. ksadk/kernel/worker.py +79 -41
  165. ksadk/kernel/worker_history.py +72 -0
  166. ksadk/kernel/worker_identity.py +47 -0
  167. ksadk/memory/coordinator.py +22 -6
  168. ksadk/memory/extraction.py +40 -1
  169. ksadk/memory/models.py +77 -1
  170. ksadk/memory/provider_resolver.py +5 -0
  171. ksadk/memory/providers/local_postgres.py +200 -0
  172. ksadk/memory/providers/local_sqlite.py +42 -3
  173. ksadk/memory/retrieval.py +189 -0
  174. ksadk/memory/store_adapter.py +150 -0
  175. ksadk/model_policy.py +2 -2
  176. ksadk/model_proxy/detect.py +254 -0
  177. ksadk/model_proxy/server.py +4 -2
  178. ksadk/model_proxy/transform.py +40 -2
  179. ksadk/plugins/__init__.py +1 -1
  180. ksadk/plugins/bridges/dsh.py +11 -0
  181. ksadk/plugins/builtins.py +40 -2
  182. ksadk/plugins/companion_artifacts.py +83 -0
  183. ksadk/plugins/companions.py +368 -0
  184. ksadk/plugins/contracts.py +1 -1
  185. ksadk/plugins/dsh_channels.py +156 -0
  186. ksadk/plugins/dsh_home.py +140 -0
  187. ksadk/plugins/dsh_teams.py +105 -0
  188. ksadk/plugins/dsh_toolchain.py +101 -19
  189. ksadk/plugins/execution_host.py +99 -0
  190. ksadk/plugins/providers/bundles/dsh-channels-client/client.js +19 -0
  191. ksadk/plugins/providers/bundles/dsh-channels-client/cordis.patch.yml +3 -0
  192. ksadk/plugins/providers/bundles/dsh-channels-client/index.mjs +7 -0
  193. ksadk/plugins/providers/bundles/dsh-channels-client/package.json +12 -0
  194. ksadk/plugins/providers/bundles/dsh-knowledge/package.json +1 -1
  195. ksadk/plugins/providers/bundles/dsh-memory/package.json +1 -1
  196. ksadk/plugins/providers/bundles/dsh-skill-center/package.json +1 -1
  197. ksadk/plugins/providers/bundles/dsh-teams-client/client.js +29 -0
  198. ksadk/plugins/providers/bundles/dsh-teams-client/cordis.patch.yml +3 -0
  199. ksadk/plugins/providers/bundles/dsh-teams-client/index.mjs +11 -0
  200. ksadk/plugins/providers/bundles/dsh-teams-client/package.json +35 -0
  201. ksadk/plugins/providers/bundles/dsh-teams-leader-policy/cordis.patch.yml +3 -0
  202. ksadk/plugins/providers/bundles/dsh-teams-leader-policy/index.mjs +13 -0
  203. ksadk/plugins/providers/bundles/dsh-teams-leader-policy/package.json +27 -0
  204. ksadk/plugins/providers/bundles/dsh-teams-profile/cordis.patch.yml +3 -0
  205. ksadk/plugins/providers/bundles/dsh-teams-profile/index.mjs +12 -0
  206. ksadk/plugins/providers/bundles/dsh-teams-profile/package.json +26 -0
  207. ksadk/plugins/providers/bundles/dsh-teams-router/cordis.patch.yml +3 -0
  208. ksadk/plugins/providers/bundles/dsh-teams-router/index.mjs +16 -0
  209. ksadk/plugins/providers/bundles/dsh-teams-router/package.json +27 -0
  210. ksadk/plugins/providers/bundles/dsh-teams-tasks/cordis.patch.yml +3 -0
  211. ksadk/plugins/providers/bundles/dsh-teams-tasks/index.mjs +16 -0
  212. ksadk/plugins/providers/bundles/dsh-teams-tasks/package.json +27 -0
  213. ksadk/plugins/providers/bundles/dsh-teams-tools/cordis.patch.yml +3 -0
  214. ksadk/plugins/providers/bundles/dsh-teams-tools/index.mjs +25 -0
  215. ksadk/plugins/providers/bundles/dsh-teams-tools/package.json +29 -0
  216. ksadk/plugins/providers/bundles/dsh-teams-tools/tools.json +235 -0
  217. ksadk/plugins/providers/bundles/ksadk-codex/index.mjs +1 -1
  218. ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/index.mjs +51 -1
  219. ksadk/plugins/providers/bundles/ksadk-dsh-capability-host/package.json +2 -2
  220. ksadk/plugins/providers/bundles/ksadk-dsh-companion-host/client.mjs +133 -0
  221. ksadk/plugins/providers/bundles/ksadk-dsh-companion-host/index.mjs +14 -0
  222. ksadk/plugins/providers/bundles/ksadk-dsh-studio/client.js +27 -4
  223. ksadk/plugins/providers/bundles/ksadk-dsh-studio/index.mjs +9 -5
  224. ksadk/plugins/providers/bundles/ksadk-harness/index.mjs +1 -1
  225. ksadk/plugins/providers/codex.py +10 -2
  226. ksadk/plugins/providers/dsh_capabilities.py +61 -0
  227. ksadk/plugins/providers/harness.py +181 -33
  228. ksadk/plugins/providers/harness_delegation.py +593 -0
  229. ksadk/plugins/providers/harness_managed.py +456 -0
  230. ksadk/plugins/providers/harness_tools.py +326 -0
  231. ksadk/plugins/providers/shipped_dsh.py +4 -1
  232. ksadk/plugins/subagent_providers/codex.py +28 -6
  233. ksadk/plugins/teams/__init__.py +5 -0
  234. ksadk/plugins/teams/api.py +405 -0
  235. ksadk/plugins/teams/application.py +680 -0
  236. ksadk/plugins/teams/artifacts.py +60 -0
  237. ksadk/plugins/teams/context.py +96 -0
  238. ksadk/plugins/teams/contracts.py +136 -0
  239. ksadk/plugins/teams/domain.py +1427 -0
  240. ksadk/plugins/teams/domain_values.py +24 -0
  241. ksadk/plugins/teams/errors.py +13 -0
  242. ksadk/plugins/teams/migration.py +311 -0
  243. ksadk/plugins/teams/migration_cli.py +322 -0
  244. ksadk/plugins/teams/postgres_store.py +138 -0
  245. ksadk/plugins/teams/runtime.py +777 -0
  246. ksadk/plugins/teams/source_projection.py +84 -0
  247. ksadk/plugins/teams/store.py +311 -0
  248. ksadk/plugins/teams/task_decisions.py +423 -0
  249. ksadk/plugins/teams/transport.py +91 -0
  250. ksadk/plugins/teams/workspaces.py +255 -0
  251. ksadk/runners/_langgraph_runner_streams.py +121 -45
  252. ksadk/runners/_langgraph_state_reader.py +106 -0
  253. ksadk/runners/_session_identity.py +285 -0
  254. ksadk/runners/adk_runner.py +25 -60
  255. ksadk/runners/langgraph_runner.py +128 -111
  256. ksadk/runners/patch_langchain.py +47 -0
  257. ksadk/runners/usage_accumulator.py +11 -3
  258. ksadk/runtime/_runner_adapter/stream_mapping.py +52 -2
  259. ksadk/runtime/conversation_execution.py +25 -1
  260. ksadk/runtime/executor.py +9 -1
  261. ksadk/runtime/factory.py +36 -1
  262. ksadk/runtime/preprocessing.py +11 -3
  263. ksadk/runtime/runner_adapter.py +38 -9
  264. ksadk/runtime/skill_eval_result.py +36 -0
  265. ksadk/runtime/timing.py +46 -0
  266. ksadk/runtime/usage.py +49 -18
  267. ksadk/runtime_context.py +103 -1
  268. ksadk/sandbox/backends/e2b.py +245 -23
  269. ksadk/sandbox/backends/local_process.py +63 -39
  270. ksadk/sandbox/base.py +62 -1
  271. ksadk/sandbox/diagnostics.py +82 -0
  272. ksadk/sandbox/local_controls.py +746 -0
  273. ksadk/sandbox/local_launcher.py +90 -0
  274. ksadk/scheduler/dispatcher.py +1 -1
  275. ksadk/server/invocation_identity.py +118 -0
  276. ksadk/server/routes/common.py +32 -3
  277. ksadk/server/routes/control.py +64 -9
  278. ksadk/server/routes/dependencies.py +2 -1
  279. ksadk/server/routes/kernel_ingress.py +9 -1
  280. ksadk/server/routes/misc.py +233 -25
  281. ksadk/server/routes/models.py +3 -3
  282. ksadk/server/routes/openai_compat.py +76 -13
  283. ksadk/server/routes/run.py +106 -35
  284. ksadk/server/routes/sessions.py +244 -68
  285. ksadk/server/routes/workspace.py +130 -21
  286. ksadk/server/static/assets/{ArtifactsPanel-CGbWlMNh.js → ArtifactsPanel-C1YoaKhx.js} +1 -1
  287. ksadk/server/static/assets/{CodeBlock-b4C7upmO.js → CodeBlock-DHuAWfr5.js} +10 -7
  288. ksadk/server/static/assets/MathMessageMarkdown-cvdrBwYr.js +8 -0
  289. ksadk/server/static/assets/{MermaidBlock-BEBN4Ksz.js → MermaidBlock-DeBkbJvI.js} +9 -9
  290. ksadk/server/static/assets/{NativeTerminalPanel-zvL-WpAn.js → NativeTerminalPanel-oJj44_sV.js} +1 -1
  291. ksadk/server/static/assets/{abnfDiagram-VCTEODGH-BYafW7Za.js → abnfDiagram-VCTEODGH-Dhfv25o2.js} +1 -1
  292. ksadk/server/static/assets/{arc-bTohInsS.js → arc-C35w-pn1.js} +1 -1
  293. ksadk/server/static/assets/architecture-7GRP2DOG-BCsa26zi.js +1 -0
  294. ksadk/server/static/assets/{architectureDiagram-5GKGNRK7-Ch5Lbzsi.js → architectureDiagram-5GKGNRK7-FoMY_u6D.js} +1 -1
  295. ksadk/server/static/assets/{blockDiagram-NRAW4CY4-kqF4MDOG.js → blockDiagram-NRAW4CY4-zD4Rt7oE.js} +1 -1
  296. ksadk/server/static/assets/{c4Diagram-UCG6FXSJ-8uSRIODv.js → c4Diagram-UCG6FXSJ-BCtGGkhN.js} +1 -1
  297. ksadk/server/static/assets/channel-_KDifNys.js +1 -0
  298. ksadk/server/static/assets/chunk-2Q5K7J3B-HdVkJ9F0.js +1 -0
  299. ksadk/server/static/assets/{chunk-5VM5RSS4-DkhehZDr.js → chunk-5VM5RSS4-C2Ms13_k.js} +1 -1
  300. ksadk/server/static/assets/{chunk-F27PBJKO-BdXhtPe9.js → chunk-F27PBJKO-BoTj-qgx.js} +1 -1
  301. ksadk/server/static/assets/{chunk-G27WJ6UU-DPTpvpwi.js → chunk-G27WJ6UU-DOMyyjHH.js} +1 -1
  302. ksadk/server/static/assets/{chunk-JWPE2WC7-Pqoh38el.js → chunk-JWPE2WC7-DbJJqDli.js} +1 -1
  303. ksadk/server/static/assets/{chunk-LCL6LL3I-DeU00qC-.js → chunk-LCL6LL3I-CLuRCt_W.js} +1 -1
  304. ksadk/server/static/assets/{chunk-POPQ4Y6H-CzxScFkr.js → chunk-POPQ4Y6H-D0Dz847e.js} +1 -1
  305. ksadk/server/static/assets/{chunk-RHFEMEQ7-DpqMx-ux.js → chunk-RHFEMEQ7-BWSRzEcd.js} +1 -1
  306. ksadk/server/static/assets/{chunk-SVP7TREG-C6t0SypQ.js → chunk-SVP7TREG-CPoHqkCY.js} +1 -1
  307. ksadk/server/static/assets/{chunk-XXDRQBXY-DVaeafZk.js → chunk-XXDRQBXY-Bx1jS-X-.js} +1 -1
  308. ksadk/server/static/assets/classDiagram-DTDB5LWJ-BVCW3ZqZ.js +1 -0
  309. ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-BVCW3ZqZ.js +1 -0
  310. ksadk/server/static/assets/{cose-bilkent-JH36ORCC-Bf9D3tzJ.js → cose-bilkent-JH36ORCC-LzyWm4m0.js} +1 -1
  311. ksadk/server/static/assets/cynefin-OW5HDTMX-CNXjFctL.js +1 -0
  312. ksadk/server/static/assets/{cynefinDiagram-5FMLGOSQ-B9cY3iTz.js → cynefinDiagram-5FMLGOSQ-BlW_bHED.js} +1 -1
  313. ksadk/server/static/assets/{dagre-3AP2YEHR-CSwlx3CB.js → dagre-3AP2YEHR-Bu_S86_i.js} +1 -1
  314. ksadk/server/static/assets/{dagre-UBpgon5q.js → dagre-B7nCawed.js} +1 -1
  315. ksadk/server/static/assets/{diagram-S7CK7UJ4-C9akhN9a.js → diagram-S7CK7UJ4-W_Zow2Km.js} +1 -1
  316. ksadk/server/static/assets/{diagram-UQ7AKVKN-CgedhTPI.js → diagram-UQ7AKVKN-CLIKAHON.js} +1 -1
  317. ksadk/server/static/assets/{diagram-VSXAHHWV-Cjucz5BY.js → diagram-VSXAHHWV-Dv6_QAlN.js} +1 -1
  318. ksadk/server/static/assets/{diagram-VX7I27RA-Dd4Vleyn.js → diagram-VX7I27RA-BWAWRDtZ.js} +1 -1
  319. ksadk/server/static/assets/{diagram-Z3DM3KII-CZ2jGtYW.js → diagram-Z3DM3KII-XA_rWMss.js} +1 -1
  320. ksadk/server/static/assets/dist-0X_j2Rcc.js +1 -0
  321. ksadk/server/static/assets/{dist-DiixqL0J.js → dist-1nXCdsej.js} +1 -1
  322. ksadk/server/static/assets/{dist-BIr4DSRq.js → dist-2vL2sAdF.js} +1 -1
  323. ksadk/server/static/assets/{dist-D_ctSS2i.js → dist-B3bA05-e.js} +1 -1
  324. ksadk/server/static/assets/{dist-ClYUxfeK.js → dist-BLpRy_Yx.js} +1 -1
  325. ksadk/server/static/assets/{dist-QfkEHOlb.js → dist-BO_UwatH.js} +1 -1
  326. ksadk/server/static/assets/{dist-B3FR1SKK.js → dist-BdNFAney.js} +1 -1
  327. ksadk/server/static/assets/{dist-BnaTiyzN.js → dist-C0J5_3qM.js} +1 -1
  328. ksadk/server/static/assets/{dist-Bj730Ib4.js → dist-CGt_UGeO.js} +1 -1
  329. ksadk/server/static/assets/{dist-CFzsn6BG.js → dist-CIRMvUM4.js} +1 -1
  330. ksadk/server/static/assets/{dist-BgV_owcB.js → dist-CIpWk_5f.js} +1 -1
  331. ksadk/server/static/assets/{dist-C5_ZAZsG.js → dist-CPyieXEf.js} +1 -1
  332. ksadk/server/static/assets/{dist-btbmmX5O.js → dist-D-92S-Fd.js} +1 -1
  333. ksadk/server/static/assets/{dist-fBO2v5Kt.js → dist-DNKuMzWc.js} +1 -1
  334. ksadk/server/static/assets/{dist-ufY3F5p6.js → dist-DWfdmz9s.js} +2 -2
  335. ksadk/server/static/assets/{dist-DVCOWtha.js → dist-DppE_r-D.js} +1 -1
  336. ksadk/server/static/assets/{dist-C1NMAY5a.js → dist-DyG6Ya-z.js} +1 -1
  337. ksadk/server/static/assets/{dist-CB9iJrvg.js → dist-M-SrdhhZ.js} +1 -1
  338. ksadk/server/static/assets/{dist-DvFK7p5S.js → dist-mqD5TZup.js} +1 -1
  339. ksadk/server/static/assets/{dist-Cf125P_m.js → dist-n3n6t_FO.js} +1 -1
  340. ksadk/server/static/assets/{dist-DFD6Qa6T.js → dist-qe8xjesy.js} +1 -1
  341. ksadk/server/static/assets/{dist-DoVSwoDb.js → dist-t6MzE0jU.js} +1 -1
  342. ksadk/server/static/assets/{ebnfDiagram-PWID7BFC-Ci8NqqZu.js → ebnfDiagram-PWID7BFC-BfCzF1Xi.js} +1 -1
  343. ksadk/server/static/assets/{erDiagram-SSCWMZ5O-CCIOhLZG.js → erDiagram-SSCWMZ5O-Dpz9_0zn.js} +1 -1
  344. ksadk/server/static/assets/eventmodeling-NTZA5JFV-B5-8RH9c.js +1 -0
  345. ksadk/server/static/assets/flowDiagram-A5DVABFB-BppFxEKw.js +1 -0
  346. ksadk/server/static/assets/{ganttDiagram-EL5Y4UJY-Cp_r9Hb6.js → ganttDiagram-EL5Y4UJY-DDaG1f4_.js} +1 -1
  347. ksadk/server/static/assets/gitGraph-4MIJSDKK-B-AhYj4C.js +1 -0
  348. ksadk/server/static/assets/{gitGraphDiagram-WWUBYQGX-Dlhc8Wr8.js → gitGraphDiagram-WWUBYQGX-DcxzRwYC.js} +1 -1
  349. ksadk/server/static/assets/index-BMd2mucF.css +2 -0
  350. ksadk/server/static/assets/index-D5qyyhTH.js +244 -0
  351. ksadk/server/static/assets/info-A6RAGUB7-0uiKrC35.js +1 -0
  352. ksadk/server/static/assets/{infoDiagram-RXCK75RN-CO0rRTRA.js → infoDiagram-RXCK75RN-CYMdn6lQ.js} +1 -1
  353. ksadk/server/static/assets/{ishikawaDiagram-5VMMS53U-CHiaedSS.js → ishikawaDiagram-5VMMS53U-CLHFAD6c.js} +1 -1
  354. ksadk/server/static/assets/{journeyDiagram-EYS64GPL-CHcCIB09.js → journeyDiagram-EYS64GPL-BHSKQGAl.js} +1 -1
  355. ksadk/server/static/assets/{kanban-definition-3QL26DDD-CJ_ebBZf.js → kanban-definition-3QL26DDD-D5W3tjTT.js} +1 -1
  356. ksadk/server/static/assets/{katex-B4weu383.js → katex-mtjOi4KM.js} +1 -1
  357. ksadk/server/static/assets/{linear-V-MgYHW1.js → linear-BETqsxE_.js} +1 -1
  358. ksadk/server/static/assets/{mermaid-parser.core-CBijEX_c.js → mermaid-parser.core-DPWrvs90.js} +2 -2
  359. ksadk/server/static/assets/{mindmap-definition-FBJOCRG2-Bc-pQvpp.js → mindmap-definition-FBJOCRG2-CJG2mfBP.js} +1 -1
  360. ksadk/server/static/assets/packet-AYTQ26CC-BVTmZ_cw.js +1 -0
  361. ksadk/server/static/assets/{pegDiagram-XKGWAZYB-D7genGLl.js → pegDiagram-XKGWAZYB-GjAPNaqn.js} +1 -1
  362. ksadk/server/static/assets/pie-WAS4IAKB-DyfxBU7V.js +1 -0
  363. ksadk/server/static/assets/{pieDiagram-E7YTZNPT-Bxj32zwD.js → pieDiagram-E7YTZNPT-ToIewrqr.js} +1 -1
  364. ksadk/server/static/assets/{quadrantDiagram-AXDQQJYC-BURv2mGh.js → quadrantDiagram-AXDQQJYC-4d78KiEY.js} +1 -1
  365. ksadk/server/static/assets/radar-RG4KPBEZ-FFontjL2.js +1 -0
  366. ksadk/server/static/assets/railroad-74A4TZTK-D0Uidzen.js +1 -0
  367. ksadk/server/static/assets/railroad-abnf-HS5TGJTU-BOo_9T2h.js +1 -0
  368. ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-D6-BjW7Z.js +1 -0
  369. ksadk/server/static/assets/railroad-peg-WCYAUIDC-CXx__yMm.js +1 -0
  370. ksadk/server/static/assets/{railroadDiagram-O6MQD6OU-CCsh3avW.js → railroadDiagram-O6MQD6OU-DKzx4xfv.js} +1 -1
  371. ksadk/server/static/assets/{requirementDiagram-EFPCY7ZU-_FRRBKEd.js → requirementDiagram-EFPCY7ZU-CJYljxQS.js} +1 -1
  372. ksadk/server/static/assets/{sankeyDiagram-P5KCCOFB-C-gr2o9M.js → sankeyDiagram-P5KCCOFB-DLU2fV1w.js} +1 -1
  373. ksadk/server/static/assets/{sequenceDiagram-WJ2MYXX4-D97NmfKg.js → sequenceDiagram-WJ2MYXX4-CVqysrA9.js} +1 -1
  374. ksadk/server/static/assets/{sizeCapture-X5ZJPWSS-DjrPC5FX.js → sizeCapture-X5ZJPWSS-BUxfmTHc.js} +1 -1
  375. ksadk/server/static/assets/{stateDiagram-HBIQ2CUA-DzMNg1hh.js → stateDiagram-HBIQ2CUA-CNFgYI9E.js} +1 -1
  376. ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BXAFScz8.js +1 -0
  377. ksadk/server/static/assets/{swimlanes-XN3QIQJK-Cssf_CsU.js → swimlanes-XN3QIQJK-B6qCMe8N.js} +1 -1
  378. ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-uIQ2lJKH.js +8 -0
  379. ksadk/server/static/assets/{timeline-definition-24CTP7MA-BWTHzyS1.js → timeline-definition-24CTP7MA-CMD3x_U_.js} +1 -1
  380. ksadk/server/static/assets/treeView-Q6P3EWNA-CK5GgucZ.js +1 -0
  381. ksadk/server/static/assets/treemap-WGGIJYW6-Bq1u1SpG.js +1 -0
  382. ksadk/server/static/assets/{vennDiagram-4TSXK5OY-BSKgJsmR.js → vennDiagram-4TSXK5OY-BqtUqvXM.js} +1 -1
  383. ksadk/server/static/assets/wardley-WFR3VGLG-QAt06uEz.js +1 -0
  384. ksadk/server/static/assets/{wardleyDiagram-VM6X3IG4-eflHNoaZ.js → wardleyDiagram-VM6X3IG4-B5KfDjI-.js} +1 -1
  385. ksadk/server/static/assets/{xychartDiagram-S5SC5T6Z-eYqrQ-v4.js → xychartDiagram-S5SC5T6Z-BaUlSZrn.js} +1 -1
  386. ksadk/server/static/index.html +2 -2
  387. ksadk/server/terminal_sessions.py +34 -2
  388. ksadk/sessions/invocation_identity.py +235 -0
  389. ksadk/skills/__init__.py +26 -0
  390. ksadk/skills/events.py +464 -0
  391. ksadk/skills/manifest_cache.py +263 -0
  392. ksadk/skills/mcp_server/__init__.py +0 -0
  393. ksadk/skills/mcp_server/_registry.py +33 -0
  394. ksadk/skills/mcp_server/_routing.py +26 -0
  395. ksadk/skills/mcp_server/_workspace_files.py +160 -0
  396. ksadk/skills/mcp_server/register.py +415 -0
  397. ksadk/skills/mcp_server/server.py +218 -0
  398. ksadk/skills/models.py +11 -0
  399. ksadk/skills/observability.py +132 -0
  400. ksadk/skills/package_store.py +75 -2
  401. ksadk/skills/runtime/agent.py +38 -5
  402. ksadk/skills/runtime/artifacts.py +87 -0
  403. ksadk/skills/runtime/backends/e2b.py +393 -52
  404. ksadk/skills/runtime/backends/local.py +621 -119
  405. ksadk/skills/runtime/base.py +78 -7
  406. ksadk/skills/runtime/executor.py +266 -1
  407. ksadk/skills/runtime/loader.py +108 -3
  408. ksadk/skills/runtime/request.py +18 -0
  409. ksadk/skills/tool_defs.py +108 -3
  410. ksadk/studio/api.py +592 -57
  411. ksadk/studio/api_contracts.py +8 -2
  412. ksadk/studio/api_plugin_routes.py +39 -12
  413. ksadk/studio/api_resource_connections.py +79 -41
  414. ksadk/studio/authoring.py +12 -6
  415. ksadk/studio/authoring_coordinator.py +4 -2
  416. ksadk/studio/builder.py +12 -0
  417. ksadk/studio/capabilities.py +23 -6
  418. ksadk/studio/channel_connections.py +333 -0
  419. ksadk/studio/cloud.py +30 -10
  420. ksadk/studio/cloud_shared_web.py +75 -2
  421. ksadk/studio/codex_agent_service.py +2 -2
  422. ksadk/studio/codex_builder.py +1 -1
  423. ksadk/studio/codex_run.py +6 -1
  424. ksadk/studio/compiler.py +10 -0
  425. ksadk/studio/configuration.py +182 -0
  426. ksadk/studio/contracts.py +33 -5
  427. ksadk/studio/dsh_application.py +135 -25
  428. ksadk/studio/dsh_capability_service.py +287 -20
  429. ksadk/studio/dsh_lifecycle.py +58 -0
  430. ksadk/studio/dsh_provider_registration.py +55 -16
  431. ksadk/studio/entry.py +53 -0
  432. ksadk/studio/event_store.py +36 -5
  433. ksadk/studio/execution_host.py +525 -0
  434. ksadk/studio/framework_run.py +32 -10
  435. ksadk/studio/hosted_kernel.py +1 -1
  436. ksadk/studio/kernel_registry.py +418 -0
  437. ksadk/studio/kernel_sqlite_migration.py +181 -0
  438. ksadk/studio/model_client.py +1178 -64
  439. ksadk/studio/model_profile_service.py +26 -11
  440. ksadk/studio/native_documents.py +172 -0
  441. ksadk/studio/plugin_composition.py +13 -2
  442. ksadk/studio/plugin_kernel_adapter.py +15 -0
  443. ksadk/studio/plugin_lifecycle.py +80 -0
  444. ksadk/studio/plugin_runtime.py +230 -17
  445. ksadk/studio/provider_recovery.py +59 -0
  446. ksadk/studio/recovery_page.py +70 -0
  447. ksadk/studio/resource_authority.py +59 -32
  448. ksadk/studio/resource_catalog.py +6 -0
  449. ksadk/studio/run_activity.py +895 -0
  450. ksadk/studio/run_documents.py +127 -0
  451. ksadk/studio/run_service.py +329 -33
  452. ksadk/studio/runtime_catalog.py +53 -10
  453. ksadk/studio/runtime_source.py +1 -1
  454. ksadk/studio/scheduler_runtime.py +32 -289
  455. ksadk/studio/service.py +398 -103
  456. ksadk/studio/shared_web.py +149 -36
  457. ksadk/studio/static/assets/ChannelsPage-D_PGmKVq.js +8 -0
  458. ksadk/studio/static/assets/CodeBlock-DMIf4h33-UIqo-BPW.js +44 -0
  459. ksadk/studio/static/assets/ExecutionTree-v3HexvPo-Bk8wzGSy.js +1 -0
  460. ksadk/studio/static/assets/MathMessageMarkdown-BesSeCYl-OhNwH4K9.js +8 -0
  461. ksadk/studio/static/assets/MermaidBlock-H_0qzQDf-BdXtxug_.js +11 -0
  462. ksadk/studio/static/assets/MessageMarkdown-CwMTvgFj-g0I-I4dD.js +59 -0
  463. ksadk/studio/static/assets/PrismRenderer-5pK6tUdb.js +3 -0
  464. ksadk/studio/static/assets/TeamsPage-DqX4HWKQ.js +3 -0
  465. ksadk/studio/static/assets/abnfDiagram-VCTEODGH-Bnb1O3tA.js +1 -0
  466. ksadk/studio/static/assets/architecture-7GRP2DOG-BMOPAkUC.js +1 -0
  467. ksadk/studio/static/assets/architectureDiagram-5GKGNRK7-5Zn1gqJv.js +36 -0
  468. ksadk/studio/static/assets/{blockDiagram-I7D4REHJ-CFmPl1de.js → blockDiagram-I7D4REHJ-CLB4L11u.js} +6 -6
  469. ksadk/studio/static/assets/{c4Diagram-7LVT6UL2-BRrGu8qt.js → c4Diagram-7LVT6UL2-BOma_Z_F.js} +7 -7
  470. ksadk/studio/static/assets/channel-r8itPEik.js +1 -0
  471. ksadk/studio/static/assets/chunk-2E4U76K2-BFf_huql.js +2 -0
  472. ksadk/studio/static/assets/chunk-2ZTRR5NV-C2qZJila.js +2 -0
  473. ksadk/studio/static/assets/chunk-3Z5EZCMW-DMniOlPd.js +1 -0
  474. ksadk/studio/static/assets/{chunk-4HAMMTFA-D220vUtq.js → chunk-4HAMMTFA-DVtDP4rm.js} +7 -7
  475. ksadk/studio/static/assets/chunk-5V3GS4D5-i-ZDOEnP.js +1 -0
  476. ksadk/studio/static/assets/chunk-6AZGARVD-BB6FqMl-.js +1 -0
  477. ksadk/studio/static/assets/chunk-6EIED4P4-DdUJkP0f.js +1 -0
  478. ksadk/studio/static/assets/chunk-6K3QC6MW-CqVsVn-y.js +1 -0
  479. ksadk/studio/static/assets/chunk-6TQVIW2G-DKlLbNIP.js +1 -0
  480. ksadk/studio/static/assets/chunk-747NJXEK-BFkZPlab.js +2 -0
  481. ksadk/studio/static/assets/chunk-75Z2AOVW-BZNhM4vB.js +2 -0
  482. ksadk/studio/static/assets/chunk-CLGD4ZFX-D-GTtyKs.js +1 -0
  483. ksadk/studio/static/assets/{chunk-DU6HZSFF-C4DtVpCu.js → chunk-DU6HZSFF-CpEZCUgg.js} +1 -1
  484. ksadk/studio/static/assets/chunk-F27PBJKO-D7pvKf0C.js +1 -0
  485. ksadk/studio/static/assets/{chunk-GMAD6QVW-DiQA-u2N.js → chunk-GMAD6QVW-DE_8H717.js} +6 -6
  486. ksadk/studio/static/assets/chunk-GVQU2GXP-BfEB0lNv.js +1 -0
  487. ksadk/studio/static/assets/chunk-I5DQTOEV-Hm2LfiYI.js +1 -0
  488. ksadk/studio/static/assets/chunk-ICYGCRZG-749o-pGJ.js +1 -0
  489. ksadk/studio/static/assets/chunk-IH6LHLGP-CC6I9F3i.js +1 -0
  490. ksadk/studio/static/assets/{chunk-IMKFNOWR-BSlbjT_b.js → chunk-IMKFNOWR-D38axYOR.js} +5 -5
  491. ksadk/studio/static/assets/chunk-KI3K4JFJ-Rma-0k_M.js +1 -0
  492. ksadk/studio/static/assets/chunk-L3NEJ4N5-Dq5xn7aL.js +1 -0
  493. ksadk/studio/static/assets/chunk-LNGE3PJU-DWpGwHrW.js +34 -0
  494. ksadk/studio/static/assets/{chunk-OSK3NFVY-M2m6G3j4.js → chunk-OSK3NFVY-DiCQjx9b.js} +5 -5
  495. ksadk/studio/static/assets/chunk-OUJLGHUK-D0j2JRSg.js +2 -0
  496. ksadk/studio/static/assets/{chunk-P2QGCYS3-DezaQxiK.js → chunk-P2QGCYS3-VdhKmfYq.js} +1 -1
  497. ksadk/studio/static/assets/chunk-POPQ4Y6H-C1_rzO5M.js +1 -0
  498. ksadk/studio/static/assets/chunk-PWAF6VOD-B45HvflI.js +1 -0
  499. ksadk/studio/static/assets/{chunk-SHT3W25Y-DAyIVp5H.js → chunk-SHT3W25Y-DsCFnRVE.js} +9 -9
  500. ksadk/studio/static/assets/{chunk-SVP7TREG-DulomOrS.js → chunk-SVP7TREG-DljApgRX.js} +1 -1
  501. ksadk/studio/static/assets/{chunk-TICWLB2K-bHJYoflj.js → chunk-TICWLB2K-DWqRtyqa.js} +6 -6
  502. ksadk/studio/static/assets/chunk-TLUHSLCS-DUeGgnD5.js +2 -0
  503. ksadk/studio/static/assets/chunk-UY3FDG6J-CnmaAkG5.js +1 -0
  504. ksadk/studio/static/assets/chunk-XHIXRSVI-BFQ6B8BE.js +1 -0
  505. ksadk/studio/static/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
  506. ksadk/studio/static/assets/classDiagram-ZZMXUADV-DjeMNJmu.js +1 -0
  507. ksadk/studio/static/assets/classDiagram-v2-VYDZK3BY-DjeMNJmu.js +1 -0
  508. ksadk/studio/static/assets/clsx-DB0hHKMi.js +1 -0
  509. ksadk/studio/static/assets/cose-bilkent-JH36ORCC-om8AY0Mc.js +1 -0
  510. ksadk/studio/static/assets/createLucideIcon-DR0LGTP5.js +1 -0
  511. ksadk/studio/static/assets/cynefin-OW5HDTMX-7tP7QfM3.js +1 -0
  512. ksadk/studio/static/assets/cynefinDiagram-5FMLGOSQ-6BrmK52S.js +62 -0
  513. ksadk/studio/static/assets/dagre-GXQ25YYZ-buZBRlwz.js +4 -0
  514. ksadk/studio/static/assets/{diagram-S7CK7UJ4-0BZ98mya.js → diagram-S7CK7UJ4-C6aH78c4.js} +3 -3
  515. ksadk/studio/static/assets/diagram-UQ7AKVKN-DY_tQ6C_.js +41 -0
  516. ksadk/studio/static/assets/diagram-VSXAHHWV-DX9p5cQT.js +3 -0
  517. ksadk/studio/static/assets/diagram-VX7I27RA-DB2WSH8X.js +24 -0
  518. ksadk/studio/static/assets/diagram-Z3DM3KII-Ce1BJwHE.js +24 -0
  519. ksadk/studio/static/assets/ebnfDiagram-PWID7BFC-Daukxwqf.js +1 -0
  520. ksadk/studio/static/assets/{erDiagram-RLTQ6QDP-DLGry2Ap.js → erDiagram-RLTQ6QDP-CGthTMmJ.js} +6 -6
  521. ksadk/studio/static/assets/eventmodeling-NTZA5JFV-BR2FzK4R.js +1 -0
  522. ksadk/studio/static/assets/flowDiagram-HODETNUW-CZ1tEenp.js +1 -0
  523. ksadk/studio/static/assets/ganttDiagram-EL5Y4UJY-BfoAZW9X.js +292 -0
  524. ksadk/studio/static/assets/gitGraph-4MIJSDKK-DYlXv_yJ.js +1 -0
  525. ksadk/studio/static/assets/gitGraphDiagram-WWUBYQGX-S985OIJF.js +106 -0
  526. ksadk/studio/static/assets/iconfont-4HN3C9Pg.woff2 +0 -0
  527. ksadk/studio/static/assets/index-CfEnms6Y.css +2 -0
  528. ksadk/studio/static/assets/index-Dp61rOWZ.js +0 -0
  529. ksadk/studio/static/assets/index.dom-BQenBtFm.js +1 -0
  530. ksadk/studio/static/assets/info-A6RAGUB7-BlU-8_xu.js +1 -0
  531. ksadk/studio/static/assets/infoDiagram-27XIBGKW-CO3W8tFn.js +2 -0
  532. ksadk/studio/static/assets/{ishikawaDiagram-5VMMS53U-CljI2wyf.js → ishikawaDiagram-5VMMS53U-BUGEl8cO.js} +2 -2
  533. ksadk/studio/static/assets/{journeyDiagram-3NMN7TZE-D50Fo2sL.js → journeyDiagram-3NMN7TZE-Ch2ZYxvr.js} +6 -6
  534. ksadk/studio/static/assets/{kanban-definition-UXKFOSKX-DimfOTam.js → kanban-definition-UXKFOSKX-Da-Fp4vC.js} +3 -3
  535. ksadk/studio/static/assets/kingsoft-cloud-BOcLiQ3e.ico +0 -0
  536. ksadk/studio/static/assets/{line-CX5BOOUP.js → line-BDaeq300.js} +1 -1
  537. ksadk/studio/static/assets/linear-DmucvK78.js +1 -0
  538. ksadk/studio/static/assets/mermaid-parser.core-Cj5mYdBi.js +4 -0
  539. ksadk/studio/static/assets/{mindmap-definition-YA3MSWOX-Bizzqy5R.js → mindmap-definition-YA3MSWOX-CvlsVQ38.js} +1 -1
  540. ksadk/studio/static/assets/packet-AYTQ26CC-BSJEH9Lb.js +1 -0
  541. ksadk/studio/static/assets/pegDiagram-XKGWAZYB-BuHuNgT5.js +1 -0
  542. ksadk/studio/static/assets/pie-WAS4IAKB-qxv01Y8W.js +1 -0
  543. ksadk/studio/static/assets/{pieDiagram-E7YTZNPT-B9mrFSDF.js → pieDiagram-E7YTZNPT-DlrWiSOv.js} +1 -1
  544. ksadk/studio/static/assets/preload-helper-CO68xz6u.js +1 -0
  545. ksadk/studio/static/assets/presentation-yYw7xK60-BmcZriri.js +1 -0
  546. ksadk/studio/static/assets/{quadrantDiagram-AXDQQJYC-NzUfCbMR.js → quadrantDiagram-AXDQQJYC-BA3hpUZM.js} +6 -6
  547. ksadk/studio/static/assets/radar-RG4KPBEZ-B6h6pWOs.js +1 -0
  548. ksadk/studio/static/assets/railroad-74A4TZTK-CGtTWdGc.js +1 -0
  549. ksadk/studio/static/assets/railroad-abnf-HS5TGJTU-Cq7y22IA.js +1 -0
  550. ksadk/studio/static/assets/railroad-ebnf-LZEXJU2U-V0aQVv9m.js +1 -0
  551. ksadk/studio/static/assets/railroad-peg-WCYAUIDC-BQiIsX_p.js +1 -0
  552. ksadk/studio/static/assets/railroadDiagram-O6MQD6OU-BxpAazym.js +1 -0
  553. ksadk/studio/static/assets/{requirementDiagram-BXWQKSXE-BF3d103U.js → requirementDiagram-BXWQKSXE-E-Ge0FcV.js} +1 -1
  554. ksadk/studio/static/assets/sankeyDiagram-P5KCCOFB-CA6YKhQ3.js +40 -0
  555. ksadk/studio/static/assets/{sequenceDiagram-WJ2MYXX4-Dh4wZtUm.js → sequenceDiagram-WJ2MYXX4-CcElXGg4.js} +9 -9
  556. ksadk/studio/static/assets/src-B6xuSHsQ.js +1 -0
  557. ksadk/studio/static/assets/stateDiagram-D77RDMKH-DdXZOFqY.js +1 -0
  558. ksadk/studio/static/assets/stateDiagram-v2-MP3YSRHH-CJbOM-QK.js +1 -0
  559. ksadk/studio/static/assets/swimlanes-42K2YHIH-NtgEEHLY.js +1 -0
  560. ksadk/studio/static/assets/swimlanesDiagram-VR7AAH4N-D-AVlW8B.js +8 -0
  561. ksadk/studio/static/assets/{timeline-definition-24CTP7MA-DxmSSjRB.js → timeline-definition-24CTP7MA-CIuYhNy3.js} +7 -7
  562. ksadk/studio/static/assets/treeView-Q6P3EWNA-BTTYcvrF.js +1 -0
  563. ksadk/studio/static/assets/treemap-WGGIJYW6-Cg7tyfH8.js +1 -0
  564. ksadk/studio/static/assets/vennDiagram-4TSXK5OY-7HbApbrv.js +34 -0
  565. ksadk/studio/static/assets/wardley-WFR3VGLG-C6N1rULY.js +1 -0
  566. ksadk/studio/static/assets/{wardleyDiagram-VM6X3IG4-Ba1AOWoe.js → wardleyDiagram-VM6X3IG4-CMJiaedy.js} +1 -1
  567. ksadk/studio/static/assets/{xychartDiagram-S5SC5T6Z-Cr5pt5Y-.js → xychartDiagram-S5SC5T6Z-BdgtMvW2.js} +6 -6
  568. ksadk/studio/static/index.html +8 -2
  569. ksadk/studio/teams_catalog.py +133 -0
  570. ksadk/studio/teams_installation.py +214 -0
  571. ksadk/studio/teams_node.py +545 -0
  572. ksadk/studio/teams_node_runner.py +69 -0
  573. ksadk/studio/teams_remote.py +274 -0
  574. ksadk/studio/templates.py +40 -19
  575. ksadk/studio/validator.py +13 -0
  576. ksadk/studio/workspace.py +19 -4
  577. ksadk/studio/workspace_plugins.py +136 -0
  578. ksadk/studio/workspace_registry.py +286 -0
  579. ksadk/toolsets/__init__.py +11 -0
  580. ksadk/toolsets/skills.py +446 -378
  581. ksadk/toolsets/workspace.py +3 -3
  582. ksadk/toolsets/workspace_identity.py +15 -0
  583. ksadk/version.py +1 -1
  584. ksadk_runtime_common/memory_backend/providers/lancedb.py +56 -2
  585. ksadk_runtime_common/schemas/memory_backend_manifest.schema.json +148 -148
  586. ksadk_runtime_common/workspace_files/router.py +26 -13
  587. ksadk/server/static/assets/MathMessageMarkdown-DbdW5A4_.js +0 -8
  588. ksadk/server/static/assets/architecture-7GRP2DOG-BW5UtSnx.js +0 -1
  589. ksadk/server/static/assets/channel-CF5Up3hQ.js +0 -1
  590. ksadk/server/static/assets/chunk-2Q5K7J3B-KkXX47WI.js +0 -1
  591. ksadk/server/static/assets/classDiagram-DTDB5LWJ-Cz81acRQ.js +0 -1
  592. ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-Cz81acRQ.js +0 -1
  593. ksadk/server/static/assets/cynefin-OW5HDTMX-DVWs8a2t.js +0 -1
  594. ksadk/server/static/assets/dist-B2_CVgKv.js +0 -1
  595. ksadk/server/static/assets/eventmodeling-NTZA5JFV-CQqR2hg3.js +0 -1
  596. ksadk/server/static/assets/flowDiagram-A5DVABFB-DDRRbGPm.js +0 -1
  597. ksadk/server/static/assets/gitGraph-4MIJSDKK-fgWEf7UD.js +0 -1
  598. ksadk/server/static/assets/index-DcTML1Up.css +0 -2
  599. ksadk/server/static/assets/index-Dh2XHqPK.js +0 -244
  600. ksadk/server/static/assets/info-A6RAGUB7-BUecLTdt.js +0 -1
  601. ksadk/server/static/assets/packet-AYTQ26CC-BeW-btFv.js +0 -1
  602. ksadk/server/static/assets/pie-WAS4IAKB-X0xh4SaT.js +0 -1
  603. ksadk/server/static/assets/radar-RG4KPBEZ-DzRMSqjd.js +0 -1
  604. ksadk/server/static/assets/railroad-74A4TZTK-Cc44icX-.js +0 -1
  605. ksadk/server/static/assets/railroad-abnf-HS5TGJTU-D6S4BdV-.js +0 -1
  606. ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-vD3aVE2o.js +0 -1
  607. ksadk/server/static/assets/railroad-peg-WCYAUIDC-CYbW_b4T.js +0 -1
  608. ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BIcjKFhF.js +0 -1
  609. ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-tq3K3Ybl.js +0 -8
  610. ksadk/server/static/assets/treeView-Q6P3EWNA-DBXt3GdU.js +0 -1
  611. ksadk/server/static/assets/treemap-WGGIJYW6-DrCy4E_l.js +0 -1
  612. ksadk/server/static/assets/wardley-WFR3VGLG-CefhOliM.js +0 -1
  613. ksadk/studio/static/assets/CodeBlock-DCUUY0PL-BLjA7kbS.js +0 -41
  614. ksadk/studio/static/assets/MathMessageMarkdown-CBcDrAw--CUYIXwgI.js +0 -8
  615. ksadk/studio/static/assets/MermaidBlock-DBFTztfQ-BTYKWEbD.js +0 -44
  616. ksadk/studio/static/assets/PrismRenderer-wiXRHURw.js +0 -3
  617. ksadk/studio/static/assets/abnfDiagram-VCTEODGH-CLETGjKq.js +0 -1
  618. ksadk/studio/static/assets/architecture-7GRP2DOG-hXMiO_AU.js +0 -1
  619. ksadk/studio/static/assets/architectureDiagram-5GKGNRK7-B5EQysk6.js +0 -36
  620. ksadk/studio/static/assets/channel-BqO-gtEw.js +0 -1
  621. ksadk/studio/static/assets/chunk-75Z2AOVW-C8lLv_qc.js +0 -2
  622. ksadk/studio/static/assets/chunk-F27PBJKO-Cpw14SNG.js +0 -1
  623. ksadk/studio/static/assets/chunk-GVQU2GXP-DUdNBUCi.js +0 -1
  624. ksadk/studio/static/assets/chunk-L3NEJ4N5-Db8Ab22W.js +0 -1
  625. ksadk/studio/static/assets/chunk-POPQ4Y6H-DOpufJ3t.js +0 -1
  626. ksadk/studio/static/assets/chunk-PWAF6VOD-CfLb1gSc.js +0 -1
  627. ksadk/studio/static/assets/chunk-XXDRQBXY-7PcdR2B1.js +0 -1
  628. ksadk/studio/static/assets/classDiagram-ZZMXUADV-D_bW8JjA.js +0 -1
  629. ksadk/studio/static/assets/classDiagram-v2-VYDZK3BY-D_bW8JjA.js +0 -1
  630. ksadk/studio/static/assets/cose-bilkent-JH36ORCC-snL88wkX.js +0 -1
  631. ksadk/studio/static/assets/cynefin-OW5HDTMX-Bd1YhRo1.js +0 -1
  632. ksadk/studio/static/assets/cynefinDiagram-5FMLGOSQ-BBrIG_mI.js +0 -62
  633. ksadk/studio/static/assets/dagre-GXQ25YYZ-DtF1nGdY.js +0 -4
  634. ksadk/studio/static/assets/diagram-UQ7AKVKN-6mLKEo6L.js +0 -41
  635. ksadk/studio/static/assets/diagram-VSXAHHWV-CJBIaiZ2.js +0 -3
  636. ksadk/studio/static/assets/diagram-VX7I27RA-BohLEE1C.js +0 -24
  637. ksadk/studio/static/assets/diagram-Z3DM3KII-D8KIGonG.js +0 -24
  638. ksadk/studio/static/assets/ebnfDiagram-PWID7BFC-C99HU61t.js +0 -1
  639. ksadk/studio/static/assets/eventmodeling-NTZA5JFV-B1_5Ac8j.js +0 -1
  640. ksadk/studio/static/assets/flowDiagram-HODETNUW-DD5hmicn.js +0 -1
  641. ksadk/studio/static/assets/ganttDiagram-EL5Y4UJY-BPJrVLSG.js +0 -292
  642. ksadk/studio/static/assets/gitGraph-4MIJSDKK-Cy_ZQBGi.js +0 -1
  643. ksadk/studio/static/assets/gitGraphDiagram-WWUBYQGX-CZCUz4MT.js +0 -106
  644. ksadk/studio/static/assets/index-CeHL9ARV.css +0 -2
  645. ksadk/studio/static/assets/index-D9QEcVpL.js +0 -320
  646. ksadk/studio/static/assets/info-A6RAGUB7-DBzDQB_I.js +0 -1
  647. ksadk/studio/static/assets/infoDiagram-27XIBGKW-B-sq07Hi.js +0 -2
  648. ksadk/studio/static/assets/linear-BCxN9JLv.js +0 -1
  649. ksadk/studio/static/assets/mermaid-parser.core-BdCz8fkS.js +0 -7
  650. ksadk/studio/static/assets/packet-AYTQ26CC-gPln-_kG.js +0 -1
  651. ksadk/studio/static/assets/pegDiagram-XKGWAZYB-Dy3fB-gW.js +0 -1
  652. ksadk/studio/static/assets/pie-WAS4IAKB-qZdHMr7B.js +0 -1
  653. ksadk/studio/static/assets/radar-RG4KPBEZ-BZlnaea9.js +0 -1
  654. ksadk/studio/static/assets/railroad-74A4TZTK-Ce3__H9c.js +0 -1
  655. ksadk/studio/static/assets/railroad-abnf-HS5TGJTU-DqQn7EzD.js +0 -1
  656. ksadk/studio/static/assets/railroad-ebnf-LZEXJU2U-B55kCA8F.js +0 -1
  657. ksadk/studio/static/assets/railroad-peg-WCYAUIDC-DfQnvkHd.js +0 -1
  658. ksadk/studio/static/assets/railroadDiagram-O6MQD6OU-DnhMjZCk.js +0 -1
  659. ksadk/studio/static/assets/sankeyDiagram-P5KCCOFB-Bo-JTwt0.js +0 -40
  660. ksadk/studio/static/assets/src-SFn9St9H.js +0 -1
  661. ksadk/studio/static/assets/stateDiagram-D77RDMKH-DH774G6d.js +0 -1
  662. ksadk/studio/static/assets/stateDiagram-v2-MP3YSRHH-DZvVWPBo.js +0 -1
  663. ksadk/studio/static/assets/swimlanes-42K2YHIH-Bl13OvTX.js +0 -1
  664. ksadk/studio/static/assets/swimlanesDiagram-VR7AAH4N-BnFOTALJ.js +0 -8
  665. ksadk/studio/static/assets/treeView-Q6P3EWNA-D5Nn9Swz.js +0 -1
  666. ksadk/studio/static/assets/treemap-WGGIJYW6-CgHgnQhE.js +0 -1
  667. ksadk/studio/static/assets/vennDiagram-4TSXK5OY-B9QEXcJq.js +0 -34
  668. ksadk/studio/static/assets/wardley-WFR3VGLG-DXrK2RRY.js +0 -1
  669. {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/WHEEL +0 -0
  670. {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/entry_points.txt +0 -0
  671. {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/licenses/LICENSE +0 -0
  672. {agentengine_sdk_python-0.8.4.dist-info → agentengine_sdk_python-0.8.5.dist-info}/top_level.txt +0 -0
  673. /ksadk/studio/static/assets/{MathMessageMarkdown-CBcDrAw--BEOyPC3w.css → MathMessageMarkdown-BesSeCYl-BEOyPC3w.css} +0 -0
@@ -1 +1 @@
1
- {"schemaVersion":1,"sourceCommit":"8e37106d1faed44c2de8b7f72a0d8cd2f1fbddd5","sourceTree":"clean","version":"0.8.4"}
1
+ {"schemaVersion":1,"sourceCommit":"5128ff1e57d1c37bc16f780028698da433c12a7e","sourceTree":"clean","version":"0.8.5"}
ksadk/_process.py ADDED
@@ -0,0 +1,83 @@
1
+ """Small process-group lifecycle helpers shared by local runtime backends."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import signal
7
+ import subprocess
8
+ import time
9
+
10
+
11
+ def starts_new_process_group() -> bool:
12
+ return os.name == "posix"
13
+
14
+
15
+ def terminate_process_group(
16
+ process: subprocess.Popen[object],
17
+ *,
18
+ grace_seconds: float = 0.2,
19
+ reap_seconds: float = 1.0,
20
+ ) -> str | None:
21
+ """Stop a process and its descendants, then reap the direct child.
22
+
23
+ The caller must have created the process with ``start_new_session=True`` on
24
+ POSIX. The bounded waits intentionally avoid ``communicate()`` because a
25
+ surviving descendant may keep inherited output descriptors open.
26
+ """
27
+
28
+ errors: list[str] = []
29
+ if os.name == "posix":
30
+ _signal_group(process.pid, signal.SIGTERM, errors)
31
+ deadline = time.monotonic() + max(grace_seconds, 0)
32
+ while time.monotonic() < deadline and _group_exists(process.pid):
33
+ # Reap an exited group leader before probing again. On Darwin an
34
+ # unreaped leader can make a now-empty group appear present and a
35
+ # subsequent killpg report EPERM.
36
+ process.poll()
37
+ time.sleep(0.01)
38
+ process.poll()
39
+ if _group_exists(process.pid):
40
+ _signal_group(process.pid, signal.SIGKILL, errors)
41
+ elif process.poll() is None:
42
+ try:
43
+ process.terminate()
44
+ except ProcessLookupError:
45
+ pass
46
+ except Exception as exc: # pragma: no cover - platform/runtime specific
47
+ errors.append(type(exc).__name__)
48
+
49
+ try:
50
+ process.wait(timeout=max(reap_seconds, 0.01))
51
+ except subprocess.TimeoutExpired:
52
+ try:
53
+ process.kill()
54
+ except ProcessLookupError:
55
+ pass
56
+ except Exception as exc: # pragma: no cover - platform/runtime specific
57
+ errors.append(type(exc).__name__)
58
+ try:
59
+ process.wait(timeout=max(reap_seconds, 0.01))
60
+ except subprocess.TimeoutExpired:
61
+ errors.append("process_reap_timeout")
62
+ except Exception as exc: # pragma: no cover - platform/runtime specific
63
+ errors.append(type(exc).__name__)
64
+ return ",".join(dict.fromkeys(errors)) or None
65
+
66
+
67
+ def _signal_group(pid: int, sig: signal.Signals, errors: list[str]) -> None:
68
+ try:
69
+ os.killpg(pid, sig)
70
+ except ProcessLookupError:
71
+ pass
72
+ except Exception as exc: # pragma: no cover - platform/runtime specific
73
+ errors.append(type(exc).__name__)
74
+
75
+
76
+ def _group_exists(pid: int) -> bool:
77
+ try:
78
+ os.killpg(pid, 0)
79
+ return True
80
+ except ProcessLookupError:
81
+ return False
82
+ except PermissionError: # pragma: no cover - cannot inspect another owner
83
+ return True
ksadk/_str_enum.py ADDED
@@ -0,0 +1,17 @@
1
+ """String-valued enums on all supported Python versions (including 3.10)."""
2
+
3
+ try:
4
+ from enum import StrEnum
5
+ except ImportError: # Python 3.10
6
+ from enum import Enum
7
+
8
+ class StrEnum(str, Enum):
9
+ __str__ = str.__str__
10
+ __format__ = str.__format__
11
+
12
+ @staticmethod
13
+ def _generate_next_value_(name, start, count, last_values):
14
+ return name.lower()
15
+
16
+
17
+ __all__ = ["StrEnum"]
ksadk/a2ui/core.py CHANGED
@@ -73,7 +73,7 @@ class A2UICore:
73
73
  self._seq = 0
74
74
  self._seen_surfaces: set[str] = set()
75
75
  # InteractionLedger 存在时它是 pending interaction 的唯一权威
76
- # (Phase 1 Task 5 Step 6);本地 dict 只作无 ledger 的降级路径。
76
+ # (Kernel Task 5 Step 6);本地 dict 只作无 ledger 的降级路径。
77
77
  self._ledger = interaction_ledger
78
78
  self._guard = interaction_guard
79
79
  self._tenant_id = tenant_id
@@ -181,7 +181,7 @@ class A2UICore:
181
181
  await self.display_ui(surface, invocation_id=invocation_id, origin=origin)
182
182
  interaction_id = f"int_{uuid.uuid4().hex[:12]}"
183
183
  if self._ledger is not None and self._guard is not None:
184
- # Phase 1 Task 5 Step 6:durable ledger 是 pending interaction 的
184
+ # Kernel Task 5 Step 6:durable ledger 是 pending interaction 的
185
185
  # 唯一权威;持久化身份与 interaction.requested 事实由 ledger 落盘。
186
186
  from datetime import datetime, timezone
187
187
 
@@ -264,7 +264,7 @@ class A2UICore:
264
264
  ``action``: ``{"action_id","surface_id","name","actor"?,"component_id"?}``;
265
265
  携带 ``interaction_id`` 且配置了 InteractionLedger 时,对原 ID 建
266
266
  InteractionSubmission 走 durable resolve,不再发第二个
267
- InteractionRequested(Phase 1 Task 5 Step 6)。
267
+ InteractionRequested(Kernel Task 5 Step 6)。
268
268
  """
269
269
  receipt = ActionReceipt(
270
270
  action_id=str(action.get("action_id") or f"act_{uuid.uuid4().hex[:12]}"),
ksadk/api/client.py CHANGED
@@ -1615,6 +1615,9 @@ class AgentEngineClient:
1615
1615
  "EnableObservability": enable_observability,
1616
1616
  "EnvironmentVariables": env_vars,
1617
1617
  }
1618
+ component_config = data.get("component_config")
1619
+ if component_config:
1620
+ advanced["ComponentConfig"] = component_config
1618
1621
  inbound_identity_auth = data.get("inbound_identity_auth")
1619
1622
  if inbound_identity_auth is not None:
1620
1623
  advanced["InboundIdentityAuth"] = inbound_identity_auth
@@ -1966,6 +1969,9 @@ class AgentEngineClient:
1966
1969
  inbound_identity_auth = data.get("inbound_identity_auth")
1967
1970
  if inbound_identity_auth is not None:
1968
1971
  advanced["InboundIdentityAuth"] = inbound_identity_auth
1972
+ component_config = data.get("component_config")
1973
+ if component_config:
1974
+ advanced["ComponentConfig"] = component_config
1969
1975
  project_id = data.get("project_id")
1970
1976
  if project_id:
1971
1977
  advanced["ProjectId"] = project_id
@@ -236,6 +236,14 @@ class CodeBuilder(BaseBuilder):
236
236
  ".ruff_cache",
237
237
  }
238
238
  IGNORED_FILE_NAMES = {".DS_Store"}
239
+ BUNDLED_SOURCE_IGNORED_DIR_NAMES = {
240
+ "__pycache__",
241
+ "node_modules",
242
+ ".git",
243
+ ".pytest_cache",
244
+ ".mypy_cache",
245
+ ".ruff_cache",
246
+ }
239
247
  KSADK_ALLOWED_SUFFIXES = {
240
248
  ".py",
241
249
  ".yaml",
@@ -850,18 +858,36 @@ class CodeBuilder(BaseBuilder):
850
858
  yield from self._iter_bundled_source_package(package_name, package_root)
851
859
 
852
860
  def _iter_bundled_source_package(self, package_name: str, package_root: Path):
853
- for file_path in sorted(package_root.rglob("*")):
854
- if not file_path.is_file():
855
- continue
856
- relative_path = file_path.relative_to(package_root)
857
- if package_name == "ksadk" and self._should_skip_ksadk_relative_path(relative_path):
858
- continue
859
- if "__pycache__" in file_path.parts:
860
- continue
861
- suffix = file_path.suffix.lower()
862
- if suffix not in self.KSADK_ALLOWED_SUFFIXES:
863
- continue
864
- yield package_name, relative_path.as_posix(), file_path
861
+ bundled_files = []
862
+ for current_root, dirnames, filenames in os.walk(package_root):
863
+ current_path = Path(current_root)
864
+ dirnames[:] = sorted(
865
+ dir_name
866
+ for dir_name in dirnames
867
+ if dir_name not in self.BUNDLED_SOURCE_IGNORED_DIR_NAMES
868
+ and not (
869
+ package_name == "ksadk"
870
+ and self._should_skip_ksadk_relative_path(
871
+ (current_path / dir_name).relative_to(package_root)
872
+ )
873
+ )
874
+ )
875
+ for file_name in sorted(filenames):
876
+ file_path = current_path / file_name
877
+ if not file_path.is_file():
878
+ continue
879
+ relative_path = file_path.relative_to(package_root)
880
+ if (
881
+ package_name == "ksadk"
882
+ and self._should_skip_ksadk_relative_path(relative_path)
883
+ ):
884
+ continue
885
+ if file_path.suffix.lower() not in self.KSADK_ALLOWED_SUFFIXES:
886
+ continue
887
+ bundled_files.append((relative_path.as_posix(), file_path))
888
+
889
+ for relative_path, file_path in sorted(bundled_files):
890
+ yield package_name, relative_path, file_path
865
891
 
866
892
  def _should_skip_ksadk_relative_path(self, relative_path: Path) -> bool:
867
893
  parts = relative_path.parts
@@ -23,8 +23,22 @@ LANGCHAIN_ECOSYSTEM_REQUIREMENTS = (
23
23
 
24
24
  DEEPAGENTS_REQUIREMENTS = ("deepagents>=0.6.2,<1.0.0",)
25
25
 
26
- # codex runtime:openai-codex SDK(自带 codex CLI 二进制,见 PyPI cli-bin wheel)
27
- CODEX_REQUIREMENTS = ("openai-codex==0.144.4",)
26
+ # codex runtime:openai-codex SDK(自带 codex CLI 二进制,见 PyPI cli-bin wheel)。
27
+ # 版本必须与 pyproject.toml 的 ksadk[codex] extra 保持一致:适配层
28
+ # (ksadk/codex/client.py)依赖 app-server 私有协议,SDK/CLI 是精确 co-pin。
29
+ CODEX_REQUIREMENTS = ("openai-codex==0.154.0",)
30
+
31
+ # KsADK Harness is a managed LangGraph runtime. Keep its checkpoint adapter
32
+ # explicit: LangGraph split the SQLite saver into a separately distributed
33
+ # package, so installing only ``langgraph`` leaves
34
+ # ``langgraph.checkpoint.sqlite`` unavailable in a freshly built agent.
35
+ HARNESS_REQUIREMENTS = (
36
+ "langgraph>=1.2.0,<1.3.0",
37
+ "langgraph-checkpoint-sqlite>=2.0.0",
38
+ "langchain>=1.3.14,<2.0.0",
39
+ "langchain-core>=1.5.0,<2.0.0",
40
+ "langchain-openai>=1.4.0,<2.0.0",
41
+ )
28
42
 
29
43
 
30
44
  def code_requirements_for_framework(framework: str) -> list[str]:
@@ -46,6 +60,8 @@ def requirements_for_framework(framework: str) -> list[str]:
46
60
  return list(ADK_REQUIREMENTS)
47
61
  if normalized == "codex":
48
62
  return list(CODEX_REQUIREMENTS)
63
+ if normalized == "harness":
64
+ return list(HARNESS_REQUIREMENTS)
49
65
  if normalized in {"langchain", "langgraph", "deepagents"}:
50
66
  requirements = list(LANGCHAIN_ECOSYSTEM_REQUIREMENTS)
51
67
  if normalized == "deepagents":
@@ -61,6 +77,8 @@ def minimal_requirements_for_framework(framework: str) -> list[str]:
61
77
  return list(ADK_REQUIREMENTS)
62
78
  if normalized == "codex":
63
79
  return list(CODEX_REQUIREMENTS)
80
+ if normalized == "harness":
81
+ return list(HARNESS_REQUIREMENTS)
64
82
  if normalized in {"langchain", "langgraph", "deepagents"}:
65
83
  requirements = [
66
84
  "langchain>=1.3.14,<2.0.0",
ksadk/cli/__init__.py CHANGED
@@ -354,6 +354,17 @@ def _register_commands():
354
354
 
355
355
  _add_command_once(cli, web)
356
356
 
357
+ # The desktop shell invokes exactly ``ksadk studio``. Avoid importing the
358
+ # full command registry (A2A, deploy, eval, etc.) on this hot path: those
359
+ # optional SDKs are unrelated to Studio and their import warnings used to
360
+ # obscure the real startup error. This also shortens the time to the first
361
+ # local health check in Electron.
362
+ if bool(_argv) and _argv[0] == "studio":
363
+ from ksadk.cli.cmd_studio import studio
364
+
365
+ _add_command_once(cli, studio)
366
+ return
367
+
357
368
  if _runtime_only:
358
369
  # Skip create/deploy/run/managed_runtime imports on the runtime path.
359
370
  return
@@ -460,6 +471,31 @@ def _main():
460
471
  except ImportError:
461
472
  pass
462
473
 
474
+ # Studio and ordinary CLI commands consume the same saved workspace values.
475
+ from pathlib import Path
476
+
477
+ from ksadk.studio.configuration import WorkspaceConfiguration
478
+ from ksadk.studio.workspace import Workspace
479
+
480
+ try:
481
+ root = Path.cwd()
482
+ if any(
483
+ (root / ".agentkit" / name).is_file()
484
+ for name in ("config.yaml", "settings.yaml", "secrets.env")
485
+ ):
486
+ configuration = WorkspaceConfiguration(Workspace(root))
487
+ effective = configuration.environment()
488
+ os.environ.update(effective)
489
+ if (
490
+ "codexProxy" in configuration.settings()
491
+ and "KSADK_CODEX_USE_PROXY" not in effective
492
+ ):
493
+ os.environ.pop("KSADK_CODEX_USE_PROXY", None)
494
+ except Exception as error:
495
+ cli_error = cli_error_from_exception(error, show_help=False)
496
+ emit_cli_error(cli_error)
497
+ raise SystemExit(cli_error.exit_code) from None
498
+
463
499
  # 全局配置回退: .env 未设置的变量从 ~/.agentengine/settings.json 补充
464
500
  try:
465
501
  from ksadk.configs.global_config import get_env_from_global_config
ksadk/cli/cmd_config.py CHANGED
@@ -184,7 +184,7 @@ def _apply_set_command(
184
184
  if not updates_yaml and not updates_env and invalid_items:
185
185
  raise usage_error(
186
186
  "至少提供一个有效的 KEY=VALUE 配置项。",
187
- hints=["示例: `agentengine config set region=cn-beijing-6 OPENAI_MODEL_NAME=glm-5.2`"],
187
+ hints=["示例: `agentengine config set region=cn-beijing-6 OPENAI_MODEL_NAME=deepseek-v4.1-flash`"],
188
188
  )
189
189
 
190
190
  result = {
@@ -323,7 +323,7 @@ def _run_config_set_command(
323
323
  if not set_items:
324
324
  raise usage_error(
325
325
  "请至少提供一个 KEY=VALUE 配置项。",
326
- hints=["示例: `agentengine config set region=cn-beijing-6 OPENAI_MODEL_NAME=glm-5.2`"],
326
+ hints=["示例: `agentengine config set region=cn-beijing-6 OPENAI_MODEL_NAME=deepseek-v4.1-flash`"],
327
327
  )
328
328
  return _apply_set_command(set_items, output_path, env_path, is_global)
329
329
 
@@ -464,7 +464,7 @@ def run_config_wizard(config_file: str | None, set_items: tuple, is_global: bool
464
464
 
465
465
  new_env["OPENAI_MODEL_NAME"] = _ask_or_exit(
466
466
  questionary.text(
467
- "模型名称 (OPENAI_MODEL_NAME) [选填,默认使用金山云星流平台glm-5.2]:",
467
+ "模型名称 (OPENAI_MODEL_NAME) [选填,默认使用金山云星流平台deepseek-v4.1-flash]:",
468
468
  default=existing_env.get("OPENAI_MODEL_NAME", ""),
469
469
  style=_questionary_style(),
470
470
  )
@@ -784,7 +784,7 @@ def config_set(set_items: tuple, is_global: bool, output_mode: str | None):
784
784
  \b
785
785
  示例:
786
786
  agentengine config set region=cn-beijing-6
787
- agentengine config set OPENAI_MODEL_NAME=glm-5.2 OPENAI_BASE_URL=https://example.com/v1
787
+ agentengine config set OPENAI_MODEL_NAME=deepseek-v4.1-flash OPENAI_BASE_URL=https://example.com/v1
788
788
  agentengine config set KSYUN_REGION=cn-beijing-6 --global
789
789
  """
790
790
  _ = output_mode
ksadk/cli/cmd_create.py CHANGED
@@ -104,7 +104,7 @@ from google.adk.agents import Agent
104
104
  from google.adk.models.lite_llm import LiteLlm
105
105
 
106
106
  model = LiteLlm(
107
- model=f"openai/{{os.getenv('OPENAI_MODEL_NAME', 'glm-5.2')}}",
107
+ model=f"openai/{{os.getenv('OPENAI_MODEL_NAME', 'deepseek-v4.1-flash')}}",
108
108
  api_base=os.getenv("OPENAI_BASE_URL"),
109
109
  api_key=os.getenv("OPENAI_API_KEY"),
110
110
  stream=True, # 启用流式输出
@@ -147,7 +147,7 @@ from langchain.agents import create_agent
147
147
  from langchain_openai import ChatOpenAI
148
148
 
149
149
  llm = ChatOpenAI(
150
- model=os.getenv("OPENAI_MODEL_NAME", "glm-5.2"),
150
+ model=os.getenv("OPENAI_MODEL_NAME", "deepseek-v4.1-flash"),
151
151
  base_url=os.getenv("OPENAI_BASE_URL"),
152
152
  api_key=os.getenv("OPENAI_API_KEY"),
153
153
  streaming=True,
@@ -194,7 +194,7 @@ from typing import TypedDict, Annotated
194
194
  import operator
195
195
 
196
196
  llm = ChatOpenAI(
197
- model=os.getenv("OPENAI_MODEL_NAME", "glm-5.2"),
197
+ model=os.getenv("OPENAI_MODEL_NAME", "deepseek-v4.1-flash"),
198
198
  base_url=os.getenv("OPENAI_BASE_URL"),
199
199
  api_key=os.getenv("OPENAI_API_KEY"),
200
200
  streaming=True,
@@ -234,7 +234,7 @@ from deepagents import create_deep_agent
234
234
  from langchain_openai import ChatOpenAI
235
235
 
236
236
  llm = ChatOpenAI(
237
- model=os.getenv("OPENAI_MODEL_NAME", "glm-5.2"),
237
+ model=os.getenv("OPENAI_MODEL_NAME", "deepseek-v4.1-flash"),
238
238
  base_url=os.getenv("OPENAI_BASE_URL"),
239
239
  api_key=os.getenv("OPENAI_API_KEY"),
240
240
  streaming=True,
@@ -671,7 +671,7 @@ def _generate_codex_env_content(global_env: dict) -> str:
671
671
  "# 本地 Codex 模型配置(仅用于 ksadk web,不会进入 ManagedRuntime bundle)",
672
672
  "# OPENAI_API_KEY=",
673
673
  f"OPENAI_BASE_URL={base_url}" if base_url else "# OPENAI_BASE_URL=",
674
- f"OPENAI_MODEL_NAME={model_name}" if model_name else "# OPENAI_MODEL_NAME=glm-5.2",
674
+ f"OPENAI_MODEL_NAME={model_name}" if model_name else "# OPENAI_MODEL_NAME=deepseek-v4.1-flash",
675
675
  "",
676
676
  "# 可选:自定义上游仅支持 Chat Completions 时,强制启用协议转换代理",
677
677
  "# KSADK_CODEX_USE_PROXY=1",
@@ -1601,7 +1601,7 @@ runtime:
1601
1601
  name: codex
1602
1602
 
1603
1603
  # codex 的模型与开发者指令(CodexRuntimeAdapter 传入 codex thread)
1604
- model: glm-5.2
1604
+ model: deepseek-v4.1-flash
1605
1605
  prompt: |
1606
1606
  你是 codex 编码助手。简洁回答,能跑命令验证就跑(shell 工具),中文回复。
1607
1607
  """,
@@ -1820,7 +1820,7 @@ KSYUN_REGION={ks_region}
1820
1820
  if model_name:
1821
1821
  env_content += f"OPENAI_MODEL_NAME={model_name}\n"
1822
1822
  else:
1823
- env_content += "# OPENAI_MODEL_NAME=glm-5.2\n"
1823
+ env_content += "# OPENAI_MODEL_NAME=deepseek-v4.1-flash\n"
1824
1824
  elif framework == "hermes":
1825
1825
  env_content = f"""# ======================
1826
1826
  # Hermes 标准部署最小配置
@@ -1840,7 +1840,7 @@ KSYUN_REGION={ks_region}
1840
1840
  if model_name:
1841
1841
  env_content += f"OPENAI_MODEL_NAME={model_name}\n"
1842
1842
  else:
1843
- env_content += "# OPENAI_MODEL_NAME=glm-5.2\n"
1843
+ env_content += "# OPENAI_MODEL_NAME=deepseek-v4.1-flash\n"
1844
1844
 
1845
1845
  env_content += """
1846
1846
  # Hermes runtime
@@ -1851,7 +1851,7 @@ HERMES_DASHBOARD_HOST=127.0.0.1
1851
1851
  HERMES_DASHBOARD_PORT=9119
1852
1852
  PORT=8080
1853
1853
  # HERMES_CONTEXT_LENGTH=200000
1854
- # HERMES_FALLBACK_MODEL=deepseek-v4-pro
1854
+ # HERMES_FALLBACK_MODEL=glm-5.3-flash
1855
1855
  """
1856
1856
  env_example_content = """# ======================
1857
1857
  # Hermes 标准部署最小配置示例
@@ -1863,7 +1863,7 @@ KSYUN_REGION=cn-beijing-6
1863
1863
 
1864
1864
  OPENAI_API_KEY=your-model-api-key
1865
1865
  OPENAI_BASE_URL=https://kspmas.ksyun.com/v1/
1866
- OPENAI_MODEL_NAME=glm-5.2
1866
+ OPENAI_MODEL_NAME=deepseek-v4.1-flash
1867
1867
 
1868
1868
  # Hermes runtime
1869
1869
  API_SERVER_ENABLED=true
@@ -1873,7 +1873,7 @@ HERMES_DASHBOARD_HOST=127.0.0.1
1873
1873
  HERMES_DASHBOARD_PORT=9119
1874
1874
  PORT=8080
1875
1875
  # HERMES_CONTEXT_LENGTH=200000
1876
- # HERMES_FALLBACK_MODEL=deepseek-v4-pro
1876
+ # HERMES_FALLBACK_MODEL=glm-5.3-flash
1877
1877
  """
1878
1878
  elif framework == "codex":
1879
1879
  env_content = _generate_codex_env_content(global_env)
@@ -1893,7 +1893,7 @@ PORT=8080
1893
1893
  if model_name:
1894
1894
  env_content += f"OPENAI_MODEL_NAME={model_name}\n"
1895
1895
  else:
1896
- env_content += "# OPENAI_MODEL_NAME=glm-5.2\n"
1896
+ env_content += "# OPENAI_MODEL_NAME=deepseek-v4.1-flash\n"
1897
1897
 
1898
1898
  env_content += """
1899
1899
  # ======================
ksadk/cli/cmd_hermes.py CHANGED
@@ -24,6 +24,7 @@ from ksadk.cli.error_utils import remote_error, resolution_error
24
24
  from ksadk.cli.model_catalog import fetch_provider_model_metadata
25
25
  from ksadk.cli.network_options import build_network_payload, network_cli_kwargs, network_options
26
26
  from ksadk.cli.resource_common import (
27
+ build_component_config,
27
28
  CONTEXT_SETTINGS,
28
29
  ResourceActionSet,
29
30
  ResourceDescriptor,
@@ -65,8 +66,8 @@ from ksadk.hermes_terminal import (
65
66
  )
66
67
 
67
68
  DEFAULT_HERMES_IMAGE = "ghcr.io/kingsoftcloud/hermes-agent:v2026.7.7.2-ksadk-v070"
68
- DEFAULT_HERMES_CONTEXT_LENGTHS = (("glm-5.1", "200000"),)
69
- DEFAULT_HERMES_MODEL_NAME = "glm-5.2"
69
+ DEFAULT_HERMES_CONTEXT_LENGTHS = (("deepseek-v4.1-flash", "128000"),)
70
+ DEFAULT_HERMES_MODEL_NAME = "deepseek-v4.1-flash"
70
71
  DEFAULT_HERMES_PUBLIC_BASE_URL = "https://kspmas.ksyun.com/v1/"
71
72
  DEFAULT_HERMES_RUNTIME_BASE_URL = DEFAULT_HERMES_PUBLIC_BASE_URL
72
73
  KSPMAS_PUBLIC_BASES = (
@@ -163,6 +164,8 @@ def _build_hermes_update_payload(
163
164
  update_payload["storage"] = storage_config
164
165
  if network_payload:
165
166
  update_payload["network"] = network_payload
167
+ if payload.get("component_config"):
168
+ update_payload["component_config"] = payload["component_config"]
166
169
  return update_payload
167
170
 
168
171
 
@@ -428,6 +431,9 @@ def _render_hermes_dry_run(
428
431
  @click.option("--storage-size-gi", type=int, default=20, show_default=True, help="PVC 容量(Gi)")
429
432
  @click.option("--storage-mount-path", default=None, help="PVC 挂载目录(默认: /home/node/.hermes)")
430
433
  @click.option("--no-storage", is_flag=True, help="禁用默认 PVC 挂载")
434
+ @click.option("--skill-space-id", "skill_space_ids", multiple=True, help="Skill 中心空间 ID(可重复传入多个)")
435
+ @click.option("--sandbox-template-id", default=None, help="沙箱模板 ID(启用 E2B 沙箱执行 execute_skills)")
436
+ @click.option("--sandbox-api-key", default=None, help="沙箱 API Key(可选,默认从服务端注入)")
431
437
  @env_options
432
438
  @click.option(
433
439
  "--observability/--no-observability",
@@ -468,6 +474,9 @@ def deploy(
468
474
  subnet_id: Optional[str],
469
475
  security_group_id: Optional[str],
470
476
  availability_zone: Optional[str],
477
+ skill_space_ids: tuple[str, ...],
478
+ sandbox_template_id: Optional[str],
479
+ sandbox_api_key: Optional[str],
471
480
  dry_run: bool,
472
481
  output_mode: str | None,
473
482
  ):
@@ -510,6 +519,9 @@ def deploy(
510
519
  include_storage_on_update=include_storage_on_update,
511
520
  extra_env=extra_env,
512
521
  env_file=env_file,
522
+ skill_space_ids=skill_space_ids,
523
+ sandbox_template_id=sandbox_template_id,
524
+ sandbox_api_key=sandbox_api_key,
513
525
  **network_cli_kwargs(
514
526
  enable_public_access=enable_public_access,
515
527
  enable_vpc_access=enable_vpc_access,
@@ -551,6 +563,9 @@ async def _deploy_hermes(
551
563
  subnet_id: str | None = None,
552
564
  security_group_id: str | None = None,
553
565
  availability_zone: str | None = None,
566
+ skill_space_ids: tuple[str, ...] = (),
567
+ sandbox_template_id: str | None = None,
568
+ sandbox_api_key: str | None = None,
554
569
  dry_run: bool = False,
555
570
  ) -> None:
556
571
  project_dir = Path(".").resolve()
@@ -606,6 +621,11 @@ async def _deploy_hermes(
606
621
  auto_dotenv=auto_dotenv,
607
622
  shell_keys=shell_keys,
608
623
  )
624
+ component_config = build_component_config(
625
+ skill_space_ids=skill_space_ids,
626
+ sandbox_template_id=sandbox_template_id,
627
+ sandbox_api_key=sandbox_api_key,
628
+ )
609
629
  payload = {
610
630
  "name": agent_name,
611
631
  "description": "Hermes Agent (managed by AgentEngine)",
@@ -619,6 +639,8 @@ async def _deploy_hermes(
619
639
  "env_vars": env_vars,
620
640
  "ui_config": {"profile": "hermes", "path": "/", "url": None},
621
641
  }
642
+ if component_config:
643
+ payload["component_config"] = component_config
622
644
  storage_config = build_storage_config(
623
645
  "hermes",
624
646
  no_storage=no_storage,
ksadk/cli/cmd_invoke.py CHANGED
@@ -18,7 +18,6 @@ import click
18
18
 
19
19
  from ksadk.api import AgentEngineAPIError, AgentEngineClient
20
20
  from ksadk.cli.agent_ref import merge_agent_inputs, resolve_agent_ref, resolve_openclaw_ref
21
- from ksadk.cli.invoke_payload import build_chat_request
22
21
  from ksadk.cli.cmd_files import (
23
22
  _build_sync_payload,
24
23
  _collect_local_files_report,
@@ -27,6 +26,7 @@ from ksadk.cli.cmd_files import (
27
26
  _normalize_workspace_dir,
28
27
  _push_workspace_files,
29
28
  )
29
+ from ksadk.cli.invoke_payload import build_chat_request
30
30
  from ksadk.cli.resource_common import (
31
31
  CONTEXT_SETTINGS,
32
32
  CompatibilityAliasCommand,
@@ -1311,7 +1311,15 @@ async def _invoke_once(
1311
1311
  last_refresh_time = 0.0
1312
1312
  full_reasoning = ""
1313
1313
  async for chunk in _stream_chat(
1314
- endpoint, message, api_key, session_id, True, insecure, model, api_format, default_model
1314
+ endpoint,
1315
+ message,
1316
+ api_key,
1317
+ session_id,
1318
+ True,
1319
+ insecure,
1320
+ model,
1321
+ api_format,
1322
+ default_model,
1315
1323
  ):
1316
1324
  content, reasoning = _extract_content(chunk)
1317
1325
 
@@ -1341,7 +1349,15 @@ async def _invoke_once(
1341
1349
  live.refresh() # 确保最后一次刷新
1342
1350
  else:
1343
1351
  async for chunk in _stream_chat(
1344
- endpoint, message, api_key, session_id, True, insecure, model, api_format, default_model
1352
+ endpoint,
1353
+ message,
1354
+ api_key,
1355
+ session_id,
1356
+ True,
1357
+ insecure,
1358
+ model,
1359
+ api_format,
1360
+ default_model,
1345
1361
  ):
1346
1362
  content, reasoning = _extract_content(chunk)
1347
1363
  if reasoning:
@@ -1510,8 +1526,15 @@ def _extract_content(chunk: dict) -> tuple[str, str]:
1510
1526
  event_name = str(chunk.get("_event") or "")
1511
1527
  if event_name == "response.output_text.delta":
1512
1528
  return str(chunk.get("delta") or ""), ""
1513
- if event_name == "response.reasoning.delta":
1514
- return "", str(chunk.get("delta") or "")
1529
+ # reasoning delta 有 4 个变体名(与 remote_runner / 前端 chatProtocol 对齐),
1530
+ # 主 runtime 发 reasoning.delta,Studio shared_web 发 reasoning_summary_text.delta。
1531
+ if event_name in {
1532
+ "response.reasoning.delta",
1533
+ "response.reasoning_text.delta",
1534
+ "response.reasoning_summary.delta",
1535
+ "response.reasoning_summary_text.delta",
1536
+ }:
1537
+ return "", str(chunk.get("delta") or chunk.get("text") or "")
1515
1538
  if event_name == "response.completed":
1516
1539
  return "", ""
1517
1540