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,270 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Filter Schemas v1 - Universal message filtering system for CIRIS Agent
|
|
3
|
+
|
|
4
|
+
Provides adaptive filtering capabilities across all adapters and services
|
|
5
|
+
with graph memory persistence and self-configuration support.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from datetime import datetime, timezone
|
|
9
|
+
from enum import Enum
|
|
10
|
+
from typing import Dict, List, Optional
|
|
11
|
+
|
|
12
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class FilterPriority(str, Enum):
|
|
16
|
+
"""Message priority levels for agent attention"""
|
|
17
|
+
|
|
18
|
+
CRITICAL = "critical" # DMs, @mentions, name mentions
|
|
19
|
+
HIGH = "high" # New users, suspicious patterns
|
|
20
|
+
MEDIUM = "medium" # Random sampling, periodic health checks
|
|
21
|
+
LOW = "low" # Normal traffic
|
|
22
|
+
IGNORE = "ignore" # Filtered out completely
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TriggerType(str, Enum):
|
|
26
|
+
"""Types of filter triggers"""
|
|
27
|
+
|
|
28
|
+
REGEX = "regex" # Regular expression pattern
|
|
29
|
+
COUNT = "count" # Numeric threshold (e.g., emoji count)
|
|
30
|
+
LENGTH = "length" # Message length threshold
|
|
31
|
+
FREQUENCY = "frequency" # Message frequency (count:seconds)
|
|
32
|
+
CUSTOM = "custom" # Custom logic (e.g., is_dm)
|
|
33
|
+
SEMANTIC = "semantic" # Meaning-based (requires LLM)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class FilterTrigger(BaseModel):
|
|
37
|
+
"""Individual filter trigger definition"""
|
|
38
|
+
|
|
39
|
+
trigger_id: str = Field(description="Unique identifier")
|
|
40
|
+
name: str = Field(description="Human-readable name")
|
|
41
|
+
pattern_type: TriggerType = Field(description="Type of pattern matching")
|
|
42
|
+
pattern: str = Field(description="Pattern or threshold value")
|
|
43
|
+
priority: FilterPriority = Field(description="Priority level when triggered")
|
|
44
|
+
description: str = Field(description="Human-readable description")
|
|
45
|
+
enabled: bool = Field(default=True, description="Whether trigger is active")
|
|
46
|
+
|
|
47
|
+
# Learning metadata
|
|
48
|
+
effectiveness: float = Field(default=0.5, ge=0.0, le=1.0, description="How effective the trigger is")
|
|
49
|
+
false_positive_rate: float = Field(default=0.0, ge=0.0, le=1.0, description="Rate of false positives")
|
|
50
|
+
true_positive_count: int = Field(default=0, description="Count of true positives")
|
|
51
|
+
false_positive_count: int = Field(default=0, description="Count of false positives")
|
|
52
|
+
last_triggered: Optional[datetime] = Field(default=None, description="When last triggered")
|
|
53
|
+
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc), description="Creation timestamp")
|
|
54
|
+
created_by: str = Field(default="system", description="Creator of the trigger")
|
|
55
|
+
|
|
56
|
+
# For learned patterns
|
|
57
|
+
learned_from: Optional[str] = Field(default=None, description="Source of learned pattern")
|
|
58
|
+
|
|
59
|
+
model_config = ConfigDict(extra="forbid")
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class UserTrustProfile(BaseModel):
|
|
63
|
+
"""
|
|
64
|
+
Track user behavior for adaptive filtering.
|
|
65
|
+
|
|
66
|
+
Works for both identified and anonymous users - when anonymized,
|
|
67
|
+
user_id becomes a hash and PII fields are cleared.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
user_id: str = Field(description="User identifier or hash for anonymous")
|
|
71
|
+
message_count: int = Field(default=0, description="Total messages from user")
|
|
72
|
+
violation_count: int = Field(default=0, description="Count of policy violations")
|
|
73
|
+
helpful_count: int = Field(default=0, description="Count of helpful interactions")
|
|
74
|
+
first_seen: datetime = Field(description="When user was first seen")
|
|
75
|
+
last_seen: datetime = Field(description="When user was last active")
|
|
76
|
+
trust_score: float = Field(default=0.5, ge=0.0, le=1.0, description="User trust score")
|
|
77
|
+
flags: List[str] = Field(default_factory=list, description="Behavioral flags")
|
|
78
|
+
roles: List[str] = Field(default_factory=list, description="User roles in community")
|
|
79
|
+
|
|
80
|
+
avg_message_length: float = Field(default=0.0, description="Average message length")
|
|
81
|
+
avg_message_interval: float = Field(default=0.0, description="Average seconds between messages")
|
|
82
|
+
common_triggers: List[str] = Field(default_factory=list, description="Commonly triggered filters")
|
|
83
|
+
|
|
84
|
+
# Privacy-preserving fields
|
|
85
|
+
is_anonymous: bool = Field(default=False, description="User has anonymous consent")
|
|
86
|
+
user_hash: Optional[str] = Field(None, description="Stable hash for anonymous tracking")
|
|
87
|
+
consent_stream: str = Field(default="temporary", description="Current consent stream")
|
|
88
|
+
|
|
89
|
+
# Anti-gaming measures
|
|
90
|
+
consent_transitions_24h: int = Field(default=0, description="Consent changes in 24 hours")
|
|
91
|
+
rapid_switching_flag: bool = Field(default=False, description="Detected rapid consent switching")
|
|
92
|
+
evasion_score: float = Field(default=0.0, ge=0.0, le=1.0, description="Gaming detection score")
|
|
93
|
+
last_moderation: Optional[datetime] = Field(None, description="Last moderation action time")
|
|
94
|
+
|
|
95
|
+
# Safety patterns (retained for anonymous)
|
|
96
|
+
safety_patterns: List[str] = Field(default_factory=list, description="Active safety pattern IDs")
|
|
97
|
+
pattern_score: float = Field(default=0.0, ge=0.0, le=1.0, description="Pattern-based risk score")
|
|
98
|
+
|
|
99
|
+
model_config = ConfigDict(extra="forbid")
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class ConversationHealth(BaseModel):
|
|
103
|
+
"""Metrics for conversation health monitoring"""
|
|
104
|
+
|
|
105
|
+
channel_id: str = Field(description="Unique channel identifier")
|
|
106
|
+
sample_rate: float = Field(default=0.1, ge=0.0, le=1.0, description="Sampling rate for messages")
|
|
107
|
+
health_score: float = Field(default=0.5, ge=0.0, le=1.0, description="Overall health score")
|
|
108
|
+
|
|
109
|
+
# Detailed metrics
|
|
110
|
+
toxicity_level: float = Field(default=0.0, ge=0.0, le=1.0, description="Level of toxic content")
|
|
111
|
+
engagement_level: float = Field(default=0.5, ge=0.0, le=1.0, description="User engagement level")
|
|
112
|
+
topic_coherence: float = Field(default=0.5, ge=0.0, le=1.0, description="Coherence of discussion topics")
|
|
113
|
+
user_satisfaction: float = Field(default=0.5, ge=0.0, le=1.0, description="Estimated user satisfaction")
|
|
114
|
+
|
|
115
|
+
# Sampling data
|
|
116
|
+
last_sample: Optional[datetime] = Field(default=None, description="When last sampled")
|
|
117
|
+
samples_today: int = Field(default=0, description="Samples taken today")
|
|
118
|
+
issues_detected: int = Field(default=0, description="Issues found in samples")
|
|
119
|
+
|
|
120
|
+
model_config = ConfigDict(extra="forbid")
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class ContextHint(BaseModel):
|
|
124
|
+
"""Typed context hint for filter results"""
|
|
125
|
+
|
|
126
|
+
key: str = Field(description="Context key")
|
|
127
|
+
value: str = Field(description="Context value")
|
|
128
|
+
|
|
129
|
+
model_config = ConfigDict(extra="forbid")
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class FilterResult(BaseModel):
|
|
133
|
+
"""Result of filtering a message"""
|
|
134
|
+
|
|
135
|
+
message_id: str = Field(description="ID of filtered message")
|
|
136
|
+
priority: FilterPriority = Field(description="Assigned priority")
|
|
137
|
+
triggered_filters: List[str] = Field(default_factory=list, description="IDs of triggered filters")
|
|
138
|
+
should_process: bool = Field(description="Whether to process the message")
|
|
139
|
+
should_defer: bool = Field(default=False, description="Whether to defer processing")
|
|
140
|
+
reasoning: str = Field(description="Human-readable reasoning")
|
|
141
|
+
|
|
142
|
+
suggested_action: Optional[str] = Field(default=None, description="Suggested action to take")
|
|
143
|
+
context_hints: List[ContextHint] = Field(default_factory=list, description="Additional context")
|
|
144
|
+
|
|
145
|
+
model_config = ConfigDict(extra="forbid")
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class ChannelConfig(BaseModel):
|
|
149
|
+
"""Channel-specific filter configuration"""
|
|
150
|
+
|
|
151
|
+
channel_id: str = Field(description="Unique channel identifier")
|
|
152
|
+
health: ConversationHealth = Field(description="Health monitoring settings")
|
|
153
|
+
custom_triggers: List[str] = Field(default_factory=list, description="Channel-specific trigger IDs")
|
|
154
|
+
sample_rate_override: Optional[float] = Field(default=None, ge=0.0, le=1.0, description="Override sample rate")
|
|
155
|
+
|
|
156
|
+
model_config = ConfigDict(extra="forbid")
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class AdaptiveFilterConfig(BaseModel):
|
|
160
|
+
"""Complete filter configuration stored in graph memory"""
|
|
161
|
+
|
|
162
|
+
config_id: str = Field(default="filter_config", description="Unique configuration ID")
|
|
163
|
+
version: int = Field(default=1, description="Configuration version")
|
|
164
|
+
|
|
165
|
+
# Core attention triggers (agent always sees these)
|
|
166
|
+
attention_triggers: List[FilterTrigger] = Field(default_factory=list, description="High-priority triggers")
|
|
167
|
+
|
|
168
|
+
# Suspicious pattern triggers
|
|
169
|
+
review_triggers: List[FilterTrigger] = Field(default_factory=list, description="Triggers for review")
|
|
170
|
+
|
|
171
|
+
# LLM response filters (protect against malicious LLM)
|
|
172
|
+
llm_filters: List[FilterTrigger] = Field(default_factory=list, description="LLM output filters")
|
|
173
|
+
|
|
174
|
+
# Channel-specific settings
|
|
175
|
+
channel_configs: List[ChannelConfig] = Field(default_factory=list, description="Per-channel configurations")
|
|
176
|
+
|
|
177
|
+
# User tracking
|
|
178
|
+
new_user_threshold: int = Field(default=5, description="Messages before user is trusted")
|
|
179
|
+
user_profiles: Dict[str, UserTrustProfile] = Field(
|
|
180
|
+
default_factory=dict, description="User trust profiles by user ID"
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
# Adaptive learning settings
|
|
184
|
+
auto_adjust: bool = Field(default=True, description="Enable automatic adjustments")
|
|
185
|
+
adjustment_interval: int = Field(default=3600, description="Seconds between adjustments")
|
|
186
|
+
effectiveness_threshold: float = Field(default=0.3, description="Disable filters below this effectiveness")
|
|
187
|
+
false_positive_threshold: float = Field(default=0.2, description="Review filters above this FP rate")
|
|
188
|
+
|
|
189
|
+
# Metadata
|
|
190
|
+
last_adjustment: Optional[datetime] = Field(default=None, description="When last adjusted")
|
|
191
|
+
total_messages_processed: int = Field(default=0, description="Total messages filtered")
|
|
192
|
+
total_issues_caught: int = Field(default=0, description="Total issues detected")
|
|
193
|
+
|
|
194
|
+
model_config = ConfigDict(extra="forbid")
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class PriorityStats(BaseModel):
|
|
198
|
+
"""Statistics by priority level"""
|
|
199
|
+
|
|
200
|
+
priority: FilterPriority = Field(description="Priority level")
|
|
201
|
+
count: int = Field(default=0, description="Number of messages at this priority")
|
|
202
|
+
percentage: float = Field(default=0.0, ge=0.0, le=100.0, description="Percentage of total")
|
|
203
|
+
|
|
204
|
+
model_config = ConfigDict(extra="forbid")
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
class TriggerStats(BaseModel):
|
|
208
|
+
"""Statistics by trigger type"""
|
|
209
|
+
|
|
210
|
+
trigger_type: TriggerType = Field(description="Type of trigger")
|
|
211
|
+
count: int = Field(default=0, description="Number of times triggered")
|
|
212
|
+
percentage: float = Field(default=0.0, ge=0.0, le=100.0, description="Percentage of total")
|
|
213
|
+
|
|
214
|
+
model_config = ConfigDict(extra="forbid")
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
class FilterStats(BaseModel):
|
|
218
|
+
"""Statistics for filter performance monitoring"""
|
|
219
|
+
|
|
220
|
+
total_messages_processed: int = Field(default=0, description="Total messages processed")
|
|
221
|
+
total_filtered: int = Field(default=0, description="Total messages filtered")
|
|
222
|
+
by_priority: Dict[FilterPriority, int] = Field(default_factory=dict, description="Message count by priority")
|
|
223
|
+
by_trigger_type: Dict[TriggerType, int] = Field(default_factory=dict, description="Trigger count by type")
|
|
224
|
+
false_positive_reports: int = Field(default=0, description="Reported false positives")
|
|
225
|
+
true_positive_confirmations: int = Field(default=0, description="Confirmed true positives")
|
|
226
|
+
last_reset: datetime = Field(
|
|
227
|
+
default_factory=lambda: datetime.now(timezone.utc), description="When stats were reset"
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
model_config = ConfigDict(extra="forbid")
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
class FilterHealth(BaseModel):
|
|
234
|
+
"""Overall health metrics for the filtering system"""
|
|
235
|
+
|
|
236
|
+
is_healthy: bool = Field(default=True, description="Whether system is healthy")
|
|
237
|
+
warnings: List[str] = Field(default_factory=list, description="Active warnings")
|
|
238
|
+
errors: List[str] = Field(default_factory=list, description="Active errors")
|
|
239
|
+
stats: FilterStats = Field(default_factory=FilterStats, description="Performance statistics")
|
|
240
|
+
config_version: int = Field(default=1, description="Current config version")
|
|
241
|
+
last_updated: datetime = Field(default_factory=lambda: datetime.now(timezone.utc), description="Last update time")
|
|
242
|
+
|
|
243
|
+
model_config = ConfigDict(extra="forbid")
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
class FilterServiceMetadata(BaseModel):
|
|
247
|
+
"""Metadata for adaptive filter service capabilities."""
|
|
248
|
+
|
|
249
|
+
description: str = Field(..., description="Service description")
|
|
250
|
+
features: List[str] = Field(..., description="List of features supported")
|
|
251
|
+
filter_types: List[str] = Field(..., description="Types of filters supported")
|
|
252
|
+
max_buffer_size: int = Field(..., description="Maximum message buffer size")
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
__all__ = [
|
|
256
|
+
"FilterPriority",
|
|
257
|
+
"TriggerType",
|
|
258
|
+
"FilterTrigger",
|
|
259
|
+
"UserTrustProfile",
|
|
260
|
+
"ConversationHealth",
|
|
261
|
+
"ContextHint",
|
|
262
|
+
"FilterResult",
|
|
263
|
+
"ChannelConfig",
|
|
264
|
+
"AdaptiveFilterConfig",
|
|
265
|
+
"PriorityStats",
|
|
266
|
+
"TriggerStats",
|
|
267
|
+
"FilterStats",
|
|
268
|
+
"FilterHealth",
|
|
269
|
+
"FilterServiceMetadata",
|
|
270
|
+
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Governance-related schemas for CIRIS.
|
|
3
|
+
|
|
4
|
+
Provides enums and models for governance operations including deferrals.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class DeferralType(str, Enum):
|
|
11
|
+
"""Types of deferrals that can be requested."""
|
|
12
|
+
|
|
13
|
+
ETHICAL = "ethical"
|
|
14
|
+
TECHNICAL = "technical"
|
|
15
|
+
POLICY = "policy"
|
|
16
|
+
SAFETY = "safety"
|
|
17
|
+
LEGAL = "legal"
|
|
18
|
+
RESOURCE = "resource"
|
|
19
|
+
AUTHORITY = "authority"
|
|
20
|
+
OTHER = "other"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# Re-export the deferral classes from authority_core for convenience
|
|
24
|
+
from ciris_engine.schemas.services.authority_core import DeferralRequest, DeferralResponse
|
|
25
|
+
|
|
26
|
+
__all__ = ["DeferralType", "DeferralRequest", "DeferralResponse"]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Graph service schemas.
|
|
3
|
+
|
|
4
|
+
Provides strongly-typed schemas for all graph service operations.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from ciris_engine.schemas.services.graph.attributes import (
|
|
8
|
+
AnyNodeAttributes,
|
|
9
|
+
ConfigNodeAttributes,
|
|
10
|
+
LogNodeAttributes,
|
|
11
|
+
MemoryNodeAttributes,
|
|
12
|
+
NodeAttributesBase,
|
|
13
|
+
TelemetryNodeAttributes,
|
|
14
|
+
create_node_attributes,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
# Node attributes
|
|
19
|
+
"NodeAttributesBase",
|
|
20
|
+
"MemoryNodeAttributes",
|
|
21
|
+
"ConfigNodeAttributes",
|
|
22
|
+
"TelemetryNodeAttributes",
|
|
23
|
+
"LogNodeAttributes",
|
|
24
|
+
"AnyNodeAttributes",
|
|
25
|
+
"create_node_attributes",
|
|
26
|
+
]
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Typed node attribute schemas for graph services.
|
|
3
|
+
|
|
4
|
+
Provides strongly-typed schemas for graph node attributes.
|
|
5
|
+
These schemas ensure type safety across all graph node operations.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from datetime import datetime, timezone
|
|
9
|
+
from typing import Any, Dict, List, Optional, Type, Union
|
|
10
|
+
|
|
11
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
12
|
+
|
|
13
|
+
from ciris_engine.schemas.types import JSONValue
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class NodeAttributesBase(BaseModel):
|
|
17
|
+
"""
|
|
18
|
+
Base schema for all graph node attributes.
|
|
19
|
+
|
|
20
|
+
This replaces the Dict[str, Any] pattern in graph services.
|
|
21
|
+
All node-specific attributes should inherit from this base.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
# Core temporal tracking
|
|
25
|
+
created_at: datetime = Field(
|
|
26
|
+
default_factory=lambda: datetime.now(timezone.utc), description="When this node was created"
|
|
27
|
+
)
|
|
28
|
+
updated_at: datetime = Field(
|
|
29
|
+
default_factory=lambda: datetime.now(timezone.utc), description="When this node was last updated"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Attribution
|
|
33
|
+
created_by: str = Field(..., description="Service or user that created this node")
|
|
34
|
+
updated_by: Optional[str] = Field(None, description="Service or user that last updated this node")
|
|
35
|
+
|
|
36
|
+
# Metadata
|
|
37
|
+
tags: List[str] = Field(default_factory=list, description="Tags for categorization and search")
|
|
38
|
+
version: int = Field(1, ge=1, description="Schema version for migration support")
|
|
39
|
+
|
|
40
|
+
# Security
|
|
41
|
+
secret_refs: List[str] = Field(default_factory=list, description="Secret reference UUIDs for encrypted data")
|
|
42
|
+
|
|
43
|
+
model_config = ConfigDict(
|
|
44
|
+
extra="forbid", # No extra fields allowed - ensures type safety
|
|
45
|
+
validate_assignment=True, # Validate on attribute assignment
|
|
46
|
+
str_strip_whitespace=True, # Clean up string inputs
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class MemoryNodeAttributes(NodeAttributesBase):
|
|
51
|
+
"""
|
|
52
|
+
Specific attributes for memory nodes.
|
|
53
|
+
|
|
54
|
+
Used by the memory service for storing knowledge, experiences, and insights.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
# Memory content
|
|
58
|
+
content: str = Field(..., description="The actual memory content")
|
|
59
|
+
content_type: str = Field("text", description="Type of content: text, embedding, reference")
|
|
60
|
+
|
|
61
|
+
# Memory classification
|
|
62
|
+
memory_type: str = Field(..., description="Type: fact, experience, learning, insight, observation")
|
|
63
|
+
importance: float = Field(0.5, ge=0.0, le=1.0, description="Importance score from 0.0 to 1.0")
|
|
64
|
+
confidence: float = Field(1.0, ge=0.0, le=1.0, description="Confidence in this memory from 0.0 to 1.0")
|
|
65
|
+
|
|
66
|
+
# Source tracking
|
|
67
|
+
source: str = Field(..., description="Where this memory originated")
|
|
68
|
+
source_type: str = Field("internal", description="Source type: internal, user, system, external")
|
|
69
|
+
|
|
70
|
+
# Context
|
|
71
|
+
channel_id: Optional[str] = Field(None, description="Channel context if applicable")
|
|
72
|
+
user_id: Optional[str] = Field(None, description="User context if applicable")
|
|
73
|
+
task_id: Optional[str] = Field(None, description="Task context if applicable")
|
|
74
|
+
|
|
75
|
+
# Usage tracking
|
|
76
|
+
access_count: int = Field(0, ge=0, description="Number of times accessed")
|
|
77
|
+
last_accessed: Optional[datetime] = Field(None, description="Last access timestamp")
|
|
78
|
+
|
|
79
|
+
# Relationships (stored as edge data, but tracked here for quick access)
|
|
80
|
+
related_memories: List[str] = Field(default_factory=list, description="IDs of related memory nodes")
|
|
81
|
+
derived_from: Optional[str] = Field(None, description="Parent memory ID if this is derived")
|
|
82
|
+
|
|
83
|
+
# Embeddings support
|
|
84
|
+
embedding_model: Optional[str] = Field(None, description="Model used for embedding")
|
|
85
|
+
embedding_dimensions: Optional[int] = Field(None, description="Embedding vector dimensions")
|
|
86
|
+
|
|
87
|
+
model_config = ConfigDict(extra="forbid")
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class ConfigNodeAttributes(NodeAttributesBase):
|
|
91
|
+
"""
|
|
92
|
+
Specific attributes for configuration nodes.
|
|
93
|
+
|
|
94
|
+
Used by the config service for storing system and behavioral configuration.
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
# Configuration identity
|
|
98
|
+
key: str = Field(..., description="Configuration key (unique within scope)")
|
|
99
|
+
value: Union[str, int, float, bool, List[str], Dict[str, str]] = Field(..., description="Configuration value")
|
|
100
|
+
|
|
101
|
+
# Metadata
|
|
102
|
+
description: str = Field(..., description="What this configuration controls")
|
|
103
|
+
category: str = Field(..., description="Category: system, behavioral, ethical, operational")
|
|
104
|
+
|
|
105
|
+
# Validation
|
|
106
|
+
value_type: str = Field(..., description="Expected type: string, integer, float, boolean, list, dict")
|
|
107
|
+
validation_rules: List[Dict[str, JSONValue]] = Field(
|
|
108
|
+
default_factory=list, description="Validation rules for this config"
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
# Security and sensitivity
|
|
112
|
+
is_sensitive: bool = Field(False, description="Whether this contains sensitive data")
|
|
113
|
+
requires_authority: bool = Field(False, description="Whether changes require WiseAuthority approval")
|
|
114
|
+
|
|
115
|
+
# Change tracking
|
|
116
|
+
previous_value: Optional[Union[str, int, float, bool, List[str], Dict[str, str]]] = Field(
|
|
117
|
+
None, description="Previous value before last update"
|
|
118
|
+
)
|
|
119
|
+
change_reason: Optional[str] = Field(None, description="Reason for last change")
|
|
120
|
+
approved_by: Optional[str] = Field(None, description="Who approved this config if required")
|
|
121
|
+
|
|
122
|
+
# Scope and applicability
|
|
123
|
+
scope: str = Field("system", description="Scope: system, channel, user")
|
|
124
|
+
applies_to: List[str] = Field(default_factory=list, description="Specific entities this applies to")
|
|
125
|
+
|
|
126
|
+
# Lifecycle
|
|
127
|
+
is_active: bool = Field(True, description="Whether this config is currently active")
|
|
128
|
+
expires_at: Optional[datetime] = Field(None, description="When this config expires")
|
|
129
|
+
|
|
130
|
+
model_config = ConfigDict(extra="forbid")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class TelemetryNodeAttributes(NodeAttributesBase):
|
|
134
|
+
"""
|
|
135
|
+
Specific attributes for telemetry nodes.
|
|
136
|
+
|
|
137
|
+
Used by the telemetry service for storing metrics, performance data, and system observations.
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
# Metric identity
|
|
141
|
+
metric_name: str = Field(..., description="Name of the metric")
|
|
142
|
+
metric_type: str = Field(..., description="Type: counter, gauge, histogram, summary")
|
|
143
|
+
|
|
144
|
+
# Metric value
|
|
145
|
+
value: float = Field(..., description="Numeric value of the metric")
|
|
146
|
+
unit: Optional[str] = Field(None, description="Unit of measurement")
|
|
147
|
+
|
|
148
|
+
# Time window
|
|
149
|
+
start_time: datetime = Field(..., description="Start of measurement period")
|
|
150
|
+
end_time: datetime = Field(..., description="End of measurement period")
|
|
151
|
+
duration_seconds: float = Field(..., ge=0, description="Duration of measurement period")
|
|
152
|
+
|
|
153
|
+
# Aggregation
|
|
154
|
+
aggregation_type: Optional[str] = Field(
|
|
155
|
+
None, description="How this was aggregated: sum, avg, max, min, p50, p95, p99"
|
|
156
|
+
)
|
|
157
|
+
sample_count: int = Field(1, ge=1, description="Number of samples in this metric")
|
|
158
|
+
|
|
159
|
+
# Statistical data (for histograms/summaries)
|
|
160
|
+
min_value: Optional[float] = Field(None, description="Minimum observed value")
|
|
161
|
+
max_value: Optional[float] = Field(None, description="Maximum observed value")
|
|
162
|
+
mean_value: Optional[float] = Field(None, description="Mean/average value")
|
|
163
|
+
std_deviation: Optional[float] = Field(None, description="Standard deviation")
|
|
164
|
+
percentiles: Dict[str, float] = Field(default_factory=dict, description="Percentile values (e.g., p50, p95, p99)")
|
|
165
|
+
|
|
166
|
+
# Labels and dimensions
|
|
167
|
+
labels: Dict[str, str] = Field(default_factory=dict, description="Metric labels for filtering and grouping")
|
|
168
|
+
|
|
169
|
+
# Source information
|
|
170
|
+
service_name: str = Field(..., description="Service that generated this metric")
|
|
171
|
+
host: Optional[str] = Field(None, description="Host/instance that generated this")
|
|
172
|
+
|
|
173
|
+
# Alert thresholds
|
|
174
|
+
warning_threshold: Optional[float] = Field(None, description="Warning threshold value")
|
|
175
|
+
critical_threshold: Optional[float] = Field(None, description="Critical threshold value")
|
|
176
|
+
threshold_direction: Optional[str] = Field(None, description="Threshold direction: above, below")
|
|
177
|
+
|
|
178
|
+
# Resource usage (for resource metrics)
|
|
179
|
+
resource_type: Optional[str] = Field(None, description="Resource type: cpu, memory, disk, network, tokens")
|
|
180
|
+
resource_limit: Optional[float] = Field(None, description="Resource limit if applicable")
|
|
181
|
+
|
|
182
|
+
model_config = ConfigDict(extra="forbid")
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class LogNodeAttributes(NodeAttributesBase):
|
|
186
|
+
"""
|
|
187
|
+
Specific attributes for log entry nodes.
|
|
188
|
+
|
|
189
|
+
Used by the memory service for storing log entries as TSDB_DATA nodes.
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
# Log content
|
|
193
|
+
log_message: str = Field(..., description="The log message content")
|
|
194
|
+
log_level: str = Field(..., description="Log level: DEBUG, INFO, WARNING, ERROR, CRITICAL")
|
|
195
|
+
|
|
196
|
+
# Log metadata
|
|
197
|
+
log_tags: Dict[str, str] = Field(default_factory=dict, description="Additional tags for the log entry")
|
|
198
|
+
retention_policy: str = Field("raw", description="Retention policy for this log")
|
|
199
|
+
|
|
200
|
+
model_config = ConfigDict(extra="forbid")
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
# Type unions for flexibility
|
|
204
|
+
AnyNodeAttributes = Union[
|
|
205
|
+
NodeAttributesBase, MemoryNodeAttributes, ConfigNodeAttributes, TelemetryNodeAttributes, LogNodeAttributes
|
|
206
|
+
]
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def create_node_attributes(node_type: str, data: Dict[str, JSONValue], created_by: str) -> AnyNodeAttributes:
|
|
210
|
+
"""
|
|
211
|
+
Factory function to create appropriate node attributes based on type.
|
|
212
|
+
|
|
213
|
+
Args:
|
|
214
|
+
node_type: Type of node (memory, config, telemetry)
|
|
215
|
+
data: Raw attribute data
|
|
216
|
+
created_by: Who is creating this node
|
|
217
|
+
|
|
218
|
+
Returns:
|
|
219
|
+
Appropriate typed node attributes instance
|
|
220
|
+
|
|
221
|
+
Raises:
|
|
222
|
+
ValueError: If node_type is not recognized
|
|
223
|
+
"""
|
|
224
|
+
# Ensure required fields
|
|
225
|
+
if "created_by" not in data:
|
|
226
|
+
data["created_by"] = created_by
|
|
227
|
+
|
|
228
|
+
# Map node types to attribute classes
|
|
229
|
+
type_map: Dict[str, Type[AnyNodeAttributes]] = {
|
|
230
|
+
"memory": MemoryNodeAttributes,
|
|
231
|
+
"config": ConfigNodeAttributes,
|
|
232
|
+
"telemetry": TelemetryNodeAttributes,
|
|
233
|
+
"log": LogNodeAttributes,
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
# Get the appropriate class
|
|
237
|
+
attr_class = type_map.get(node_type)
|
|
238
|
+
if not attr_class:
|
|
239
|
+
# Fall back to base attributes for unknown types
|
|
240
|
+
return NodeAttributesBase(**data)
|
|
241
|
+
|
|
242
|
+
# Type is inferred correctly from the typed dictionary
|
|
243
|
+
return attr_class(**data)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
__all__ = [
|
|
247
|
+
"NodeAttributesBase",
|
|
248
|
+
"MemoryNodeAttributes",
|
|
249
|
+
"ConfigNodeAttributes",
|
|
250
|
+
"TelemetryNodeAttributes",
|
|
251
|
+
"LogNodeAttributes",
|
|
252
|
+
"AnyNodeAttributes",
|
|
253
|
+
"create_node_attributes",
|
|
254
|
+
]
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Graph audit service schemas.
|
|
3
|
+
|
|
4
|
+
Provides typed schemas in audit service operations.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from datetime import datetime
|
|
8
|
+
from typing import Dict, List, Optional, Union
|
|
9
|
+
|
|
10
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AuditEventData(BaseModel):
|
|
14
|
+
"""Data for an audit event."""
|
|
15
|
+
|
|
16
|
+
entity_id: str = Field("system", description="Entity involved in event")
|
|
17
|
+
actor: str = Field("system", description="Actor performing the event")
|
|
18
|
+
outcome: str = Field("success", description="Event outcome")
|
|
19
|
+
severity: str = Field("info", description="Event severity level")
|
|
20
|
+
|
|
21
|
+
# Core event data
|
|
22
|
+
action: Optional[str] = Field(None, description="Action performed")
|
|
23
|
+
resource: Optional[str] = Field(None, description="Resource affected")
|
|
24
|
+
reason: Optional[str] = Field(None, description="Reason for action")
|
|
25
|
+
|
|
26
|
+
# Additional context
|
|
27
|
+
metadata: Dict[str, Union[str, int, float, bool]] = Field(
|
|
28
|
+
default_factory=dict, description="Additional event metadata"
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
model_config = ConfigDict(extra="allow") # Allow additional fields for flexibility
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class VerificationReport(BaseModel):
|
|
35
|
+
"""Audit integrity verification report."""
|
|
36
|
+
|
|
37
|
+
verified: bool = Field(..., description="Whether integrity check passed")
|
|
38
|
+
total_entries: int = Field(..., description="Total audit entries checked")
|
|
39
|
+
valid_entries: int = Field(..., description="Entries with valid signatures")
|
|
40
|
+
invalid_entries: int = Field(..., description="Entries with invalid signatures")
|
|
41
|
+
missing_entries: int = Field(0, description="Entries missing from chain")
|
|
42
|
+
|
|
43
|
+
# Chain integrity
|
|
44
|
+
chain_intact: bool = Field(..., description="Whether hash chain is intact")
|
|
45
|
+
last_valid_entry: Optional[str] = Field(None, description="Last valid entry ID")
|
|
46
|
+
first_invalid_entry: Optional[str] = Field(None, description="First invalid entry ID")
|
|
47
|
+
|
|
48
|
+
# Timing
|
|
49
|
+
verification_started: datetime = Field(..., description="Verification start time")
|
|
50
|
+
verification_completed: datetime = Field(..., description="Verification end time")
|
|
51
|
+
duration_ms: float = Field(..., description="Verification duration in milliseconds")
|
|
52
|
+
|
|
53
|
+
# Errors
|
|
54
|
+
errors: List[str] = Field(default_factory=list, description="Errors encountered")
|
|
55
|
+
warnings: List[str] = Field(default_factory=list, description="Warnings encountered")
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class AuditQueryResult(BaseModel):
|
|
59
|
+
"""Result of an audit query."""
|
|
60
|
+
|
|
61
|
+
query_type: str = Field(..., description="Type of query performed")
|
|
62
|
+
total_results: int = Field(..., description="Total matching entries")
|
|
63
|
+
returned_results: int = Field(..., description="Number of results returned")
|
|
64
|
+
|
|
65
|
+
# Results
|
|
66
|
+
entries: List[Dict[str, Union[str, int, float, bool, datetime]]] = Field(
|
|
67
|
+
default_factory=list, description="Audit entries matching query"
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
# Query metadata
|
|
71
|
+
filters_applied: Dict[str, str] = Field(default_factory=dict, description="Filters used")
|
|
72
|
+
sort_order: Optional[str] = Field(None, description="Sort order applied")
|
|
73
|
+
offset: int = Field(0, description="Results offset")
|
|
74
|
+
limit: Optional[int] = Field(None, description="Results limit")
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class AuditQuery(BaseModel):
|
|
78
|
+
"""Query parameters for audit searches."""
|
|
79
|
+
|
|
80
|
+
# Time range
|
|
81
|
+
start_time: Optional[datetime] = Field(None, description="Start of time range")
|
|
82
|
+
end_time: Optional[datetime] = Field(None, description="End of time range")
|
|
83
|
+
|
|
84
|
+
# Filters
|
|
85
|
+
event_type: Optional[str] = Field(None, description="Filter by event type")
|
|
86
|
+
actor: Optional[str] = Field(None, description="Filter by actor")
|
|
87
|
+
entity_id: Optional[str] = Field(None, description="Filter by entity")
|
|
88
|
+
outcome: Optional[str] = Field(None, description="Filter by outcome")
|
|
89
|
+
severity: Optional[str] = Field(None, description="Filter by severity")
|
|
90
|
+
|
|
91
|
+
# Search
|
|
92
|
+
search_text: Optional[str] = Field(None, description="Text search in details")
|
|
93
|
+
|
|
94
|
+
# Results
|
|
95
|
+
order_by: str = Field("timestamp", description="Field to order by")
|
|
96
|
+
order_desc: bool = Field(True, description="Order descending")
|
|
97
|
+
limit: Optional[int] = Field(100, description="Maximum results")
|
|
98
|
+
offset: int = Field(0, description="Results offset")
|