flare-kernel 0.2.9__tar.gz → 0.2.10__tar.gz
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.
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/PKG-INFO +1 -1
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/pyproject.toml +1 -1
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/kernel_contract.py +1 -1
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/flow.py +0 -16
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/canonicalization.py +4 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/extraction/extractors.py +3 -6
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/field_projection/core.py +4 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/field_projection/entity.py +69 -11
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/field_projection/payload.py +39 -9
- flare_kernel-0.2.10/src/flare_kernel/router/kernel_facade/domain_pack_payload.py +52 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_facade/payload_enrichment.py +6 -3
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/prompting/requirement_intake.py +28 -2
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/domain/domain_pack_loader.py +13 -10
- flare_kernel-0.2.10/src/flare_kernel/runtime/domain/domain_pack_paths.py +38 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/source/schema.py +4 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_context.py +2 -2
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel.egg-info/PKG-INFO +1 -1
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel.egg-info/SOURCES.txt +2 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_artifact_template_runtime.py +1 -1
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_business_hardcode_guard.py +3 -3
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_canonical_state_flow.py +17 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_canonical_state_payload.py +1 -1
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_domain_pack_loader.py +14 -13
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_endpoint_context.py +2 -2
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_flare_v1_patch_contract.py +1 -1
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_canonicalization.py +1 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_extraction.py +5 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_extraction_extractors.py +2 -3
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_field_projection.py +2 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_field_projection_entity.py +15 -0
- flare_kernel-0.2.10/tests/test_intake_field_projection_payload.py +43 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_status_schema.py +2 -2
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_resolution.py +2 -2
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_payload_enrichment.py +18 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_prompting_requirement_intake.py +31 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_context_reuse.py +1 -1
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_e2e.py +3 -3
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_runtime_additive_search.py +3 -3
- flare_kernel-0.2.9/tests/test_intake_field_projection_payload.py +0 -18
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/README.md +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/setup.cfg +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/app.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/auth_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/list_event_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/mode.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/project_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/project_memory_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/run_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/session_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/contracts/update_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/list_event_broker.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/main.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/project_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/auth.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/auth_guard.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/chat.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/errors.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/list_events.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/project.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/run.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/session.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/session_list_events.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/api/update.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/analysis.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/checkpoint.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/composer_ui.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/context/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/context/analysis.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/context/inputs.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/context/session.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/context_authority.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/contract_support.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/canonical/track_actions.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/completion/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/completion/analysis_policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/completion/analysis_result_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/completion/guided.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/completion/response_builder.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/completion/selection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/completion/stream_collect.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/context/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/context/endpoint.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/context/sourcing_preview.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/amount_quantity.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/answer.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/authority/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/authority/checkpoint.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/authority/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/authority/hydration.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/authority/session.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/clarification.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/decision_rules.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/delivery_time.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/entry_policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/extraction/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/extraction/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/extraction/merge.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/field_projection/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/field_projection/source.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/field_scope.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/guided/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/guided/confirmed_updates.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/guided/flags.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/guided/followup.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/guided/followup_work_item.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/guided/open_fields.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/guided/status.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/guided/summary.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/inputs.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/node_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/numeric.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/payload_updates.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/readiness.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/state_persistence.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/status/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/status/chooser_stage.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/status/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/status/guided_session.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/status/projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/status/schema.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/workflow_checkpoint.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/classifier_utils.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/compat_aliases.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/escalation/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/escalation/override.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/escalation/pipeline.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/escalation/signal.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/routing.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/session_intent/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/session_intent/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/session_intent/fields.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intent/session_intent/small_talk.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_constants/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_constants/intake.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_constants/intent.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_constants/patch.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_endpoint_handlers/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_endpoint_handlers/health.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_endpoint_handlers/knowledge.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_endpoint_handlers/sourcing.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_endpoint_handlers/turn.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_facade/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_facade/canonical_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_facade/dependency_resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_facade/flow.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_facade/orchestration.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_facade/turn_context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_facade/utils.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_flow_bindings/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_flow_bindings/intent_query.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_flow_bindings/mode.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_flow_bindings/session_intent.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_request_pipeline/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_request_pipeline/action.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_request_pipeline/intake.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_request_pipeline/intent_query.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_request_pipeline/intent_signal.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_route/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_route/action.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_route/execution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_route/run.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/kernel_route/stream.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/mode/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/mode/resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/mode/switch.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/next_actions_guard.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/action_readiness.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/actions.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/analysis_entry_decision.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/builder.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/checkpoint_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/context_helpers.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/decision.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/followup_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/result.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/runtime_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/decision.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/entry.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/flow.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/followup.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/intent.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/node.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/status/state/unpack.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/trace/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/trace/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/trace/projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/orchestration/trace/steps.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/patch_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/payload/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/payload/action.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/payload/analysis_canvas.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/payload/enrichment.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/prompting/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/prompting/artifact_template.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/prompting/context_blocks.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/prompting/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/prompting/response_strategy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/request/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/request/identity.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/request/intent_resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/response_intent/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/response_intent/contracts.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/response_intent/document_output.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/response_intent/resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/retrieval/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/retrieval/aliases.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/retrieval/field_queries.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/retrieval/projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/retrieval/query_builder.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/retrieval/search.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/source_library.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/draft/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/draft/completion.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/draft/finalize.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/draft/phase.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/draft/phase_timing.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/draft/post_completion.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/draft/prologue.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/event_emitter.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/intake/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/intake/phase.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/mode/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/mode/event_payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/mode/events.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/response/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/response/bootstrap.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/response/builder.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/response/builder_transport.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/response/draft_phase.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/response/phase_groups.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/response/phases.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/response/runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/retrieval/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/retrieval/phase.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/runtime/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/runtime/sourcing_observations.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/streaming/runtime/steps.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/text_safety.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/run_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/auth/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/auth/exchange.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/auth/policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/auth/scope_guard.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/context/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/context/analysis_application.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/context/document_application.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/context/reasoning_application.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/context/session_context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/context/track_application.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/diagnostics/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/diagnostics/provider_audit.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/diagnostics/provider_audit_export.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/diagnostics/replay_snapshot.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/diagnostics/replay_snapshot_io.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/diagnostics/replay_snapshot_validation.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/domain/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/domain/profile_resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/execution/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/execution/agent_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/execution/skill_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/chat_memory.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/database.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/dependency_status.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/infrastructure.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/knowledge_ingest.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/knowledge_memory.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/knowledge_postgres_search.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/knowledge_qdrant_search.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/knowledge_search.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/knowledge_terms.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/logging.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/project_memory_codec.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/project_memory_sql.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/project_memory_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/redis_client.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/run/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/run/repository.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/run/repository_memory.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/run/repository_sql.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/session/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/session/columns.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/session/repository.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/session/repository_memory.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/session/repository_sql.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/source/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/source/document_understanding_codec.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/source/library_persistence.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/source/text_extractor.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/instance_profile_adapter.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/persistence.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/provider_config.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/provider_gateway.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/provider_normalize.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/provider_public.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/sourcing/provider_result.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/trace.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/vector_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/intent/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/intent/intent_and_escalation/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/intent/intent_and_escalation/decision.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/intent/intent_and_escalation/lexicon.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/intent/intent_and_escalation/preprocessing.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/intent/intent_and_escalation/signals.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/intent/intent_and_escalation_classifier.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/completion_capture.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/config.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/contracts.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/dashscope_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/dashscope_streaming_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/fallback_policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/llm_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/model_router.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/native_streaming.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/provider_health.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/provider_health_probe.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/provider_health_snapshot.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/provider_health_source.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/provider_quota.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/provider_trace.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/provider_usage.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/replay_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/llm/streaming_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/analysis_route_policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/analysis_router_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/artifact_template_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/canvas/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/canvas/toolbar_actions.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/canvas_sourcing_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/decision_engine.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/canvas_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/field_definitions.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_action_resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_actions.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_canvas.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_content.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_events.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_coverage.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_draft_payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_events.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_field_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_next_actions_payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_payloads.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_progress_payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_question.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_question_lifecycle.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/intake_question_progress.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/orchestration.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/question_selection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/reasoning.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/shared.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/sourcing_actions.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/sourcing_events.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/sourcing_preview.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/sourcing_report.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/mode/state_transition.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/module_prompt_registry.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/observation.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/response_strategy_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/session_context_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/additive_search.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/analysis_entry.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/candidate_explainability.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/canvas_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/context_round.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/event_payloads.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/instance_db_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/internal_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/mcp_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/observation_payloads.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/observations.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/parameter_draft.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/provider_config_loader.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/provider_health.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/result_window.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/search_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/source_priority.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/sourcing/web_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/structured_reasoning.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/orchestration/track_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/project_memory/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/project_memory/extraction.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/project_memory/recall.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/project_memory/runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/api.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/branching/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/branching/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/branching/policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/field_selection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/gap_detection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/hypothesis.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/planning.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/priority.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/question/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/question/builder.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/question/decision.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/question/extraction.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/question/planner.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/readiness/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/readiness/core.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/readiness/scoring.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/shared.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/understanding_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/visible_response.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/reasoning/intake/visible_summary.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/session/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/session/checkpoint_manager.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/session/intake_session_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/session/models.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/source_ingestion/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/source_ingestion/artifacts.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/source_ingestion/chunk_storage.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/source_ingestion/knowledge_storage.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/source_ingestion/runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/source_ingestion/storage.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/session_archive_context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/session_archive_graph.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/session_archive_metrics.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/session_archive_summary.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/session_lifecycle_policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/session_record_policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/session_replay.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/session_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/update/__init__.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/update/compatibility.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/update/planner.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/update/registry.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/update/versioning.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/user_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel.egg-info/dependency_links.txt +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel.egg-info/requires.txt +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel.egg-info/top_level.txt +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_action_payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_action_readiness.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_analysis_canvas_payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_analysis_context_patch.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_analysis_e2e.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_analysis_entry_decision.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_analysis_route_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_analysis_route_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_auth_exchange.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_auth_scope_guard.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_basics.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_builder_split_modules.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_canonical_state_context_analysis.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_canonical_state_context_inputs.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_canonical_state_context_session.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_canonical_state_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_canvas_sourcing_contract_meta.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_chat_api_alias.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_command_resolution_analysis_mode.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_compat_aliases.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_completion_response_builder.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_completion_selection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_context_authority_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_dashscope_streaming_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_decision_engine.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_guided_completion.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_infrastructure_helpers.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_infrastructure_knowledge.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_amount_quantity.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_answer.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_authority.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_authority_checkpoint.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_authority_hydration.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_authority_session.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_clarification.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_decision_rules.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_delivery_time.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_domain_context_options.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_entry_policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_extraction_merge.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_field_projection_source.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_field_scope.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_guided_confirmed_updates.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_guided_flags.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_guided_followup.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_guided_followup_work_item.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_guided_open_fields.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_guided_status.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_guided_summary.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_inputs.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_node_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_numeric.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_payload_updates.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_question_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_readiness.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_reasoning_priority.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_state_persistence.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_status.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_status_guided_session.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_status_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_status_stage.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_visible_response.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intake_workflow_checkpoint.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_classifier_utils.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_escalation_classifier.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_escalation_override.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_escalation_pipeline.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_escalation_signal.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_retrieval.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_routing.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_intent_type_compat_aliases.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_alias_delegation.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_endpoint_handlers.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_endpoint_handlers_sourcing.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_facade_helpers.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_facade_turn_context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_intent_query_flow.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_mode_flow.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_route_execution_wrappers.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_kernel_session_intent_flow.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_list_events.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider_fallback_policy.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider_health_file.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider_health_probe.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider_health_snapshot.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider_live.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider_native_streaming.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider_quota.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_provider_streaming.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_llm_replay_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_mode_orchestration_state_bridge.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_mode_reasoning.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_mode_resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_mode_switch.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_model_router.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_module_prompt_registry.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_new_flow_guard.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_checkpoint_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_followup_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_context_helpers.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_decision.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_result.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_runtime_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_state_context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_state_decision.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_state_entry.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_state_followup.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_state_intent.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_state_node.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_state_payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_status_state_unpack.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_trace.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_trace_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_orchestration_trace_steps.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_patch_contract.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_pln03_question_chooser.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_pln11_question_option_extraction.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_project_api.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_project_memory_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_project_memory_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_prompting_analysis_instruction.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_prompting_user_template_instruction.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_provider_audit.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_provider_audit_export.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_replay_snapshot.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_replay_snapshot_validation.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_request_identity.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_request_intent_resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_requirement_intake_canvas_state.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_response_intent_resolution.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_response_strategy_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_retrieval_aliases.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_retrieval_field_queries.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_retrieval_projection.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_retrieval_query_builder.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_retrieval_search.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_run_api.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_run_sql_repository.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_run_store.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_api.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_archive_summary.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_context_persistence.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_intent.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_intent_fields.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_intent_small_talk.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_lifecycle_api.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_replay_api.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_sql_columns.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_sql_migration.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_session_sql_repository.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_source_ingestion_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_source_ingestion_ssot_acceptance.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_source_library.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_source_library_persistence_scope.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_source_text_extractor.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_additive_search.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_candidate_explainability.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_instance_profile_adapter.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_parameter_draft.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_preview_context.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_provider.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_provider_adapters.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_provider_config_loader.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_provider_health.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_search_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_sourcing_source_priority.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_stream_collect_completion.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_draft_completion.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_draft_finalize.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_draft_phase.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_draft_post_completion.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_draft_prologue.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_event_emitter.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_intake_phase.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_mode_event_payload.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_mode_events.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_response_bootstrap.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_response_phases.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_response_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_response_transport.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_retrieval_phase.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_streaming_runtime_steps.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_text_safety.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_track_runtime.py +0 -0
- {flare_kernel-0.2.9 → flare_kernel-0.2.10}/tests/test_update_plane.py +0 -0
|
@@ -44,7 +44,7 @@ class KernelRequest(BaseModel):
|
|
|
44
44
|
run_id: str | None = None
|
|
45
45
|
tenant_id: str = "default"
|
|
46
46
|
instance_id: str = "default"
|
|
47
|
-
domain_pack_version: str = "
|
|
47
|
+
domain_pack_version: str = "default"
|
|
48
48
|
session_id: str | None = None
|
|
49
49
|
last_turn_id: str | None = None
|
|
50
50
|
command: str | None = None
|
|
@@ -101,22 +101,6 @@ def normalize_stage_status_and_question(
|
|
|
101
101
|
resolved_question = None
|
|
102
102
|
if status_key in {"collecting", "blocked"}:
|
|
103
103
|
status_key = "idle"
|
|
104
|
-
elif (
|
|
105
|
-
resolved_question is None
|
|
106
|
-
and required_missing
|
|
107
|
-
and stage_key == "requirement_intake"
|
|
108
|
-
and status_key in {"collecting", "blocked"}
|
|
109
|
-
):
|
|
110
|
-
primary_field_key = str(required_missing[0] or "").strip()
|
|
111
|
-
if primary_field_key:
|
|
112
|
-
resolved_question = {
|
|
113
|
-
"field_key": primary_field_key,
|
|
114
|
-
"field_label": primary_field_key,
|
|
115
|
-
"question_text": f"请补充「{primary_field_key}」相关信息",
|
|
116
|
-
"options": [],
|
|
117
|
-
"step_index": 1,
|
|
118
|
-
"step_total": len(required_missing),
|
|
119
|
-
}
|
|
120
104
|
if isinstance(resolved_question, dict) and intake_session_id:
|
|
121
105
|
resolved_question = {
|
|
122
106
|
**resolved_question,
|
{flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/canonicalization.py
RENAMED
|
@@ -92,12 +92,16 @@ def canonicalize_field_entity(
|
|
|
92
92
|
raw_value: Any,
|
|
93
93
|
source_type: str,
|
|
94
94
|
evidence_text: str,
|
|
95
|
+
field_definition: dict[str, Any] | None = None,
|
|
96
|
+
field_semantics: dict[str, Any] | None = None,
|
|
95
97
|
) -> dict[str, Any] | None:
|
|
96
98
|
return canonicalize_field_entity_from_router(
|
|
97
99
|
field_key=field_key,
|
|
98
100
|
raw_value=raw_value,
|
|
99
101
|
source_type=source_type,
|
|
100
102
|
evidence_text=evidence_text,
|
|
103
|
+
field_definition=field_definition,
|
|
104
|
+
field_semantics=field_semantics,
|
|
101
105
|
)
|
|
102
106
|
|
|
103
107
|
|
{flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/extraction/extractors.py
RENAMED
|
@@ -151,15 +151,12 @@ def extract_intake_delivery_time(message: str) -> str:
|
|
|
151
151
|
|
|
152
152
|
|
|
153
153
|
def resolve_intake_extraction_scope(context: dict[str, Any] | None = None) -> set[str]:
|
|
154
|
-
fallback_scope = {"goal", "use_case", "budget", "quantity", "constraints", "delivery_time"}
|
|
155
154
|
if not isinstance(context, dict):
|
|
156
|
-
return
|
|
155
|
+
return set()
|
|
157
156
|
allowed_fields = context.get("allowed_fields")
|
|
158
|
-
if not isinstance(allowed_fields, list):
|
|
159
|
-
return
|
|
157
|
+
if not isinstance(allowed_fields, (list, tuple, set)):
|
|
158
|
+
return set()
|
|
160
159
|
normalized = {str(item or "").strip() for item in allowed_fields if str(item or "").strip()}
|
|
161
|
-
if not normalized:
|
|
162
|
-
return fallback_scope
|
|
163
160
|
return normalized
|
|
164
161
|
|
|
165
162
|
|
{flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/field_projection/core.py
RENAMED
|
@@ -58,6 +58,8 @@ def canonicalize_field_entity(
|
|
|
58
58
|
raw_value: Any,
|
|
59
59
|
source_type: str,
|
|
60
60
|
evidence_text: str,
|
|
61
|
+
field_definition: dict[str, Any] | None = None,
|
|
62
|
+
field_semantics: dict[str, Any] | None = None,
|
|
61
63
|
) -> dict[str, Any] | None:
|
|
62
64
|
"""Canonicalize a single field entity from raw value and evidence."""
|
|
63
65
|
return _canonicalize_field_entity(
|
|
@@ -65,6 +67,8 @@ def canonicalize_field_entity(
|
|
|
65
67
|
raw_value=raw_value,
|
|
66
68
|
source_type=source_type,
|
|
67
69
|
evidence_text=evidence_text,
|
|
70
|
+
field_definition=field_definition,
|
|
71
|
+
field_semantics=field_semantics,
|
|
68
72
|
)
|
|
69
73
|
|
|
70
74
|
|
{flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/intake/field_projection/entity.py
RENAMED
|
@@ -2,17 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import re
|
|
5
6
|
from typing import Any
|
|
6
7
|
|
|
7
8
|
from flare_kernel.router.intake.amount_quantity import canonicalize_budget_value, canonicalize_quantity_value
|
|
8
9
|
from flare_kernel.router.intake.delivery_time import canonicalize_delivery_time_value
|
|
9
10
|
from flare_kernel.router.intake.field_projection.source import build_field_source_payload
|
|
11
|
+
from flare_kernel.router.intake.numeric import detect_numeric_precision, parse_numeric_token
|
|
10
12
|
from flare_kernel.router.text_safety import has_value
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
"
|
|
14
|
+
_STRUCTURED_VALUE_TYPES = {
|
|
15
|
+
"money",
|
|
16
|
+
"money_range",
|
|
14
17
|
"quantity",
|
|
15
|
-
"
|
|
18
|
+
"integer",
|
|
19
|
+
"number",
|
|
20
|
+
"time_window",
|
|
21
|
+
"date",
|
|
22
|
+
"datetime",
|
|
16
23
|
}
|
|
17
24
|
|
|
18
25
|
|
|
@@ -34,27 +41,78 @@ def build_unparsed_field_entity(
|
|
|
34
41
|
}
|
|
35
42
|
|
|
36
43
|
|
|
44
|
+
def _coerce_mapping(value: Any) -> dict[str, Any]:
|
|
45
|
+
return value if isinstance(value, dict) else {}
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _resolve_value_type(
|
|
49
|
+
*,
|
|
50
|
+
field_definition: dict[str, Any] | None,
|
|
51
|
+
field_semantics: dict[str, Any] | None,
|
|
52
|
+
) -> str:
|
|
53
|
+
semantics = _coerce_mapping(field_semantics)
|
|
54
|
+
definition = _coerce_mapping(field_definition)
|
|
55
|
+
return str(
|
|
56
|
+
semantics.get("value_type")
|
|
57
|
+
or definition.get("value_type")
|
|
58
|
+
or definition.get("type")
|
|
59
|
+
or ""
|
|
60
|
+
).strip().lower()
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def _canonicalize_number_value(raw_text: str) -> dict[str, Any] | None:
|
|
64
|
+
match = re.search(r"(?P<number>\d+(?:\.\d+)?|[一二两三四五六七八九十百千万亿]+)", raw_text)
|
|
65
|
+
if not match:
|
|
66
|
+
return None
|
|
67
|
+
parsed = parse_numeric_token(match.group("number"))
|
|
68
|
+
if parsed is None:
|
|
69
|
+
return None
|
|
70
|
+
value: int | float = int(round(parsed)) if float(parsed).is_integer() else parsed
|
|
71
|
+
return {
|
|
72
|
+
"status": "confirmed",
|
|
73
|
+
"normalized_value": {
|
|
74
|
+
"kind": "number",
|
|
75
|
+
"value": value,
|
|
76
|
+
"precision": detect_numeric_precision(raw_text),
|
|
77
|
+
},
|
|
78
|
+
"display_value": str(value),
|
|
79
|
+
"confidence": 0.9,
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _canonicalize_structured_value(value_type: str, raw_text: str) -> dict[str, Any] | None:
|
|
84
|
+
if value_type in {"money", "money_range"}:
|
|
85
|
+
return canonicalize_budget_value(raw_text)
|
|
86
|
+
if value_type == "quantity":
|
|
87
|
+
return canonicalize_quantity_value(raw_text)
|
|
88
|
+
if value_type in {"integer", "number"}:
|
|
89
|
+
return _canonicalize_number_value(raw_text)
|
|
90
|
+
if value_type in {"time_window", "date", "datetime"}:
|
|
91
|
+
return canonicalize_delivery_time_value(raw_text)
|
|
92
|
+
return None
|
|
93
|
+
|
|
94
|
+
|
|
37
95
|
def canonicalize_field_entity(
|
|
38
96
|
*,
|
|
39
97
|
field_key: str,
|
|
40
98
|
raw_value: Any,
|
|
41
99
|
source_type: str,
|
|
42
100
|
evidence_text: str,
|
|
101
|
+
field_definition: dict[str, Any] | None = None,
|
|
102
|
+
field_semantics: dict[str, Any] | None = None,
|
|
43
103
|
) -> dict[str, Any] | None:
|
|
44
104
|
"""Canonicalize a single field entity from raw value and evidence."""
|
|
45
105
|
normalized_key = str(field_key or "").strip()
|
|
46
106
|
raw_text = str(raw_value or "").strip()
|
|
47
107
|
if not normalized_key or not raw_text:
|
|
48
108
|
return None
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
elif normalized_key == "delivery_time":
|
|
55
|
-
canonical = canonicalize_delivery_time_value(raw_text)
|
|
109
|
+
value_type = _resolve_value_type(
|
|
110
|
+
field_definition=field_definition,
|
|
111
|
+
field_semantics=field_semantics,
|
|
112
|
+
)
|
|
113
|
+
canonical = _canonicalize_structured_value(value_type, raw_text)
|
|
56
114
|
if canonical is None:
|
|
57
|
-
if
|
|
115
|
+
if value_type in _STRUCTURED_VALUE_TYPES:
|
|
58
116
|
canonical = {
|
|
59
117
|
"status": "unparsed",
|
|
60
118
|
"normalized_value": None,
|
|
@@ -22,10 +22,20 @@ def canonicalize_payload_fields(payload: dict[str, Any]) -> dict[str, Any]:
|
|
|
22
22
|
normalized_sources = dict(field_sources) if isinstance(field_sources, dict) else {}
|
|
23
23
|
existing_entities = payload.get("field_entities")
|
|
24
24
|
normalized_existing = dict(existing_entities) if isinstance(existing_entities, dict) else {}
|
|
25
|
+
field_definitions = payload.get("field_definitions")
|
|
26
|
+
definitions_by_key = {
|
|
27
|
+
str(item.get("key") or "").strip(): item
|
|
28
|
+
for item in field_definitions
|
|
29
|
+
if isinstance(item, dict) and str(item.get("key") or "").strip()
|
|
30
|
+
} if isinstance(field_definitions, list) else {}
|
|
31
|
+
field_semantics = payload.get("field_semantics")
|
|
32
|
+
semantics_by_key = dict(field_semantics) if isinstance(field_semantics, dict) else {}
|
|
25
33
|
|
|
26
34
|
next_entities: dict[str, Any] = {}
|
|
27
35
|
next_fields: dict[str, str] = {}
|
|
28
36
|
field_candidates: dict[str, Any] = {}
|
|
37
|
+
field_clarifications: dict[str, Any] = {}
|
|
38
|
+
answered_field_keys: set[str] = set()
|
|
29
39
|
field_keys = set()
|
|
30
40
|
field_keys.update(str(key or "").strip() for key in fields.keys())
|
|
31
41
|
field_keys.update(str(key or "").strip() for key in normalized_existing.keys())
|
|
@@ -51,14 +61,27 @@ def canonicalize_payload_fields(payload: dict[str, Any]) -> dict[str, Any]:
|
|
|
51
61
|
raw_value=raw_value,
|
|
52
62
|
source_type=source_type,
|
|
53
63
|
evidence_text=evidence_text,
|
|
64
|
+
field_definition=definitions_by_key.get(field_key),
|
|
65
|
+
field_semantics=(
|
|
66
|
+
semantics_by_key.get(field_key)
|
|
67
|
+
if isinstance(semantics_by_key.get(field_key), dict)
|
|
68
|
+
else None
|
|
69
|
+
),
|
|
54
70
|
)
|
|
55
71
|
if not isinstance(entity, dict):
|
|
56
72
|
continue
|
|
57
73
|
next_entities[field_key] = entity
|
|
74
|
+
answered_field_keys.add(field_key)
|
|
58
75
|
if is_field_entity_confirmed(entity):
|
|
59
76
|
next_fields[field_key] = str(entity.get("display_value") or "").strip()
|
|
60
77
|
else:
|
|
61
78
|
field_candidates[field_key] = entity
|
|
79
|
+
field_clarifications[field_key] = {
|
|
80
|
+
"field_key": field_key,
|
|
81
|
+
"status": "needs_clarification",
|
|
82
|
+
"reason": "unparsed_structured_value",
|
|
83
|
+
"raw_value": str(entity.get("raw_value") or raw_value or "").strip(),
|
|
84
|
+
}
|
|
62
85
|
|
|
63
86
|
payload["field_entities"] = next_entities
|
|
64
87
|
payload["fields"] = next_fields
|
|
@@ -66,6 +89,21 @@ def canonicalize_payload_fields(payload: dict[str, Any]) -> dict[str, Any]:
|
|
|
66
89
|
payload["field_candidates"] = field_candidates
|
|
67
90
|
else:
|
|
68
91
|
payload.pop("field_candidates", None)
|
|
92
|
+
if field_clarifications:
|
|
93
|
+
payload["field_clarifications"] = field_clarifications
|
|
94
|
+
else:
|
|
95
|
+
payload.pop("field_clarifications", None)
|
|
96
|
+
|
|
97
|
+
required_missing = payload.get("required_missing")
|
|
98
|
+
if isinstance(required_missing, list):
|
|
99
|
+
payload["required_missing"] = [
|
|
100
|
+
item
|
|
101
|
+
for item in required_missing
|
|
102
|
+
if str(item).strip()
|
|
103
|
+
and str(item).strip() not in next_fields
|
|
104
|
+
and str(item).strip() not in answered_field_keys
|
|
105
|
+
]
|
|
106
|
+
return payload
|
|
69
107
|
|
|
70
108
|
required_fields = payload.get("required_fields")
|
|
71
109
|
if isinstance(required_fields, list):
|
|
@@ -73,16 +111,8 @@ def canonicalize_payload_fields(payload: dict[str, Any]) -> dict[str, Any]:
|
|
|
73
111
|
payload["required_missing"] = [
|
|
74
112
|
field_key
|
|
75
113
|
for field_key in normalized_required_fields
|
|
76
|
-
if field_key not in next_fields
|
|
114
|
+
if field_key not in next_fields and field_key not in answered_field_keys
|
|
77
115
|
]
|
|
78
|
-
else:
|
|
79
|
-
required_missing = payload.get("required_missing")
|
|
80
|
-
if isinstance(required_missing, list):
|
|
81
|
-
payload["required_missing"] = [
|
|
82
|
-
item
|
|
83
|
-
for item in required_missing
|
|
84
|
-
if str(item).strip() and str(item).strip() not in next_fields
|
|
85
|
-
]
|
|
86
116
|
return payload
|
|
87
117
|
|
|
88
118
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""Domain-pack field context injection for kernel payload enrichment."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from flare_kernel.contracts import KernelRequest
|
|
8
|
+
from flare_kernel.runtime.domain.domain_pack_loader import load_domain_pack
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _copy_list(value: Any) -> list[Any]:
|
|
12
|
+
return list(value) if isinstance(value, list) else []
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _should_skip_field_list(payload: dict[str, Any], key: str) -> bool:
|
|
16
|
+
if isinstance(payload.get(key), list):
|
|
17
|
+
return True
|
|
18
|
+
if key == "required_fields" and isinstance(payload.get("required_missing"), list):
|
|
19
|
+
return True
|
|
20
|
+
return False
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def merge_domain_pack_field_context(req: KernelRequest) -> KernelRequest:
|
|
24
|
+
"""Attach domain-pack field contracts before intake extraction runs."""
|
|
25
|
+
payload = dict(req.payload) if isinstance(req.payload, dict) else {}
|
|
26
|
+
pack = load_domain_pack(
|
|
27
|
+
instance_id=req.instance_id,
|
|
28
|
+
domain_pack_version=req.domain_pack_version,
|
|
29
|
+
domain=str(payload.get("domain_pack_domain") or payload.get("domain") or "").strip() or None,
|
|
30
|
+
payload=payload,
|
|
31
|
+
tenant_id=req.tenant_id,
|
|
32
|
+
)
|
|
33
|
+
pack_fields = pack.fields if isinstance(pack.fields, dict) else {}
|
|
34
|
+
if not isinstance(payload.get("field_definitions"), list):
|
|
35
|
+
definitions = _copy_list(pack_fields.get("field_definitions"))
|
|
36
|
+
if definitions:
|
|
37
|
+
payload["field_definitions"] = definitions
|
|
38
|
+
for key in ("required_fields", "recommended_fields", "optional_fields"):
|
|
39
|
+
if _should_skip_field_list(payload, key):
|
|
40
|
+
continue
|
|
41
|
+
values = _copy_list(pack_fields.get(key))
|
|
42
|
+
if values:
|
|
43
|
+
payload[key] = values
|
|
44
|
+
if (
|
|
45
|
+
not isinstance(payload.get("field_semantics"), dict)
|
|
46
|
+
and isinstance(pack_fields.get("field_semantics"), dict)
|
|
47
|
+
):
|
|
48
|
+
payload["field_semantics"] = dict(pack_fields.get("field_semantics") or {})
|
|
49
|
+
return req.model_copy(update={"payload": payload})
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
__all__ = ["merge_domain_pack_field_context"]
|
|
@@ -43,6 +43,9 @@ from flare_kernel.router.intake.payload_updates import (
|
|
|
43
43
|
from flare_kernel.router.kernel_facade.dependency_resolution import (
|
|
44
44
|
resolve_payload_enrichment_dependencies,
|
|
45
45
|
)
|
|
46
|
+
from flare_kernel.router.kernel_facade.domain_pack_payload import (
|
|
47
|
+
merge_domain_pack_field_context,
|
|
48
|
+
)
|
|
46
49
|
from flare_kernel.router.kernel_facade.utils import (
|
|
47
50
|
_kernel_attr,
|
|
48
51
|
_safe_session_id,
|
|
@@ -58,9 +61,7 @@ from flare_kernel.router.mode.resolution import (
|
|
|
58
61
|
from flare_kernel.router.request.intent_resolution import (
|
|
59
62
|
resolve_intent_override as _resolve_intent_override_from_router,
|
|
60
63
|
)
|
|
61
|
-
from flare_kernel.router.text_safety import
|
|
62
|
-
extract_user_message as _extract_user_message,
|
|
63
|
-
)
|
|
64
|
+
from flare_kernel.router.text_safety import extract_user_message as _extract_user_message
|
|
64
65
|
|
|
65
66
|
|
|
66
67
|
def enrich_kernel_payload_flow(
|
|
@@ -95,6 +96,8 @@ def enrich_kernel_payload_flow(
|
|
|
95
96
|
is_intake_control_message_fn: Callable[[str], bool] | None = None,
|
|
96
97
|
) -> dict[str, Any]:
|
|
97
98
|
"""Run payload enrichment with fully resolved dependencies."""
|
|
99
|
+
if resolved_mode == "requirement_intake":
|
|
100
|
+
req = merge_domain_pack_field_context(req)
|
|
98
101
|
return enrich_payload_from_router(
|
|
99
102
|
req,
|
|
100
103
|
resolved_mode=resolved_mode,
|
{flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/router/prompting/requirement_intake.py
RENAMED
|
@@ -46,7 +46,26 @@ _DOCUMENT_OUTPUT_INSTRUCTION = (
|
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
def
|
|
49
|
+
def _normalize_prompt_options(options: Any) -> list[dict[str, str]]:
|
|
50
|
+
if not isinstance(options, list):
|
|
51
|
+
return []
|
|
52
|
+
normalized: list[dict[str, str]] = []
|
|
53
|
+
for index, option in enumerate(options, start=1):
|
|
54
|
+
item = option if isinstance(option, dict) else {"label": option, "value": option}
|
|
55
|
+
label = str(item.get("label") or item.get("text") or item.get("value") or "").strip()
|
|
56
|
+
if not label:
|
|
57
|
+
continue
|
|
58
|
+
normalized.append(
|
|
59
|
+
{
|
|
60
|
+
"key": str(item.get("key") or f"option_{index}").strip(),
|
|
61
|
+
"label": label,
|
|
62
|
+
"value": str(item.get("value") or label).strip(),
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
return normalized
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _missing_field_prompt_items(payload: dict[str, Any], required_missing: list[Any]) -> list[dict[str, Any]]:
|
|
50
69
|
projected_items = payload.get("required_missing_items") if isinstance(payload.get("required_missing_items"), list) else []
|
|
51
70
|
projected_map = {
|
|
52
71
|
str(item.get("key") or "").strip(): str(item.get("label") or "").strip()
|
|
@@ -66,7 +85,14 @@ def _missing_field_prompt_items(payload: dict[str, Any], required_missing: list[
|
|
|
66
85
|
continue
|
|
67
86
|
definition = definition_map.get(key, {})
|
|
68
87
|
label = projected_map.get(key) or str(definition.get("label") or key).strip()
|
|
69
|
-
|
|
88
|
+
prompt_item: dict[str, Any] = {"key": key, "label": label}
|
|
89
|
+
question = str(definition.get("question") or "").strip()
|
|
90
|
+
if question:
|
|
91
|
+
prompt_item["question"] = question
|
|
92
|
+
options = _normalize_prompt_options(definition.get("options"))
|
|
93
|
+
if options:
|
|
94
|
+
prompt_item["options"] = options
|
|
95
|
+
items.append(prompt_item)
|
|
70
96
|
return items
|
|
71
97
|
|
|
72
98
|
|
{flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/domain/domain_pack_loader.py
RENAMED
|
@@ -19,6 +19,10 @@ from flare_kernel.runtime.domain.profile_resolution import (
|
|
|
19
19
|
ResolutionContext,
|
|
20
20
|
ResolutionTraceEntry,
|
|
21
21
|
)
|
|
22
|
+
from flare_kernel.runtime.domain.domain_pack_paths import (
|
|
23
|
+
DEFAULT_PACK_VARIANT as _DEFAULT_PACK_VARIANT,
|
|
24
|
+
resolve_domain_pack_dir,
|
|
25
|
+
)
|
|
22
26
|
|
|
23
27
|
logger = get_logger("flare_kernel.runtime.domain.domain_pack_loader")
|
|
24
28
|
|
|
@@ -26,7 +30,6 @@ _DOMAIN_PACK_ROOT_ENV = "FLARE_DOMAIN_PACK_ROOT"
|
|
|
26
30
|
_DEFAULT_DOMAIN_ENV = "FLARE_DOMAIN_PACK_DEFAULT_DOMAIN"
|
|
27
31
|
_INSTANCE_PROFILE_FILE = "branding/instance-branding.json"
|
|
28
32
|
_DEFAULT_DOMAIN = "generic"
|
|
29
|
-
_DEFAULT_VERSION = "v1"
|
|
30
33
|
|
|
31
34
|
|
|
32
35
|
@dataclass(frozen=True)
|
|
@@ -390,7 +393,7 @@ def _new_capability(enabled: bool, *, reason: str = "", missing: bool = False) -
|
|
|
390
393
|
return payload
|
|
391
394
|
|
|
392
395
|
|
|
393
|
-
def _build_missing_pack(domain: str,
|
|
396
|
+
def _build_missing_pack(domain: str, variant: str, root: Path | None, *, reason: str) -> DomainPack:
|
|
394
397
|
capabilities = {
|
|
395
398
|
"pack": _new_capability(False, reason=reason, missing=True),
|
|
396
399
|
"taxonomy": _new_capability(False, reason="pack_missing", missing=True),
|
|
@@ -402,7 +405,7 @@ def _build_missing_pack(domain: str, version: str, root: Path | None, *, reason:
|
|
|
402
405
|
}
|
|
403
406
|
return DomainPack(
|
|
404
407
|
domain=domain,
|
|
405
|
-
version=
|
|
408
|
+
version=variant,
|
|
406
409
|
root=str(root) if isinstance(root, Path) else "",
|
|
407
410
|
taxonomy=None,
|
|
408
411
|
fields=None,
|
|
@@ -417,12 +420,12 @@ def _build_missing_pack(domain: str, version: str, root: Path | None, *, reason:
|
|
|
417
420
|
|
|
418
421
|
|
|
419
422
|
@lru_cache(maxsize=32)
|
|
420
|
-
def _load_domain_pack_cached(root_path: str, domain: str,
|
|
423
|
+
def _load_domain_pack_cached(root_path: str, domain: str, domain_pack_variant: str) -> DomainPack:
|
|
421
424
|
root = Path(root_path)
|
|
422
|
-
pack_root = root
|
|
423
|
-
if
|
|
424
|
-
logger.warning("domain_pack.
|
|
425
|
-
return _build_missing_pack(domain,
|
|
425
|
+
pack_root = resolve_domain_pack_dir(root, domain, domain_pack_variant)
|
|
426
|
+
if pack_root is None:
|
|
427
|
+
logger.warning("domain_pack.not_found domain=%s variant=%s root=%s", domain, domain_pack_variant, str(root / domain))
|
|
428
|
+
return _build_missing_pack(domain, domain_pack_variant, root, reason="pack_not_found")
|
|
426
429
|
|
|
427
430
|
taxonomy_raw = _read_structured_file(pack_root / "taxonomy.yaml")
|
|
428
431
|
fields_raw = _read_structured_file(pack_root / "fields.yaml")
|
|
@@ -473,7 +476,7 @@ def _load_domain_pack_cached(root_path: str, domain: str, domain_pack_version: s
|
|
|
473
476
|
|
|
474
477
|
return DomainPack(
|
|
475
478
|
domain=domain,
|
|
476
|
-
version=
|
|
479
|
+
version=domain_pack_variant,
|
|
477
480
|
root=str(pack_root),
|
|
478
481
|
taxonomy=taxonomy,
|
|
479
482
|
fields=fields,
|
|
@@ -626,7 +629,7 @@ def load_requirement_schema(instance_id: str) -> dict[str, Any] | None:
|
|
|
626
629
|
|
|
627
630
|
pack = load_domain_pack(
|
|
628
631
|
instance_id=instance_id,
|
|
629
|
-
domain_pack_version=
|
|
632
|
+
domain_pack_version=_DEFAULT_PACK_VARIANT,
|
|
630
633
|
domain=resolve_default_domain(),
|
|
631
634
|
)
|
|
632
635
|
if not isinstance(pack.fields, dict):
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""Domain-pack filesystem path resolution."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
DEFAULT_PACK_VARIANT = "default"
|
|
8
|
+
_PACK_MODULE_FILENAMES = (
|
|
9
|
+
"taxonomy.yaml",
|
|
10
|
+
"fields.yaml",
|
|
11
|
+
"workflow.yaml",
|
|
12
|
+
"search-mapping.yaml",
|
|
13
|
+
"replace-rules.yaml",
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def is_domain_pack_dir(path: Path) -> bool:
|
|
18
|
+
if not path.exists() or not path.is_dir():
|
|
19
|
+
return False
|
|
20
|
+
if (path / "templates").is_dir():
|
|
21
|
+
return True
|
|
22
|
+
return any((path / filename).is_file() for filename in _PACK_MODULE_FILENAMES)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def resolve_domain_pack_dir(root: Path, domain: str, domain_pack_variant: str) -> Path | None:
|
|
26
|
+
domain_root = root / domain
|
|
27
|
+
if is_domain_pack_dir(domain_root):
|
|
28
|
+
return domain_root
|
|
29
|
+
variant = str(domain_pack_variant or "").strip()
|
|
30
|
+
if not variant:
|
|
31
|
+
return None
|
|
32
|
+
variant_root = domain_root / variant
|
|
33
|
+
if is_domain_pack_dir(variant_root):
|
|
34
|
+
return variant_root
|
|
35
|
+
return None
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
__all__ = ["DEFAULT_PACK_VARIANT", "is_domain_pack_dir", "resolve_domain_pack_dir"]
|
{flare_kernel-0.2.9 → flare_kernel-0.2.10}/src/flare_kernel/runtime/infrastructure/source/schema.py
RENAMED
|
@@ -6,6 +6,10 @@ from typing import Any, Callable
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def ensure_document_understanding_column(conn: Any, text_fn: Callable[[str], Any]) -> None:
|
|
9
|
+
dialect_name = str(getattr(getattr(conn, "dialect", None), "name", "") or "").lower()
|
|
10
|
+
if dialect_name == "postgresql":
|
|
11
|
+
conn.execute(text_fn("ALTER TABLE flare_project_sources ADD COLUMN IF NOT EXISTS document_understanding TEXT"))
|
|
12
|
+
return
|
|
9
13
|
try:
|
|
10
14
|
conn.execute(text_fn("ALTER TABLE flare_project_sources ADD COLUMN document_understanding TEXT"))
|
|
11
15
|
except Exception:
|
|
@@ -92,8 +92,8 @@ def build_intake_context(
|
|
|
92
92
|
prompt_summary_template_key = str(
|
|
93
93
|
payload.get("prompt_summary_template_key")
|
|
94
94
|
or pack_workflow.get("prompt_summary_template_key")
|
|
95
|
-
or "
|
|
96
|
-
).strip() or "
|
|
95
|
+
or "flare_default"
|
|
96
|
+
).strip() or "flare_default"
|
|
97
97
|
prompt_summary_template = payload.get("prompt_summary_template")
|
|
98
98
|
if not isinstance(prompt_summary_template, dict):
|
|
99
99
|
prompt_summary_template = pack_workflow.get("prompt_summary_template")
|
|
@@ -140,6 +140,7 @@ src/flare_kernel/router/kernel_endpoint_handlers/turn.py
|
|
|
140
140
|
src/flare_kernel/router/kernel_facade/__init__.py
|
|
141
141
|
src/flare_kernel/router/kernel_facade/canonical_state.py
|
|
142
142
|
src/flare_kernel/router/kernel_facade/dependency_resolution.py
|
|
143
|
+
src/flare_kernel/router/kernel_facade/domain_pack_payload.py
|
|
143
144
|
src/flare_kernel/router/kernel_facade/flow.py
|
|
144
145
|
src/flare_kernel/router/kernel_facade/orchestration.py
|
|
145
146
|
src/flare_kernel/router/kernel_facade/payload_enrichment.py
|
|
@@ -260,6 +261,7 @@ src/flare_kernel/runtime/diagnostics/replay_snapshot_io.py
|
|
|
260
261
|
src/flare_kernel/runtime/diagnostics/replay_snapshot_validation.py
|
|
261
262
|
src/flare_kernel/runtime/domain/__init__.py
|
|
262
263
|
src/flare_kernel/runtime/domain/domain_pack_loader.py
|
|
264
|
+
src/flare_kernel/runtime/domain/domain_pack_paths.py
|
|
263
265
|
src/flare_kernel/runtime/domain/profile_resolution.py
|
|
264
266
|
src/flare_kernel/runtime/execution/__init__.py
|
|
265
267
|
src/flare_kernel/runtime/execution/agent_runtime.py
|
|
@@ -10,7 +10,7 @@ _REPO_ROOT = Path(__file__).resolve().parents[3]
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def _load_generic_domain_pack() -> dict:
|
|
13
|
-
domain_dir = _REPO_ROOT / "domain-packs" / "generic"
|
|
13
|
+
domain_dir = _REPO_ROOT / "domain-packs" / "generic"
|
|
14
14
|
workflow = json.loads((domain_dir / "workflow.yaml").read_text(encoding="utf-8"))
|
|
15
15
|
templates = {
|
|
16
16
|
path.name: path.read_text(encoding="utf-8")
|
|
@@ -92,9 +92,9 @@ def test_kernel_core_has_no_infrastructure_deployment_field_canonicalization() -
|
|
|
92
92
|
def test_generic_pack_and_frontend_process_model_have_no_deployment_gate_terms() -> None:
|
|
93
93
|
repo_root = Path(__file__).resolve().parents[3]
|
|
94
94
|
paths = [
|
|
95
|
-
repo_root / "domain-packs" / "generic" / "
|
|
96
|
-
repo_root / "domain-packs" / "generic" / "
|
|
97
|
-
repo_root / "domain-packs" / "generic" / "
|
|
95
|
+
repo_root / "domain-packs" / "generic" / "fields.yaml",
|
|
96
|
+
repo_root / "domain-packs" / "generic" / "workflow.yaml",
|
|
97
|
+
repo_root / "domain-packs" / "generic" / "search-mapping.yaml",
|
|
98
98
|
repo_root / "packages" / "flare-chat-ui" / "src" / "chat-gui" / "ui" / "timeline" / "components" / "chatTimelineSystemProcessModel.js",
|
|
99
99
|
]
|
|
100
100
|
banned_tokens = [
|
|
@@ -109,6 +109,23 @@ def test_normalize_stage_status_and_question_sets_idle_when_auto_collecting() ->
|
|
|
109
109
|
assert question is None
|
|
110
110
|
|
|
111
111
|
|
|
112
|
+
def test_normalize_stage_status_and_question_does_not_synthesize_question_without_backend_state() -> None:
|
|
113
|
+
stage_key, status_key, question = normalize_stage_status_and_question(
|
|
114
|
+
orchestration_status={"current_stage": "requirement_intake.collecting"},
|
|
115
|
+
required_missing=["budget"],
|
|
116
|
+
activated_mode="requirement_intake",
|
|
117
|
+
current_question=None,
|
|
118
|
+
command="send_message",
|
|
119
|
+
assistant_text="",
|
|
120
|
+
intake_session_id="intake_1",
|
|
121
|
+
normalize_stage_status_fn=lambda **_kwargs: ("requirement_intake", "collecting"),
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
assert stage_key == "requirement_intake"
|
|
125
|
+
assert status_key == "collecting"
|
|
126
|
+
assert question is None
|
|
127
|
+
|
|
128
|
+
|
|
112
129
|
def test_resolve_analysis_generation_state_builds_validation_error_when_not_ready() -> None:
|
|
113
130
|
state = resolve_analysis_generation_state(
|
|
114
131
|
command="generate_analysis",
|
|
@@ -217,7 +217,7 @@ def test_canonical_payload_ignores_removed_plan_authoritative_fields() -> None:
|
|
|
217
217
|
"removed_canvas_draft": {"content": "draft"},
|
|
218
218
|
"removed_apply_handoff": {"ready": False},
|
|
219
219
|
"removed_summary_contract": {"summary": "contract"},
|
|
220
|
-
"removed_summary_template_key": "
|
|
220
|
+
"removed_summary_template_key": "flare_default",
|
|
221
221
|
"removed_summary_template": {"sections": ["summary"]},
|
|
222
222
|
},
|
|
223
223
|
build_confirmed_fields_schema_fn=lambda *_args, **_kwargs: {},
|