agentengine-sdk-python 0.8.2__py3-none-any.whl → 0.8.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.3.dist-info}/METADATA +18 -25
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.3.dist-info}/RECORD +224 -169
- ksadk/_build_provenance.json +1 -0
- ksadk/agui/_agent_helpers.py +4 -0
- ksadk/api/client.py +3 -0
- ksadk/builders/managed_runtime_builder.py +3 -0
- ksadk/cli/__init__.py +6 -0
- ksadk/cli/cmd_plugin.py +657 -0
- ksadk/codex/runtime.py +50 -8
- ksadk/configs/env_registry.py +31 -3
- ksadk/configs/settings.py +9 -0
- ksadk/context_engine/contributors.py +73 -8
- ksadk/conversations/__init__.py +19 -0
- ksadk/conversations/context.py +104 -24
- ksadk/conversations/contracts.py +266 -0
- ksadk/conversations/message_projection.py +19 -1
- ksadk/conversations/projector.py +616 -0
- ksadk/conversations/reducer.py +98 -0
- ksadk/events/_v1_compat/projection.py +2 -0
- ksadk/events/adapters/codex.py +190 -0
- ksadk/harness/__init__.py +45 -35
- ksadk/harness/runtime.py +60 -1
- ksadk/kernel/contract_fingerprints.py +5 -4
- ksadk/kernel/contracts.py +8 -0
- ksadk/kernel/control.py +1 -0
- ksadk/kernel/ingress.py +21 -0
- ksadk/kernel/memory_store.py +1 -0
- ksadk/kernel/postgres_store.py +1 -0
- ksadk/kernel/sqlite_store.py +1 -0
- ksadk/kernel/worker.py +11 -0
- ksadk/memory/providers/local_sqlite.py +7 -0
- ksadk/plugins/__init__.py +167 -0
- ksadk/plugins/bridges/__init__.py +45 -0
- ksadk/plugins/bridges/codex.py +552 -0
- ksadk/plugins/bridges/dsh.py +1116 -0
- ksadk/plugins/builtins.py +747 -0
- ksadk/plugins/bundle.py +246 -0
- ksadk/plugins/bundle_security.py +167 -0
- ksadk/plugins/composition.py +529 -0
- ksadk/plugins/context_contributor.py +437 -0
- ksadk/plugins/contracts.py +451 -0
- ksadk/plugins/dsh_toolchain.py +935 -0
- ksadk/plugins/ecosystem_bridge.py +1105 -0
- ksadk/plugins/ecosystem_probe.py +191 -0
- ksadk/plugins/host.py +724 -0
- ksadk/plugins/providers/__init__.py +85 -0
- ksadk/plugins/providers/bundles/ksadk-codex/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/ksadk-codex/index.mjs +18 -0
- ksadk/plugins/providers/bundles/ksadk-codex/package.json +19 -0
- ksadk/plugins/providers/bundles/ksadk-harness/cordis.patch.yml +3 -0
- ksadk/plugins/providers/bundles/ksadk-harness/index.mjs +19 -0
- ksadk/plugins/providers/bundles/ksadk-harness/package.json +19 -0
- ksadk/plugins/providers/codex.py +722 -0
- ksadk/plugins/providers/codex_dsh.py +83 -0
- ksadk/plugins/providers/dsh.py +951 -0
- ksadk/plugins/providers/dsh_descriptor_host.py +226 -0
- ksadk/plugins/providers/harness.py +627 -0
- ksadk/plugins/providers/harness_dsh.py +91 -0
- ksadk/plugins/providers/legacy.py +215 -0
- ksadk/plugins/providers/legacy_catalog.py +100 -0
- ksadk/plugins/providers/shipped_dsh.py +370 -0
- ksadk/plugins/resolver.py +331 -0
- ksadk/plugins/subagent_providers/__init__.py +12 -0
- ksadk/plugins/subagent_providers/codex.py +443 -0
- ksadk/plugins/subagents.py +333 -0
- ksadk/runtime/_runner_adapter/stream_mapping.py +51 -42
- ksadk/runtime/adapter.py +1 -0
- ksadk/runtime/factory.py +76 -2
- ksadk/runtime/framework_adapters.py +18 -0
- ksadk/runtime/runner_adapter.py +5 -0
- ksadk/sandbox/__init__.py +2 -1
- ksadk/sandbox/factory.py +72 -0
- ksadk/scheduler/__init__.py +18 -0
- ksadk/scheduler/calendar.py +102 -0
- ksadk/scheduler/contracts.py +254 -0
- ksadk/scheduler/dispatcher.py +129 -0
- ksadk/scheduler/engine.py +416 -0
- ksadk/scheduler/sqlite_store.py +563 -0
- ksadk/server/static/assets/{ArtifactsPanel-DSU1sWD_.js → ArtifactsPanel-10GPXIJ6.js} +1 -1
- ksadk/server/static/assets/{CodeBlock-DOH6MVcn.js → CodeBlock-BXk1l-G1.js} +1 -1
- ksadk/server/static/assets/{MathMessageMarkdown-BL8my1R2.js → MathMessageMarkdown-D9uB55Oh.js} +1 -1
- ksadk/server/static/assets/{MermaidBlock-Dz4IP-Tx.js → MermaidBlock--OEYoXIJ.js} +6 -6
- ksadk/server/static/assets/{NativeTerminalPanel-DUrK0JpZ.js → NativeTerminalPanel-DrEe1syq.js} +1 -1
- ksadk/server/static/assets/{abnfDiagram-VCTEODGH-g20pFzNV.js → abnfDiagram-VCTEODGH-eeTFJLvo.js} +1 -1
- ksadk/server/static/assets/{arc-C4FzinUA.js → arc-S3ZNbIAd.js} +1 -1
- ksadk/server/static/assets/architecture-7GRP2DOG-Dk9nRQ6-.js +1 -0
- ksadk/server/static/assets/{architectureDiagram-5GKGNRK7-DpIqL5h4.js → architectureDiagram-5GKGNRK7-CRjgEJDX.js} +1 -1
- ksadk/server/static/assets/{blockDiagram-NRAW4CY4-BjkljTNz.js → blockDiagram-NRAW4CY4-C7bsBoNH.js} +1 -1
- ksadk/server/static/assets/{c4Diagram-UCG6FXSJ-Dk_ieq2X.js → c4Diagram-UCG6FXSJ-BX3c33Ob.js} +1 -1
- ksadk/server/static/assets/channel-s354Yo6o.js +1 -0
- ksadk/server/static/assets/chunk-2Q5K7J3B-CDpPpKR5.js +1 -0
- ksadk/server/static/assets/{chunk-5VM5RSS4-BVHAchFb.js → chunk-5VM5RSS4-bZ7ws-8m.js} +1 -1
- ksadk/server/static/assets/{chunk-F27PBJKO-C-ipQzuS.js → chunk-F27PBJKO-D2r0pvhY.js} +1 -1
- ksadk/server/static/assets/{chunk-G27WJ6UU-C2EyJbIK.js → chunk-G27WJ6UU-CZwF3oUP.js} +1 -1
- ksadk/server/static/assets/{chunk-JWPE2WC7-vYvVJb_M.js → chunk-JWPE2WC7-DigFYCML.js} +1 -1
- ksadk/server/static/assets/{chunk-LCL6LL3I-BcI6ysPT.js → chunk-LCL6LL3I-CnorGV5q.js} +1 -1
- ksadk/server/static/assets/{chunk-POPQ4Y6H-C030x_Z1.js → chunk-POPQ4Y6H-CexntQA-.js} +1 -1
- ksadk/server/static/assets/{chunk-RHFEMEQ7-yyGpsz4n.js → chunk-RHFEMEQ7-CHTC7UxA.js} +1 -1
- ksadk/server/static/assets/{chunk-SVP7TREG-BLTlmMU7.js → chunk-SVP7TREG-BC1EWt_-.js} +1 -1
- ksadk/server/static/assets/{chunk-XXDRQBXY-C_32ArgP.js → chunk-XXDRQBXY-BTG24xN0.js} +1 -1
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-Dd0nucl9.js +1 -0
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-Dd0nucl9.js +1 -0
- ksadk/server/static/assets/{cose-bilkent-JH36ORCC-9YQYwdl0.js → cose-bilkent-JH36ORCC-CkonRdAS.js} +1 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-BBlT4uMf.js +1 -0
- ksadk/server/static/assets/{cynefinDiagram-5FMLGOSQ-ErLF5N13.js → cynefinDiagram-5FMLGOSQ-DEOCBe15.js} +1 -1
- ksadk/server/static/assets/{dagre-3AP2YEHR-DFiQF-6f.js → dagre-3AP2YEHR-DBThPuLa.js} +1 -1
- ksadk/server/static/assets/{dagre-BuhGnRI1.js → dagre-ClTPrTht.js} +1 -1
- ksadk/server/static/assets/{diagram-S7CK7UJ4-Bt1v8-GC.js → diagram-S7CK7UJ4-DsZHrnpJ.js} +1 -1
- ksadk/server/static/assets/{diagram-UQ7AKVKN-DSCxJdBK.js → diagram-UQ7AKVKN-BJR4nhVr.js} +1 -1
- ksadk/server/static/assets/{diagram-VSXAHHWV-DHfYwp_9.js → diagram-VSXAHHWV-xzcERX0a.js} +1 -1
- ksadk/server/static/assets/{diagram-VX7I27RA-DdzD-4Le.js → diagram-VX7I27RA-tn2xM1xu.js} +1 -1
- ksadk/server/static/assets/{diagram-Z3DM3KII-Du-nAJ9F.js → diagram-Z3DM3KII-BZPGBkw5.js} +1 -1
- ksadk/server/static/assets/{dist-ClxGviKw.js → dist-4zN1_tq5.js} +1 -1
- ksadk/server/static/assets/{dist-BE7bu-DL.js → dist-8VWI-2bZ.js} +1 -1
- ksadk/server/static/assets/{dist-BX8z72IC.js → dist-B-46q3Hk.js} +1 -1
- ksadk/server/static/assets/{dist-BjU6y-A2.js → dist-B0gdk4rl.js} +1 -1
- ksadk/server/static/assets/{dist-C_wsv-Qd.js → dist-B1oWRmrH.js} +1 -1
- ksadk/server/static/assets/{dist-ngtN0DJB.js → dist-BI1qQH4n.js} +1 -1
- ksadk/server/static/assets/{dist-dydu68Fl.js → dist-BJLUwH6W.js} +1 -1
- ksadk/server/static/assets/{dist-Dq9gLD7L.js → dist-Bbwqa8TG.js} +1 -1
- ksadk/server/static/assets/{dist-CttYUqzS.js → dist-Btyo4vX4.js} +1 -1
- ksadk/server/static/assets/{dist-CXYYBw3_.js → dist-C71CsujO.js} +1 -1
- ksadk/server/static/assets/{dist-dDdADKFA.js → dist-CXpH_Rdd.js} +1 -1
- ksadk/server/static/assets/{dist-CSh_DE14.js → dist-Cq4OL6nO.js} +1 -1
- ksadk/server/static/assets/{dist-8hqcx0sU.js → dist-D1V3f1B4.js} +1 -1
- ksadk/server/static/assets/{dist-BVDffZ0U.js → dist-DJmCPRVB.js} +1 -1
- ksadk/server/static/assets/{dist-DnfXs8Vn.js → dist-DQAB0qn_.js} +1 -1
- ksadk/server/static/assets/{dist-DNp6rLRA.js → dist-DUwKa_l6.js} +1 -1
- ksadk/server/static/assets/{dist-B7seoj3d.js → dist-DdRBIceA.js} +1 -1
- ksadk/server/static/assets/{dist-BytlxIDT.js → dist-DfGFrb0v.js} +1 -1
- ksadk/server/static/assets/{dist-Bf2M8m3N.js → dist-DjhwGUgZ.js} +1 -1
- ksadk/server/static/assets/{dist-W-TIVntx.js → dist-DyqV4fL4.js} +1 -1
- ksadk/server/static/assets/{dist-DUX-id_F.js → dist-M67Hwu0n.js} +1 -1
- ksadk/server/static/assets/{dist-DmldrHd_.js → dist-u8tVH5Ak.js} +1 -1
- ksadk/server/static/assets/{ebnfDiagram-PWID7BFC-Da9C9NO1.js → ebnfDiagram-PWID7BFC-DVfMsLge.js} +1 -1
- ksadk/server/static/assets/{erDiagram-SSCWMZ5O-EAGqqR79.js → erDiagram-SSCWMZ5O-CWEZSYaw.js} +1 -1
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-Dr5okd8V.js +1 -0
- ksadk/server/static/assets/flowDiagram-A5DVABFB-VEO-cVcO.js +1 -0
- ksadk/server/static/assets/{ganttDiagram-EL5Y4UJY-DqJsKb59.js → ganttDiagram-EL5Y4UJY-TWIxoyYL.js} +1 -1
- ksadk/server/static/assets/gitGraph-4MIJSDKK-CKiKY9Cf.js +1 -0
- ksadk/server/static/assets/{gitGraphDiagram-WWUBYQGX-B6g4dtDi.js → gitGraphDiagram-WWUBYQGX-DDh2hd2S.js} +1 -1
- ksadk/server/static/assets/index-B2k_urY8.js +241 -0
- ksadk/server/static/assets/index-ILPt6IWF.css +2 -0
- ksadk/server/static/assets/info-A6RAGUB7-ubA4Nm_p.js +1 -0
- ksadk/server/static/assets/{infoDiagram-RXCK75RN-Djm_nbd5.js → infoDiagram-RXCK75RN-CgoyWiDR.js} +1 -1
- ksadk/server/static/assets/{ishikawaDiagram-5VMMS53U-DWya9SG2.js → ishikawaDiagram-5VMMS53U-CyRIu_om.js} +1 -1
- ksadk/server/static/assets/{journeyDiagram-EYS64GPL-DutxhSNI.js → journeyDiagram-EYS64GPL-DN5JXHzN.js} +1 -1
- ksadk/server/static/assets/{kanban-definition-3QL26DDD-DJdOF8Fm.js → kanban-definition-3QL26DDD-CNP3ui66.js} +1 -1
- ksadk/server/static/assets/{katex-vFWytM5c.js → katex-DWEzQy1d.js} +1 -1
- ksadk/server/static/assets/{linear-BHjG8b-J.js → linear-C-qHp7d2.js} +1 -1
- ksadk/server/static/assets/{mermaid-parser.core-KGSy4jWT.js → mermaid-parser.core-Cl-K943T.js} +2 -2
- ksadk/server/static/assets/{mindmap-definition-FBJOCRG2-9-HC88D4.js → mindmap-definition-FBJOCRG2-D5DB5mYm.js} +1 -1
- ksadk/server/static/assets/packet-AYTQ26CC-C7R3NUlK.js +1 -0
- ksadk/server/static/assets/{pegDiagram-XKGWAZYB-DrEZd4fD.js → pegDiagram-XKGWAZYB-BQVc9ia_.js} +1 -1
- ksadk/server/static/assets/pie-WAS4IAKB-BIT6qjr3.js +1 -0
- ksadk/server/static/assets/{pieDiagram-E7YTZNPT-DpjqOFFp.js → pieDiagram-E7YTZNPT-B6UCAvtY.js} +1 -1
- ksadk/server/static/assets/{quadrantDiagram-AXDQQJYC-BiNhgOXX.js → quadrantDiagram-AXDQQJYC-mIr2d3eb.js} +1 -1
- ksadk/server/static/assets/radar-RG4KPBEZ-l5noef9X.js +1 -0
- ksadk/server/static/assets/railroad-74A4TZTK-Baea6ZvM.js +1 -0
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-OKn8zZnU.js +1 -0
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-DdKAKC4l.js +1 -0
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-Bds8udlG.js +1 -0
- ksadk/server/static/assets/{railroadDiagram-O6MQD6OU-_Y3Ojg6G.js → railroadDiagram-O6MQD6OU-Dt3FFDmK.js} +1 -1
- ksadk/server/static/assets/{requirementDiagram-EFPCY7ZU-DeCFdg9K.js → requirementDiagram-EFPCY7ZU-Cz_vQtgF.js} +1 -1
- ksadk/server/static/assets/{sankeyDiagram-P5KCCOFB-CPH75rhw.js → sankeyDiagram-P5KCCOFB-wlO1TsH5.js} +1 -1
- ksadk/server/static/assets/{sequenceDiagram-WJ2MYXX4-OEpQQdr4.js → sequenceDiagram-WJ2MYXX4-CHRbElYq.js} +1 -1
- ksadk/server/static/assets/{sizeCapture-X5ZJPWSS-heUErzhI.js → sizeCapture-X5ZJPWSS-DXX54iyO.js} +1 -1
- ksadk/server/static/assets/{stateDiagram-HBIQ2CUA-DvA3jSMB.js → stateDiagram-HBIQ2CUA-Dp_lw9II.js} +1 -1
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-5b-8o2iS.js +1 -0
- ksadk/server/static/assets/{swimlanes-XN3QIQJK-CR-dfN_t.js → swimlanes-XN3QIQJK-D8O5UlLG.js} +1 -1
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-uf6WPRA4.js +8 -0
- ksadk/server/static/assets/{timeline-definition-24CTP7MA-DAVJf1TX.js → timeline-definition-24CTP7MA-8mfKcxvG.js} +1 -1
- ksadk/server/static/assets/treeView-Q6P3EWNA-CK5CSrSO.js +1 -0
- ksadk/server/static/assets/treemap-WGGIJYW6-Ch2BKgAM.js +1 -0
- ksadk/server/static/assets/{vennDiagram-4TSXK5OY-DwM8eDkh.js → vennDiagram-4TSXK5OY-EnNl0DE7.js} +1 -1
- ksadk/server/static/assets/wardley-WFR3VGLG-YW3Q0ml_.js +1 -0
- ksadk/server/static/assets/{wardleyDiagram-VM6X3IG4-DZL-Zz2t.js → wardleyDiagram-VM6X3IG4-DBu5fbYr.js} +1 -1
- ksadk/server/static/assets/{xychartDiagram-S5SC5T6Z-Dy6Yh_hu.js → xychartDiagram-S5SC5T6Z-BSVXs4IY.js} +1 -1
- ksadk/server/static/index.html +2 -2
- ksadk/skills/service_client.py +48 -0
- ksadk/studio/agent_lifecycle.py +26 -20
- ksadk/studio/api.py +513 -71
- ksadk/studio/api_catalog_routes.py +5 -0
- ksadk/studio/api_contracts.py +34 -1
- ksadk/studio/api_plugin_routes.py +480 -0
- ksadk/studio/attachment_store.py +187 -0
- ksadk/studio/authoring.py +10 -4
- ksadk/studio/authoring_coordinator.py +12 -2
- ksadk/studio/builder.py +123 -43
- ksadk/studio/cloud.py +4 -0
- ksadk/studio/codex_agent_service.py +12 -1
- ksadk/studio/codex_builder.py +54 -15
- ksadk/studio/codex_manifest.py +21 -1
- ksadk/studio/codex_run.py +16 -4
- ksadk/studio/compatibility_report.py +445 -0
- ksadk/studio/compiler.py +6 -1
- ksadk/studio/contracts.py +123 -4
- ksadk/studio/dsh_provider_registration.py +768 -0
- ksadk/studio/event_store.py +54 -6
- ksadk/studio/framework_run.py +37 -4
- ksadk/studio/hosted_kernel.py +1 -1
- ksadk/studio/operations.py +12 -2
- ksadk/studio/plugin_composition.py +301 -0
- ksadk/studio/plugin_kernel_adapter.py +128 -0
- ksadk/studio/plugin_runtime.py +652 -0
- ksadk/studio/resource_catalog.py +6 -1
- ksadk/studio/run_service.py +713 -75
- ksadk/studio/runtime_source.py +9 -1
- ksadk/studio/scheduler_runtime.py +374 -0
- ksadk/studio/scheduler_service.py +211 -0
- ksadk/studio/service.py +672 -82
- ksadk/studio/shared_web.py +167 -28
- ksadk/studio/soul.py +52 -0
- ksadk/studio/static/assets/index-DXs1Eq4M.css +1 -0
- ksadk/studio/static/assets/index-DeDqwTsD.js +283 -0
- ksadk/studio/static/index.html +2 -2
- ksadk/studio/validator.py +1 -1
- ksadk/studio/workspace.py +1 -0
- ksadk/version.py +1 -1
- ksadk_runtime_common/workspace_files/path_utils.py +41 -0
- ksadk/server/static/assets/architecture-7GRP2DOG-DjKratdf.js +0 -1
- ksadk/server/static/assets/channel-4cQHKtx1.js +0 -1
- ksadk/server/static/assets/chunk-2Q5K7J3B-DmgWkESh.js +0 -1
- ksadk/server/static/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js +0 -1
- ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js +0 -1
- ksadk/server/static/assets/cynefin-OW5HDTMX-DjEM48Qp.js +0 -1
- ksadk/server/static/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js +0 -1
- ksadk/server/static/assets/flowDiagram-A5DVABFB-BBKL0x3P.js +0 -1
- ksadk/server/static/assets/gitGraph-4MIJSDKK-Dw63mrhw.js +0 -1
- ksadk/server/static/assets/index-8ipRcQ-M.js +0 -240
- ksadk/server/static/assets/index-ByFCqjlh.css +0 -2
- ksadk/server/static/assets/info-A6RAGUB7-B6iAblII.js +0 -1
- ksadk/server/static/assets/packet-AYTQ26CC-BOYAipuq.js +0 -1
- ksadk/server/static/assets/pie-WAS4IAKB-Ctq0Kbku.js +0 -1
- ksadk/server/static/assets/radar-RG4KPBEZ-DN0-ul_0.js +0 -1
- ksadk/server/static/assets/railroad-74A4TZTK-C6cC_to0.js +0 -1
- ksadk/server/static/assets/railroad-abnf-HS5TGJTU-BimjIuRc.js +0 -1
- ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-CvY65ABq.js +0 -1
- ksadk/server/static/assets/railroad-peg-WCYAUIDC-D72Iq_Tv.js +0 -1
- ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BgQY03nz.js +0 -1
- ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js +0 -8
- ksadk/server/static/assets/treeView-Q6P3EWNA-BMpO0wsB.js +0 -1
- ksadk/server/static/assets/treemap-WGGIJYW6-Et0aqzU3.js +0 -1
- ksadk/server/static/assets/wardley-WFR3VGLG-CbY0mhpl.js +0 -1
- ksadk/studio/static/assets/index-BLpcdrgW.css +0 -1
- ksadk/studio/static/assets/index-CYekR2Xv.js +0 -260
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.3.dist-info}/WHEEL +0 -0
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.3.dist-info}/entry_points.txt +0 -0
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.3.dist-info}/licenses/LICENSE +0 -0
- {agentengine_sdk_python-0.8.2.dist-info → agentengine_sdk_python-0.8.3.dist-info}/top_level.txt +0 -0
ksadk/studio/contracts.py
CHANGED
|
@@ -43,6 +43,28 @@ class Instructions(ContractModel):
|
|
|
43
43
|
task: str = Field(default="", max_length=32768)
|
|
44
44
|
|
|
45
45
|
|
|
46
|
+
class SoulDocument(ContractModel):
|
|
47
|
+
"""Reviewed identity/boundary source that compiles ahead of task prompts.
|
|
48
|
+
|
|
49
|
+
This is deliberately an immutable revision input, not a mutable memory
|
|
50
|
+
file. Runtime may read the compiled snapshot but cannot promote a new
|
|
51
|
+
SoulDocument from a conversation.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
schema_version: Literal["agentkit.soul/v1"] = "agentkit.soul/v1"
|
|
55
|
+
identity: str = Field(min_length=1, max_length=4096)
|
|
56
|
+
principles: list[str] = Field(default_factory=list, max_length=64)
|
|
57
|
+
boundaries: list[str] = Field(default_factory=list, max_length=64)
|
|
58
|
+
tone: str | None = Field(default=None, max_length=1024)
|
|
59
|
+
|
|
60
|
+
@field_validator("principles", "boundaries")
|
|
61
|
+
@classmethod
|
|
62
|
+
def validate_nonempty_items(cls, value: list[str]) -> list[str]:
|
|
63
|
+
if any(not item.strip() for item in value):
|
|
64
|
+
raise ValueError("soul principles and boundaries must not contain empty items")
|
|
65
|
+
return value
|
|
66
|
+
|
|
67
|
+
|
|
46
68
|
class ModelParameters(ContractModel):
|
|
47
69
|
# 三者 None=未配置:请求 payload 一律不携带该字段,使用服务端默认,
|
|
48
70
|
# 规避各模型族对 temperature/max_tokens 的硬约束(如 kimi 只接受默认温度)。
|
|
@@ -292,6 +314,13 @@ class MemoryWriteSpec(ContractModel):
|
|
|
292
314
|
flush_before_compaction: bool = True
|
|
293
315
|
|
|
294
316
|
|
|
317
|
+
MemoryScope = Literal["tenant", "workspace", "agent", "user"]
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
def _default_memory_scopes() -> list[MemoryScope]:
|
|
321
|
+
return ["workspace", "agent", "user"]
|
|
322
|
+
|
|
323
|
+
|
|
295
324
|
class MemorySpec(ContractModel):
|
|
296
325
|
"""AgentVersion 级 Memory 策略(方案 §5.1 / §10)。Build 只存 providerRef,不存凭证。"""
|
|
297
326
|
|
|
@@ -299,9 +328,7 @@ class MemorySpec(ContractModel):
|
|
|
299
328
|
provider_ref: str = Field(default="local-default", max_length=128)
|
|
300
329
|
recall: MemoryRecallSpec = Field(default_factory=MemoryRecallSpec)
|
|
301
330
|
write: MemoryWriteSpec = Field(default_factory=MemoryWriteSpec)
|
|
302
|
-
scopes: list[
|
|
303
|
-
default_factory=lambda: ["workspace", "agent", "user"]
|
|
304
|
-
)
|
|
331
|
+
scopes: list[MemoryScope] = Field(default_factory=_default_memory_scopes)
|
|
305
332
|
|
|
306
333
|
|
|
307
334
|
class NetworkPolicy(ContractModel):
|
|
@@ -329,12 +356,17 @@ class RuntimeRef(ContractModel):
|
|
|
329
356
|
project entrypoint that is snapshotted by its Build.
|
|
330
357
|
"""
|
|
331
358
|
|
|
332
|
-
type: Literal["codex", "adk", "langgraph"]
|
|
359
|
+
type: Literal["codex", "adk", "langgraph", "harness", "plugin"]
|
|
333
360
|
project_path: str | None = Field(default=None, min_length=1, max_length=1024)
|
|
334
361
|
entry_point: str | None = Field(default=None, min_length=1, max_length=1024)
|
|
335
362
|
agent_variable: str = Field(default="root_agent", min_length=1, max_length=256)
|
|
336
363
|
version: str | None = Field(default=None, min_length=1, max_length=64)
|
|
337
364
|
detection: Literal["declared", "auto"] = "declared"
|
|
365
|
+
provider_ref: str | None = Field(default=None, min_length=12, max_length=256)
|
|
366
|
+
provider_config: dict[str, Any] = Field(
|
|
367
|
+
default_factory=dict,
|
|
368
|
+
exclude_if=lambda value: not value,
|
|
369
|
+
)
|
|
338
370
|
|
|
339
371
|
@field_validator("project_path", "entry_point")
|
|
340
372
|
@classmethod
|
|
@@ -352,8 +384,32 @@ class RuntimeRef(ContractModel):
|
|
|
352
384
|
raise ValueError("Runtime 路径必须是工作区内的相对路径")
|
|
353
385
|
return normalized
|
|
354
386
|
|
|
387
|
+
@field_validator("provider_ref")
|
|
388
|
+
@classmethod
|
|
389
|
+
def validate_provider_ref(cls, value: str | None) -> str | None:
|
|
390
|
+
if value is None:
|
|
391
|
+
return None
|
|
392
|
+
if not re.fullmatch(
|
|
393
|
+
r"plugin://[a-z0-9]+(?:[._-][a-z0-9]+)*@"
|
|
394
|
+
r"\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?",
|
|
395
|
+
value,
|
|
396
|
+
):
|
|
397
|
+
raise ValueError("Provider 引用必须固定为 plugin://<id>@<exact-version>")
|
|
398
|
+
return value
|
|
399
|
+
|
|
400
|
+
@field_validator("provider_config")
|
|
401
|
+
@classmethod
|
|
402
|
+
def validate_provider_config(cls, value: dict[str, Any]) -> dict[str, Any]:
|
|
403
|
+
_reject_clear_runtime_secrets(value)
|
|
404
|
+
return value
|
|
405
|
+
|
|
355
406
|
@model_validator(mode="after")
|
|
356
407
|
def validate_framework_source(self) -> "RuntimeRef":
|
|
408
|
+
if self.type == "plugin":
|
|
409
|
+
if not self.provider_ref:
|
|
410
|
+
raise ValueError("plugin Runtime 必须配置 providerRef")
|
|
411
|
+
elif self.provider_ref is not None or self.provider_config:
|
|
412
|
+
raise ValueError("只有 plugin Runtime 可以配置 providerRef/providerConfig")
|
|
357
413
|
if self.type in {"adk", "langgraph"}:
|
|
358
414
|
if not self.project_path:
|
|
359
415
|
raise ValueError(f"{self.type} Runtime 必须配置 projectPath")
|
|
@@ -362,10 +418,39 @@ class RuntimeRef(ContractModel):
|
|
|
362
418
|
return self
|
|
363
419
|
|
|
364
420
|
|
|
421
|
+
_RUNTIME_SECRET_KEY = re.compile(
|
|
422
|
+
r"(?:secret|password|token|api[_-]?key)", re.IGNORECASE
|
|
423
|
+
)
|
|
424
|
+
_RUNTIME_SECRET_REF_PREFIXES = (
|
|
425
|
+
"secret://",
|
|
426
|
+
"env://",
|
|
427
|
+
"credential://",
|
|
428
|
+
"vault://",
|
|
429
|
+
)
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
def _reject_clear_runtime_secrets(value: Any, *, path: str = "providerConfig") -> None:
|
|
433
|
+
"""Provider config is revision data: it may only retain secret references."""
|
|
434
|
+
|
|
435
|
+
if isinstance(value, dict):
|
|
436
|
+
for key, child in value.items():
|
|
437
|
+
child_path = f"{path}.{key}"
|
|
438
|
+
if _RUNTIME_SECRET_KEY.search(str(key)) and child is not None:
|
|
439
|
+
if not isinstance(child, str) or not child.startswith(
|
|
440
|
+
_RUNTIME_SECRET_REF_PREFIXES
|
|
441
|
+
):
|
|
442
|
+
raise ValueError(f"{child_path} 必须保存 Secret 引用,不能保存明文")
|
|
443
|
+
_reject_clear_runtime_secrets(child, path=child_path)
|
|
444
|
+
elif isinstance(value, list):
|
|
445
|
+
for index, child in enumerate(value):
|
|
446
|
+
_reject_clear_runtime_secrets(child, path=f"{path}[{index}]")
|
|
447
|
+
|
|
448
|
+
|
|
365
449
|
class AgentSpec(ContractModel):
|
|
366
450
|
description: str = Field(default="", max_length=1024)
|
|
367
451
|
runtime: RuntimeRef | None = None
|
|
368
452
|
instructions: Instructions = Field(default_factory=Instructions)
|
|
453
|
+
soul: SoulDocument | None = None
|
|
369
454
|
model: ModelSpec | None = None
|
|
370
455
|
capabilities: CapabilitiesSpec = Field(default_factory=CapabilitiesSpec)
|
|
371
456
|
bindings: AgentBindings = Field(default_factory=AgentBindings)
|
|
@@ -498,6 +583,7 @@ class ResolvedAgentSpec(ContractModel):
|
|
|
498
583
|
source_revision: int
|
|
499
584
|
compiler_version: str = "1"
|
|
500
585
|
instructions: Instructions
|
|
586
|
+
soul: SoulDocument | None = None
|
|
501
587
|
model: ResolvedModel
|
|
502
588
|
capabilities: ResolvedCapabilities
|
|
503
589
|
execution: ExecutionSpec
|
|
@@ -545,11 +631,44 @@ class BundleManifest(ContractModel):
|
|
|
545
631
|
source_digest: str = ""
|
|
546
632
|
runtime_contract: Literal["agentkit.runtime/v1"] = "agentkit.runtime/v1"
|
|
547
633
|
plugin_lock_digest: str = ""
|
|
634
|
+
# A v0.8.2 bundle already used the v2 envelope without a composition.
|
|
635
|
+
# Keep that wire shape readable as the explicit legacy execution profile;
|
|
636
|
+
# newly built bundles write ``composition_mode`` so consumers never need
|
|
637
|
+
# to infer whether PluginHost admission is required from missing files.
|
|
638
|
+
composition_mode: Literal["legacy", "composed"] | None = None
|
|
639
|
+
composition_profile_digest: str | None = None
|
|
548
640
|
hosted_kernel_requirement_digest: str = ""
|
|
549
641
|
files: list[FileEntry]
|
|
550
642
|
created_at: str = "1970-01-01T00:00:00Z"
|
|
551
643
|
bundle_digest: str = ""
|
|
552
644
|
|
|
645
|
+
@model_validator(mode="after")
|
|
646
|
+
def validate_composition_mode(self) -> "BundleManifest":
|
|
647
|
+
if self.composition_mode == "composed" and not self.composition_profile_digest:
|
|
648
|
+
raise ValueError("composed Bundle v2 requires compositionProfileDigest")
|
|
649
|
+
if self.composition_mode == "legacy" and self.composition_profile_digest:
|
|
650
|
+
raise ValueError("legacy Bundle v2 cannot declare compositionProfileDigest")
|
|
651
|
+
return self
|
|
652
|
+
|
|
653
|
+
@property
|
|
654
|
+
def execution_profile(self) -> Literal["legacy", "composed"]:
|
|
655
|
+
"""Normalize historical v2 manifests without rewriting their bytes.
|
|
656
|
+
|
|
657
|
+
``compositionMode`` was added after the v0.8.2 envelope. Its absence
|
|
658
|
+
remains a backward-compatible projection: an embedded composition
|
|
659
|
+
digest is composed; its absence selects the established runtime path.
|
|
660
|
+
"""
|
|
661
|
+
|
|
662
|
+
if self.composition_mode is not None:
|
|
663
|
+
return self.composition_mode
|
|
664
|
+
return "composed" if self.composition_profile_digest else "legacy"
|
|
665
|
+
|
|
666
|
+
|
|
667
|
+
# ``BundleManifest`` is the existing, installed source type. The explicit
|
|
668
|
+
# name documents that its ``agentkit.bundle/v2`` branch is the Phase 2
|
|
669
|
+
# AgentBundleManifest/v2 contract; it is an alias, not a parallel manifest.
|
|
670
|
+
AgentBundleManifest = BundleManifest
|
|
671
|
+
|
|
553
672
|
|
|
554
673
|
class BuildRecord(ContractModel):
|
|
555
674
|
id: str
|