ltcai 11.5.2 → 11.7.0
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.
- package/README.md +93 -148
- package/bin/ltcai.js +234 -24
- package/docs/CHANGELOG.md +119 -0
- package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
- package/docs/DEVELOPMENT.md +8 -6
- package/docs/ENTERPRISE.md +2 -1
- package/docs/MULTI_AGENT_RUNTIME.md +12 -5
- package/docs/ONBOARDING.md +1 -1
- package/docs/OPERATIONS.md +6 -3
- package/docs/REALTIME_COLLABORATION.md +1 -1
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +1 -1
- package/docs/WORKFLOW_DESIGNER.md +3 -2
- package/docs/kg-schema.md +1 -1
- package/docs/v11.6.0_ONE_DOOR_PLAN.md +170 -0
- package/lattice_brain/__init__.py +42 -79
- package/lattice_brain/graph/__init__.py +9 -24
- package/lattice_brain/graph/_kg_common/__init__.py +13 -24
- package/lattice_brain/ingestion/__init__.py +19 -58
- package/lattice_brain/ingestion/pipeline.py +20 -398
- package/lattice_brain/multimodal/__init__.py +7 -18
- package/lattice_brain/multimodal/images.py +6 -264
- package/lattice_brain/multimodal/video.py +8 -247
- package/lattice_brain/runtime/__init__.py +8 -79
- package/lattice_brain/runtime/hooks.py +22 -584
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/agent_worker_seam.py +7 -80
- package/latticeai/api/health.py +6 -20
- package/latticeai/api/local_files.py +16 -613
- package/latticeai/api/models.py +12 -87
- package/latticeai/api/search.py +17 -255
- package/latticeai/api/tools.py +69 -750
- package/latticeai/api/voice_capture.py +8 -70
- package/latticeai/api/worker_compute.py +842 -0
- package/latticeai/api/worker_seams.py +216 -0
- package/latticeai/app_factory.py +23 -232
- package/latticeai/cli/entrypoint.py +36 -249
- package/latticeai/core/agent_permission.py +16 -91
- package/latticeai/core/messages.py +89 -531
- package/latticeai/runtime/access_runtime.py +0 -14
- package/latticeai/runtime/bootstrap.py +10 -21
- package/latticeai/runtime/brain_runtime.py +35 -43
- package/latticeai/runtime/build_phases/__init__.py +21 -37
- package/latticeai/runtime/build_phases/features.py +99 -389
- package/latticeai/runtime/build_phases/foundation.py +82 -392
- package/latticeai/runtime/build_phases/web.py +91 -408
- package/latticeai/runtime/build_phases/worker_profile.py +244 -0
- package/latticeai/runtime/lifespan_runtime.py +7 -16
- package/latticeai/runtime/platform_services_runtime.py +1 -15
- package/latticeai/runtime/runtime_context.py +13 -130
- package/latticeai/runtime/security_runtime.py +10 -103
- package/latticeai/services/architecture_readiness.py +82 -43
- package/latticeai/services/model_runtime/__init__.py +2 -11
- package/latticeai/services/model_runtime/service.py +4 -28
- package/latticeai/services/p_reinforce.py +10 -261
- package/latticeai/services/product_readiness.py +31 -38
- package/latticeai/services/search_service.py +37 -795
- package/latticeai/services/tool_dispatch.py +30 -386
- package/latticeai/services/voice_capture.py +13 -107
- package/latticeai/tools/__init__.py +22 -49
- package/latticeai/tools/commands.py +0 -163
- package/latticeai/tools/computer.py +0 -39
- package/latticeai/tools/documents.py +1 -134
- package/latticeai/tools/filesystem.py +1 -247
- package/latticeai/tools/knowledge.py +1 -52
- package/latticeai/tools/local_files.py +0 -20
- package/latticeai/worker_app.py +75 -0
- package/package.json +2 -3
- package/requirements.txt +0 -5
- package/scripts/agent_eval.py +16 -28
- package/scripts/brain_quality_eval.py +20 -183
- package/scripts/bump_version.py +5 -5
- package/scripts/check_current_release_docs.mjs +7 -4
- package/scripts/check_openapi_drift.mjs +10 -0
- package/scripts/check_server_i18n.mjs +2 -18
- package/scripts/compose_openapi.py +377 -0
- package/scripts/export_openapi.py +32 -4
- package/scripts/gen_messages_catalog_fixture.py +302 -0
- package/scripts/gen_openapi_fragments.py +365 -0
- package/scripts/gen_redact_fixture.py +196 -0
- package/scripts/gen_worker_allowlist_fixture.py +115 -0
- package/scripts/generate_agent_parity_fixtures.py +33 -14
- package/scripts/openapi_route_families.json +2161 -0
- package/scripts/release_screen_claims.json +54 -0
- package/scripts/run_integration_tests.mjs +134 -29
- package/scripts/run_sidecar_e2e.mjs +104 -11
- package/scripts/wheel_smoke.py +32 -22
- package/src-tauri/Cargo.lock +375 -9
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/src/backend.rs +151 -45
- package/src-tauri/src/main.rs +18 -18
- package/src-tauri/src/topology.rs +58 -88
- package/src-tauri/tauri.conf.json +1 -2
- package/static/app/asset-manifest.json +41 -41
- package/static/app/assets/{Act-DcQizkl1.js → Act-BPcVAbOL.js} +1 -1
- package/static/app/assets/AdminConsole-Bw1ATQL0.js +1 -0
- package/static/app/assets/{Brain-3VCSHFcn.js → Brain-CT92Kos0.js} +2 -2
- package/static/app/assets/{BrainHome-Qm8eaztx.js → BrainHome-CFBkt1K_.js} +1 -1
- package/static/app/assets/{BrainSignals-DS9BtKOW.js → BrainSignals-ReLWF2H8.js} +1 -1
- package/static/app/assets/Capture-BsTokYkk.js +1 -0
- package/static/app/assets/{Chronicle-BGvuAchH.js → Chronicle-B6f0T9id.js} +1 -1
- package/static/app/assets/{CommandPalette-Bqhm0Urn.js → CommandPalette-CuvjTv1u.js} +1 -1
- package/static/app/assets/{Library-BV6NnF0a.js → Library-BGJbG9Hd.js} +1 -1
- package/static/app/assets/{LivingBrain-GzenJchP.js → LivingBrain-DGYK_Jsa.js} +1 -1
- package/static/app/assets/{ProductFlow-DEP6-vML.js → ProductFlow-DXBC6brE.js} +1 -1
- package/static/app/assets/{ReviewCard-CNZ7XjWG.js → ReviewCard-HXRle3qq.js} +2 -2
- package/static/app/assets/System-CMHSO9qM.js +1 -0
- package/static/app/assets/arrow-left-BfmkskWx.js +1 -0
- package/static/app/assets/{bot-B_K1Tdmw.js → bot-Cn8bWRuq.js} +1 -1
- package/static/app/assets/{brain-DWyaV1L1.js → brain-CQJberbE.js} +1 -1
- package/static/app/assets/{button-aTn4s84A.js → button-Ct9f2_oT.js} +1 -1
- package/static/app/assets/circle-check-DruOxB-4.js +1 -0
- package/static/app/assets/{circle-pause-xKgeGXkT.js → circle-pause-CmzC_apg.js} +1 -1
- package/static/app/assets/{circle-play-DkT6tYPX.js → circle-play-D8mW2aQ7.js} +1 -1
- package/static/app/assets/{cpu-85xYObUC.js → cpu-DZcdd0PZ.js} +1 -1
- package/static/app/assets/{download-B5Fm7YXo.js → download-bv1KEPGQ.js} +1 -1
- package/static/app/assets/{folder-open-kk2Xa52u.js → folder-open-d-Pip5gr.js} +1 -1
- package/static/app/assets/{hard-drive-DkA3zBW_.js → hard-drive-D20iavUb.js} +1 -1
- package/static/app/assets/index-D9x-kSNy.css +2 -0
- package/static/app/assets/{index-BMPdTmlY.js → index-Do83hDzJ.js} +3 -3
- package/static/app/assets/{input-B0nRf2jO.js → input-BLXVNmj1.js} +1 -1
- package/static/app/assets/{link-2-Dwb4gnTc.js → link-2-BPJOFlAy.js} +1 -1
- package/static/app/assets/{permissionCopy-CQDUBrOZ.js → permissionCopy-ChdJd493.js} +1 -1
- package/static/app/assets/primitives-Cv5tbZBY.js +1 -0
- package/static/app/assets/search-CT9aho2j.js +1 -0
- package/static/app/assets/{share-2-BsrxFglO.js → share-2-YNX_NtMU.js} +1 -1
- package/static/app/assets/{shield-alert-5BStfp2_.js → shield-alert-DuQ3zrVL.js} +1 -1
- package/static/app/assets/{textarea-Cg8IUA-k.js → textarea-DqwLnli4.js} +1 -1
- package/static/app/assets/{useFocusTrap-CYKvE46M.js → useFocusTrap-ZVI98jaW.js} +1 -1
- package/static/app/assets/{useMutation-CSn9t1op.js → useMutation-CVC4qv_D.js} +1 -1
- package/static/app/assets/{useQuery-CY2OI2uy.js → useQuery-C7BeG4HU.js} +1 -1
- package/static/app/assets/{utils-Ddol2RWD.js → utils-CiFtIdZq.js} +1 -1
- package/static/app/assets/{workspace-BqDwOz_p.js → workspace-DQz9vIId.js} +1 -1
- package/static/app/index.html +4 -4
- package/static/sw.js +1 -1
- package/lattice_brain/archive.py +0 -522
- package/lattice_brain/context.py +0 -325
- package/lattice_brain/conversations.py +0 -382
- package/lattice_brain/core.py +0 -82
- package/lattice_brain/graph/_kg_contract.py +0 -249
- package/lattice_brain/graph/curator.py +0 -676
- package/lattice_brain/graph/discovery.py +0 -595
- package/lattice_brain/graph/discovery_index/__init__.py +0 -35
- package/lattice_brain/graph/discovery_index/cleanup.py +0 -182
- package/lattice_brain/graph/discovery_index/extract.py +0 -137
- package/lattice_brain/graph/discovery_index/scan.py +0 -411
- package/lattice_brain/graph/discovery_index/upsert.py +0 -495
- package/lattice_brain/graph/documents.py +0 -380
- package/lattice_brain/graph/fusion.py +0 -395
- package/lattice_brain/graph/identity.py +0 -175
- package/lattice_brain/graph/image_vectors.py +0 -230
- package/lattice_brain/graph/ingest.py +0 -829
- package/lattice_brain/graph/network.py +0 -205
- package/lattice_brain/graph/proactive.py +0 -724
- package/lattice_brain/graph/projection/__init__.py +0 -42
- package/lattice_brain/graph/projection/curation.py +0 -500
- package/lattice_brain/graph/projection/v2_schema.py +0 -518
- package/lattice_brain/graph/provenance.py +0 -524
- package/lattice_brain/graph/rerank.py +0 -163
- package/lattice_brain/graph/retrieval/__init__.py +0 -54
- package/lattice_brain/graph/retrieval/context.py +0 -197
- package/lattice_brain/graph/retrieval/graph_view.py +0 -319
- package/lattice_brain/graph/retrieval/hybrid.py +0 -488
- package/lattice_brain/graph/retrieval/maintenance.py +0 -121
- package/lattice_brain/graph/retrieval/signals.py +0 -95
- package/lattice_brain/graph/retrieval_docgen.py +0 -253
- package/lattice_brain/graph/retrieval_policy.py +0 -180
- package/lattice_brain/graph/retrieval_reads.py +0 -769
- package/lattice_brain/graph/retrieval_vector/__init__.py +0 -42
- package/lattice_brain/graph/retrieval_vector/fingerprint.py +0 -97
- package/lattice_brain/graph/retrieval_vector/indexing.py +0 -347
- package/lattice_brain/graph/retrieval_vector/search.py +0 -560
- package/lattice_brain/graph/retrieval_vector/status.py +0 -374
- package/lattice_brain/graph/schema.py +0 -792
- package/lattice_brain/graph/store.py +0 -268
- package/lattice_brain/graph/vector_index/__init__.py +0 -85
- package/lattice_brain/graph/vector_index/base.py +0 -167
- package/lattice_brain/graph/vector_index/brute_force.py +0 -110
- package/lattice_brain/graph/vector_index/hnsw.py +0 -290
- package/lattice_brain/graph/vector_index/jobs.py +0 -287
- package/lattice_brain/graph/vector_index/quantized.py +0 -148
- package/lattice_brain/graph/vector_index/selector.py +0 -161
- package/lattice_brain/graph/write_master.py +0 -308
- package/lattice_brain/ingestion/_contract.py +0 -90
- package/lattice_brain/ingestion/folder_scan.py +0 -57
- package/lattice_brain/ingestion/folders.py +0 -258
- package/lattice_brain/ingestion/jobs_api.py +0 -107
- package/lattice_brain/ingestion/routing.py +0 -295
- package/lattice_brain/ingestion_jobs.py +0 -380
- package/lattice_brain/memory.py +0 -75
- package/lattice_brain/portability/__init__.py +0 -90
- package/lattice_brain/portability/_contract.py +0 -42
- package/lattice_brain/portability/backups.py +0 -338
- package/lattice_brain/portability/bundles.py +0 -136
- package/lattice_brain/portability/constants.py +0 -93
- package/lattice_brain/portability/fsops.py +0 -138
- package/lattice_brain/portability/service.py +0 -41
- package/lattice_brain/portability/sharing.py +0 -710
- package/lattice_brain/quality.py +0 -543
- package/lattice_brain/retrieval_benchmark_fixtures.py +0 -92
- package/lattice_brain/runtime/agent_runtime.py +0 -859
- package/lattice_brain/runtime/contracts.py +0 -460
- package/lattice_brain/runtime/multi_agent.py +0 -942
- package/lattice_brain/runtime/statuses.py +0 -10
- package/lattice_brain/sealed_box.py +0 -240
- package/lattice_brain/self_model.py +0 -675
- package/lattice_brain/sensitivity.py +0 -94
- package/lattice_brain/storage/__init__.py +0 -22
- package/lattice_brain/storage/base.py +0 -100
- package/lattice_brain/storage/docker.py +0 -105
- package/lattice_brain/storage/factory.py +0 -31
- package/lattice_brain/storage/migration.py +0 -191
- package/lattice_brain/storage/postgres.py +0 -123
- package/lattice_brain/storage/sqlite.py +0 -143
- package/lattice_brain/synthesis.py +0 -824
- package/lattice_brain/workflow.py +0 -497
- package/latticeai/api/admin.py +0 -471
- package/latticeai/api/agent_registry.py +0 -105
- package/latticeai/api/agents.py +0 -228
- package/latticeai/api/auth.py +0 -383
- package/latticeai/api/automation_intelligence.py +0 -401
- package/latticeai/api/brain_intelligence.py +0 -199
- package/latticeai/api/browser.py +0 -493
- package/latticeai/api/change_proposals.py +0 -89
- package/latticeai/api/chat.py +0 -572
- package/latticeai/api/chat_agent_http.py +0 -892
- package/latticeai/api/chat_contracts.py +0 -73
- package/latticeai/api/chat_documents.py +0 -276
- package/latticeai/api/chat_helpers.py +0 -460
- package/latticeai/api/chat_history.py +0 -101
- package/latticeai/api/chat_hybrid.py +0 -113
- package/latticeai/api/chat_intents.py +0 -646
- package/latticeai/api/chat_stream.py +0 -216
- package/latticeai/api/chronicle.py +0 -63
- package/latticeai/api/command_center.py +0 -51
- package/latticeai/api/computer_use.py +0 -474
- package/latticeai/api/evidence_actions.py +0 -48
- package/latticeai/api/features.py +0 -70
- package/latticeai/api/funnel_metrics.py +0 -31
- package/latticeai/api/garden.py +0 -34
- package/latticeai/api/hooks.py +0 -165
- package/latticeai/api/index_jobs.py +0 -145
- package/latticeai/api/invitations.py +0 -100
- package/latticeai/api/knowledge_graph.py +0 -536
- package/latticeai/api/marketplace.py +0 -105
- package/latticeai/api/mcp.py +0 -482
- package/latticeai/api/memory.py +0 -270
- package/latticeai/api/network.py +0 -81
- package/latticeai/api/network_boundary.py +0 -225
- package/latticeai/api/permission_mode.py +0 -61
- package/latticeai/api/permissions.py +0 -436
- package/latticeai/api/plugins.py +0 -126
- package/latticeai/api/portability.py +0 -391
- package/latticeai/api/project_sessions.py +0 -114
- package/latticeai/api/realtime.py +0 -118
- package/latticeai/api/review_queue.py +0 -364
- package/latticeai/api/security_dashboard.py +0 -604
- package/latticeai/api/setup.py +0 -319
- package/latticeai/api/static_routes.py +0 -354
- package/latticeai/api/ui_redirects.py +0 -26
- package/latticeai/api/workflow_designer.py +0 -394
- package/latticeai/api/workspace.py +0 -856
- package/latticeai/api/workspace_scope.py +0 -125
- package/latticeai/core/agent/__init__.py +0 -93
- package/latticeai/core/agent/_contract.py +0 -79
- package/latticeai/core/agent/context.py +0 -57
- package/latticeai/core/agent/deps.py +0 -125
- package/latticeai/core/agent/execution.py +0 -622
- package/latticeai/core/agent/planning.py +0 -145
- package/latticeai/core/agent/recovery.py +0 -157
- package/latticeai/core/agent/runtime.py +0 -210
- package/latticeai/core/agent/verification.py +0 -231
- package/latticeai/core/agent_eval.py +0 -739
- package/latticeai/core/agent_helpers.py +0 -493
- package/latticeai/core/agent_profiles.py +0 -110
- package/latticeai/core/agent_prompts.py +0 -171
- package/latticeai/core/agent_registry.py +0 -232
- package/latticeai/core/agent_state.py +0 -41
- package/latticeai/core/agent_trace.py +0 -104
- package/latticeai/core/artifact_ledger.py +0 -109
- package/latticeai/core/audit.py +0 -260
- package/latticeai/core/builtin_hooks.py +0 -105
- package/latticeai/core/context_builder.py +0 -394
- package/latticeai/core/document_generator.py +0 -103
- package/latticeai/core/enterprise.py +0 -154
- package/latticeai/core/enterprise_admin.py +0 -158
- package/latticeai/core/file_generation/__init__.py +0 -115
- package/latticeai/core/file_generation/bundles.py +0 -76
- package/latticeai/core/file_generation/extraction.py +0 -154
- package/latticeai/core/file_generation/inference.py +0 -235
- package/latticeai/core/file_generation/orchestration.py +0 -152
- package/latticeai/core/file_generation/prompting.py +0 -117
- package/latticeai/core/file_generation/repair.py +0 -114
- package/latticeai/core/file_generation/sanitize.py +0 -61
- package/latticeai/core/file_generation/validation.py +0 -201
- package/latticeai/core/invitations.py +0 -132
- package/latticeai/core/legacy_compatibility.py +0 -243
- package/latticeai/core/logging_safety.py +0 -46
- package/latticeai/core/marketplace.py +0 -293
- package/latticeai/core/mcp_catalog.py +0 -452
- package/latticeai/core/mcp_registry.py +0 -506
- package/latticeai/core/network_boundary.py +0 -168
- package/latticeai/core/oidc.py +0 -208
- package/latticeai/core/plugins.py +0 -432
- package/latticeai/core/product_hardening.py +0 -218
- package/latticeai/core/project_sessions.py +0 -337
- package/latticeai/core/realtime.py +0 -238
- package/latticeai/core/run_explain.py +0 -426
- package/latticeai/core/run_store.py +0 -252
- package/latticeai/core/timezones.py +0 -80
- package/latticeai/core/workspace_computer_memory.py +0 -84
- package/latticeai/core/workspace_graph_trace.py +0 -155
- package/latticeai/core/workspace_indexing.py +0 -102
- package/latticeai/core/workspace_memory.py +0 -77
- package/latticeai/core/workspace_onboarding.py +0 -104
- package/latticeai/core/workspace_os.py +0 -978
- package/latticeai/core/workspace_os_constants.py +0 -126
- package/latticeai/core/workspace_os_state.py +0 -180
- package/latticeai/core/workspace_os_utils.py +0 -103
- package/latticeai/core/workspace_permissions.py +0 -101
- package/latticeai/core/workspace_plugins.py +0 -97
- package/latticeai/core/workspace_relationships.py +0 -99
- package/latticeai/core/workspace_reorganization.py +0 -335
- package/latticeai/core/workspace_review_items.py +0 -112
- package/latticeai/core/workspace_runs.py +0 -726
- package/latticeai/core/workspace_skills.py +0 -109
- package/latticeai/core/workspace_snapshots.py +0 -198
- package/latticeai/core/workspace_timeline.py +0 -110
- package/latticeai/integrations/__init__.py +0 -0
- package/latticeai/integrations/telegram_bot/__init__.py +0 -123
- package/latticeai/integrations/telegram_bot/__main__.py +0 -17
- package/latticeai/integrations/telegram_bot/config.py +0 -86
- package/latticeai/integrations/telegram_bot/dispatch.py +0 -311
- package/latticeai/integrations/telegram_bot/flows.py +0 -478
- package/latticeai/integrations/telegram_bot/helpers.py +0 -322
- package/latticeai/integrations/telegram_bot/screens.py +0 -394
- package/latticeai/runtime/audit_runtime.py +0 -76
- package/latticeai/runtime/automation_runtime.py +0 -81
- package/latticeai/runtime/chat_wiring.py +0 -141
- package/latticeai/runtime/context_runtime.py +0 -66
- package/latticeai/runtime/feature_toggle_wiring.py +0 -157
- package/latticeai/runtime/history_runtime.py +0 -163
- package/latticeai/runtime/history_writer.py +0 -138
- package/latticeai/runtime/hooks_runtime.py +0 -77
- package/latticeai/runtime/model_wiring.py +0 -68
- package/latticeai/runtime/namespace_runtime.py +0 -163
- package/latticeai/runtime/network_boundary_wiring.py +0 -117
- package/latticeai/runtime/network_config_runtime.py +0 -56
- package/latticeai/runtime/permission_mode_wiring.py +0 -112
- package/latticeai/runtime/persistence_runtime.py +0 -159
- package/latticeai/runtime/platform_runtime_wiring.py +0 -89
- package/latticeai/runtime/review_wiring.py +0 -42
- package/latticeai/runtime/router_registration.py +0 -693
- package/latticeai/runtime/service_singletons.py +0 -55
- package/latticeai/runtime/sso_config_runtime.py +0 -128
- package/latticeai/runtime/user_key_runtime.py +0 -106
- package/latticeai/runtime/web_runtime.py +0 -92
- package/latticeai/server_app.py +0 -51
- package/latticeai/services/app_context.py +0 -130
- package/latticeai/services/automation_execution.py +0 -266
- package/latticeai/services/automation_intelligence.py +0 -614
- package/latticeai/services/brain_automation.py +0 -191
- package/latticeai/services/brain_intelligence/__init__.py +0 -58
- package/latticeai/services/brain_intelligence/_contract.py +0 -71
- package/latticeai/services/brain_intelligence/consistency.py +0 -193
- package/latticeai/services/brain_intelligence/constants.py +0 -47
- package/latticeai/services/brain_intelligence/digest.py +0 -258
- package/latticeai/services/brain_intelligence/health.py +0 -331
- package/latticeai/services/brain_intelligence/proposals.py +0 -259
- package/latticeai/services/brain_intelligence/sampling.py +0 -84
- package/latticeai/services/brain_intelligence/service.py +0 -48
- package/latticeai/services/change_proposals.py +0 -471
- package/latticeai/services/chat_service.py +0 -243
- package/latticeai/services/chronicle.py +0 -555
- package/latticeai/services/cloud_egress_audit.py +0 -85
- package/latticeai/services/cloud_extraction.py +0 -129
- package/latticeai/services/cloud_streaming.py +0 -268
- package/latticeai/services/cloud_token_guard.py +0 -84
- package/latticeai/services/command_center.py +0 -548
- package/latticeai/services/evidence_actions.py +0 -258
- package/latticeai/services/feature_toggles.py +0 -502
- package/latticeai/services/folder_watch.py +0 -520
- package/latticeai/services/funnel_metrics.py +0 -307
- package/latticeai/services/hybrid_chat.py +0 -316
- package/latticeai/services/hybrid_context.py +0 -228
- package/latticeai/services/hybrid_policy.py +0 -129
- package/latticeai/services/interop_bridges.py +0 -978
- package/latticeai/services/local_knowledge.py +0 -465
- package/latticeai/services/memory_service/__init__.py +0 -52
- package/latticeai/services/memory_service/_contract.py +0 -100
- package/latticeai/services/memory_service/brief.py +0 -431
- package/latticeai/services/memory_service/constants.py +0 -57
- package/latticeai/services/memory_service/maintenance.py +0 -138
- package/latticeai/services/memory_service/manager.py +0 -186
- package/latticeai/services/memory_service/proof.py +0 -136
- package/latticeai/services/memory_service/recall.py +0 -225
- package/latticeai/services/memory_service/service.py +0 -48
- package/latticeai/services/memory_service/stores.py +0 -110
- package/latticeai/services/mode_store.py +0 -132
- package/latticeai/services/model_recommendation.py +0 -224
- package/latticeai/services/model_runtime/cloud.py +0 -87
- package/latticeai/services/network_boundary_service.py +0 -117
- package/latticeai/services/obsidian_bridge.py +0 -609
- package/latticeai/services/openai_compatible_adapter.py +0 -101
- package/latticeai/services/permission_mode_service.py +0 -122
- package/latticeai/services/platform_runtime.py +0 -366
- package/latticeai/services/review_queue.py +0 -380
- package/latticeai/services/router_context.py +0 -59
- package/latticeai/services/run_executor.py +0 -387
- package/latticeai/services/self_model_service.py +0 -171
- package/latticeai/services/setup_detection.py +0 -147
- package/latticeai/services/triggers.py +0 -378
- package/latticeai/services/upload_service.py +0 -172
- package/latticeai/services/workspace_service.py +0 -165
- package/latticeai/setup/__init__.py +0 -25
- package/latticeai/setup/auto_setup.py +0 -846
- package/latticeai/setup/demo_corpus.py +0 -98
- package/latticeai/setup/wizard/__init__.py +0 -126
- package/latticeai/setup/wizard/catalog.py +0 -175
- package/latticeai/setup/wizard/detect.py +0 -302
- package/latticeai/setup/wizard/install.py +0 -348
- package/latticeai/setup/wizard/paths.py +0 -165
- package/latticeai/setup/wizard/plans.py +0 -74
- package/latticeai/setup/wizard/recommend.py +0 -320
- package/scripts/bench_agent_smoke.py +0 -409
- package/scripts/bench_models.py +0 -540
- package/scripts/bench_vector_index.py +0 -295
- package/scripts/funnel_soft_gate.py +0 -192
- package/scripts/generate_agent_loop_fixtures.py +0 -994
- package/scripts/generate_rust_parity_fixtures.py +0 -908
- package/scripts/migrate_brain_storage.py +0 -57
- package/scripts/parity_fixture_corpus_context.py +0 -162
- package/scripts/parity_fixture_corpus_docgen.py +0 -341
- package/scripts/profile_kg.py +0 -355
- package/server.py +0 -30
- package/static/app/assets/AdminConsole-cf4npybT.js +0 -1
- package/static/app/assets/Capture-DiQ219jW.js +0 -1
- package/static/app/assets/System-CieofHQa.js +0 -1
- package/static/app/assets/arrow-left-kfsrk0mv.js +0 -1
- package/static/app/assets/circle-check-qqLug9nU.js +0 -1
- package/static/app/assets/index-DxmOfNRi.css +0 -2
- package/static/app/assets/primitives-SNp0LRJz.js +0 -1
- package/static/app/assets/search-BcHqkjoy.js +0 -1
|
@@ -1,322 +1,47 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Phase 7 of the AI-Worker build: the compute routers.
|
|
2
2
|
|
|
3
|
-
The tail of the build order — everything that mounts
|
|
4
|
-
application.
|
|
3
|
+
The tail of the build order — everything that mounts a router on the finished
|
|
4
|
+
application. WP-P1 replaced two phases (``platform_features`` and
|
|
5
|
+
``interaction``, ~34 product routers between them) with this one, because the
|
|
6
|
+
worker mounts six things:
|
|
7
|
+
|
|
8
|
+
* ``/health`` — the posture the supervisor gates on;
|
|
9
|
+
* the MLX model lifecycle (``/models*``, ``/engines/*``);
|
|
10
|
+
* the embedder report (``/api/embeddings/{status,providers}``);
|
|
11
|
+
* the document parser (``POST /tools/read_document``, ``GET /tools/pdf_pages``);
|
|
12
|
+
* the two capability probes (``/api/ingestion/multimodal``,
|
|
13
|
+
``/api/capture/voice/status``);
|
|
14
|
+
* the Rust loop's seam (``POST /agent/llm``, ``POST /agent/tool``).
|
|
15
|
+
|
|
16
|
+
The ``/worker/*`` seams are not here: they are mounted by
|
|
17
|
+
:func:`~latticeai.runtime.build_phases.worker_profile.phase_worker_routes`,
|
|
18
|
+
which runs after this phase and is the module that owns the worker contract.
|
|
5
19
|
|
|
6
20
|
Every heavy import lives *inside* a phase, never at module scope.
|
|
7
21
|
"""
|
|
8
22
|
|
|
9
23
|
from __future__ import annotations
|
|
10
24
|
|
|
25
|
+
from typing import Any, Dict
|
|
26
|
+
|
|
11
27
|
from latticeai.runtime.runtime_context import RuntimeContext
|
|
12
28
|
|
|
13
29
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
ctx.enter("platform_features")
|
|
30
|
+
def phase_features(ctx: RuntimeContext) -> None:
|
|
31
|
+
"""Mount the worker's compute routers on the application object."""
|
|
32
|
+
ctx.enter("features")
|
|
18
33
|
|
|
19
34
|
from latticeai.api.agent_worker_seam import create_agent_worker_seam_router
|
|
20
|
-
from latticeai.api.agents import create_agents_router
|
|
21
|
-
from latticeai.api.automation_intelligence import (
|
|
22
|
-
create_automation_intelligence_router,
|
|
23
|
-
)
|
|
24
|
-
from latticeai.api.change_proposals import create_change_proposals_router
|
|
25
|
-
from latticeai.api.chronicle import create_chronicle_router
|
|
26
|
-
from latticeai.api.command_center import create_command_center_router
|
|
27
|
-
from latticeai.api.evidence_actions import create_evidence_actions_router
|
|
28
|
-
from latticeai.api.funnel_metrics import create_funnel_metrics_router
|
|
29
|
-
from latticeai.api.index_jobs import create_index_jobs_router
|
|
30
|
-
from latticeai.api.marketplace import create_marketplace_router
|
|
31
|
-
from latticeai.api.plugins import create_plugins_router
|
|
32
|
-
from latticeai.api.project_sessions import create_project_sessions_router
|
|
33
|
-
from latticeai.api.realtime import create_realtime_router
|
|
34
|
-
from latticeai.api.voice_capture import create_voice_capture_router
|
|
35
|
-
from latticeai.api.workflow_designer import create_workflow_designer_router
|
|
36
|
-
from latticeai.api.workspace import _workspace_scope_from_request
|
|
37
|
-
from latticeai.core.project_sessions import ProjectSessionStore
|
|
38
|
-
from latticeai.runtime.hooks_runtime import (
|
|
39
|
-
bind_builtin_hook_runners,
|
|
40
|
-
bind_trigger_hook_runner,
|
|
41
|
-
)
|
|
42
|
-
from latticeai.runtime.platform_runtime_wiring import (
|
|
43
|
-
build_platform_automation_runtime,
|
|
44
|
-
)
|
|
45
|
-
from latticeai.runtime.router_registration import (
|
|
46
|
-
register_platform_feature_routers,
|
|
47
|
-
)
|
|
48
|
-
from latticeai.services.change_proposals import ChangeProposalService
|
|
49
|
-
from latticeai.services.chronicle import ChronicleService
|
|
50
|
-
from latticeai.services.command_center import CommandCenterService
|
|
51
|
-
from latticeai.services.evidence_actions import EvidenceActionService
|
|
52
|
-
from latticeai.services.tool_dispatch import (
|
|
53
|
-
DEFAULT_TOOL_DISPATCH_SERVICE,
|
|
54
|
-
get_tool_permission,
|
|
55
|
-
)
|
|
56
|
-
from latticeai.services.voice_capture import VoiceCaptureService
|
|
57
|
-
from latticeai.tools import execute_tool, resolve_workspace_path
|
|
58
|
-
|
|
59
|
-
# v2 Agentic Workspace Platform: cross-system wiring.
|
|
60
|
-
platform_automation_runtime = build_platform_automation_runtime(
|
|
61
|
-
model_router=ctx.model_router,
|
|
62
|
-
workspace_store=ctx.WORKSPACE_OS,
|
|
63
|
-
workspace_service=ctx.WORKSPACE_SERVICE,
|
|
64
|
-
plugin_registry=ctx.PLUGIN_REGISTRY,
|
|
65
|
-
get_current_user=ctx.get_current_user,
|
|
66
|
-
workspace_graph=ctx._workspace_graph,
|
|
67
|
-
workspace_scope_from_request=_workspace_scope_from_request,
|
|
68
|
-
get_tool_permission=get_tool_permission,
|
|
69
|
-
hooks=ctx.HOOKS_REGISTRY,
|
|
70
|
-
agent_registry=ctx.AGENT_REGISTRY,
|
|
71
|
-
data_dir=ctx.DATA_DIR,
|
|
72
|
-
append_audit_event=ctx.append_audit_event,
|
|
73
|
-
memory_service=ctx.MEMORY_SERVICE,
|
|
74
|
-
tz_name=getattr(ctx.CONFIG, "timezone", None),
|
|
75
|
-
)
|
|
76
|
-
ctx.adopt(
|
|
77
|
-
platform_automation_runtime,
|
|
78
|
-
"_llm_generate_sync",
|
|
79
|
-
"PLATFORM",
|
|
80
|
-
"_automation_runtime",
|
|
81
|
-
"REVIEW_QUEUE",
|
|
82
|
-
"TRIGGER_SERVICE",
|
|
83
|
-
"AGENT_RUNTIME",
|
|
84
|
-
"RUN_EXECUTOR",
|
|
85
|
-
)
|
|
86
|
-
bind_trigger_hook_runner(
|
|
87
|
-
registry=ctx.HOOKS_REGISTRY, trigger_service=ctx.TRIGGER_SERVICE
|
|
88
|
-
)
|
|
89
|
-
ctx.app.state.run_executor = ctx.RUN_EXECUTOR
|
|
90
|
-
ctx.app.state.run_reconciliation = ctx.RUN_EXECUTOR.reconcile_startup()
|
|
91
|
-
ctx.TRIGGER_SERVICE.start()
|
|
92
|
-
|
|
93
|
-
bind_builtin_hook_runners(
|
|
94
|
-
registry=ctx.HOOKS_REGISTRY,
|
|
95
|
-
append_audit_event=ctx.append_audit_event,
|
|
96
|
-
get_tool_permission=get_tool_permission,
|
|
97
|
-
classify_sensitive_message=ctx.classify_sensitive_message,
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
register_platform_feature_routers(
|
|
101
|
-
ctx.app,
|
|
102
|
-
create_plugins_router=create_plugins_router,
|
|
103
|
-
plugin_registry=ctx.PLUGIN_REGISTRY,
|
|
104
|
-
require_user=ctx.require_user,
|
|
105
|
-
require_admin=ctx.require_admin,
|
|
106
|
-
append_audit_event=ctx.append_audit_event,
|
|
107
|
-
platform=ctx.PLATFORM,
|
|
108
|
-
ui_file_response=ctx.ui_file_response,
|
|
109
|
-
static_dir=ctx.STATIC_DIR,
|
|
110
|
-
create_workflow_designer_router=create_workflow_designer_router,
|
|
111
|
-
store=ctx.WORKSPACE_OS,
|
|
112
|
-
get_current_user=ctx.get_current_user,
|
|
113
|
-
workspace_graph=ctx._workspace_graph,
|
|
114
|
-
hooks=ctx.HOOKS_REGISTRY,
|
|
115
|
-
run_executor=ctx.RUN_EXECUTOR,
|
|
116
|
-
trigger_service=ctx.TRIGGER_SERVICE,
|
|
117
|
-
create_agents_router=create_agents_router,
|
|
118
|
-
agent_runtime=ctx.AGENT_RUNTIME,
|
|
119
|
-
create_marketplace_router=create_marketplace_router,
|
|
120
|
-
template_catalog=ctx.TEMPLATE_CATALOG,
|
|
121
|
-
create_realtime_router=create_realtime_router,
|
|
122
|
-
realtime_bus=ctx.REALTIME_BUS,
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
ctx.app.include_router(
|
|
126
|
-
create_automation_intelligence_router(
|
|
127
|
-
service=ctx.AUTOMATION_INTELLIGENCE,
|
|
128
|
-
store=ctx.WORKSPACE_OS,
|
|
129
|
-
require_user=ctx.require_user,
|
|
130
|
-
gate_read=ctx.PLATFORM.gate_read,
|
|
131
|
-
gate_write=ctx.PLATFORM.gate_write,
|
|
132
|
-
append_audit_event=ctx.append_audit_event,
|
|
133
|
-
workspace_graph=ctx._workspace_graph,
|
|
134
|
-
run_executor=ctx.RUN_EXECUTOR,
|
|
135
|
-
review_queue=ctx.REVIEW_QUEUE,
|
|
136
|
-
)
|
|
137
|
-
)
|
|
138
|
-
# UX funnel metrics (backlog #16): admin-only runtime counters.
|
|
139
|
-
ctx.app.include_router(
|
|
140
|
-
create_funnel_metrics_router(
|
|
141
|
-
service=ctx.FUNNEL_METRICS,
|
|
142
|
-
require_admin=ctx.require_admin,
|
|
143
|
-
)
|
|
144
|
-
)
|
|
145
|
-
|
|
146
|
-
ctx.set(
|
|
147
|
-
COMMAND_CENTER=CommandCenterService(
|
|
148
|
-
conversation_store=ctx.CONVERSATIONS,
|
|
149
|
-
knowledge_graph=ctx.KNOWLEDGE_GRAPH,
|
|
150
|
-
store=ctx.WORKSPACE_OS,
|
|
151
|
-
search_service=ctx.SEARCH_SERVICE,
|
|
152
|
-
brain_intelligence=ctx.BRAIN_INTELLIGENCE,
|
|
153
|
-
automation_intelligence=ctx.AUTOMATION_INTELLIGENCE,
|
|
154
|
-
review_queue=ctx.REVIEW_QUEUE,
|
|
155
|
-
enable_graph=ctx.ENABLE_GRAPH,
|
|
156
|
-
)
|
|
157
|
-
)
|
|
158
|
-
ctx.app.include_router(
|
|
159
|
-
create_command_center_router(
|
|
160
|
-
service=ctx.COMMAND_CENTER,
|
|
161
|
-
require_user=ctx.require_user,
|
|
162
|
-
gate_read=ctx.PLATFORM.gate_read,
|
|
163
|
-
)
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
# Brain Chronicle (v11.3.0): the bitemporal columns v11.1.0 started
|
|
167
|
-
# writing, read back as a timeline. Pure reads over the Brain's own
|
|
168
|
-
# storage — no schema of its own, nothing to write, nothing to migrate.
|
|
169
|
-
ctx.set(
|
|
170
|
-
CHRONICLE=ChronicleService(
|
|
171
|
-
knowledge_graph=ctx.KNOWLEDGE_GRAPH,
|
|
172
|
-
conversations=ctx.CONVERSATIONS,
|
|
173
|
-
enable_graph=ctx.ENABLE_GRAPH,
|
|
174
|
-
)
|
|
175
|
-
)
|
|
176
|
-
ctx.app.include_router(
|
|
177
|
-
create_chronicle_router(
|
|
178
|
-
service=ctx.CHRONICLE,
|
|
179
|
-
require_user=ctx.require_user,
|
|
180
|
-
gate_read=ctx.PLATFORM.gate_read,
|
|
181
|
-
)
|
|
182
|
-
)
|
|
183
|
-
|
|
184
|
-
# Index jobs (v11.5.0): the embed backlog has been durable since 11.1.0 and
|
|
185
|
-
# had no trigger — the only drain was a pipeline method no scheduler could
|
|
186
|
-
# reach. This is the HTTP surface lattice-jobs ticks.
|
|
187
|
-
ctx.app.include_router(
|
|
188
|
-
create_index_jobs_router(
|
|
189
|
-
pipeline=ctx.INGESTION_PIPELINE if ctx.ENABLE_GRAPH else None,
|
|
190
|
-
knowledge_graph=ctx.KNOWLEDGE_GRAPH if ctx.ENABLE_GRAPH else None,
|
|
191
|
-
require_user=ctx.require_user,
|
|
192
|
-
gate_read=ctx.PLATFORM.gate_read,
|
|
193
|
-
gate_write=ctx.PLATFORM.gate_write,
|
|
194
|
-
)
|
|
195
|
-
)
|
|
196
|
-
|
|
197
|
-
ctx.set(
|
|
198
|
-
CHANGE_PROPOSALS=ChangeProposalService(
|
|
199
|
-
review_queue=ctx.REVIEW_QUEUE,
|
|
200
|
-
resolve_path=resolve_workspace_path,
|
|
201
|
-
audit=ctx.append_audit_event,
|
|
202
|
-
)
|
|
203
|
-
)
|
|
204
|
-
# Proposal-first mutations: the agent loop consults the governor so
|
|
205
|
-
# additive creates run with minimal friction while changes and deletions
|
|
206
|
-
# of existing files are staged for review instead of applied.
|
|
207
|
-
ctx.CHAT_AGENT_RUNTIME.deps.change_governor = ctx.CHANGE_PROPOSALS
|
|
208
|
-
ctx.app.include_router(
|
|
209
|
-
create_change_proposals_router(
|
|
210
|
-
service=ctx.CHANGE_PROPOSALS,
|
|
211
|
-
require_user=ctx.require_user,
|
|
212
|
-
gate_read=ctx.PLATFORM.gate_read,
|
|
213
|
-
gate_write=ctx.PLATFORM.gate_write,
|
|
214
|
-
)
|
|
215
|
-
)
|
|
216
|
-
|
|
217
|
-
# AI-Worker seam (v11.5.1, plan §Y1): the three calls the Rust agent loop
|
|
218
|
-
# makes back into Python once orchestration lives in ``lattice-agent``.
|
|
219
|
-
# Registered here because it needs the change governor above; the two
|
|
220
|
-
# side-effecting routes stay behind ``LATTICEAI_AGENT_TOOL_SEAM=1``, which
|
|
221
|
-
# only lattice-host injects into a worker it started.
|
|
222
|
-
ctx.app.include_router(
|
|
223
|
-
create_agent_worker_seam_router(
|
|
224
|
-
model_router=ctx.model_router,
|
|
225
|
-
dispatch_service=DEFAULT_TOOL_DISPATCH_SERVICE,
|
|
226
|
-
execute_tool=execute_tool,
|
|
227
|
-
hooks=ctx.HOOKS_REGISTRY,
|
|
228
|
-
change_proposals=ctx.CHANGE_PROPOSALS,
|
|
229
|
-
require_user=ctx.require_user,
|
|
230
|
-
enforce_rate_limit=ctx.enforce_rate_limit,
|
|
231
|
-
)
|
|
232
|
-
)
|
|
233
|
-
|
|
234
|
-
# Evidence → action (v9.9.6): an answer's citations become ready-to-send,
|
|
235
|
-
# evidence-scoped follow-ups. Deterministic composition only — execution
|
|
236
|
-
# stays on the chat/file-generation path.
|
|
237
|
-
ctx.set(
|
|
238
|
-
EVIDENCE_ACTIONS_SERVICE=EvidenceActionService(
|
|
239
|
-
node_reader=getattr(ctx.KNOWLEDGE_GRAPH, "get_node", None)
|
|
240
|
-
)
|
|
241
|
-
)
|
|
242
|
-
ctx.app.include_router(
|
|
243
|
-
create_evidence_actions_router(
|
|
244
|
-
service=ctx.EVIDENCE_ACTIONS_SERVICE,
|
|
245
|
-
require_user=ctx.require_user,
|
|
246
|
-
allowed_workspaces_for=ctx._allowed_workspaces_for,
|
|
247
|
-
)
|
|
248
|
-
)
|
|
249
|
-
|
|
250
|
-
# Voice memo capture (v9.9.7): the shortest path from a thought to the
|
|
251
|
-
# Brain. Transcription is an optional local port — absent, the memo is
|
|
252
|
-
# still stored and the response says it is not searchable. v11.1.0 shares
|
|
253
|
-
# that one port with multi-modal ingestion, so a memo and a scanned
|
|
254
|
-
# recording can never disagree about whether this machine can hear.
|
|
255
|
-
ctx.set(
|
|
256
|
-
VOICE_CAPTURE=VoiceCaptureService(
|
|
257
|
-
pipeline=ctx.INGESTION_PIPELINE if ctx.ENABLE_GRAPH else None,
|
|
258
|
-
transcriber=ctx.MULTIMODAL_PORTS.transcriber,
|
|
259
|
-
)
|
|
260
|
-
)
|
|
261
|
-
ctx.app.include_router(
|
|
262
|
-
create_voice_capture_router(
|
|
263
|
-
service=ctx.VOICE_CAPTURE,
|
|
264
|
-
require_user=ctx.require_user,
|
|
265
|
-
gate_write=ctx.PLATFORM.gate_write,
|
|
266
|
-
append_audit_event=ctx.append_audit_event,
|
|
267
|
-
)
|
|
268
|
-
)
|
|
269
|
-
|
|
270
|
-
# Multi-turn project loop (v9.9.6): work spanning several runs keeps its
|
|
271
|
-
# files, open TODOs, and last honest verification in one project session.
|
|
272
|
-
ctx.set(PROJECT_SESSIONS=ProjectSessionStore(ctx.DATA_DIR / "project_sessions"))
|
|
273
|
-
ctx.app.include_router(
|
|
274
|
-
create_project_sessions_router(
|
|
275
|
-
store=ctx.PROJECT_SESSIONS,
|
|
276
|
-
require_user=ctx.require_user,
|
|
277
|
-
gate_read=ctx.PLATFORM.gate_read,
|
|
278
|
-
gate_write=ctx.PLATFORM.gate_write,
|
|
279
|
-
)
|
|
280
|
-
)
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
# ── phase 8: interaction routers ─────────────────────────────────────────────
|
|
284
|
-
def phase_interaction(ctx: RuntimeContext) -> None:
|
|
285
|
-
"""Model, chat, search, tools, hooks, memory and brain tail routers."""
|
|
286
|
-
ctx.enter("interaction")
|
|
287
|
-
|
|
288
|
-
from fastapi import HTTPException
|
|
289
|
-
|
|
290
|
-
from latticeai.api.agent_registry import create_agent_registry_router
|
|
291
|
-
from latticeai.api.brain_intelligence import create_brain_intelligence_router
|
|
292
|
-
from latticeai.api.browser import create_browser_router
|
|
293
|
-
from latticeai.api.chat import create_chat_router
|
|
294
|
-
from latticeai.api.garden import create_garden_router
|
|
295
35
|
from latticeai.api.health import create_health_router
|
|
296
|
-
from latticeai.api.
|
|
297
|
-
from latticeai.api.memory import create_memory_router
|
|
36
|
+
from latticeai.api.local_files import create_local_files_router
|
|
298
37
|
from latticeai.api.models import create_models_router
|
|
299
|
-
from latticeai.api.network import create_network_router
|
|
300
|
-
from latticeai.api.portability import create_portability_router
|
|
301
|
-
from latticeai.api.review_queue import create_review_queue_router
|
|
302
38
|
from latticeai.api.search import create_search_router
|
|
303
|
-
from latticeai.api.setup import create_setup_router
|
|
304
39
|
from latticeai.api.tools import create_tools_router
|
|
305
|
-
from latticeai.
|
|
306
|
-
|
|
307
|
-
)
|
|
40
|
+
from latticeai.api.voice_capture import create_voice_capture_router
|
|
41
|
+
from latticeai.core.model_compat import list_cached_profiles
|
|
308
42
|
from latticeai.runtime.access_runtime import is_externally_reachable
|
|
309
|
-
from latticeai.runtime.
|
|
310
|
-
from latticeai.runtime.model_wiring import register_model_runtime_routers
|
|
311
|
-
from latticeai.runtime.platform_services_runtime import build_brain_network
|
|
312
|
-
from latticeai.runtime.review_wiring import build_review_run_now_runner
|
|
313
|
-
from latticeai.runtime.router_registration import (
|
|
314
|
-
register_health_and_model_routers,
|
|
315
|
-
register_interaction_routers,
|
|
316
|
-
register_review_and_brain_tail_routers,
|
|
317
|
-
)
|
|
43
|
+
from latticeai.runtime.platform_services_runtime import build_model_service
|
|
318
44
|
from latticeai.services.model_runtime import (
|
|
319
|
-
CLOUD_VERIFY_TTL_SECONDS,
|
|
320
45
|
ENGINE_MODEL_CATALOG,
|
|
321
46
|
MODEL_ENGINE_ALIASES,
|
|
322
47
|
download_hf_model,
|
|
@@ -326,30 +51,36 @@ def phase_interaction(ctx: RuntimeContext) -> None:
|
|
|
326
51
|
normalize_local_model_request,
|
|
327
52
|
sse_event,
|
|
328
53
|
)
|
|
54
|
+
from latticeai.services.search_service import SearchService
|
|
55
|
+
from latticeai.services.tool_dispatch import DEFAULT_TOOL_DISPATCH_SERVICE
|
|
56
|
+
from latticeai.tools import execute_tool
|
|
329
57
|
|
|
58
|
+
app = ctx.app
|
|
330
59
|
service = ctx.model_runtime_service
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
60
|
+
model_service = build_model_service(
|
|
61
|
+
model_router=ctx.model_router,
|
|
62
|
+
runtime_features=service.runtime_features,
|
|
63
|
+
is_public=ctx.IS_PUBLIC_MODE,
|
|
64
|
+
)
|
|
65
|
+
ctx.set(model_service=model_service)
|
|
66
|
+
|
|
67
|
+
app.include_router(
|
|
68
|
+
create_health_router(
|
|
69
|
+
model_service=model_service,
|
|
341
70
|
engine_status=service.engine_status,
|
|
342
71
|
get_current_user=ctx.get_current_user,
|
|
343
72
|
require_auth=ctx.REQUIRE_AUTH,
|
|
344
73
|
externally_reachable=is_externally_reachable(ctx.CONFIG),
|
|
345
74
|
app_version=ctx.APP_VERSION,
|
|
346
75
|
app_mode=ctx.APP_MODE,
|
|
76
|
+
)
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
app.include_router(
|
|
80
|
+
create_models_router(
|
|
81
|
+
model_router=ctx.model_router,
|
|
347
82
|
require_user=ctx.require_user,
|
|
348
83
|
require_admin=ctx.require_admin,
|
|
349
|
-
load_users=ctx.load_users,
|
|
350
|
-
get_user_role=ctx.get_user_role,
|
|
351
|
-
install_engine=service.install_engine,
|
|
352
|
-
verify_cloud_models=service.verify_cloud_models,
|
|
353
84
|
normalize_local_model_request=normalize_local_model_request,
|
|
354
85
|
download_hf_model=download_hf_model,
|
|
355
86
|
prepare_and_load_model=service.prepare_and_load_model,
|
|
@@ -357,88 +88,67 @@ def phase_interaction(ctx: RuntimeContext) -> None:
|
|
|
357
88
|
sse_event=sse_event,
|
|
358
89
|
ensure_ollama_server=ensure_ollama_server,
|
|
359
90
|
local_binary=local_binary,
|
|
91
|
+
engine_status=service.engine_status,
|
|
360
92
|
filter_lower_family_versions=filter_lower_family_versions,
|
|
361
|
-
list_compat_profiles=
|
|
362
|
-
set_user_api_key=ctx.set_user_api_key,
|
|
93
|
+
list_compat_profiles=list_cached_profiles,
|
|
363
94
|
engine_model_catalog=ENGINE_MODEL_CATALOG,
|
|
364
95
|
model_engine_aliases=MODEL_ENGINE_ALIASES,
|
|
365
|
-
|
|
96
|
+
is_public_mode=ctx.IS_PUBLIC_MODE,
|
|
366
97
|
allow_local_models=ctx.ALLOW_LOCAL_MODELS,
|
|
98
|
+
require_auth=ctx.REQUIRE_AUTH,
|
|
367
99
|
)
|
|
368
100
|
)
|
|
369
101
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
load_mcp_installs=ctx.load_mcp_installs,
|
|
390
|
-
recommend_mcps=ctx.recommend_mcps,
|
|
391
|
-
install_mcp=ctx.install_mcp,
|
|
392
|
-
mcp_public_item=ctx.mcp_public_item,
|
|
393
|
-
hooks=ctx.HOOKS_REGISTRY,
|
|
394
|
-
workspace_service=ctx.WORKSPACE_SERVICE,
|
|
395
|
-
chat_context=ctx.app_context,
|
|
396
|
-
search_service=ctx.SEARCH_SERVICE,
|
|
397
|
-
allowed_workspaces_for=ctx._allowed_workspaces_for,
|
|
398
|
-
embedding_info=ctx._embedding_info,
|
|
399
|
-
agent_registry=ctx.AGENT_REGISTRY,
|
|
400
|
-
memory_service=ctx.MEMORY_SERVICE,
|
|
401
|
-
platform=ctx.PLATFORM,
|
|
402
|
-
active_model_getter=lambda: ctx.model_router.current_model_id or "",
|
|
403
|
-
brain_intelligence=ctx.BRAIN_INTELLIGENCE,
|
|
102
|
+
def _embedding_info() -> Dict[str, Any]:
|
|
103
|
+
from latticeai.core.embedding_providers import (
|
|
104
|
+
PROVIDER_TYPES,
|
|
105
|
+
embedding_provider_profiles,
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
info = ctx.EMBEDDER.as_dict()
|
|
109
|
+
info["available_providers"] = list(PROVIDER_TYPES)
|
|
110
|
+
info["profile"] = ctx.CONFIG.embedding_profile or ""
|
|
111
|
+
info["profiles"] = embedding_provider_profiles()
|
|
112
|
+
return info
|
|
113
|
+
|
|
114
|
+
ctx.set(_embedding_info=_embedding_info)
|
|
115
|
+
app.include_router(
|
|
116
|
+
create_search_router(
|
|
117
|
+
service=SearchService(embedder=ctx.EMBEDDER),
|
|
118
|
+
require_user=ctx.require_user,
|
|
119
|
+
embedding_info=_embedding_info,
|
|
120
|
+
)
|
|
404
121
|
)
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
122
|
+
|
|
123
|
+
app.include_router(
|
|
124
|
+
create_tools_router(require_user=ctx.require_user)
|
|
125
|
+
)
|
|
126
|
+
app.include_router(
|
|
127
|
+
create_local_files_router(
|
|
128
|
+
require_user=ctx.require_user, ingestion_pipeline=ctx.INGESTION_PIPELINE
|
|
129
|
+
)
|
|
130
|
+
)
|
|
131
|
+
app.include_router(
|
|
132
|
+
create_voice_capture_router(
|
|
133
|
+
service=ctx.VOICE_CAPTURE, require_user=ctx.require_user
|
|
134
|
+
)
|
|
415
135
|
)
|
|
416
136
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
require_admin=ctx.require_admin,
|
|
435
|
-
build_brain_network=build_brain_network,
|
|
436
|
-
device_identity=ctx.DEVICE_IDENTITY,
|
|
437
|
-
data_dir=ctx.DATA_DIR,
|
|
438
|
-
create_network_router=create_network_router,
|
|
439
|
-
create_garden_router=create_garden_router,
|
|
440
|
-
gardener=ctx.gardener,
|
|
441
|
-
create_setup_router=create_setup_router,
|
|
442
|
-
model_router=ctx.model_router,
|
|
443
|
-
knowledge_graph=ctx.KNOWLEDGE_GRAPH,
|
|
137
|
+
# AI-Worker seam (v11.5.1, plan §Y1): the calls the Rust agent loop makes
|
|
138
|
+
# back into Python once orchestration lives in ``lattice-agent``. The tool
|
|
139
|
+
# route stays behind ``LATTICEAI_AGENT_TOOL_SEAM=1``, which only
|
|
140
|
+
# lattice-host injects into a worker it started.
|
|
141
|
+
app.include_router(
|
|
142
|
+
create_agent_worker_seam_router(
|
|
143
|
+
model_router=ctx.model_router,
|
|
144
|
+
dispatch_service=DEFAULT_TOOL_DISPATCH_SERVICE,
|
|
145
|
+
execute_tool=execute_tool,
|
|
146
|
+
# No registry: the hooks platform (persistence, ordering, the
|
|
147
|
+
# built-in runners that bound to the audit log) is native platform
|
|
148
|
+
# state now, and ``dispatch_tool(None, …)`` is a transparent
|
|
149
|
+
# pass-through rather than a pretend lifecycle.
|
|
150
|
+
hooks=None,
|
|
151
|
+
require_user=ctx.require_user,
|
|
152
|
+
enforce_rate_limit=ctx.enforce_rate_limit,
|
|
153
|
+
)
|
|
444
154
|
)
|