ciris-agent 1.7.7__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.
- ciris_adapters/README.md +113 -0
- ciris_adapters/__init__.py +30 -0
- ciris_adapters/ciris_covenant_metrics/README.md +144 -0
- ciris_adapters/ciris_covenant_metrics/__init__.py +36 -0
- ciris_adapters/ciris_covenant_metrics/adapter.py +249 -0
- ciris_adapters/ciris_covenant_metrics/manifest.json +152 -0
- ciris_adapters/ciris_covenant_metrics/services.py +403 -0
- ciris_adapters/ciris_hosted_tools/__init__.py +24 -0
- ciris_adapters/ciris_hosted_tools/adapter.py +169 -0
- ciris_adapters/ciris_hosted_tools/manifest.json +94 -0
- ciris_adapters/ciris_hosted_tools/services.py +744 -0
- ciris_adapters/external_data_sql/README.md +559 -0
- ciris_adapters/external_data_sql/__init__.py +43 -0
- ciris_adapters/external_data_sql/adapter.py +144 -0
- ciris_adapters/external_data_sql/configurable.py +315 -0
- ciris_adapters/external_data_sql/dialects/__init__.py +37 -0
- ciris_adapters/external_data_sql/dialects/base.py +133 -0
- ciris_adapters/external_data_sql/dialects/mysql.py +63 -0
- ciris_adapters/external_data_sql/dialects/postgresql.py +59 -0
- ciris_adapters/external_data_sql/dialects/sqlite.py +62 -0
- ciris_adapters/external_data_sql/example_config.json +88 -0
- ciris_adapters/external_data_sql/example_privacy_schema.yaml +127 -0
- ciris_adapters/external_data_sql/manifest.json +195 -0
- ciris_adapters/external_data_sql/privacy_schema_loader.py +189 -0
- ciris_adapters/external_data_sql/protocol.py +101 -0
- ciris_adapters/external_data_sql/schemas.py +146 -0
- ciris_adapters/external_data_sql/service.py +1547 -0
- ciris_adapters/external_data_sql/service_old.py +492 -0
- ciris_adapters/home_assistant/__init__.py +63 -0
- ciris_adapters/home_assistant/adapter.py +201 -0
- ciris_adapters/home_assistant/communication_service.py +347 -0
- ciris_adapters/home_assistant/configurable.py +667 -0
- ciris_adapters/home_assistant/manifest.json +203 -0
- ciris_adapters/home_assistant/schemas.py +129 -0
- ciris_adapters/home_assistant/service.py +751 -0
- ciris_adapters/home_assistant/tool_service.py +441 -0
- ciris_adapters/mcp_client/__init__.py +82 -0
- ciris_adapters/mcp_client/adapter.py +847 -0
- ciris_adapters/mcp_client/config.py +280 -0
- ciris_adapters/mcp_client/configurable.py +422 -0
- ciris_adapters/mcp_client/manifest.json +185 -0
- ciris_adapters/mcp_client/mcp_communication_service.py +393 -0
- ciris_adapters/mcp_client/mcp_tool_service.py +463 -0
- ciris_adapters/mcp_client/mcp_wise_service.py +394 -0
- ciris_adapters/mcp_client/schemas.py +149 -0
- ciris_adapters/mcp_client/security.py +592 -0
- ciris_adapters/mcp_common/__init__.py +44 -0
- ciris_adapters/mcp_common/manifest.json +25 -0
- ciris_adapters/mcp_common/protocol.py +315 -0
- ciris_adapters/mcp_common/schemas.py +225 -0
- ciris_adapters/mcp_server/__init__.py +47 -0
- ciris_adapters/mcp_server/adapter.py +581 -0
- ciris_adapters/mcp_server/config.py +260 -0
- ciris_adapters/mcp_server/configurable.py +393 -0
- ciris_adapters/mcp_server/handlers.py +663 -0
- ciris_adapters/mcp_server/manifest.json +211 -0
- ciris_adapters/mcp_server/security.py +500 -0
- ciris_adapters/mock_llm/README.md +117 -0
- ciris_adapters/mock_llm/__init__.py +21 -0
- ciris_adapters/mock_llm/adapter.py +131 -0
- ciris_adapters/mock_llm/configurable.py +237 -0
- ciris_adapters/mock_llm/manifest.json +106 -0
- ciris_adapters/mock_llm/protocol.py +37 -0
- ciris_adapters/mock_llm/responses.py +520 -0
- ciris_adapters/mock_llm/responses_action_selection.py +1041 -0
- ciris_adapters/mock_llm/responses_epistemic.py +17 -0
- ciris_adapters/mock_llm/responses_feedback.py +27 -0
- ciris_adapters/mock_llm/schemas.py +35 -0
- ciris_adapters/mock_llm/service.py +294 -0
- ciris_adapters/navigation/__init__.py +21 -0
- ciris_adapters/navigation/adapter.py +129 -0
- ciris_adapters/navigation/configurable.py +239 -0
- ciris_adapters/navigation/manifest.json +104 -0
- ciris_adapters/navigation/service.py +487 -0
- ciris_adapters/reddit/README.md +132 -0
- ciris_adapters/reddit/REDDIT_ADAPTER_ANALYSIS.md +715 -0
- ciris_adapters/reddit/REDDIT_ADAPTER_SUMMARY.txt +278 -0
- ciris_adapters/reddit/REDDIT_ANALYSIS_INDEX.md +307 -0
- ciris_adapters/reddit/REDDIT_PRODUCTION_READINESS_PLAN.md +518 -0
- ciris_adapters/reddit/__init__.py +15 -0
- ciris_adapters/reddit/adapter.py +189 -0
- ciris_adapters/reddit/configurable.py +274 -0
- ciris_adapters/reddit/error_handler.py +307 -0
- ciris_adapters/reddit/manifest.json +218 -0
- ciris_adapters/reddit/observer.py +532 -0
- ciris_adapters/reddit/protocol.py +34 -0
- ciris_adapters/reddit/schemas.py +433 -0
- ciris_adapters/reddit/service.py +1471 -0
- ciris_adapters/sample_adapter/README.md +474 -0
- ciris_adapters/sample_adapter/__init__.py +45 -0
- ciris_adapters/sample_adapter/adapter.py +208 -0
- ciris_adapters/sample_adapter/configurable.py +469 -0
- ciris_adapters/sample_adapter/manifest.json +247 -0
- ciris_adapters/sample_adapter/services.py +486 -0
- ciris_adapters/weather/__init__.py +16 -0
- ciris_adapters/weather/adapter.py +130 -0
- ciris_adapters/weather/configurable.py +240 -0
- ciris_adapters/weather/manifest.json +156 -0
- ciris_adapters/weather/service.py +600 -0
- ciris_agent-1.7.7.dist-info/METADATA +284 -0
- ciris_agent-1.7.7.dist-info/RECORD +986 -0
- ciris_agent-1.7.7.dist-info/WHEEL +5 -0
- ciris_agent-1.7.7.dist-info/entry_points.txt +15 -0
- ciris_agent-1.7.7.dist-info/licenses/LICENSE +205 -0
- ciris_agent-1.7.7.dist-info/licenses/NOTICE +82 -0
- ciris_agent-1.7.7.dist-info/top_level.txt +4 -0
- ciris_engine/__init__.py +15 -0
- ciris_engine/ciris_templates/ally.yaml +632 -0
- ciris_engine/ciris_templates/default.yaml +411 -0
- ciris_engine/ciris_templates/echo-core.yaml +629 -0
- ciris_engine/ciris_templates/echo-speculative.yaml +764 -0
- ciris_engine/ciris_templates/echo.yaml +647 -0
- ciris_engine/ciris_templates/sage.yaml +332 -0
- ciris_engine/ciris_templates/scout.yaml +338 -0
- ciris_engine/ciris_templates/test.yaml +168 -0
- ciris_engine/cli.py +42 -0
- ciris_engine/config/CIRIS_SERVICES.json +19 -0
- ciris_engine/config/MODEL_CAPABILITIES.json +419 -0
- ciris_engine/config/PRICING_DATA.json +179 -0
- ciris_engine/config/__init__.py +50 -0
- ciris_engine/config/ciris_services.py +113 -0
- ciris_engine/config/model_capabilities.py +388 -0
- ciris_engine/config/pricing_models.py +276 -0
- ciris_engine/constants.py +35 -0
- ciris_engine/data/__init__.py +1 -0
- ciris_engine/data/covenant_1.0b.txt +978 -0
- ciris_engine/gui_static/11steps.svg +107 -0
- ciris_engine/gui_static/2x-schematics.png +0 -0
- ciris_engine/gui_static/404/index.html +1 -0
- ciris_engine/gui_static/404.html +1 -0
- ciris_engine/gui_static/_next/static/0edhkwDxd5UccTsCmtaBi/_buildManifest.js +1 -0
- ciris_engine/gui_static/_next/static/0edhkwDxd5UccTsCmtaBi/_ssgManifest.js +1 -0
- ciris_engine/gui_static/_next/static/U-3xTQao7hc2wnAi-Uekm/_buildManifest.js +1 -0
- ciris_engine/gui_static/_next/static/U-3xTQao7hc2wnAi-Uekm/_ssgManifest.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/3297-60e86ba0f8a7b040.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/3835-2aad4b7f5f8e4643.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/4499-99a0bc47de0b8975.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/4534-af88cd4ba6e99bff.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/4541-84b455f9e0dc4cfe.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/4789-61412711484754bb.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/6539-c6398bc9d7018430.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/704-8e827b26cc8c2d32.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/704-fb45d630f3192c6f.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/8072-de4952a2e6d2b33f.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/8315-b91d03a3949db0af.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/8386-f93a83ccbd789bd9.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/87c73c54-781a7f35148d5433.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/8903-fefea3339a02d41b.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/9090-e66485adf8d9d990.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/_not-found/page-a67d9808462c23b1.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/api-keys/page-2d7ee1583bbbd02e.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/api-keys/page-6a3c2bae6fe92b7b.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/consent/page-2ed3a035136bc4e8.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/consent/page-b2f5c91844a32422.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/page-25b90f89af3ea58c.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/page-b65d16c94ecaf69c.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/privacy/page-675b6d05c8f9184f.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/privacy/page-cbee2e1c8ab52145.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/settings/page-0f44da06697cf9f0.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/account/settings/page-563420253577edbf.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/adapters/page-1854631018bc32be.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/agents/page-8353752c176a7c70.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/agents/page-f61a529f110a6040.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/api-demo/page-7f19b9d20d39be28.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/api-demo/page-d1063938f249b8bd.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/audit/page-321b6728b8fff0bb.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/audit/page-ebac35ca961a1277.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/billing/page-6f3dc3bd02924f8e.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/billing/page-fa4a469f814c821a.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/comms/page-0d4f734269addd8f.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/comms/page-79227d426050089c.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/config/page-018d21d683b6e5bc.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/config/page-2aa5a5363ca2a371.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/consent/page-198373205fd316e2.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/consent/page-f2ca39e7713b13f8.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/dashboard/page-1dd5a196f643c60d.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/dashboard/page-530a04d3abbb8cda.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/docs/page-3193b06d094ab654.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/docs/page-330e996dedb87aba.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/layout-0a70f5fc460298b1.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/layout-21f2f99dd5b336e9.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/login/page-33240e6c6034a49d.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/login/page-68ffab6d54a7fdcd.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/logs/page-8a6167aecc4a475c.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/memory/page-9ca8c5d0056de3ff.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/memory/page-e961226941c18f81.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/page-6fdb065a787a4974.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/page-89f87d431be6064a.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/runtime/page-2e728b9c43aa164d.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/runtime/page-c7dd033dc40a72f0.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/services/page-ae9f0bdf11d01a95.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/services/page-b10feb79ca5d75e5.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/sessions/page-13ebe7ef1c16ae11.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/sessions/page-e6c82b16d617f785.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/setup/page-0beb5f5b5a5c20fc.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/setup/page-2595e729eae30c0e.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/status-dashboard/page-1037c987aecc3653.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/status-dashboard/page-2ffd147f6d3162ff.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/system/page-2c5798d58cafcd91.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/system/page-505b1ba4eceb01c3.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/test-auth/page-b0cad31d5cb1b2fa.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/test-auth/page-f3ecd7a8012df230.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/test-login/page-f35117fdc4105801.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/test-login/page-fb583a7924114906.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/test-sdk/page-50f116fd76935563.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/test-sdk/page-c37d8aa5ba623a44.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/tools/page-429aec7a707777ef.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/tools/page-5f705aad60e0c04e.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/users/page-13476b8b0f3808cc.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/users/page-7e500d154ed5bba4.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/wa/page-cc4a9d8a5cb44d08.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/app/wa/page-ec3e429efbc79230.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/framework-9d29490f5ba089ba.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/main-1f554952e47a82c4.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/main-app-26fa8aed029082e5.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/main-app-97b0486ef6bcef25.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/pages/_app-6ce685456e616eb2.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/pages/_error-d4bce98d93fe21e7.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- ciris_engine/gui_static/_next/static/chunks/webpack-fcebd240b7f8477d.js +1 -0
- ciris_engine/gui_static/_next/static/css/16b94b1fe0cc6e37.css +3 -0
- ciris_engine/gui_static/_next/static/css/77a24ceaae86deff.css +3 -0
- ciris_engine/gui_static/_next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
- ciris_engine/gui_static/_next/static/media/747892c23ea88013-s.woff2 +0 -0
- ciris_engine/gui_static/_next/static/media/8d697b304b401681-s.woff2 +0 -0
- ciris_engine/gui_static/_next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
- ciris_engine/gui_static/_next/static/media/9610d9e46709d722-s.woff2 +0 -0
- ciris_engine/gui_static/_next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
- ciris_engine/gui_static/_next/static/media/d8298875641ec7d4-s.p.woff2 +0 -0
- ciris_engine/gui_static/account/api-keys/index.html +1 -0
- ciris_engine/gui_static/account/api-keys/index.txt +27 -0
- ciris_engine/gui_static/account/consent/index.html +1 -0
- ciris_engine/gui_static/account/consent/index.txt +27 -0
- ciris_engine/gui_static/account/index.html +1 -0
- ciris_engine/gui_static/account/index.txt +27 -0
- ciris_engine/gui_static/account/privacy/index.html +1 -0
- ciris_engine/gui_static/account/privacy/index.txt +27 -0
- ciris_engine/gui_static/account/settings/index.html +1 -0
- ciris_engine/gui_static/account/settings/index.txt +27 -0
- ciris_engine/gui_static/adapters/index.html +1 -0
- ciris_engine/gui_static/adapters/index.txt +27 -0
- ciris_engine/gui_static/agents/index.html +1 -0
- ciris_engine/gui_static/agents/index.txt +27 -0
- ciris_engine/gui_static/andrew-roberts-euBRXcx57T4-unsplash.jpg +0 -0
- ciris_engine/gui_static/api-demo/index.html +1 -0
- ciris_engine/gui_static/api-demo/index.txt +27 -0
- ciris_engine/gui_static/audit/index.html +1 -0
- ciris_engine/gui_static/audit/index.txt +27 -0
- ciris_engine/gui_static/billing/index.html +1 -0
- ciris_engine/gui_static/billing/index.txt +27 -0
- ciris_engine/gui_static/blurryinfo.png +0 -0
- ciris_engine/gui_static/chip-vincent-PkQDwfl9Flc-unsplash.jpg +0 -0
- ciris_engine/gui_static/ciris-architecture.svg +338 -0
- ciris_engine/gui_static/comms/index.html +1 -0
- ciris_engine/gui_static/comms/index.txt +27 -0
- ciris_engine/gui_static/config/index.html +1 -0
- ciris_engine/gui_static/config/index.txt +27 -0
- ciris_engine/gui_static/consent/index.html +1 -0
- ciris_engine/gui_static/consent/index.txt +27 -0
- ciris_engine/gui_static/dashboard/index.html +1 -0
- ciris_engine/gui_static/dashboard/index.txt +27 -0
- ciris_engine/gui_static/docs/index.html +1 -0
- ciris_engine/gui_static/docs/index.txt +27 -0
- ciris_engine/gui_static/eric.png +0 -0
- ciris_engine/gui_static/file.svg +1 -0
- ciris_engine/gui_static/globe.svg +1 -0
- ciris_engine/gui_static/index.html +1 -0
- ciris_engine/gui_static/index.txt +27 -0
- ciris_engine/gui_static/infogfx-1@2x.png +0 -0
- ciris_engine/gui_static/infogfx-2.png +0 -0
- ciris_engine/gui_static/infogfx-dark-1.png +0 -0
- ciris_engine/gui_static/kelly-vohs-soSTXmIxTDU-unsplash.jpg +0 -0
- ciris_engine/gui_static/login/index.html +1 -0
- ciris_engine/gui_static/login/index.txt +27 -0
- ciris_engine/gui_static/logs/index.html +1 -0
- ciris_engine/gui_static/logs/index.txt +27 -0
- ciris_engine/gui_static/memory/index.html +1 -0
- ciris_engine/gui_static/memory/index.txt +27 -0
- ciris_engine/gui_static/nathan-farrish-ArcTfEoBgzs-unsplash.jpg +0 -0
- ciris_engine/gui_static/next.svg +1 -0
- ciris_engine/gui_static/overview.svg +512 -0
- ciris_engine/gui_static/overview1.svg +407 -0
- ciris_engine/gui_static/overview2.svg +370 -0
- ciris_engine/gui_static/pipeline-visualization.svg +278 -0
- ciris_engine/gui_static/privacy-policy.html +160 -0
- ciris_engine/gui_static/runtime/index.html +8 -0
- ciris_engine/gui_static/runtime/index.txt +27 -0
- ciris_engine/gui_static/services/index.html +1 -0
- ciris_engine/gui_static/services/index.txt +27 -0
- ciris_engine/gui_static/sessions/index.html +1 -0
- ciris_engine/gui_static/sessions/index.txt +27 -0
- ciris_engine/gui_static/setup/index.html +1 -0
- ciris_engine/gui_static/setup/index.txt +27 -0
- ciris_engine/gui_static/status-dashboard/index.html +1 -0
- ciris_engine/gui_static/status-dashboard/index.txt +27 -0
- ciris_engine/gui_static/system/index.html +1 -0
- ciris_engine/gui_static/system/index.txt +27 -0
- ciris_engine/gui_static/terms-of-service.html +174 -0
- ciris_engine/gui_static/test-auth/index.html +1 -0
- ciris_engine/gui_static/test-auth/index.txt +27 -0
- ciris_engine/gui_static/test-login/index.html +1 -0
- ciris_engine/gui_static/test-login/index.txt +27 -0
- ciris_engine/gui_static/test-sdk/index.html +1 -0
- ciris_engine/gui_static/test-sdk/index.txt +27 -0
- ciris_engine/gui_static/tools/index.html +1 -0
- ciris_engine/gui_static/tools/index.txt +27 -0
- ciris_engine/gui_static/users/index.html +1 -0
- ciris_engine/gui_static/users/index.txt +27 -0
- ciris_engine/gui_static/vercel.svg +1 -0
- ciris_engine/gui_static/videos/video1.mp4 +0 -0
- ciris_engine/gui_static/videos/video3.mp4 +0 -0
- ciris_engine/gui_static/wa/index.html +1 -0
- ciris_engine/gui_static/wa/index.txt +27 -0
- ciris_engine/gui_static/window.svg +1 -0
- ciris_engine/logic/__init__.py +8 -0
- ciris_engine/logic/adapters/__init__.py +74 -0
- ciris_engine/logic/adapters/api/__init__.py +5 -0
- ciris_engine/logic/adapters/api/adapter.py +1037 -0
- ciris_engine/logic/adapters/api/api_communication.py +370 -0
- ciris_engine/logic/adapters/api/api_document.py +330 -0
- ciris_engine/logic/adapters/api/api_observer.py +24 -0
- ciris_engine/logic/adapters/api/api_runtime_control.py +388 -0
- ciris_engine/logic/adapters/api/api_tools.py +299 -0
- ciris_engine/logic/adapters/api/api_vision.py +215 -0
- ciris_engine/logic/adapters/api/app.py +272 -0
- ciris_engine/logic/adapters/api/auth.py +159 -0
- ciris_engine/logic/adapters/api/config.py +101 -0
- ciris_engine/logic/adapters/api/constants.py +55 -0
- ciris_engine/logic/adapters/api/dependencies/__init__.py +1 -0
- ciris_engine/logic/adapters/api/dependencies/auth.py +260 -0
- ciris_engine/logic/adapters/api/endpoints/__init__.py +1 -0
- ciris_engine/logic/adapters/api/endpoints/emergency.py +86 -0
- ciris_engine/logic/adapters/api/middleware/__init__.py +1 -0
- ciris_engine/logic/adapters/api/middleware/rate_limiter.py +302 -0
- ciris_engine/logic/adapters/api/models.py +29 -0
- ciris_engine/logic/adapters/api/routes/__init__.py +52 -0
- ciris_engine/logic/adapters/api/routes/agent.py +1762 -0
- ciris_engine/logic/adapters/api/routes/audit.py +707 -0
- ciris_engine/logic/adapters/api/routes/auth.py +1745 -0
- ciris_engine/logic/adapters/api/routes/billing.py +895 -0
- ciris_engine/logic/adapters/api/routes/config.py +329 -0
- ciris_engine/logic/adapters/api/routes/connectors.py +534 -0
- ciris_engine/logic/adapters/api/routes/consent.py +637 -0
- ciris_engine/logic/adapters/api/routes/dsar.py +637 -0
- ciris_engine/logic/adapters/api/routes/dsar_multi_source.py +484 -0
- ciris_engine/logic/adapters/api/routes/emergency.py +302 -0
- ciris_engine/logic/adapters/api/routes/memory.py +733 -0
- ciris_engine/logic/adapters/api/routes/memory_filters.py +230 -0
- ciris_engine/logic/adapters/api/routes/memory_models.py +112 -0
- ciris_engine/logic/adapters/api/routes/memory_queries.py +236 -0
- ciris_engine/logic/adapters/api/routes/memory_query_helpers.py +394 -0
- ciris_engine/logic/adapters/api/routes/memory_visualization.py +359 -0
- ciris_engine/logic/adapters/api/routes/memory_visualization_helpers.py +110 -0
- ciris_engine/logic/adapters/api/routes/partnership.py +541 -0
- ciris_engine/logic/adapters/api/routes/setup.py +1374 -0
- ciris_engine/logic/adapters/api/routes/system.py +3049 -0
- ciris_engine/logic/adapters/api/routes/system_extensions.py +952 -0
- ciris_engine/logic/adapters/api/routes/telemetry.py +1987 -0
- ciris_engine/logic/adapters/api/routes/telemetry_converters.py +141 -0
- ciris_engine/logic/adapters/api/routes/telemetry_helpers.py +111 -0
- ciris_engine/logic/adapters/api/routes/telemetry_logs_reader.py +280 -0
- ciris_engine/logic/adapters/api/routes/telemetry_metrics.py +131 -0
- ciris_engine/logic/adapters/api/routes/telemetry_models.py +190 -0
- ciris_engine/logic/adapters/api/routes/telemetry_otlp.py +878 -0
- ciris_engine/logic/adapters/api/routes/telemetry_resource_helpers.py +191 -0
- ciris_engine/logic/adapters/api/routes/tickets.py +541 -0
- ciris_engine/logic/adapters/api/routes/tools.py +556 -0
- ciris_engine/logic/adapters/api/routes/transparency.py +281 -0
- ciris_engine/logic/adapters/api/routes/users.py +981 -0
- ciris_engine/logic/adapters/api/routes/verification.py +373 -0
- ciris_engine/logic/adapters/api/routes/wa.py +369 -0
- ciris_engine/logic/adapters/api/service_configuration.py +177 -0
- ciris_engine/logic/adapters/api/services/__init__.py +1 -0
- ciris_engine/logic/adapters/api/services/auth_service.py +1417 -0
- ciris_engine/logic/adapters/api/services/oauth_security.py +68 -0
- ciris_engine/logic/adapters/base.py +141 -0
- ciris_engine/logic/adapters/base_adapter.py +73 -0
- ciris_engine/logic/adapters/base_observer.py +1141 -0
- ciris_engine/logic/adapters/base_vision.py +312 -0
- ciris_engine/logic/adapters/cirisnode_client.py +307 -0
- ciris_engine/logic/adapters/cli/__init__.py +3 -0
- ciris_engine/logic/adapters/cli/adapter.py +207 -0
- ciris_engine/logic/adapters/cli/cli_adapter.py +902 -0
- ciris_engine/logic/adapters/cli/cli_observer.py +268 -0
- ciris_engine/logic/adapters/cli/cli_tools.py +427 -0
- ciris_engine/logic/adapters/cli/cli_wa_service.py +134 -0
- ciris_engine/logic/adapters/cli/config.py +73 -0
- ciris_engine/logic/adapters/discord/__init__.py +3 -0
- ciris_engine/logic/adapters/discord/adapter.py +783 -0
- ciris_engine/logic/adapters/discord/ciris_discord_client.py +159 -0
- ciris_engine/logic/adapters/discord/config.py +177 -0
- ciris_engine/logic/adapters/discord/constants.py +185 -0
- ciris_engine/logic/adapters/discord/discord-stubs.pyi +50 -0
- ciris_engine/logic/adapters/discord/discord_adapter.py +1584 -0
- ciris_engine/logic/adapters/discord/discord_audit.py +150 -0
- ciris_engine/logic/adapters/discord/discord_channel_manager.py +351 -0
- ciris_engine/logic/adapters/discord/discord_connection_manager.py +313 -0
- ciris_engine/logic/adapters/discord/discord_embed_formatter.py +369 -0
- ciris_engine/logic/adapters/discord/discord_error_classifier.py +302 -0
- ciris_engine/logic/adapters/discord/discord_error_handler.py +316 -0
- ciris_engine/logic/adapters/discord/discord_guidance_handler.py +460 -0
- ciris_engine/logic/adapters/discord/discord_message_handler.py +207 -0
- ciris_engine/logic/adapters/discord/discord_observer.py +670 -0
- ciris_engine/logic/adapters/discord/discord_rate_limiter.py +249 -0
- ciris_engine/logic/adapters/discord/discord_reaction_handler.py +278 -0
- ciris_engine/logic/adapters/discord/discord_tool_handler.py +465 -0
- ciris_engine/logic/adapters/discord/discord_tool_service.py +790 -0
- ciris_engine/logic/adapters/discord/discord_tools.py +90 -0
- ciris_engine/logic/adapters/discord/discord_vision_helper.py +148 -0
- ciris_engine/logic/adapters/discord/py.typed +0 -0
- ciris_engine/logic/adapters/document_parser.py +320 -0
- ciris_engine/logic/audit/__init__.py +10 -0
- ciris_engine/logic/audit/hash_chain.py +313 -0
- ciris_engine/logic/audit/signature_manager.py +352 -0
- ciris_engine/logic/audit/verifier.py +408 -0
- ciris_engine/logic/buses/__init__.py +21 -0
- ciris_engine/logic/buses/base_bus.py +178 -0
- ciris_engine/logic/buses/bus_manager.py +121 -0
- ciris_engine/logic/buses/communication_bus.py +387 -0
- ciris_engine/logic/buses/llm_bus.py +722 -0
- ciris_engine/logic/buses/memory_bus.py +577 -0
- ciris_engine/logic/buses/prohibitions.py +502 -0
- ciris_engine/logic/buses/runtime_control_bus.py +539 -0
- ciris_engine/logic/buses/tool_bus.py +482 -0
- ciris_engine/logic/buses/wise_bus.py +684 -0
- ciris_engine/logic/config/__init__.py +25 -0
- ciris_engine/logic/config/bootstrap.py +255 -0
- ciris_engine/logic/config/config_accessor.py +202 -0
- ciris_engine/logic/config/db_paths.py +194 -0
- ciris_engine/logic/config/env_utils.py +39 -0
- ciris_engine/logic/conscience/__init__.py +16 -0
- ciris_engine/logic/conscience/build_deferral_package.py +0 -0
- ciris_engine/logic/conscience/core.py +688 -0
- ciris_engine/logic/conscience/interface.py +33 -0
- ciris_engine/logic/conscience/registry.py +76 -0
- ciris_engine/logic/conscience/thought_depth_guardrail.py +231 -0
- ciris_engine/logic/conscience/updated_status_conscience.py +156 -0
- ciris_engine/logic/context/__init__.py +10 -0
- ciris_engine/logic/context/batch_context.py +550 -0
- ciris_engine/logic/context/builder.py +149 -0
- ciris_engine/logic/context/channel_resolution.py +136 -0
- ciris_engine/logic/context/secrets_snapshot.py +52 -0
- ciris_engine/logic/context/system_snapshot.py +116 -0
- ciris_engine/logic/context/system_snapshot_helpers.py +1651 -0
- ciris_engine/logic/covenant/__init__.py +33 -0
- ciris_engine/logic/covenant/executor.py +303 -0
- ciris_engine/logic/covenant/extractor.py +382 -0
- ciris_engine/logic/covenant/handler.py +241 -0
- ciris_engine/logic/covenant/verifier.py +383 -0
- ciris_engine/logic/dma/__init__.py +15 -0
- ciris_engine/logic/dma/action_selection/__init__.py +11 -0
- ciris_engine/logic/dma/action_selection/action_instruction_generator.py +444 -0
- ciris_engine/logic/dma/action_selection/context_builder.py +508 -0
- ciris_engine/logic/dma/action_selection/faculty_integration.py +193 -0
- ciris_engine/logic/dma/action_selection/special_cases.py +132 -0
- ciris_engine/logic/dma/action_selection_pdma.py +365 -0
- ciris_engine/logic/dma/base_dma.py +335 -0
- ciris_engine/logic/dma/csdma.py +239 -0
- ciris_engine/logic/dma/dma_executor.py +575 -0
- ciris_engine/logic/dma/dsdma_base.py +410 -0
- ciris_engine/logic/dma/exceptions.py +4 -0
- ciris_engine/logic/dma/factory.py +150 -0
- ciris_engine/logic/dma/pdma.py +120 -0
- ciris_engine/logic/dma/prompt_loader.py +189 -0
- ciris_engine/logic/dma/prompts/action_selection_pdma.yml +58 -0
- ciris_engine/logic/dma/prompts/csdma_common_sense.yml +28 -0
- ciris_engine/logic/dma/prompts/dsdma_base.yml +17 -0
- ciris_engine/logic/dma/prompts/pdma_ethical.yml +42 -0
- ciris_engine/logic/formatters/__init__.py +26 -0
- ciris_engine/logic/formatters/crisis_resources.py +80 -0
- ciris_engine/logic/formatters/escalation.py +21 -0
- ciris_engine/logic/formatters/identity.py +224 -0
- ciris_engine/logic/formatters/prompt_blocks.py +64 -0
- ciris_engine/logic/formatters/system_snapshot.py +193 -0
- ciris_engine/logic/formatters/user_profiles.py +108 -0
- ciris_engine/logic/handlers/__init__.py +1 -0
- ciris_engine/logic/handlers/control/__init__.py +1 -0
- ciris_engine/logic/handlers/control/defer_handler.py +195 -0
- ciris_engine/logic/handlers/control/ponder_handler.py +154 -0
- ciris_engine/logic/handlers/control/reject_handler.py +81 -0
- ciris_engine/logic/handlers/external/__init__.py +1 -0
- ciris_engine/logic/handlers/external/observe_handler.py +154 -0
- ciris_engine/logic/handlers/external/speak_handler.py +250 -0
- ciris_engine/logic/handlers/external/tool_handler.py +148 -0
- ciris_engine/logic/handlers/memory/__init__.py +1 -0
- ciris_engine/logic/handlers/memory/forget_handler.py +107 -0
- ciris_engine/logic/handlers/memory/memorize_handler.py +391 -0
- ciris_engine/logic/handlers/memory/recall_handler.py +213 -0
- ciris_engine/logic/handlers/terminal/__init__.py +1 -0
- ciris_engine/logic/handlers/terminal/task_complete_handler.py +299 -0
- ciris_engine/logic/infrastructure/__init__.py +1 -0
- ciris_engine/logic/infrastructure/handlers/__init__.py +8 -0
- ciris_engine/logic/infrastructure/handlers/action_dispatcher.py +382 -0
- ciris_engine/logic/infrastructure/handlers/base_handler.py +450 -0
- ciris_engine/logic/infrastructure/handlers/exceptions.py +2 -0
- ciris_engine/logic/infrastructure/handlers/handler_registry.py +59 -0
- ciris_engine/logic/infrastructure/handlers/helpers.py +55 -0
- ciris_engine/logic/infrastructure/step_streaming.py +149 -0
- ciris_engine/logic/infrastructure/sub_services/__init__.py +1 -0
- ciris_engine/logic/infrastructure/sub_services/identity_variance_monitor.py +1035 -0
- ciris_engine/logic/infrastructure/sub_services/pattern_analysis_loop.py +758 -0
- ciris_engine/logic/infrastructure/sub_services/wa_cli_bootstrap.py +229 -0
- ciris_engine/logic/infrastructure/sub_services/wa_cli_display.py +176 -0
- ciris_engine/logic/infrastructure/sub_services/wa_cli_oauth.py +404 -0
- ciris_engine/logic/infrastructure/sub_services/wa_cli_wizard.py +181 -0
- ciris_engine/logic/persistence/__init__.py +130 -0
- ciris_engine/logic/persistence/analytics.py +97 -0
- ciris_engine/logic/persistence/db/__init__.py +28 -0
- ciris_engine/logic/persistence/db/core.py +520 -0
- ciris_engine/logic/persistence/db/dialect.py +380 -0
- ciris_engine/logic/persistence/db/execution_helpers.py +216 -0
- ciris_engine/logic/persistence/db/migration_runner.py +191 -0
- ciris_engine/logic/persistence/db/operations.py +313 -0
- ciris_engine/logic/persistence/db/query_builder.py +232 -0
- ciris_engine/logic/persistence/db/retry.py +154 -0
- ciris_engine/logic/persistence/db/setup.py +18 -0
- ciris_engine/logic/persistence/migrations/postgres/001_initial_schema.sql +4 -0
- ciris_engine/logic/persistence/migrations/postgres/002_add_retry_status.sql +3 -0
- ciris_engine/logic/persistence/migrations/postgres/003_add_task_update_tracking.sql +8 -0
- ciris_engine/logic/persistence/migrations/postgres/004_add_occurrence_id.sql +54 -0
- ciris_engine/logic/persistence/migrations/postgres/005_add_consolidation_locks.sql +22 -0
- ciris_engine/logic/persistence/migrations/postgres/006_add_correlation_id_unique_index.sql +16 -0
- ciris_engine/logic/persistence/migrations/postgres/007_add_dsar_tickets.sql +39 -0
- ciris_engine/logic/persistence/migrations/postgres/008_rename_to_tickets_add_sop.sql +123 -0
- ciris_engine/logic/persistence/migrations/postgres/009_add_ticket_status_columns.sql +39 -0
- ciris_engine/logic/persistence/migrations/postgres/010_add_images_to_tasks.sql +5 -0
- ciris_engine/logic/persistence/migrations/sqlite/001_initial_schema.sql +357 -0
- ciris_engine/logic/persistence/migrations/sqlite/002_add_retry_status.sql +3 -0
- ciris_engine/logic/persistence/migrations/sqlite/003_add_task_update_tracking.sql +8 -0
- ciris_engine/logic/persistence/migrations/sqlite/004_add_occurrence_id.sql +45 -0
- ciris_engine/logic/persistence/migrations/sqlite/005_add_consolidation_locks.sql +22 -0
- ciris_engine/logic/persistence/migrations/sqlite/006_add_correlation_id_unique_index.sql +16 -0
- ciris_engine/logic/persistence/migrations/sqlite/007_add_dsar_tickets.sql +39 -0
- ciris_engine/logic/persistence/migrations/sqlite/008_rename_to_tickets_add_sop.sql +120 -0
- ciris_engine/logic/persistence/migrations/sqlite/009_add_ticket_status_columns.sql +129 -0
- ciris_engine/logic/persistence/migrations/sqlite/010_add_images_to_tasks.sql +17 -0
- ciris_engine/logic/persistence/models/__init__.py +141 -0
- ciris_engine/logic/persistence/models/correlations.py +881 -0
- ciris_engine/logic/persistence/models/deferral.py +68 -0
- ciris_engine/logic/persistence/models/dsar.py +286 -0
- ciris_engine/logic/persistence/models/graph.py +362 -0
- ciris_engine/logic/persistence/models/identity.py +264 -0
- ciris_engine/logic/persistence/models/queue_status.py +139 -0
- ciris_engine/logic/persistence/models/tasks.py +1043 -0
- ciris_engine/logic/persistence/models/thoughts.py +400 -0
- ciris_engine/logic/persistence/models/tickets.py +518 -0
- ciris_engine/logic/persistence/stores/__init__.py +13 -0
- ciris_engine/logic/persistence/stores/auth_helpers.py +117 -0
- ciris_engine/logic/persistence/stores/authentication_store.py +414 -0
- ciris_engine/logic/persistence/utils.py +212 -0
- ciris_engine/logic/processors/__init__.py +30 -0
- ciris_engine/logic/processors/core/__init__.py +1 -0
- ciris_engine/logic/processors/core/base_processor.py +280 -0
- ciris_engine/logic/processors/core/main_processor.py +1777 -0
- ciris_engine/logic/processors/core/step_decorators.py +1583 -0
- ciris_engine/logic/processors/core/thought_processor/__init__.py +20 -0
- ciris_engine/logic/processors/core/thought_processor/action_execution.py +49 -0
- ciris_engine/logic/processors/core/thought_processor/conscience_execution.py +382 -0
- ciris_engine/logic/processors/core/thought_processor/finalize_action.py +66 -0
- ciris_engine/logic/processors/core/thought_processor/gather_context.py +120 -0
- ciris_engine/logic/processors/core/thought_processor/main.py +920 -0
- ciris_engine/logic/processors/core/thought_processor/perform_aspdma.py +86 -0
- ciris_engine/logic/processors/core/thought_processor/perform_dmas.py +106 -0
- ciris_engine/logic/processors/core/thought_processor/recursive_processing.py +237 -0
- ciris_engine/logic/processors/core/thought_processor/round_complete.py +52 -0
- ciris_engine/logic/processors/core/thought_processor/start_round.py +64 -0
- ciris_engine/logic/processors/exceptions.py +59 -0
- ciris_engine/logic/processors/states/__init__.py +1 -0
- ciris_engine/logic/processors/states/dream_processor.py +1381 -0
- ciris_engine/logic/processors/states/play_processor.py +141 -0
- ciris_engine/logic/processors/states/shutdown_processor.py +623 -0
- ciris_engine/logic/processors/states/solitude_processor.py +305 -0
- ciris_engine/logic/processors/states/wakeup_processor.py +802 -0
- ciris_engine/logic/processors/states/work_processor.py +742 -0
- ciris_engine/logic/processors/support/__init__.py +1 -0
- ciris_engine/logic/processors/support/dma_orchestrator.py +336 -0
- ciris_engine/logic/processors/support/processing_queue.py +133 -0
- ciris_engine/logic/processors/support/shutdown_condition_evaluator.py +294 -0
- ciris_engine/logic/processors/support/state_manager.py +358 -0
- ciris_engine/logic/processors/support/task_manager.py +303 -0
- ciris_engine/logic/processors/support/thought_escalation.py +116 -0
- ciris_engine/logic/processors/support/thought_manager.py +328 -0
- ciris_engine/logic/processors/support/thought_manager_enhanced.py +105 -0
- ciris_engine/logic/registries/__init__.py +34 -0
- ciris_engine/logic/registries/base.py +653 -0
- ciris_engine/logic/registries/circuit_breaker.py +275 -0
- ciris_engine/logic/registries/typed_registries.py +184 -0
- ciris_engine/logic/runtime/__init__.py +7 -0
- ciris_engine/logic/runtime/adapter_loader.py +261 -0
- ciris_engine/logic/runtime/adapter_manager.py +1053 -0
- ciris_engine/logic/runtime/ciris_runtime.py +2342 -0
- ciris_engine/logic/runtime/ciris_runtime_helpers.py +923 -0
- ciris_engine/logic/runtime/component_builder.py +361 -0
- ciris_engine/logic/runtime/identity_manager.py +219 -0
- ciris_engine/logic/runtime/module_loader.py +207 -0
- ciris_engine/logic/runtime/prevent_sideeffects.py +30 -0
- ciris_engine/logic/runtime/runtime_interface.py +23 -0
- ciris_engine/logic/runtime/service_initializer.py +1623 -0
- ciris_engine/logic/secrets/__init__.py +30 -0
- ciris_engine/logic/secrets/encryption.py +175 -0
- ciris_engine/logic/secrets/filter.py +295 -0
- ciris_engine/logic/secrets/service.py +652 -0
- ciris_engine/logic/secrets/store.py +669 -0
- ciris_engine/logic/services/__init__.py +1 -0
- ciris_engine/logic/services/adaptation/__init__.py +3 -0
- ciris_engine/logic/services/base_graph_service.py +142 -0
- ciris_engine/logic/services/base_infrastructure_service.py +69 -0
- ciris_engine/logic/services/base_scheduled_service.py +136 -0
- ciris_engine/logic/services/base_service.py +247 -0
- ciris_engine/logic/services/governance/__init__.py +3 -0
- ciris_engine/logic/services/governance/adaptive_filter/__init__.py +14 -0
- ciris_engine/logic/services/governance/adaptive_filter/service.py +818 -0
- ciris_engine/logic/services/governance/consent/__init__.py +53 -0
- ciris_engine/logic/services/governance/consent/air.py +403 -0
- ciris_engine/logic/services/governance/consent/decay.py +324 -0
- ciris_engine/logic/services/governance/consent/dsar_automation.py +589 -0
- ciris_engine/logic/services/governance/consent/exceptions.py +106 -0
- ciris_engine/logic/services/governance/consent/metrics.py +270 -0
- ciris_engine/logic/services/governance/consent/partnership.py +533 -0
- ciris_engine/logic/services/governance/consent/service.py +1256 -0
- ciris_engine/logic/services/governance/dsar/__init__.py +29 -0
- ciris_engine/logic/services/governance/dsar/orchestrator.py +977 -0
- ciris_engine/logic/services/governance/dsar/schemas.py +141 -0
- ciris_engine/logic/services/governance/dsar/signature_service.py +283 -0
- ciris_engine/logic/services/governance/self_observation/__init__.py +20 -0
- ciris_engine/logic/services/governance/self_observation/service.py +1153 -0
- ciris_engine/logic/services/governance/visibility/__init__.py +17 -0
- ciris_engine/logic/services/governance/visibility/service.py +512 -0
- ciris_engine/logic/services/governance/wise_authority/__init__.py +15 -0
- ciris_engine/logic/services/governance/wise_authority/service.py +827 -0
- ciris_engine/logic/services/graph/__init__.py +5 -0
- ciris_engine/logic/services/graph/audit_service/__init__.py +5 -0
- ciris_engine/logic/services/graph/audit_service/service.py +1675 -0
- ciris_engine/logic/services/graph/base.py +208 -0
- ciris_engine/logic/services/graph/config_service/__init__.py +5 -0
- ciris_engine/logic/services/graph/config_service/service.py +372 -0
- ciris_engine/logic/services/graph/incident_service/__init__.py +5 -0
- ciris_engine/logic/services/graph/incident_service/service.py +803 -0
- ciris_engine/logic/services/graph/memory_service.py +1120 -0
- ciris_engine/logic/services/graph/telemetry_service/__init__.py +5 -0
- ciris_engine/logic/services/graph/telemetry_service/exceptions.py +104 -0
- ciris_engine/logic/services/graph/telemetry_service/helpers.py +1337 -0
- ciris_engine/logic/services/graph/telemetry_service/service.py +2429 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/__init__.py +17 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/aggregation_helpers.py +355 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/cleanup_helpers.py +438 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/compressor.py +260 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/consolidators/__init__.py +27 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/consolidators/audit.py +326 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/consolidators/conversation.py +291 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/consolidators/memory.py +197 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/consolidators/metrics.py +251 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/consolidators/task.py +257 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/consolidators/trace.py +363 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/data_converter.py +545 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/date_calculation_helpers.py +193 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/db_query_helpers.py +296 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/edge_helpers.py +92 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/edge_manager.py +896 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/extensive_helpers.py +322 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/period_manager.py +152 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/profound_helpers.py +277 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/query_manager.py +812 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/service.py +1692 -0
- ciris_engine/logic/services/graph/tsdb_consolidation/sql_builders.py +363 -0
- ciris_engine/logic/services/infrastructure/__init__.py +1 -0
- ciris_engine/logic/services/infrastructure/authentication/__init__.py +5 -0
- ciris_engine/logic/services/infrastructure/authentication/service.py +1634 -0
- ciris_engine/logic/services/infrastructure/database_maintenance/__init__.py +15 -0
- ciris_engine/logic/services/infrastructure/database_maintenance/service.py +764 -0
- ciris_engine/logic/services/infrastructure/resource_monitor/__init__.py +7 -0
- ciris_engine/logic/services/infrastructure/resource_monitor/ciris_billing_provider.py +755 -0
- ciris_engine/logic/services/infrastructure/resource_monitor/service.py +409 -0
- ciris_engine/logic/services/infrastructure/resource_monitor/simple_credit_provider.py +129 -0
- ciris_engine/logic/services/lifecycle/__init__.py +3 -0
- ciris_engine/logic/services/lifecycle/initialization/__init__.py +10 -0
- ciris_engine/logic/services/lifecycle/initialization/service.py +312 -0
- ciris_engine/logic/services/lifecycle/scheduler/__init__.py +5 -0
- ciris_engine/logic/services/lifecycle/scheduler/service.py +607 -0
- ciris_engine/logic/services/lifecycle/shutdown/__init__.py +9 -0
- ciris_engine/logic/services/lifecycle/shutdown/service.py +378 -0
- ciris_engine/logic/services/lifecycle/time/__init__.py +15 -0
- ciris_engine/logic/services/lifecycle/time/service.py +259 -0
- ciris_engine/logic/services/memory_service/__init__.py +8 -0
- ciris_engine/logic/services/mixins/__init__.py +13 -0
- ciris_engine/logic/services/mixins/example_usage.py +200 -0
- ciris_engine/logic/services/mixins/request_metrics.py +179 -0
- ciris_engine/logic/services/runtime/__init__.py +3 -0
- ciris_engine/logic/services/runtime/adapter_configuration/__init__.py +16 -0
- ciris_engine/logic/services/runtime/adapter_configuration/service.py +674 -0
- ciris_engine/logic/services/runtime/adapter_configuration/session.py +67 -0
- ciris_engine/logic/services/runtime/control_service/__init__.py +5 -0
- ciris_engine/logic/services/runtime/control_service/service.py +2269 -0
- ciris_engine/logic/services/runtime/llm_service/__init__.py +14 -0
- ciris_engine/logic/services/runtime/llm_service/pricing_calculator.py +279 -0
- ciris_engine/logic/services/runtime/llm_service/service.py +930 -0
- ciris_engine/logic/services/tools/__init__.py +5 -0
- ciris_engine/logic/services/tools/core_tool_service/__init__.py +8 -0
- ciris_engine/logic/services/tools/core_tool_service/service.py +852 -0
- ciris_engine/logic/setup/__init__.py +1 -0
- ciris_engine/logic/setup/first_run.py +250 -0
- ciris_engine/logic/setup/wizard.py +327 -0
- ciris_engine/logic/telemetry/__init__.py +46 -0
- ciris_engine/logic/telemetry/core.py +239 -0
- ciris_engine/logic/telemetry/hot_cold_config.py +133 -0
- ciris_engine/logic/telemetry/log_collector.py +190 -0
- ciris_engine/logic/telemetry/resource_monitor.py +7 -0
- ciris_engine/logic/telemetry/security.py +79 -0
- ciris_engine/logic/utils/__init__.py +18 -0
- ciris_engine/logic/utils/channel_utils.py +75 -0
- ciris_engine/logic/utils/consent/__init__.py +1 -0
- ciris_engine/logic/utils/consent/partnership_utils.py +172 -0
- ciris_engine/logic/utils/constants.py +92 -0
- ciris_engine/logic/utils/context_utils.py +145 -0
- ciris_engine/logic/utils/directory_setup.py +533 -0
- ciris_engine/logic/utils/graphql_context_provider.py +152 -0
- ciris_engine/logic/utils/identity_resolution.py +843 -0
- ciris_engine/logic/utils/incident_capture_handler.py +303 -0
- ciris_engine/logic/utils/initialization_manager.py +74 -0
- ciris_engine/logic/utils/jsondict_helpers.py +290 -0
- ciris_engine/logic/utils/log_sanitizer.py +97 -0
- ciris_engine/logic/utils/logging_config.py +151 -0
- ciris_engine/logic/utils/observability_decorators.py +544 -0
- ciris_engine/logic/utils/occurrence_utils.py +155 -0
- ciris_engine/logic/utils/path_resolution.py +281 -0
- ciris_engine/logic/utils/platform_detection.py +286 -0
- ciris_engine/logic/utils/privacy.py +266 -0
- ciris_engine/logic/utils/profile_loader.py +124 -0
- ciris_engine/logic/utils/profile_manager.py +16 -0
- ciris_engine/logic/utils/runtime_utils.py +69 -0
- ciris_engine/logic/utils/shutdown_manager.py +107 -0
- ciris_engine/logic/utils/task_formatters.py +60 -0
- ciris_engine/logic/utils/task_thought_factory.py +404 -0
- ciris_engine/logic/utils/thought_utils.py +54 -0
- ciris_engine/logic/utils/user_utils.py +70 -0
- ciris_engine/protocols/__init__.py +0 -0
- ciris_engine/protocols/adapters/__init__.py +35 -0
- ciris_engine/protocols/adapters/base.py +149 -0
- ciris_engine/protocols/adapters/configurable.py +265 -0
- ciris_engine/protocols/adapters/message.py +90 -0
- ciris_engine/protocols/audit/__init__.py +1 -0
- ciris_engine/protocols/buses/__init__.py +1 -0
- ciris_engine/protocols/config/__init__.py +1 -0
- ciris_engine/protocols/conscience/__init__.py +1 -0
- ciris_engine/protocols/consent.py +88 -0
- ciris_engine/protocols/context/__init__.py +1 -0
- ciris_engine/protocols/data/__init__.py +1 -0
- ciris_engine/protocols/dma/__init__.py +1 -0
- ciris_engine/protocols/dma/base.py +107 -0
- ciris_engine/protocols/faculties.py +34 -0
- ciris_engine/protocols/formatters/__init__.py +1 -0
- ciris_engine/protocols/handlers/__init__.py +1 -0
- ciris_engine/protocols/infrastructure/__init__.py +25 -0
- ciris_engine/protocols/infrastructure/base.py +377 -0
- ciris_engine/protocols/persistence/__init__.py +1 -0
- ciris_engine/protocols/pipeline_control.py +609 -0
- ciris_engine/protocols/processors/__init__.py +19 -0
- ciris_engine/protocols/processors/agent.py +299 -0
- ciris_engine/protocols/processors/base.py +130 -0
- ciris_engine/protocols/processors/orchestration.py +62 -0
- ciris_engine/protocols/registries/__init__.py +1 -0
- ciris_engine/protocols/runtime/__init__.py +1 -0
- ciris_engine/protocols/runtime/base.py +163 -0
- ciris_engine/protocols/secrets/__init__.py +1 -0
- ciris_engine/protocols/services/__init__.py +80 -0
- ciris_engine/protocols/services/adaptation/__init__.py +7 -0
- ciris_engine/protocols/services/adaptation/self_observation.py +265 -0
- ciris_engine/protocols/services/governance/__init__.py +20 -0
- ciris_engine/protocols/services/governance/communication.py +58 -0
- ciris_engine/protocols/services/governance/filter.py +56 -0
- ciris_engine/protocols/services/governance/visibility.py +32 -0
- ciris_engine/protocols/services/governance/wa_auth.py +192 -0
- ciris_engine/protocols/services/governance/wise_authority.py +75 -0
- ciris_engine/protocols/services/graph/__init__.py +19 -0
- ciris_engine/protocols/services/graph/audit.py +92 -0
- ciris_engine/protocols/services/graph/config.py +54 -0
- ciris_engine/protocols/services/graph/incident_management.py +103 -0
- ciris_engine/protocols/services/graph/memory.py +110 -0
- ciris_engine/protocols/services/graph/telemetry.py +51 -0
- ciris_engine/protocols/services/graph/tsdb_consolidation.py +87 -0
- ciris_engine/protocols/services/infrastructure/__init__.py +11 -0
- ciris_engine/protocols/services/infrastructure/authentication.py +159 -0
- ciris_engine/protocols/services/infrastructure/credit_gate.py +46 -0
- ciris_engine/protocols/services/infrastructure/database_maintenance.py +25 -0
- ciris_engine/protocols/services/infrastructure/resource_monitor.py +83 -0
- ciris_engine/protocols/services/lifecycle/__init__.py +13 -0
- ciris_engine/protocols/services/lifecycle/initialization.py +41 -0
- ciris_engine/protocols/services/lifecycle/scheduler.py +42 -0
- ciris_engine/protocols/services/lifecycle/shutdown.py +50 -0
- ciris_engine/protocols/services/lifecycle/time.py +31 -0
- ciris_engine/protocols/services/runtime/__init__.py +13 -0
- ciris_engine/protocols/services/runtime/llm.py +50 -0
- ciris_engine/protocols/services/runtime/runtime_control.py +193 -0
- ciris_engine/protocols/services/runtime/secrets.py +100 -0
- ciris_engine/protocols/services/runtime/tool.py +123 -0
- ciris_engine/protocols/telemetry/__init__.py +1 -0
- ciris_engine/protocols/utils/__init__.py +1 -0
- ciris_engine/schemas/__init__.py +112 -0
- ciris_engine/schemas/actions/__init__.py +37 -0
- ciris_engine/schemas/actions/parameters.py +137 -0
- ciris_engine/schemas/adapters/__init__.py +13 -0
- ciris_engine/schemas/adapters/cirisnode.py +135 -0
- ciris_engine/schemas/adapters/cli.py +97 -0
- ciris_engine/schemas/adapters/cli_tools.py +98 -0
- ciris_engine/schemas/adapters/discord.py +125 -0
- ciris_engine/schemas/adapters/graphql_core.py +144 -0
- ciris_engine/schemas/adapters/registration.py +47 -0
- ciris_engine/schemas/adapters/runtime_context.py +48 -0
- ciris_engine/schemas/adapters/tool_execution.py +45 -0
- ciris_engine/schemas/adapters/tools.py +96 -0
- ciris_engine/schemas/api/__init__.py +1 -0
- ciris_engine/schemas/api/agent.py +50 -0
- ciris_engine/schemas/api/audit.py +38 -0
- ciris_engine/schemas/api/auth.py +351 -0
- ciris_engine/schemas/api/config_security.py +242 -0
- ciris_engine/schemas/api/emergency.py +111 -0
- ciris_engine/schemas/api/responses.py +72 -0
- ciris_engine/schemas/api/runtime.py +26 -0
- ciris_engine/schemas/api/telemetry.py +109 -0
- ciris_engine/schemas/api/wa.py +90 -0
- ciris_engine/schemas/audit/__init__.py +13 -0
- ciris_engine/schemas/audit/core.py +139 -0
- ciris_engine/schemas/audit/hash_chain.py +58 -0
- ciris_engine/schemas/audit/verification.py +131 -0
- ciris_engine/schemas/buses/__init__.py +1 -0
- ciris_engine/schemas/config/__init__.py +41 -0
- ciris_engine/schemas/config/agent.py +279 -0
- ciris_engine/schemas/config/cognitive_state_behaviors.py +194 -0
- ciris_engine/schemas/config/default_dsar_sops.py +178 -0
- ciris_engine/schemas/config/essential.py +195 -0
- ciris_engine/schemas/config/tickets.py +86 -0
- ciris_engine/schemas/conscience/__init__.py +25 -0
- ciris_engine/schemas/conscience/context.py +34 -0
- ciris_engine/schemas/conscience/core.py +145 -0
- ciris_engine/schemas/conscience/results.py +24 -0
- ciris_engine/schemas/consent/__init__.py +5 -0
- ciris_engine/schemas/consent/core.py +404 -0
- ciris_engine/schemas/context/__init__.py +1 -0
- ciris_engine/schemas/covenant.py +382 -0
- ciris_engine/schemas/data/__init__.py +1 -0
- ciris_engine/schemas/dma/__init__.py +16 -0
- ciris_engine/schemas/dma/core.py +199 -0
- ciris_engine/schemas/dma/faculty.py +192 -0
- ciris_engine/schemas/dma/prompts.py +172 -0
- ciris_engine/schemas/dma/results.py +103 -0
- ciris_engine/schemas/formatters/__init__.py +1 -0
- ciris_engine/schemas/handlers/__init__.py +10 -0
- ciris_engine/schemas/handlers/context.py +119 -0
- ciris_engine/schemas/handlers/contexts.py +100 -0
- ciris_engine/schemas/handlers/core.py +167 -0
- ciris_engine/schemas/handlers/memory_schemas.py +67 -0
- ciris_engine/schemas/handlers/schemas.py +95 -0
- ciris_engine/schemas/identity.py +149 -0
- ciris_engine/schemas/infrastructure/__init__.py +1 -0
- ciris_engine/schemas/infrastructure/base.py +256 -0
- ciris_engine/schemas/infrastructure/behavioral_patterns.py +129 -0
- ciris_engine/schemas/infrastructure/feedback_loop.py +57 -0
- ciris_engine/schemas/infrastructure/identity_variance.py +141 -0
- ciris_engine/schemas/infrastructure/oauth.py +175 -0
- ciris_engine/schemas/infrastructure/wa_cli_wizard.py +54 -0
- ciris_engine/schemas/persistence/__init__.py +34 -0
- ciris_engine/schemas/persistence/core.py +140 -0
- ciris_engine/schemas/persistence/correlations.py +73 -0
- ciris_engine/schemas/persistence/postgres/__init__.py +1 -0
- ciris_engine/schemas/persistence/postgres/tables.py +280 -0
- ciris_engine/schemas/persistence/sqlite/__init__.py +1 -0
- ciris_engine/schemas/persistence/sqlite/tables.py +281 -0
- ciris_engine/schemas/platform.py +149 -0
- ciris_engine/schemas/processors/__init__.py +26 -0
- ciris_engine/schemas/processors/base.py +130 -0
- ciris_engine/schemas/processors/cognitive.py +77 -0
- ciris_engine/schemas/processors/context.py +35 -0
- ciris_engine/schemas/processors/core.py +152 -0
- ciris_engine/schemas/processors/dma.py +105 -0
- ciris_engine/schemas/processors/error.py +122 -0
- ciris_engine/schemas/processors/main.py +109 -0
- ciris_engine/schemas/processors/phase_results.py +21 -0
- ciris_engine/schemas/processors/results.py +99 -0
- ciris_engine/schemas/processors/solitude.py +79 -0
- ciris_engine/schemas/processors/state.py +202 -0
- ciris_engine/schemas/processors/state_example.py +177 -0
- ciris_engine/schemas/processors/states.py +21 -0
- ciris_engine/schemas/processors/status.py +34 -0
- ciris_engine/schemas/registries/__init__.py +1 -0
- ciris_engine/schemas/registries/base.py +66 -0
- ciris_engine/schemas/resources/__init__.py +15 -0
- ciris_engine/schemas/resources/crisis.py +315 -0
- ciris_engine/schemas/runtime/__init__.py +42 -0
- ciris_engine/schemas/runtime/adapter_management.py +186 -0
- ciris_engine/schemas/runtime/api.py +58 -0
- ciris_engine/schemas/runtime/audit.py +50 -0
- ciris_engine/schemas/runtime/bootstrap.py +33 -0
- ciris_engine/schemas/runtime/contexts.py +61 -0
- ciris_engine/schemas/runtime/core.py +161 -0
- ciris_engine/schemas/runtime/enums.py +167 -0
- ciris_engine/schemas/runtime/extended.py +232 -0
- ciris_engine/schemas/runtime/manifest.py +311 -0
- ciris_engine/schemas/runtime/memory.py +60 -0
- ciris_engine/schemas/runtime/messages.py +108 -0
- ciris_engine/schemas/runtime/models.py +156 -0
- ciris_engine/schemas/runtime/processing_context.py +43 -0
- ciris_engine/schemas/runtime/protocols_core.py +96 -0
- ciris_engine/schemas/runtime/resources.py +33 -0
- ciris_engine/schemas/runtime/system_context.py +417 -0
- ciris_engine/schemas/secrets/__init__.py +1 -0
- ciris_engine/schemas/secrets/core.py +267 -0
- ciris_engine/schemas/secrets/service.py +95 -0
- ciris_engine/schemas/services/__init__.py +33 -0
- ciris_engine/schemas/services/audit_summary_node.py +172 -0
- ciris_engine/schemas/services/authority/__init__.py +39 -0
- ciris_engine/schemas/services/authority/jwt.py +158 -0
- ciris_engine/schemas/services/authority/wa_updates.py +138 -0
- ciris_engine/schemas/services/authority/wise_authority.py +163 -0
- ciris_engine/schemas/services/authority_core.py +370 -0
- ciris_engine/schemas/services/capabilities.py +72 -0
- ciris_engine/schemas/services/community_core.py +95 -0
- ciris_engine/schemas/services/context.py +111 -0
- ciris_engine/schemas/services/conversation_summary_node.py +189 -0
- ciris_engine/schemas/services/core/__init__.py +153 -0
- ciris_engine/schemas/services/core/runtime.py +262 -0
- ciris_engine/schemas/services/core/runtime_config.py +117 -0
- ciris_engine/schemas/services/core/secrets.py +65 -0
- ciris_engine/schemas/services/correlation_node.py +179 -0
- ciris_engine/schemas/services/credit_gate.py +92 -0
- ciris_engine/schemas/services/discord_nodes.py +299 -0
- ciris_engine/schemas/services/feedback_core.py +131 -0
- ciris_engine/schemas/services/filters_core.py +270 -0
- ciris_engine/schemas/services/governance.py +26 -0
- ciris_engine/schemas/services/graph/__init__.py +26 -0
- ciris_engine/schemas/services/graph/attributes.py +254 -0
- ciris_engine/schemas/services/graph/audit.py +98 -0
- ciris_engine/schemas/services/graph/consolidation.py +338 -0
- ciris_engine/schemas/services/graph/edge_types.py +43 -0
- ciris_engine/schemas/services/graph/edges.py +88 -0
- ciris_engine/schemas/services/graph/incident.py +312 -0
- ciris_engine/schemas/services/graph/memory.py +84 -0
- ciris_engine/schemas/services/graph/node_data.py +174 -0
- ciris_engine/schemas/services/graph/query_results.py +82 -0
- ciris_engine/schemas/services/graph/telemetry.py +250 -0
- ciris_engine/schemas/services/graph/tsdb_consolidation.py +27 -0
- ciris_engine/schemas/services/graph/tsdb_models.py +107 -0
- ciris_engine/schemas/services/graph_core.py +196 -0
- ciris_engine/schemas/services/graph_typed_nodes.py +194 -0
- ciris_engine/schemas/services/infrastructure/__init__.py +1 -0
- ciris_engine/schemas/services/infrastructure/resource_monitor.py +20 -0
- ciris_engine/schemas/services/lifecycle/__init__.py +9 -0
- ciris_engine/schemas/services/lifecycle/initialization.py +33 -0
- ciris_engine/schemas/services/lifecycle/time.py +50 -0
- ciris_engine/schemas/services/llm.py +187 -0
- ciris_engine/schemas/services/metadata.py +43 -0
- ciris_engine/schemas/services/nodes.py +704 -0
- ciris_engine/schemas/services/operations.py +126 -0
- ciris_engine/schemas/services/requests.py +128 -0
- ciris_engine/schemas/services/resources_core.py +182 -0
- ciris_engine/schemas/services/runtime_control.py +1010 -0
- ciris_engine/schemas/services/shutdown.py +88 -0
- ciris_engine/schemas/services/special/__init__.py +0 -0
- ciris_engine/schemas/services/special/self_observation.py +396 -0
- ciris_engine/schemas/services/trace_summary_node.py +199 -0
- ciris_engine/schemas/services/visibility.py +98 -0
- ciris_engine/schemas/streaming/__init__.py +10 -0
- ciris_engine/schemas/streaming/reasoning_stream.py +95 -0
- ciris_engine/schemas/telemetry/__init__.py +0 -0
- ciris_engine/schemas/telemetry/collector.py +67 -0
- ciris_engine/schemas/telemetry/core.py +252 -0
- ciris_engine/schemas/telemetry/unified.py +59 -0
- ciris_engine/schemas/tools.py +72 -0
- ciris_engine/schemas/types.py +47 -0
- ciris_engine/schemas/utils/__init__.py +1 -0
- ciris_engine/schemas/utils/config_validator.py +54 -0
- ciris_engine/utils/__init__.py +1 -0
- ciris_engine/utils/serialization.py +35 -0
- ciris_sdk/__init__.py +124 -0
- ciris_sdk/auth_store.py +261 -0
- ciris_sdk/client.py +261 -0
- ciris_sdk/exceptions.py +73 -0
- ciris_sdk/model_types.py +258 -0
- ciris_sdk/models.py +354 -0
- ciris_sdk/pagination.py +214 -0
- ciris_sdk/rate_limiter.py +188 -0
- ciris_sdk/setup.py +17 -0
- ciris_sdk/telemetry_models.py +257 -0
- ciris_sdk/telemetry_responses.py +199 -0
- ciris_sdk/transport.py +177 -0
- ciris_sdk/websocket.py +400 -0
- main.py +766 -0
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pipeline control protocol for single-stepping through the processing pipeline.
|
|
3
|
+
|
|
4
|
+
This protocol defines how step points are injected and controlled throughout
|
|
5
|
+
the thought processing pipeline.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import asyncio
|
|
11
|
+
|
|
12
|
+
# StepData is just a JSONDict - define as type alias
|
|
13
|
+
from typing import Any, Dict, List, Optional, Protocol
|
|
14
|
+
|
|
15
|
+
from pydantic import BaseModel, Field
|
|
16
|
+
|
|
17
|
+
from ciris_engine.schemas.services.runtime_control import PipelineState, StepPoint, StepResultUnion, ThoughtInPipeline
|
|
18
|
+
from ciris_engine.schemas.types import SerializedModel
|
|
19
|
+
|
|
20
|
+
StepData = Dict[str, Any]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# Pydantic models for pipeline control results
|
|
24
|
+
class SingleStepResult(BaseModel):
|
|
25
|
+
"""Result from executing a single step in the pipeline."""
|
|
26
|
+
|
|
27
|
+
success: bool = Field(..., description="Whether the step succeeded")
|
|
28
|
+
step_point: str = Field(..., description="Step point identifier")
|
|
29
|
+
message: str = Field(..., description="Result message")
|
|
30
|
+
thoughts_advanced: int = Field(default=0, description="Number of thoughts advanced")
|
|
31
|
+
thought_id: Optional[str] = Field(None, description="Thought ID if applicable")
|
|
32
|
+
step_results: List[SerializedModel] = Field(default_factory=list, description="Step-specific result summaries")
|
|
33
|
+
processing_time_ms: float = Field(..., description="Processing time in milliseconds")
|
|
34
|
+
pipeline_state: SerializedModel = Field(default_factory=dict, description="Current pipeline state (serialized)")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class ThoughtProcessingResult(BaseModel):
|
|
38
|
+
"""Result from processing a thought through a pipeline step."""
|
|
39
|
+
|
|
40
|
+
thought_id: str = Field(..., description="Unique thought ID")
|
|
41
|
+
round_id: int = Field(..., description="Round number")
|
|
42
|
+
task_id: str = Field(..., description="Source task ID")
|
|
43
|
+
step_point: str = Field(..., description="Step point identifier")
|
|
44
|
+
success: bool = Field(..., description="Whether processing succeeded")
|
|
45
|
+
step_data: StepData = Field(default_factory=dict, description="Step-specific data")
|
|
46
|
+
processing_time_ms: float = Field(..., description="Processing time in milliseconds")
|
|
47
|
+
timestamp: float = Field(..., description="Unix timestamp")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# Alias for backwards compatibility
|
|
51
|
+
StepResult = StepResultUnion
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class PipelineControlProtocol(Protocol):
|
|
55
|
+
"""Protocol for controlling pipeline execution and step points."""
|
|
56
|
+
|
|
57
|
+
async def should_pause_at(self, step_point: StepPoint, thought_id: str) -> bool:
|
|
58
|
+
"""Check if we should pause at this step point."""
|
|
59
|
+
...
|
|
60
|
+
|
|
61
|
+
async def pause_at_step_point(
|
|
62
|
+
self, step_point: StepPoint, thought_id: str, step_data: SingleStepResult
|
|
63
|
+
) -> StepResult:
|
|
64
|
+
"""
|
|
65
|
+
Pause execution at a step point and wait for release.
|
|
66
|
+
|
|
67
|
+
Args:
|
|
68
|
+
step_point: The step point where we're pausing
|
|
69
|
+
thought_id: The thought being processed
|
|
70
|
+
step_data: Data to include in the step result
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
StepResult for this step point
|
|
74
|
+
"""
|
|
75
|
+
...
|
|
76
|
+
|
|
77
|
+
async def wait_for_resume(self, thought_id: str) -> None:
|
|
78
|
+
"""Wait until this thought is allowed to continue."""
|
|
79
|
+
...
|
|
80
|
+
|
|
81
|
+
def should_abort(self, thought_id: str) -> bool:
|
|
82
|
+
"""Check if this thought should be aborted."""
|
|
83
|
+
...
|
|
84
|
+
|
|
85
|
+
def get_pipeline_state(self) -> PipelineState:
|
|
86
|
+
"""Get current pipeline state."""
|
|
87
|
+
...
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class PipelineController:
|
|
91
|
+
"""
|
|
92
|
+
Concrete implementation of pipeline control for single-stepping.
|
|
93
|
+
|
|
94
|
+
This is injected into processors when single-stepping is enabled.
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
def __init__(self, is_paused: bool = False, main_processor: Any = None) -> None:
|
|
98
|
+
self.is_paused = is_paused
|
|
99
|
+
self.pipeline_state = PipelineState()
|
|
100
|
+
self.main_processor = main_processor
|
|
101
|
+
|
|
102
|
+
# Thoughts paused at step points
|
|
103
|
+
self._paused_thoughts: Dict[str, ThoughtInPipeline] = {}
|
|
104
|
+
|
|
105
|
+
# Control events for each thought
|
|
106
|
+
self._resume_events: Dict[str, asyncio.Event] = {}
|
|
107
|
+
self._abort_flags: Dict[str, bool] = {}
|
|
108
|
+
|
|
109
|
+
# Step point control - ONLY 9 real H3ERE pipeline steps
|
|
110
|
+
self._enabled_step_points = {
|
|
111
|
+
StepPoint.GATHER_CONTEXT,
|
|
112
|
+
StepPoint.PERFORM_DMAS,
|
|
113
|
+
StepPoint.PERFORM_ASPDMA,
|
|
114
|
+
StepPoint.CONSCIENCE_EXECUTION,
|
|
115
|
+
StepPoint.RECURSIVE_ASPDMA,
|
|
116
|
+
StepPoint.RECURSIVE_CONSCIENCE,
|
|
117
|
+
StepPoint.FINALIZE_ACTION,
|
|
118
|
+
StepPoint.PERFORM_ACTION,
|
|
119
|
+
StepPoint.ACTION_COMPLETE,
|
|
120
|
+
}
|
|
121
|
+
self._single_step_mode = False
|
|
122
|
+
|
|
123
|
+
async def should_pause_at(self, step_point: StepPoint, thought_id: str) -> bool:
|
|
124
|
+
"""Check if we should pause at this step point."""
|
|
125
|
+
if not self.is_paused:
|
|
126
|
+
return False
|
|
127
|
+
|
|
128
|
+
if step_point not in self._enabled_step_points:
|
|
129
|
+
return False
|
|
130
|
+
|
|
131
|
+
# In single-step mode, pause at every enabled step point
|
|
132
|
+
if self._single_step_mode:
|
|
133
|
+
return True
|
|
134
|
+
|
|
135
|
+
# Otherwise only pause at specific configured points
|
|
136
|
+
return step_point in [StepPoint.START_ROUND, StepPoint.FINALIZE_ACTION]
|
|
137
|
+
|
|
138
|
+
async def pause_at_step_point(
|
|
139
|
+
self, step_point: StepPoint, thought_id: str, step_data: SingleStepResult
|
|
140
|
+
) -> StepResult:
|
|
141
|
+
"""Pause execution at a step point."""
|
|
142
|
+
# Create or update thought in pipeline
|
|
143
|
+
if thought_id not in self._paused_thoughts:
|
|
144
|
+
from datetime import datetime
|
|
145
|
+
|
|
146
|
+
step_data_dict = step_data.model_dump() if hasattr(step_data, "model_dump") else {}
|
|
147
|
+
timestamp = step_data_dict.get("timestamp")
|
|
148
|
+
thought = ThoughtInPipeline(
|
|
149
|
+
thought_id=thought_id,
|
|
150
|
+
task_id=str(step_data_dict.get("task_id", "")),
|
|
151
|
+
thought_type=str(step_data_dict.get("thought_type", "")),
|
|
152
|
+
current_step=step_point,
|
|
153
|
+
entered_step_at=timestamp if isinstance(timestamp, datetime) else datetime.now(),
|
|
154
|
+
)
|
|
155
|
+
self._paused_thoughts[thought_id] = thought
|
|
156
|
+
else:
|
|
157
|
+
thought = self._paused_thoughts[thought_id]
|
|
158
|
+
step_data_dict = step_data.model_dump() if hasattr(step_data, "model_dump") else {}
|
|
159
|
+
thought.current_step = step_point
|
|
160
|
+
from datetime import datetime
|
|
161
|
+
|
|
162
|
+
timestamp = step_data_dict.get("timestamp")
|
|
163
|
+
thought.entered_step_at = timestamp if isinstance(timestamp, datetime) else datetime.now()
|
|
164
|
+
|
|
165
|
+
# Update thought with step-specific data
|
|
166
|
+
step_data_dict = step_data.model_dump() if hasattr(step_data, "model_dump") else {}
|
|
167
|
+
self._update_thought_data(thought, step_point, step_data_dict)
|
|
168
|
+
|
|
169
|
+
# Move thought to this step in pipeline state
|
|
170
|
+
self.pipeline_state.move_thought(thought_id, thought.current_step, step_point)
|
|
171
|
+
|
|
172
|
+
# Create step result based on step point
|
|
173
|
+
step_result = self._create_step_result(step_point, step_data_dict)
|
|
174
|
+
|
|
175
|
+
# Create resume event if needed
|
|
176
|
+
if thought_id not in self._resume_events:
|
|
177
|
+
self._resume_events[thought_id] = asyncio.Event()
|
|
178
|
+
|
|
179
|
+
# Wait for resume signal
|
|
180
|
+
await self.wait_for_resume(thought_id)
|
|
181
|
+
|
|
182
|
+
return step_result
|
|
183
|
+
|
|
184
|
+
async def wait_for_resume(self, thought_id: str) -> None:
|
|
185
|
+
"""Wait until this thought is allowed to continue."""
|
|
186
|
+
if thought_id in self._resume_events:
|
|
187
|
+
await self._resume_events[thought_id].wait()
|
|
188
|
+
# Clear the event for next pause
|
|
189
|
+
self._resume_events[thought_id].clear()
|
|
190
|
+
|
|
191
|
+
def resume_thought(self, thought_id: str) -> None:
|
|
192
|
+
"""Resume a specific thought."""
|
|
193
|
+
if thought_id in self._resume_events:
|
|
194
|
+
self._resume_events[thought_id].set()
|
|
195
|
+
|
|
196
|
+
def resume_all(self) -> None:
|
|
197
|
+
"""Resume all paused thoughts."""
|
|
198
|
+
for event in self._resume_events.values():
|
|
199
|
+
event.set()
|
|
200
|
+
|
|
201
|
+
def abort_thought(self, thought_id: str) -> None:
|
|
202
|
+
"""Mark a thought for abortion."""
|
|
203
|
+
self._abort_flags[thought_id] = True
|
|
204
|
+
# Also resume it so it can check the abort flag
|
|
205
|
+
self.resume_thought(thought_id)
|
|
206
|
+
|
|
207
|
+
def should_abort(self, thought_id: str) -> bool:
|
|
208
|
+
"""Check if this thought should be aborted."""
|
|
209
|
+
return self._abort_flags.get(thought_id, False)
|
|
210
|
+
|
|
211
|
+
def get_pipeline_state(self) -> PipelineState:
|
|
212
|
+
"""Get current pipeline state."""
|
|
213
|
+
return self.pipeline_state
|
|
214
|
+
|
|
215
|
+
def drain_pipeline_step(self) -> Optional[str]:
|
|
216
|
+
"""
|
|
217
|
+
Get the next thought to process when draining the pipeline.
|
|
218
|
+
|
|
219
|
+
Returns thoughts from later steps first to ensure orderly completion.
|
|
220
|
+
"""
|
|
221
|
+
# Process steps in reverse order (closest to completion first)
|
|
222
|
+
for step in reversed(list(StepPoint)):
|
|
223
|
+
thoughts_at_step = self.pipeline_state.get_thoughts_at_step(step)
|
|
224
|
+
if thoughts_at_step:
|
|
225
|
+
# Return the first thought at this step
|
|
226
|
+
return thoughts_at_step[0].thought_id
|
|
227
|
+
|
|
228
|
+
return None
|
|
229
|
+
|
|
230
|
+
def _update_thought_data(
|
|
231
|
+
self, thought: ThoughtInPipeline, step_point: StepPoint, step_data: Optional[StepData]
|
|
232
|
+
) -> None:
|
|
233
|
+
"""Update thought with step-specific data."""
|
|
234
|
+
if step_data is None:
|
|
235
|
+
return
|
|
236
|
+
|
|
237
|
+
if step_point == StepPoint.GATHER_CONTEXT:
|
|
238
|
+
thought.context_built = step_data.get("context")
|
|
239
|
+
elif step_point == StepPoint.PERFORM_DMAS:
|
|
240
|
+
# Note: dma_results doesn't exist on ThoughtInPipeline - skip or use alternative
|
|
241
|
+
pass
|
|
242
|
+
elif step_point == StepPoint.PERFORM_ASPDMA:
|
|
243
|
+
thought.aspdma_result = step_data.get("aspdma_result")
|
|
244
|
+
elif step_point == StepPoint.CONSCIENCE_EXECUTION:
|
|
245
|
+
thought.conscience_results = step_data.get("conscience_results")
|
|
246
|
+
elif step_point == StepPoint.FINALIZE_ACTION:
|
|
247
|
+
thought.selected_action = step_data.get("selected_action")
|
|
248
|
+
elif step_point == StepPoint.ROUND_COMPLETE:
|
|
249
|
+
thought.handler_result = step_data.get("handler_result")
|
|
250
|
+
thought.bus_operations = step_data.get("bus_operations")
|
|
251
|
+
|
|
252
|
+
def _create_step_result(self, step_point: StepPoint, step_data: Optional[StepData]) -> StepResultUnion:
|
|
253
|
+
"""Create StepResult using EXACT data from running H3ERE pipeline."""
|
|
254
|
+
if step_data is None:
|
|
255
|
+
step_data = {}
|
|
256
|
+
|
|
257
|
+
# Import only the 9 real H3ERE step result schemas
|
|
258
|
+
from ciris_engine.schemas.services.runtime_control import (
|
|
259
|
+
StepResultActionComplete,
|
|
260
|
+
StepResultConscienceExecution,
|
|
261
|
+
StepResultFinalizeAction,
|
|
262
|
+
StepResultGatherContext,
|
|
263
|
+
StepResultPerformAction,
|
|
264
|
+
StepResultPerformASPDMA,
|
|
265
|
+
StepResultPerformDMAs,
|
|
266
|
+
StepResultRecursiveASPDMA,
|
|
267
|
+
StepResultRecursiveConscience,
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
# Use EXACT SUT data - no fake data, no simulation!
|
|
271
|
+
# FAIL FAST AND LOUD if step_point is not one of our 9 real H3ERE steps
|
|
272
|
+
if step_point == StepPoint.GATHER_CONTEXT:
|
|
273
|
+
return StepResultGatherContext(success=True, **step_data) # Use EXACT data from SUT
|
|
274
|
+
elif step_point == StepPoint.PERFORM_DMAS:
|
|
275
|
+
return StepResultPerformDMAs(success=True, **step_data) # Use EXACT data from SUT
|
|
276
|
+
elif step_point == StepPoint.PERFORM_ASPDMA:
|
|
277
|
+
return StepResultPerformASPDMA(success=True, **step_data) # Use EXACT data from SUT
|
|
278
|
+
elif step_point == StepPoint.CONSCIENCE_EXECUTION:
|
|
279
|
+
return StepResultConscienceExecution(success=True, **step_data) # Use EXACT data from SUT
|
|
280
|
+
elif step_point == StepPoint.RECURSIVE_ASPDMA:
|
|
281
|
+
return StepResultRecursiveASPDMA(success=True, **step_data) # Use EXACT data from SUT
|
|
282
|
+
elif step_point == StepPoint.RECURSIVE_CONSCIENCE:
|
|
283
|
+
return StepResultRecursiveConscience(success=True, **step_data) # Use EXACT data from SUT
|
|
284
|
+
elif step_point == StepPoint.FINALIZE_ACTION:
|
|
285
|
+
return StepResultFinalizeAction(success=True, **step_data) # Use EXACT data from SUT
|
|
286
|
+
elif step_point == StepPoint.PERFORM_ACTION:
|
|
287
|
+
return StepResultPerformAction(success=True, **step_data) # Use EXACT data from SUT
|
|
288
|
+
elif step_point == StepPoint.ACTION_COMPLETE:
|
|
289
|
+
return StepResultActionComplete(success=True, **step_data) # Use EXACT data from SUT
|
|
290
|
+
|
|
291
|
+
# FAIL FAST AND LOUD - only 9 real H3ERE steps allowed!
|
|
292
|
+
raise ValueError(f"Invalid step point: {step_point}. Only 9 real H3ERE pipeline steps are supported!")
|
|
293
|
+
|
|
294
|
+
def _get_pipeline_state_dict(self) -> SerializedModel:
|
|
295
|
+
"""Get pipeline state as dictionary with fallback."""
|
|
296
|
+
pipeline_state = self.get_pipeline_state()
|
|
297
|
+
return pipeline_state.model_dump() if hasattr(pipeline_state, "model_dump") else {}
|
|
298
|
+
|
|
299
|
+
def _calculate_processing_time(self, start_time: float) -> float:
|
|
300
|
+
"""Calculate processing time in milliseconds."""
|
|
301
|
+
import asyncio
|
|
302
|
+
|
|
303
|
+
return (asyncio.get_event_loop().time() - start_time) * 1000
|
|
304
|
+
|
|
305
|
+
async def _handle_paused_thoughts(self, start_time: float) -> SingleStepResult:
|
|
306
|
+
"""Handle execution of paused thoughts."""
|
|
307
|
+
from ciris_engine.logic.processors.core.step_decorators import execute_all_steps
|
|
308
|
+
|
|
309
|
+
result = await execute_all_steps()
|
|
310
|
+
processing_time_ms = self._calculate_processing_time(start_time)
|
|
311
|
+
|
|
312
|
+
# Convert result to dict if needed for indexing
|
|
313
|
+
result_dict = result.model_dump() if hasattr(result, "model_dump") else result
|
|
314
|
+
|
|
315
|
+
return SingleStepResult(
|
|
316
|
+
success=result_dict["success"], # type: ignore[index] # Dict-like access on dynamic type
|
|
317
|
+
step_point="resume_paused_thoughts",
|
|
318
|
+
message=result_dict["message"], # type: ignore[index] # Dict-like access on dynamic type
|
|
319
|
+
thoughts_advanced=result_dict["thoughts_advanced"], # type: ignore[index] # Dict-like access on dynamic type
|
|
320
|
+
step_results=[{"thoughts_advanced": result_dict["thoughts_advanced"], "message": result_dict["message"]}], # type: ignore[index] # Dict-like access on dynamic type
|
|
321
|
+
processing_time_ms=processing_time_ms,
|
|
322
|
+
pipeline_state=self._get_pipeline_state_dict(),
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
def _handle_no_pending_thoughts(self, start_time: float) -> SingleStepResult:
|
|
326
|
+
"""Handle case when no pending thoughts are available."""
|
|
327
|
+
processing_time_ms = self._calculate_processing_time(start_time)
|
|
328
|
+
return SingleStepResult(
|
|
329
|
+
success=True,
|
|
330
|
+
step_point="no_work",
|
|
331
|
+
message="No pending thoughts to process",
|
|
332
|
+
thoughts_advanced=0,
|
|
333
|
+
step_results=[],
|
|
334
|
+
processing_time_ms=processing_time_ms,
|
|
335
|
+
pipeline_state=self._get_pipeline_state_dict(),
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
def _handle_successful_initiation(self, thought: Any, start_time: float) -> SingleStepResult:
|
|
339
|
+
"""Handle successful thought processing initiation."""
|
|
340
|
+
processing_time_ms = self._calculate_processing_time(start_time)
|
|
341
|
+
return SingleStepResult(
|
|
342
|
+
success=True,
|
|
343
|
+
step_point="initiate_processing",
|
|
344
|
+
message=f"Initiated processing for thought {thought.thought_id} - will pause at first step",
|
|
345
|
+
thought_id=thought.thought_id,
|
|
346
|
+
step_results=[{"thought_id": thought.thought_id, "initiated": True}],
|
|
347
|
+
processing_time_ms=processing_time_ms,
|
|
348
|
+
pipeline_state=self._get_pipeline_state_dict(),
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
def _handle_initiation_error(self, error: Exception, start_time: float) -> SingleStepResult:
|
|
352
|
+
"""Handle error during thought processing initiation."""
|
|
353
|
+
processing_time_ms = self._calculate_processing_time(start_time)
|
|
354
|
+
return SingleStepResult(
|
|
355
|
+
success=False,
|
|
356
|
+
step_point="error",
|
|
357
|
+
message=f"Error initiating processing: {error}",
|
|
358
|
+
step_results=[],
|
|
359
|
+
processing_time_ms=processing_time_ms,
|
|
360
|
+
pipeline_state=self._get_pipeline_state_dict(),
|
|
361
|
+
)
|
|
362
|
+
|
|
363
|
+
def _handle_no_processor(self, start_time: float) -> SingleStepResult:
|
|
364
|
+
"""Handle case when no thought processor is available."""
|
|
365
|
+
processing_time_ms = self._calculate_processing_time(start_time)
|
|
366
|
+
return SingleStepResult(
|
|
367
|
+
success=False,
|
|
368
|
+
step_point="error",
|
|
369
|
+
message="No thought processor available",
|
|
370
|
+
step_results=[],
|
|
371
|
+
processing_time_ms=processing_time_ms,
|
|
372
|
+
pipeline_state=self._get_pipeline_state_dict(),
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
async def _initiate_thought_processing(self, thought: Any, start_time: float) -> SingleStepResult:
|
|
376
|
+
"""Initiate processing for a pending thought."""
|
|
377
|
+
if not (self.main_processor and self.main_processor.thought_processor):
|
|
378
|
+
return self._handle_no_processor(start_time)
|
|
379
|
+
|
|
380
|
+
try:
|
|
381
|
+
# Start processing this thought - it will pause at the first decorated step
|
|
382
|
+
# For now, we'll simulate this by just indicating that processing was initiated
|
|
383
|
+
return self._handle_successful_initiation(thought, start_time)
|
|
384
|
+
except Exception as e:
|
|
385
|
+
return self._handle_initiation_error(e, start_time)
|
|
386
|
+
|
|
387
|
+
async def execute_single_step_point(self) -> SingleStepResult:
|
|
388
|
+
"""
|
|
389
|
+
Execute exactly one step point in the H3ERE pipeline using step decorators.
|
|
390
|
+
|
|
391
|
+
This enables single-step mode and advances paused thoughts by one step,
|
|
392
|
+
leveraging the existing step decorator infrastructure for pause/resume.
|
|
393
|
+
|
|
394
|
+
Returns:
|
|
395
|
+
Dict containing:
|
|
396
|
+
- success: bool
|
|
397
|
+
- step_point: str (the step point executed)
|
|
398
|
+
- message: str (description of what happened)
|
|
399
|
+
- step_results: List[Dict] (results for each thought advanced)
|
|
400
|
+
- processing_time_ms: float
|
|
401
|
+
- pipeline_state: Dict
|
|
402
|
+
"""
|
|
403
|
+
import asyncio
|
|
404
|
+
|
|
405
|
+
from ciris_engine.logic.processors.core.step_decorators import enable_single_step_mode, get_paused_thoughts
|
|
406
|
+
|
|
407
|
+
start_time = asyncio.get_event_loop().time()
|
|
408
|
+
|
|
409
|
+
# Enable single-step mode so that step decorators pause at each step
|
|
410
|
+
enable_single_step_mode()
|
|
411
|
+
|
|
412
|
+
# Check if we have paused thoughts to advance
|
|
413
|
+
paused_thoughts = get_paused_thoughts()
|
|
414
|
+
|
|
415
|
+
if paused_thoughts:
|
|
416
|
+
return await self._handle_paused_thoughts(start_time)
|
|
417
|
+
|
|
418
|
+
# No paused thoughts - need to start new thoughts in the pipeline
|
|
419
|
+
from ciris_engine.logic import persistence
|
|
420
|
+
from ciris_engine.schemas.runtime.enums import ThoughtStatus
|
|
421
|
+
|
|
422
|
+
pending_thoughts = persistence.get_thoughts_by_status(ThoughtStatus.PENDING, limit=1)
|
|
423
|
+
if not pending_thoughts:
|
|
424
|
+
return self._handle_no_pending_thoughts(start_time)
|
|
425
|
+
|
|
426
|
+
# Start processing the first pending thought
|
|
427
|
+
thought = pending_thoughts[0]
|
|
428
|
+
return await self._initiate_thought_processing(thought, start_time)
|
|
429
|
+
|
|
430
|
+
def _get_next_step_point(self) -> Optional[StepPoint]:
|
|
431
|
+
"""Get the next step point to execute in order."""
|
|
432
|
+
# Define the execution order of step points
|
|
433
|
+
step_order = [
|
|
434
|
+
StepPoint.START_ROUND, # 0) Setup: Tasks → Thoughts → Round Queue → Ready for context
|
|
435
|
+
StepPoint.GATHER_CONTEXT, # 1) Build context for DMA processing
|
|
436
|
+
StepPoint.PERFORM_DMAS, # 2) Execute multi-perspective DMAs
|
|
437
|
+
StepPoint.PERFORM_ASPDMA, # 3) LLM-powered action selection
|
|
438
|
+
StepPoint.CONSCIENCE_EXECUTION, # 4) Ethical safety validation
|
|
439
|
+
StepPoint.RECURSIVE_ASPDMA, # 5) Optional: Re-run action selection if conscience failed
|
|
440
|
+
StepPoint.RECURSIVE_CONSCIENCE, # 6) Optional: Re-validate if recursive action failed
|
|
441
|
+
StepPoint.FINALIZE_ACTION, # 7) Final action determination
|
|
442
|
+
StepPoint.PERFORM_ACTION, # 8) Dispatch action to handler
|
|
443
|
+
StepPoint.ACTION_COMPLETE, # 9) Action execution completed
|
|
444
|
+
StepPoint.ROUND_COMPLETE,
|
|
445
|
+
]
|
|
446
|
+
|
|
447
|
+
# Track current step point
|
|
448
|
+
if not hasattr(self, "_current_step_index"):
|
|
449
|
+
self._current_step_index: int = 0
|
|
450
|
+
|
|
451
|
+
if not step_order or self._current_step_index >= len(step_order):
|
|
452
|
+
# Reset to start of pipeline for next round
|
|
453
|
+
self._current_step_index = 0
|
|
454
|
+
return (
|
|
455
|
+
step_order[0] if (step_order and len(step_order) > 0) else StepPoint.START_ROUND
|
|
456
|
+
) # Start new round at START_ROUND
|
|
457
|
+
|
|
458
|
+
current_step = step_order[self._current_step_index]
|
|
459
|
+
self._current_step_index += 1
|
|
460
|
+
return current_step
|
|
461
|
+
|
|
462
|
+
def get_current_state(self) -> Any:
|
|
463
|
+
"""Get the current pipeline state including next step to execute."""
|
|
464
|
+
next_step = self._peek_next_step_point()
|
|
465
|
+
pipeline_state = self.get_pipeline_state()
|
|
466
|
+
|
|
467
|
+
class CurrentPipelineState:
|
|
468
|
+
def __init__(self, current_step: Optional[str], pipeline_state: PipelineState) -> None:
|
|
469
|
+
self.current_step = current_step
|
|
470
|
+
self.pipeline_state = pipeline_state
|
|
471
|
+
|
|
472
|
+
return CurrentPipelineState(next_step.value if next_step else None, pipeline_state)
|
|
473
|
+
|
|
474
|
+
def _peek_next_step_point(self) -> Optional[StepPoint]:
|
|
475
|
+
"""Peek at next step point without incrementing counter."""
|
|
476
|
+
step_order = [
|
|
477
|
+
StepPoint.START_ROUND,
|
|
478
|
+
StepPoint.GATHER_CONTEXT,
|
|
479
|
+
StepPoint.PERFORM_DMAS,
|
|
480
|
+
StepPoint.PERFORM_ASPDMA,
|
|
481
|
+
StepPoint.CONSCIENCE_EXECUTION,
|
|
482
|
+
StepPoint.RECURSIVE_ASPDMA,
|
|
483
|
+
StepPoint.RECURSIVE_CONSCIENCE,
|
|
484
|
+
StepPoint.FINALIZE_ACTION,
|
|
485
|
+
StepPoint.PERFORM_ACTION,
|
|
486
|
+
StepPoint.ACTION_COMPLETE,
|
|
487
|
+
StepPoint.ROUND_COMPLETE,
|
|
488
|
+
]
|
|
489
|
+
|
|
490
|
+
# Track current step point
|
|
491
|
+
if not hasattr(self, "_current_step_index"):
|
|
492
|
+
self._current_step_index = 0
|
|
493
|
+
|
|
494
|
+
if not step_order or self._current_step_index >= len(step_order):
|
|
495
|
+
# Would reset to start of pipeline for next round
|
|
496
|
+
return step_order[0] if (step_order and len(step_order) > 0) else StepPoint.START_ROUND # START_ROUND
|
|
497
|
+
|
|
498
|
+
return step_order[self._current_step_index]
|
|
499
|
+
|
|
500
|
+
def _get_thoughts_for_step_point(self, step_point: StepPoint) -> List[Any]:
|
|
501
|
+
"""Get thoughts that need processing at this step point."""
|
|
502
|
+
pipeline_state = self.get_pipeline_state()
|
|
503
|
+
|
|
504
|
+
if hasattr(pipeline_state, "thoughts_by_step") and step_point in pipeline_state.thoughts_by_step:
|
|
505
|
+
return pipeline_state.thoughts_by_step[step_point][:5]
|
|
506
|
+
|
|
507
|
+
# For early steps, we may need to create mock thoughts
|
|
508
|
+
return []
|
|
509
|
+
|
|
510
|
+
def _create_thought_in_pipeline(self, thought: Any, step_point: StepPoint) -> ThoughtInPipeline:
|
|
511
|
+
"""Create a ThoughtInPipeline from a Thought for processing."""
|
|
512
|
+
from datetime import datetime
|
|
513
|
+
|
|
514
|
+
return ThoughtInPipeline(
|
|
515
|
+
thought_id=thought.thought_id,
|
|
516
|
+
task_id=thought.source_task_id,
|
|
517
|
+
thought_type=thought.thought_type.value if thought.thought_type else "task_execution",
|
|
518
|
+
current_step=step_point,
|
|
519
|
+
entered_step_at=datetime.now(),
|
|
520
|
+
step_data={
|
|
521
|
+
"content": thought.content,
|
|
522
|
+
"created_at": self._extract_created_at_string(thought),
|
|
523
|
+
"tags": getattr(thought, "tags", []),
|
|
524
|
+
},
|
|
525
|
+
)
|
|
526
|
+
|
|
527
|
+
def _extract_created_at_string(self, thought: Any) -> Optional[str]:
|
|
528
|
+
"""Extract created_at as a string, handling various formats."""
|
|
529
|
+
if not thought.created_at:
|
|
530
|
+
return None
|
|
531
|
+
|
|
532
|
+
if hasattr(thought.created_at, "isoformat"):
|
|
533
|
+
return str(thought.created_at.isoformat())
|
|
534
|
+
else:
|
|
535
|
+
return str(thought.created_at)
|
|
536
|
+
|
|
537
|
+
async def _execute_step_for_thought(self, step_point: StepPoint, thought: Any) -> ThoughtProcessingResult:
|
|
538
|
+
"""
|
|
539
|
+
Execute a specific step point for a single thought.
|
|
540
|
+
|
|
541
|
+
Returns typed step result with round/task/thought identifiers.
|
|
542
|
+
"""
|
|
543
|
+
processing_start = asyncio.get_event_loop().time()
|
|
544
|
+
|
|
545
|
+
# Execute REAL step logic based on step point - NO MOCK DATA
|
|
546
|
+
step_data = await self._execute_real_step_logic(step_point, thought) # type: ignore[attr-defined] # Method may not exist at runtime
|
|
547
|
+
|
|
548
|
+
processing_time_ms = (asyncio.get_event_loop().time() - processing_start) * 1000
|
|
549
|
+
|
|
550
|
+
# Create Pydantic result object
|
|
551
|
+
thought_id_str = thought.thought_id if hasattr(thought, "thought_id") else str(thought)
|
|
552
|
+
task_id_str = getattr(thought, "task_id", getattr(thought, "source_task_id", ""))
|
|
553
|
+
|
|
554
|
+
step_result = ThoughtProcessingResult(
|
|
555
|
+
thought_id=thought_id_str,
|
|
556
|
+
round_id=getattr(self, "_current_round", 1),
|
|
557
|
+
task_id=task_id_str,
|
|
558
|
+
step_point=step_point.value,
|
|
559
|
+
success=True,
|
|
560
|
+
step_data=step_data,
|
|
561
|
+
processing_time_ms=processing_time_ms,
|
|
562
|
+
timestamp=asyncio.get_event_loop().time(),
|
|
563
|
+
)
|
|
564
|
+
|
|
565
|
+
# Step streaming is handled by @streaming_step decorator in step_decorators.py
|
|
566
|
+
# which broadcasts to reasoning_event_stream for real-time client updates
|
|
567
|
+
|
|
568
|
+
return step_result
|
|
569
|
+
|
|
570
|
+
# Note: All step execution is now handled by step decorators in ThoughtProcessor phases
|
|
571
|
+
# No manual step execution methods needed - decorators handle pause/resume automatically
|
|
572
|
+
|
|
573
|
+
def _advance_thoughts_to_next_step(self, thoughts: List[Any], current_step: StepPoint) -> None:
|
|
574
|
+
"""Advance thoughts to the next step in the pipeline."""
|
|
575
|
+
pipeline_state = self.get_pipeline_state()
|
|
576
|
+
|
|
577
|
+
# Get the next step in the pipeline
|
|
578
|
+
step_order = [
|
|
579
|
+
StepPoint.START_ROUND,
|
|
580
|
+
StepPoint.GATHER_CONTEXT,
|
|
581
|
+
StepPoint.PERFORM_DMAS,
|
|
582
|
+
StepPoint.PERFORM_ASPDMA,
|
|
583
|
+
StepPoint.CONSCIENCE_EXECUTION,
|
|
584
|
+
StepPoint.RECURSIVE_ASPDMA,
|
|
585
|
+
StepPoint.RECURSIVE_CONSCIENCE,
|
|
586
|
+
StepPoint.FINALIZE_ACTION,
|
|
587
|
+
StepPoint.PERFORM_ACTION,
|
|
588
|
+
StepPoint.ACTION_COMPLETE,
|
|
589
|
+
StepPoint.ROUND_COMPLETE,
|
|
590
|
+
]
|
|
591
|
+
|
|
592
|
+
current_index = step_order.index(current_step) if current_step in step_order else -1
|
|
593
|
+
next_step = (
|
|
594
|
+
step_order[current_index + 1] if current_index >= 0 and current_index + 1 < len(step_order) else None
|
|
595
|
+
)
|
|
596
|
+
|
|
597
|
+
# Update each thought's state and move to next step bucket
|
|
598
|
+
for thought in thoughts:
|
|
599
|
+
# Update thought object state
|
|
600
|
+
if hasattr(thought, "last_completed_step"):
|
|
601
|
+
thought.last_completed_step = current_step
|
|
602
|
+
if hasattr(thought, "current_step") and next_step:
|
|
603
|
+
thought.current_step = next_step
|
|
604
|
+
|
|
605
|
+
# Move thought to next step bucket in pipeline state
|
|
606
|
+
if next_step and hasattr(pipeline_state, "thoughts_by_step"):
|
|
607
|
+
if next_step.value not in pipeline_state.thoughts_by_step:
|
|
608
|
+
pipeline_state.thoughts_by_step[next_step.value] = []
|
|
609
|
+
pipeline_state.thoughts_by_step[next_step.value].append(thought)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Processor protocols for CIRIS agent.
|
|
3
|
+
|
|
4
|
+
These protocols define the interfaces for:
|
|
5
|
+
- AgentProcessorProtocol: Main coordinator managing all states
|
|
6
|
+
- ProcessorProtocol: Base interface for state processors
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from .agent import AgentProcessorMetrics, AgentProcessorProtocol, ProcessingSchedule, QueueStatus, StepResult
|
|
10
|
+
from .base import ProcessorProtocol
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"AgentProcessorProtocol",
|
|
14
|
+
"ProcessorProtocol",
|
|
15
|
+
"ProcessingSchedule",
|
|
16
|
+
"AgentProcessorMetrics",
|
|
17
|
+
"QueueStatus",
|
|
18
|
+
"StepResult",
|
|
19
|
+
]
|