flare-kernel 0.2.10__tar.gz → 0.2.11__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.10 → flare_kernel-0.2.11}/PKG-INFO +1 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/pyproject.toml +1 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/payload.py +16 -12
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/projection.py +43 -2
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/completion/guided.py +76 -0
- flare_kernel-0.2.11/src/flare_kernel/router/completion/intake_summary_events.py +200 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/completion/response_builder.py +53 -6
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/completion/selection.py +52 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/context/endpoint.py +2 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/context/sourcing_preview.py +1 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/authority/hydration.py +7 -3
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/extraction/extractors.py +12 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/inputs.py +3 -1
- flare_kernel-0.2.11/src/flare_kernel/router/intake/legacy_question.py +24 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/payload_updates.py +11 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/status/chooser_stage.py +1 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/session_intent/core.py +1 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/session_intent/fields.py +1 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_endpoint_handlers/turn.py +14 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/domain_pack_payload.py +43 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/flow.py +4 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/turn_context.py +2 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_route/action.py +1 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_route/run.py +28 -3
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/prompting/core.py +5 -3
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/prompting/requirement_intake.py +39 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/prompting/response_strategy.py +11 -2
- flare_kernel-0.2.11/src/flare_kernel/router/prompting/summary_contract.py +54 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/response_intent/contracts.py +3 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/response_intent/resolution.py +40 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/draft/completion.py +13 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/draft/post_completion.py +55 -4
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/response/phases.py +19 -0
- flare_kernel-0.2.11/src/flare_kernel/router/streaming/response/structured_reasoning_phase.py +151 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/domain/domain_pack_loader.py +1 -15
- flare_kernel-0.2.11/src/flare_kernel/runtime/llm/intent_model_policy.py +44 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/llm_provider.py +11 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/canvas_state.py +10 -2
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_canvas.py +1 -1
- flare_kernel-0.2.11/src/flare_kernel/runtime/orchestration/mode/intake_canvas_content.py +29 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_coverage.py +45 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_events.py +17 -4
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_next_actions_payload.py +3 -2
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_progress_payload.py +3 -2
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_question.py +21 -7
- flare_kernel-0.2.11/src/flare_kernel/runtime/orchestration/mode/intake_summary_artifact.py +162 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/question_selection.py +3 -2
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/runtime.py +1 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/sourcing_preview.py +5 -4
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/sourcing_report.py +1 -0
- flare_kernel-0.2.11/src/flare_kernel/runtime/orchestration/response_strategy_runtime.py +97 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/canvas_state.py +6 -5
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/search_runtime.py +1 -1
- flare_kernel-0.2.11/src/flare_kernel/runtime/orchestration/structured_prompt_context.py +127 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/structured_reasoning.py +40 -37
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/question/builder.py +2 -11
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/question/extraction.py +21 -45
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/question/planner.py +14 -38
- flare_kernel-0.2.11/src/flare_kernel/runtime/reasoning/intake/question/structured.py +115 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel.egg-info/PKG-INFO +1 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel.egg-info/SOURCES.txt +12 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_canonical_state_payload.py +7 -1
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_canonical_state_projection.py +19 -2
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_canvas_sourcing_contract_meta.py +4 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_completion_response_builder.py +111 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_completion_selection.py +47 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_domain_pack_loader.py +6 -16
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_guided_completion.py +49 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_authority_hydration.py +29 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_extraction.py +10 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_inputs.py +24 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_payload_updates.py +16 -0
- flare_kernel-0.2.11/tests/test_intake_question_extraction.py +42 -0
- flare_kernel-0.2.11/tests/test_intake_question_projection.py +173 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_facade_turn_context.py +49 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider_fallback_policy.py +51 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_payload_enrichment.py +18 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_prompting_analysis_instruction.py +29 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_prompting_requirement_intake.py +27 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_requirement_intake_canvas_state.py +85 -7
- flare_kernel-0.2.11/tests/test_requirement_intake_continuation.py +59 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_response_intent_resolution.py +19 -0
- flare_kernel-0.2.11/tests/test_response_strategy_runtime.py +126 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_intent_fields.py +2 -2
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_draft_completion.py +63 -0
- flare_kernel-0.2.11/tests/test_streaming_draft_intake_canvas_sync.py +125 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_draft_post_completion.py +109 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_response_phases.py +37 -0
- flare_kernel-0.2.11/tests/test_structured_prompt_context.py +81 -0
- flare_kernel-0.2.10/src/flare_kernel/runtime/orchestration/mode/intake_canvas_content.py +0 -86
- flare_kernel-0.2.10/src/flare_kernel/runtime/orchestration/response_strategy_runtime.py +0 -52
- flare_kernel-0.2.10/tests/test_intake_question_projection.py +0 -74
- flare_kernel-0.2.10/tests/test_response_strategy_runtime.py +0 -46
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/README.md +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/setup.cfg +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/app.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/auth_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/kernel_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/list_event_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/mode.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/project_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/project_memory_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/run_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/session_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/contracts/update_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/list_event_broker.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/main.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/project_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/auth.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/auth_guard.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/chat.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/errors.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/list_events.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/project.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/run.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/session.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/session_list_events.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/api/update.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/analysis.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/checkpoint.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/composer_ui.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/context/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/context/analysis.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/context/inputs.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/context/session.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/context_authority.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/contract_support.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/flow.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/canonical/track_actions.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/completion/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/completion/analysis_policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/completion/analysis_result_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/completion/stream_collect.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/context/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/amount_quantity.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/answer.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/authority/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/authority/checkpoint.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/authority/core.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/authority/session.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/canonicalization.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/clarification.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/decision_rules.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/delivery_time.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/entry_policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/extraction/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/extraction/core.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/extraction/merge.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/field_projection/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/field_projection/core.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/field_projection/entity.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/field_projection/payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/field_projection/source.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/field_scope.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/guided/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/guided/confirmed_updates.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/guided/flags.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/guided/followup.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/guided/followup_work_item.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/guided/open_fields.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/guided/status.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/guided/summary.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/node_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/numeric.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/readiness.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/state_persistence.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/status/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/status/core.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/status/guided_session.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/status/projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/status/schema.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intake/workflow_checkpoint.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/classifier_utils.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/compat_aliases.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/escalation/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/escalation/override.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/escalation/pipeline.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/escalation/signal.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/routing.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/session_intent/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/intent/session_intent/small_talk.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_constants/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_constants/intake.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_constants/intent.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_constants/patch.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_endpoint_handlers/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_endpoint_handlers/health.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_endpoint_handlers/knowledge.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_endpoint_handlers/sourcing.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/canonical_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/dependency_resolution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/orchestration.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/payload_enrichment.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_facade/utils.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_flow_bindings/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_flow_bindings/intent_query.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_flow_bindings/mode.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_flow_bindings/session_intent.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_request_pipeline/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_request_pipeline/action.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_request_pipeline/intake.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_request_pipeline/intent_query.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_request_pipeline/intent_signal.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_route/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_route/execution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/kernel_route/stream.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/mode/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/mode/resolution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/mode/switch.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/next_actions_guard.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/action_readiness.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/actions.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/analysis_entry_decision.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/builder.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/checkpoint_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/context_helpers.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/core.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/decision.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/followup_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/result.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/runtime_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/decision.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/entry.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/flow.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/followup.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/intent.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/node.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/status/state/unpack.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/trace/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/trace/core.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/trace/projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/orchestration/trace/steps.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/patch_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/payload/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/payload/action.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/payload/analysis_canvas.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/payload/enrichment.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/prompting/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/prompting/artifact_template.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/prompting/context_blocks.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/request/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/request/identity.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/request/intent_resolution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/response_intent/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/response_intent/document_output.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/retrieval/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/retrieval/aliases.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/retrieval/field_queries.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/retrieval/projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/retrieval/query_builder.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/retrieval/search.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/source_library.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/draft/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/draft/finalize.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/draft/phase.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/draft/phase_timing.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/draft/prologue.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/event_emitter.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/intake/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/intake/phase.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/mode/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/mode/event_payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/mode/events.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/response/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/response/bootstrap.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/response/builder.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/response/builder_transport.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/response/draft_phase.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/response/phase_groups.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/response/runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/retrieval/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/retrieval/phase.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/runtime/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/runtime/sourcing_observations.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/streaming/runtime/steps.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/text_safety.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/run_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/auth/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/auth/exchange.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/auth/policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/auth/scope_guard.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/context/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/context/analysis_application.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/context/document_application.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/context/reasoning_application.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/context/session_context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/context/track_application.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/diagnostics/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/diagnostics/provider_audit.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/diagnostics/provider_audit_export.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/diagnostics/replay_snapshot.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/diagnostics/replay_snapshot_io.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/diagnostics/replay_snapshot_validation.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/domain/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/domain/domain_pack_paths.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/domain/profile_resolution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/execution/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/execution/agent_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/execution/skill_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/chat_memory.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/database.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/dependency_status.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/infrastructure.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/knowledge_ingest.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/knowledge_memory.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/knowledge_postgres_search.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/knowledge_qdrant_search.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/knowledge_search.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/knowledge_terms.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/logging.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/project_memory_codec.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/project_memory_sql.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/project_memory_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/redis_client.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/run/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/run/repository.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/run/repository_memory.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/run/repository_sql.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/session/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/session/columns.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/session/repository.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/session/repository_memory.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/session/repository_sql.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/source/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/source/document_understanding_codec.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/source/library_persistence.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/source/schema.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/source/text_extractor.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/instance_profile_adapter.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/persistence.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/provider_config.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/provider_gateway.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/provider_normalize.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/provider_public.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/sourcing/provider_result.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/trace.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/infrastructure/vector_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/intent/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/intent/intent_and_escalation/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/intent/intent_and_escalation/decision.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/intent/intent_and_escalation/lexicon.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/intent/intent_and_escalation/preprocessing.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/intent/intent_and_escalation/signals.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/intent/intent_and_escalation_classifier.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/completion_capture.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/config.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/contracts.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/dashscope_provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/dashscope_streaming_provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/fallback_policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/model_router.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/native_streaming.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/provider_health.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/provider_health_probe.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/provider_health_snapshot.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/provider_health_source.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/provider_quota.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/provider_trace.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/provider_usage.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/replay_provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/llm/streaming_provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/analysis_route_policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/analysis_router_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/artifact_template_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/canvas/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/canvas/toolbar_actions.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/canvas_sourcing_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/decision_engine.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/field_definitions.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_action_resolution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_actions.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_events.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_draft_payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_field_projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_payloads.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_question_lifecycle.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/intake_question_progress.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/orchestration.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/reasoning.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/shared.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/sourcing_actions.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/sourcing_events.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/mode/state_transition.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/module_prompt_registry.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/observation.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/session_context_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/additive_search.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/analysis_entry.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/candidate_explainability.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/context_round.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/event_payloads.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/instance_db_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/internal_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/mcp_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/observation_payloads.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/observations.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/parameter_draft.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/provider_config_loader.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/provider_health.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/result_window.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/source_priority.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/sourcing/web_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/orchestration/track_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/project_memory/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/project_memory/extraction.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/project_memory/recall.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/project_memory/runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/api.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/branching/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/branching/core.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/branching/policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/field_selection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/gap_detection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/hypothesis.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/planning.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/priority.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/question/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/question/decision.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/readiness/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/readiness/core.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/readiness/scoring.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/shared.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/understanding_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/visible_response.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/reasoning/intake/visible_summary.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/session/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/session/checkpoint_manager.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/session/intake_session_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/session/models.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/source_ingestion/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/source_ingestion/artifacts.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/source_ingestion/chunk_storage.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/source_ingestion/knowledge_storage.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/source_ingestion/runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/runtime/source_ingestion/storage.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/session_archive_context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/session_archive_graph.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/session_archive_metrics.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/session_archive_summary.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/session_lifecycle_policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/session_record_policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/session_replay.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/session_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/update/__init__.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/update/compatibility.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/update/planner.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/update/registry.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/update/versioning.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/user_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel.egg-info/dependency_links.txt +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel.egg-info/requires.txt +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel.egg-info/top_level.txt +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_action_payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_action_readiness.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_analysis_canvas_payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_analysis_context_patch.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_analysis_e2e.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_analysis_entry_decision.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_analysis_route_projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_analysis_route_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_artifact_template_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_auth_exchange.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_auth_scope_guard.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_basics.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_builder_split_modules.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_business_hardcode_guard.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_canonical_state_context_analysis.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_canonical_state_context_inputs.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_canonical_state_context_session.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_canonical_state_flow.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_chat_api_alias.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_command_resolution_analysis_mode.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_compat_aliases.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_context_authority_projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_dashscope_streaming_provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_decision_engine.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_endpoint_context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_flare_v1_patch_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_infrastructure_helpers.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_infrastructure_knowledge.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_amount_quantity.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_answer.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_authority.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_authority_checkpoint.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_authority_session.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_canonicalization.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_clarification.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_decision_rules.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_delivery_time.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_domain_context_options.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_entry_policy.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_extraction_extractors.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_extraction_merge.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_field_projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_field_projection_entity.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_field_projection_payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_field_projection_source.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_field_scope.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_guided_confirmed_updates.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_guided_flags.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_guided_followup.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_guided_followup_work_item.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_guided_open_fields.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_guided_status.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_guided_summary.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_node_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_numeric.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_readiness.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_reasoning_priority.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_state_persistence.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_status.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_status_guided_session.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_status_projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_status_schema.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_status_stage.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_visible_response.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intake_workflow_checkpoint.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_classifier_utils.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_escalation_classifier.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_escalation_override.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_escalation_pipeline.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_escalation_signal.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_resolution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_retrieval.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_routing.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_intent_type_compat_aliases.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_alias_delegation.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_endpoint_handlers.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_endpoint_handlers_sourcing.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_facade_helpers.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_intent_query_flow.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_mode_flow.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_route_execution_wrappers.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_kernel_session_intent_flow.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_list_events.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider_health_file.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider_health_probe.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider_health_snapshot.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider_live.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider_native_streaming.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider_quota.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_provider_streaming.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_llm_replay_provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_mode_orchestration_state_bridge.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_mode_reasoning.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_mode_resolution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_mode_switch.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_model_router.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_module_prompt_registry.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_new_flow_guard.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_checkpoint_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_followup_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_context_helpers.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_decision.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_result.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_runtime_state.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_state_context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_state_decision.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_state_entry.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_state_followup.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_state_intent.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_state_node.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_state_payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_status_state_unpack.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_trace.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_trace_projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_orchestration_trace_steps.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_patch_contract.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_pln03_question_chooser.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_pln11_question_option_extraction.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_project_api.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_project_memory_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_project_memory_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_prompting_user_template_instruction.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_provider_audit.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_provider_audit_export.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_replay_snapshot.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_replay_snapshot_validation.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_request_identity.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_request_intent_resolution.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_retrieval_aliases.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_retrieval_field_queries.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_retrieval_projection.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_retrieval_query_builder.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_retrieval_search.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_run_api.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_run_sql_repository.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_run_store.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_api.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_archive_summary.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_context_persistence.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_intent.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_intent_small_talk.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_lifecycle_api.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_replay_api.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_sql_columns.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_sql_migration.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_session_sql_repository.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_source_ingestion_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_source_ingestion_ssot_acceptance.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_source_library.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_source_library_persistence_scope.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_source_text_extractor.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_additive_search.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_candidate_explainability.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_context_reuse.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_e2e.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_instance_profile_adapter.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_parameter_draft.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_preview_context.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_provider.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_provider_adapters.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_provider_config_loader.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_provider_health.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_runtime_additive_search.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_search_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_sourcing_source_priority.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_stream_collect_completion.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_draft_finalize.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_draft_phase.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_draft_prologue.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_event_emitter.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_intake_phase.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_mode_event_payload.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_mode_events.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_response_bootstrap.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_response_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_response_transport.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_retrieval_phase.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_streaming_runtime_steps.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_text_safety.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_track_runtime.py +0 -0
- {flare_kernel-0.2.10 → flare_kernel-0.2.11}/tests/test_update_plane.py +0 -0
|
@@ -12,11 +12,13 @@ from typing import Any, Callable
|
|
|
12
12
|
from flare_kernel.contracts import KernelRequest
|
|
13
13
|
from flare_kernel.router.canonical.contract_support import (
|
|
14
14
|
coerce_action_list,
|
|
15
|
+
coerce_mapping,
|
|
15
16
|
resolve_authoritative_runtime_payload,
|
|
16
17
|
resolve_canvas_analysis_payload,
|
|
17
18
|
)
|
|
18
19
|
from flare_kernel.router.canonical.composer_ui import build_composer_ui_projection
|
|
19
20
|
from flare_kernel.router.canonical.context_authority import build_context_authority_projection
|
|
21
|
+
from flare_kernel.router.canonical.projection import resolve_canonical_next_actions
|
|
20
22
|
from flare_kernel.router.canonical.track_actions import build_track_next_actions
|
|
21
23
|
from flare_kernel.router.intake.status.projection import (
|
|
22
24
|
build_round_projection,
|
|
@@ -101,20 +103,22 @@ def build_canonical_payload(
|
|
|
101
103
|
if isinstance(authoritative_runtime_payload.get("response_strategy_result"), dict)
|
|
102
104
|
else {}
|
|
103
105
|
)
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
runtime_payload = coerce_mapping(coerce_mapping(runtime_snapshot).get("payload"))
|
|
107
|
+
# DOC HELPER — ORC-10: track-derived actions are a backend fallback only
|
|
108
|
+
# when no runtime/canonical next_actions exist. UI must not infer these.
|
|
109
|
+
authoritative_next_actions = resolve_canonical_next_actions(
|
|
110
|
+
runtime_actions=coerce_action_list(runtime_payload.get("next_actions")),
|
|
111
|
+
context_actions=next_actions,
|
|
112
|
+
track_actions=build_track_next_actions(track_result),
|
|
113
|
+
intake_session_completed=intake_session_completed,
|
|
110
114
|
)
|
|
111
|
-
if intake_session_completed:
|
|
112
|
-
authoritative_next_actions = []
|
|
113
115
|
module_prompt_registry = coerce_action_list(authoritative_runtime_payload.get("module_prompt_registry"))
|
|
114
116
|
current_question = authoritative_current_question
|
|
115
117
|
next_actions = authoritative_next_actions
|
|
118
|
+
projected_activated_mode = "auto" if intake_session_completed else activated_mode
|
|
119
|
+
projected_suggested_mode = None if intake_session_completed else canonical_context.get("suggested_mode")
|
|
116
120
|
composer_ui = build_composer_ui_projection(
|
|
117
|
-
activated_mode=
|
|
121
|
+
activated_mode=projected_activated_mode,
|
|
118
122
|
mode_source=mode_source,
|
|
119
123
|
stage_key=stage_key,
|
|
120
124
|
status_key=status_key,
|
|
@@ -205,9 +209,9 @@ def build_canonical_payload(
|
|
|
205
209
|
"context_authority": build_context_authority_projection(runtime_snapshot),
|
|
206
210
|
"primary_flow": {
|
|
207
211
|
"mode": {
|
|
208
|
-
"suggested":
|
|
209
|
-
"activated":
|
|
210
|
-
"is_activation_explicit": explicit_activation and
|
|
212
|
+
"suggested": projected_suggested_mode,
|
|
213
|
+
"activated": projected_activated_mode,
|
|
214
|
+
"is_activation_explicit": explicit_activation and projected_activated_mode != "auto",
|
|
211
215
|
"activation_source": mode_source if explicit_activation else "none",
|
|
212
216
|
},
|
|
213
217
|
"stage": stage_key,
|
|
@@ -12,6 +12,12 @@ from flare_kernel.router.canonical.checkpoint import (
|
|
|
12
12
|
)
|
|
13
13
|
from flare_kernel.router.next_actions_guard import dedupe_next_actions_by_action_key
|
|
14
14
|
|
|
15
|
+
_POST_INTAKE_INTERNAL_ACTION_KEYS = {
|
|
16
|
+
"activate_requirement_intake",
|
|
17
|
+
"continue_collection",
|
|
18
|
+
"implement",
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
|
|
16
22
|
def normalize_retrieved_knowledge(
|
|
17
23
|
structured_retrieved_knowledge: list[dict[str, Any]] | None,
|
|
@@ -58,6 +64,41 @@ def collect_confirmed_field_values(
|
|
|
58
64
|
return fields, field_entities
|
|
59
65
|
|
|
60
66
|
|
|
67
|
+
def _action_key(action: dict[str, Any]) -> str:
|
|
68
|
+
return str(action.get("action_key") or action.get("type") or "").strip()
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def filter_post_intake_next_actions(
|
|
72
|
+
actions: list[dict[str, Any]],
|
|
73
|
+
*,
|
|
74
|
+
intake_session_completed: bool,
|
|
75
|
+
) -> list[dict[str, Any]]:
|
|
76
|
+
filtered = [item for item in actions if isinstance(item, dict)]
|
|
77
|
+
if not intake_session_completed:
|
|
78
|
+
return filtered
|
|
79
|
+
return [
|
|
80
|
+
item for item in filtered
|
|
81
|
+
if _action_key(item) not in _POST_INTAKE_INTERNAL_ACTION_KEYS
|
|
82
|
+
]
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def resolve_canonical_next_actions(
|
|
86
|
+
*,
|
|
87
|
+
runtime_actions: list[dict[str, Any]],
|
|
88
|
+
context_actions: list[dict[str, Any]],
|
|
89
|
+
track_actions: list[dict[str, Any]],
|
|
90
|
+
intake_session_completed: bool,
|
|
91
|
+
) -> list[dict[str, Any]]:
|
|
92
|
+
for actions in (runtime_actions, context_actions, track_actions):
|
|
93
|
+
resolved = filter_post_intake_next_actions(
|
|
94
|
+
actions,
|
|
95
|
+
intake_session_completed=intake_session_completed,
|
|
96
|
+
)
|
|
97
|
+
if resolved:
|
|
98
|
+
return resolved
|
|
99
|
+
return []
|
|
100
|
+
|
|
101
|
+
|
|
61
102
|
def build_next_actions_projection(
|
|
62
103
|
*,
|
|
63
104
|
orchestration_status: dict[str, Any],
|
|
@@ -67,8 +108,6 @@ def build_next_actions_projection(
|
|
|
67
108
|
status_key: str,
|
|
68
109
|
map_external_mode_fn: Callable[[str], str],
|
|
69
110
|
) -> list[dict[str, Any]]:
|
|
70
|
-
if intake_session_completed:
|
|
71
|
-
return []
|
|
72
111
|
next_actions: list[dict[str, Any]] = []
|
|
73
112
|
raw_actions = (
|
|
74
113
|
orchestration_status.get("next_actions")
|
|
@@ -81,6 +120,8 @@ def build_next_actions_projection(
|
|
|
81
120
|
action_key = str(action.get("action_key") or action.get("type") or "").strip()
|
|
82
121
|
if not action_key:
|
|
83
122
|
continue
|
|
123
|
+
if intake_session_completed and action_key in _POST_INTAKE_INTERNAL_ACTION_KEYS:
|
|
124
|
+
continue
|
|
84
125
|
# DOC HELPER — action visibility is decision-driven.
|
|
85
126
|
# Do not hide analysis actions by workflow stage here; status/readiness
|
|
86
127
|
# must already reflect analysis_entry_decision from orchestration.
|
|
@@ -15,6 +15,8 @@ _REQUIREMENT_INTAKE_COMMAND_SCORES = {
|
|
|
15
15
|
"activate_requirement_intake": {"main_chain": 0.0, "patch_only": 1.0},
|
|
16
16
|
}
|
|
17
17
|
_DEFAULT_REQUIREMENT_INTAKE_COMMAND_SCORE = {"main_chain": 1.0, "patch_only": 0.0}
|
|
18
|
+
_PATCH_ONLY_COMPLETION_MODES = frozenset({"patch_only", "state_patch_only"})
|
|
19
|
+
_MAIN_CHAIN_COMPLETION_MODES = frozenset({"main_chain", "llm", "generate"})
|
|
18
20
|
|
|
19
21
|
|
|
20
22
|
@dataclass(frozen=True)
|
|
@@ -23,6 +25,7 @@ class _GuidedCompletionDecision:
|
|
|
23
25
|
main_chain_score: float
|
|
24
26
|
patch_only_score: float
|
|
25
27
|
phase_score: float
|
|
28
|
+
policy_reason: str
|
|
26
29
|
|
|
27
30
|
@property
|
|
28
31
|
def is_patch_only(self) -> bool:
|
|
@@ -51,8 +54,71 @@ def _is_collecting_question_phase(orchestration_status: dict[str, Any]) -> bool:
|
|
|
51
54
|
return False
|
|
52
55
|
|
|
53
56
|
|
|
57
|
+
def _coerce_payload(req: KernelRequest) -> dict[str, Any]:
|
|
58
|
+
return req.payload if isinstance(req.payload, dict) else {}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _completion_mode_from_payload(payload: dict[str, Any]) -> str:
|
|
62
|
+
"""Read the optional completion-routing contract from request payload.
|
|
63
|
+
|
|
64
|
+
Supported payload shapes:
|
|
65
|
+
- completion_policy: {"mode": "patch_only" | "main_chain"}
|
|
66
|
+
- completion_mode: "patch_only" | "main_chain"
|
|
67
|
+
"""
|
|
68
|
+
policy = payload.get("completion_policy")
|
|
69
|
+
raw_mode = ""
|
|
70
|
+
if isinstance(policy, dict):
|
|
71
|
+
raw_mode = str(policy.get("mode") or policy.get("completion_mode") or policy.get("action") or "").strip()
|
|
72
|
+
elif policy is not None:
|
|
73
|
+
raw_mode = str(policy or "").strip()
|
|
74
|
+
if not raw_mode:
|
|
75
|
+
raw_mode = str(payload.get("completion_mode") or "").strip()
|
|
76
|
+
return raw_mode.lower().replace("-", "_").replace(" ", "_")
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _has_workspace_patch_signal(payload: dict[str, Any]) -> bool:
|
|
80
|
+
if isinstance(payload.get("workspace_patch"), dict) and payload.get("workspace_patch"):
|
|
81
|
+
return True
|
|
82
|
+
patches = payload.get("workspace_patches")
|
|
83
|
+
return isinstance(patches, list) and any(isinstance(item, dict) and item for item in patches)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _explicit_completion_decision(payload: dict[str, Any]) -> _GuidedCompletionDecision | None:
|
|
87
|
+
completion_mode = _completion_mode_from_payload(payload)
|
|
88
|
+
if completion_mode in _PATCH_ONLY_COMPLETION_MODES:
|
|
89
|
+
return _GuidedCompletionDecision(
|
|
90
|
+
action="patch_only",
|
|
91
|
+
main_chain_score=0.0,
|
|
92
|
+
patch_only_score=1.0,
|
|
93
|
+
phase_score=1.0,
|
|
94
|
+
policy_reason="explicit_completion_policy",
|
|
95
|
+
)
|
|
96
|
+
if completion_mode in _MAIN_CHAIN_COMPLETION_MODES:
|
|
97
|
+
return _GuidedCompletionDecision(
|
|
98
|
+
action="main_chain",
|
|
99
|
+
main_chain_score=1.0,
|
|
100
|
+
patch_only_score=0.0,
|
|
101
|
+
phase_score=0.0,
|
|
102
|
+
policy_reason="explicit_completion_policy",
|
|
103
|
+
)
|
|
104
|
+
return None
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def _payload_patch_decision(payload: dict[str, Any]) -> _GuidedCompletionDecision | None:
|
|
108
|
+
if not _has_workspace_patch_signal(payload):
|
|
109
|
+
return None
|
|
110
|
+
return _GuidedCompletionDecision(
|
|
111
|
+
action="patch_only",
|
|
112
|
+
main_chain_score=0.0,
|
|
113
|
+
patch_only_score=1.0,
|
|
114
|
+
phase_score=1.0,
|
|
115
|
+
policy_reason="workspace_patch_payload",
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
54
119
|
def _resolve_requirement_intake_guided_decision(
|
|
55
120
|
*,
|
|
121
|
+
req: KernelRequest,
|
|
56
122
|
command: str,
|
|
57
123
|
orchestration_status: dict[str, Any],
|
|
58
124
|
) -> _GuidedCompletionDecision:
|
|
@@ -67,6 +133,13 @@ def _resolve_requirement_intake_guided_decision(
|
|
|
67
133
|
through the normal LLM path; `patch_only` means this turn only emits UI/state
|
|
68
134
|
patches and should not be persisted as an assistant memory record.
|
|
69
135
|
"""
|
|
136
|
+
payload = _coerce_payload(req)
|
|
137
|
+
explicit_decision = _explicit_completion_decision(payload)
|
|
138
|
+
if explicit_decision is not None:
|
|
139
|
+
return explicit_decision
|
|
140
|
+
payload_decision = _payload_patch_decision(payload)
|
|
141
|
+
if payload_decision is not None:
|
|
142
|
+
return payload_decision
|
|
70
143
|
command_scores = _REQUIREMENT_INTAKE_COMMAND_SCORES.get(
|
|
71
144
|
command,
|
|
72
145
|
_DEFAULT_REQUIREMENT_INTAKE_COMMAND_SCORE,
|
|
@@ -80,6 +153,7 @@ def _resolve_requirement_intake_guided_decision(
|
|
|
80
153
|
main_chain_score=main_chain_score,
|
|
81
154
|
patch_only_score=patch_only_score,
|
|
82
155
|
phase_score=phase_score,
|
|
156
|
+
policy_reason="legacy_command_phase_score",
|
|
83
157
|
)
|
|
84
158
|
|
|
85
159
|
|
|
@@ -98,6 +172,7 @@ def resolve_guided_orchestrated_completion(
|
|
|
98
172
|
if normalized_mode != "requirement_intake":
|
|
99
173
|
return None
|
|
100
174
|
intake_decision = _resolve_requirement_intake_guided_decision(
|
|
175
|
+
req=req,
|
|
101
176
|
command=normalized_command,
|
|
102
177
|
orchestration_status=orchestration_status,
|
|
103
178
|
)
|
|
@@ -117,6 +192,7 @@ def resolve_guided_orchestrated_completion(
|
|
|
117
192
|
"main_chain_score": intake_decision.main_chain_score,
|
|
118
193
|
"patch_only_score": intake_decision.patch_only_score,
|
|
119
194
|
"phase_score": intake_decision.phase_score,
|
|
195
|
+
"policy_reason": intake_decision.policy_reason,
|
|
120
196
|
},
|
|
121
197
|
)
|
|
122
198
|
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"""Completion-time intake summary event helpers."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from flare_kernel.runtime.orchestration.mode.intake_summary_artifact import (
|
|
8
|
+
build_model_authored_requirement_summary_event,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
_CANVAS_ONLY_COMMANDS = frozenset({"", "send_message"})
|
|
12
|
+
_DOCUMENT_OUTPUT_INTENTS = frozenset({"document_template_output", "document_draft_output"})
|
|
13
|
+
_CONFIRM_SEND_PROMPT_ACTION_KEY = "confirm_send_prompt"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _clean_text(value: Any) -> str:
|
|
17
|
+
return str(value or "").strip()
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _coerce_mapping(value: Any) -> dict[str, Any]:
|
|
21
|
+
return value if isinstance(value, dict) else {}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _has_document_output_intent(runtime_snapshot: dict[str, Any]) -> bool:
|
|
25
|
+
payload = _coerce_mapping(runtime_snapshot.get("payload"))
|
|
26
|
+
response_intent_result = _coerce_mapping(payload.get("response_intent_result"))
|
|
27
|
+
return _clean_text(response_intent_result.get("response_intent")) in _DOCUMENT_OUTPUT_INTENTS
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _has_active_question(orchestration_status: dict[str, Any]) -> bool:
|
|
31
|
+
status = orchestration_status if isinstance(orchestration_status, dict) else {}
|
|
32
|
+
current_question = _coerce_mapping(status.get("current_question"))
|
|
33
|
+
question_status = _clean_text(current_question.get("question_status") or current_question.get("status")).lower()
|
|
34
|
+
if current_question and question_status not in {"answered", "stale", "dismissed", "completed", "applied"}:
|
|
35
|
+
return True
|
|
36
|
+
chooser_state = _coerce_mapping(status.get("chooser_state"))
|
|
37
|
+
if _clean_text(chooser_state.get("kind")).lower() == "question" and chooser_state.get("visible") is not False:
|
|
38
|
+
return True
|
|
39
|
+
return bool(status.get("has_active_question"))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _is_confirm_send_prompt_action(action: dict[str, Any]) -> bool:
|
|
43
|
+
payload = _coerce_mapping(action.get("payload"))
|
|
44
|
+
action_key = _clean_text(action.get("action_key") or action.get("id") or action.get("command"))
|
|
45
|
+
action_type = _clean_text(action.get("action_type") or action.get("type"))
|
|
46
|
+
payload_action_type = _clean_text(payload.get("action_type") or payload.get("type"))
|
|
47
|
+
return (
|
|
48
|
+
action_key == _CONFIRM_SEND_PROMPT_ACTION_KEY
|
|
49
|
+
or action_type == _CONFIRM_SEND_PROMPT_ACTION_KEY
|
|
50
|
+
or payload_action_type == _CONFIRM_SEND_PROMPT_ACTION_KEY
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def build_requirement_summary_confirm_send_action(
|
|
55
|
+
*,
|
|
56
|
+
content_text: str,
|
|
57
|
+
) -> dict[str, Any] | None:
|
|
58
|
+
"""Build the backend-owned action that sends the reviewed prompt text."""
|
|
59
|
+
|
|
60
|
+
prompt = _clean_text(content_text)
|
|
61
|
+
if not prompt:
|
|
62
|
+
return None
|
|
63
|
+
return {
|
|
64
|
+
"action_key": _CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
65
|
+
"action_type": _CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
66
|
+
"label": "确认发送",
|
|
67
|
+
"target_mode": "auto",
|
|
68
|
+
"priority": 0,
|
|
69
|
+
"status": "available",
|
|
70
|
+
"command": "send_message",
|
|
71
|
+
"reason": "确认后会将整理后的完整提示词作为下一条消息发送。",
|
|
72
|
+
"payload": {
|
|
73
|
+
"action_key": _CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
74
|
+
"action_type": _CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
75
|
+
"command": "send_message",
|
|
76
|
+
"target_mode": "auto",
|
|
77
|
+
"prompt_text": prompt,
|
|
78
|
+
"answer_value": prompt,
|
|
79
|
+
"submit_label": "确认发送",
|
|
80
|
+
"title": "确认发送整理后的提示词",
|
|
81
|
+
},
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def with_requirement_summary_confirm_send_action(
|
|
86
|
+
*,
|
|
87
|
+
next_actions: list[dict[str, Any]],
|
|
88
|
+
content_text: str,
|
|
89
|
+
) -> list[dict[str, Any]]:
|
|
90
|
+
"""Attach the prompt-confirm action without rewriting other actions."""
|
|
91
|
+
|
|
92
|
+
actions = next_actions if isinstance(next_actions, list) else []
|
|
93
|
+
resolved = [
|
|
94
|
+
dict(action)
|
|
95
|
+
for action in actions
|
|
96
|
+
if isinstance(action, dict) and not _is_confirm_send_prompt_action(action)
|
|
97
|
+
]
|
|
98
|
+
confirm_action = build_requirement_summary_confirm_send_action(content_text=content_text)
|
|
99
|
+
if not confirm_action:
|
|
100
|
+
return resolved
|
|
101
|
+
return [confirm_action, *resolved]
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def with_requirement_summary_confirm_send_canvas_event(
|
|
105
|
+
*,
|
|
106
|
+
summary_event: dict[str, Any] | None,
|
|
107
|
+
content_text: str,
|
|
108
|
+
) -> dict[str, Any] | None:
|
|
109
|
+
"""Attach the prompt-confirm action to a Canvas state event."""
|
|
110
|
+
|
|
111
|
+
if not isinstance(summary_event, dict):
|
|
112
|
+
return summary_event
|
|
113
|
+
payload = _coerce_mapping(summary_event.get("payload"))
|
|
114
|
+
canvas_state = _coerce_mapping(payload.get("canvas_state"))
|
|
115
|
+
if not canvas_state:
|
|
116
|
+
return summary_event
|
|
117
|
+
next_actions = with_requirement_summary_confirm_send_action(
|
|
118
|
+
next_actions=canvas_state.get("next_actions") if isinstance(canvas_state.get("next_actions"), list) else [],
|
|
119
|
+
content_text=content_text,
|
|
120
|
+
)
|
|
121
|
+
if not next_actions:
|
|
122
|
+
return summary_event
|
|
123
|
+
next_canvas_state = {**canvas_state, "next_actions": next_actions}
|
|
124
|
+
next_payload = {**payload, "canvas_state": next_canvas_state}
|
|
125
|
+
return {**summary_event, "payload": next_payload}
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def should_render_requirement_summary_as_canvas_only(
|
|
129
|
+
*,
|
|
130
|
+
runtime_snapshot: dict[str, Any],
|
|
131
|
+
orchestration_status: dict[str, Any],
|
|
132
|
+
content_text: str,
|
|
133
|
+
completion_provider: str,
|
|
134
|
+
completion_model: str,
|
|
135
|
+
completion_status: str,
|
|
136
|
+
command: str,
|
|
137
|
+
) -> bool:
|
|
138
|
+
"""Return whether a generated intake summary is a review prompt, not a reply."""
|
|
139
|
+
|
|
140
|
+
if _clean_text(command) not in _CANVAS_ONLY_COMMANDS:
|
|
141
|
+
return False
|
|
142
|
+
if _has_document_output_intent(runtime_snapshot):
|
|
143
|
+
return False
|
|
144
|
+
# PLN-15: a model-authored intake summary is the prompt-ready artifact to
|
|
145
|
+
# review/send. Existing active questions remain state carriers, but must not
|
|
146
|
+
# block the summary confirmation loop or revive mechanical field chasing.
|
|
147
|
+
return build_model_authored_requirement_summary_event(
|
|
148
|
+
runtime_snapshot=runtime_snapshot,
|
|
149
|
+
content_text=content_text,
|
|
150
|
+
completion_provider=completion_provider,
|
|
151
|
+
completion_model=completion_model,
|
|
152
|
+
completion_status=completion_status,
|
|
153
|
+
) is not None
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def with_model_authored_requirement_summary_event(
|
|
157
|
+
*,
|
|
158
|
+
runtime_snapshot: dict[str, Any],
|
|
159
|
+
orchestration_status: dict[str, Any],
|
|
160
|
+
content_text: str,
|
|
161
|
+
completion_provider: str,
|
|
162
|
+
completion_model: str,
|
|
163
|
+
completion_status: str,
|
|
164
|
+
command: str,
|
|
165
|
+
) -> list[dict[str, Any]]:
|
|
166
|
+
"""Return mode events with a model-authored Canvas summary event appended."""
|
|
167
|
+
|
|
168
|
+
mode_events = list(runtime_snapshot.get("mode_events") if isinstance(runtime_snapshot.get("mode_events"), list) else [])
|
|
169
|
+
if not should_render_requirement_summary_as_canvas_only(
|
|
170
|
+
runtime_snapshot=runtime_snapshot,
|
|
171
|
+
orchestration_status=orchestration_status,
|
|
172
|
+
content_text=content_text,
|
|
173
|
+
completion_provider=completion_provider,
|
|
174
|
+
completion_model=completion_model,
|
|
175
|
+
completion_status=completion_status,
|
|
176
|
+
command=command,
|
|
177
|
+
):
|
|
178
|
+
return mode_events
|
|
179
|
+
summary_event = build_model_authored_requirement_summary_event(
|
|
180
|
+
runtime_snapshot=runtime_snapshot,
|
|
181
|
+
content_text=content_text,
|
|
182
|
+
completion_provider=completion_provider,
|
|
183
|
+
completion_model=completion_model,
|
|
184
|
+
completion_status=completion_status,
|
|
185
|
+
)
|
|
186
|
+
if summary_event:
|
|
187
|
+
mode_events.append(with_requirement_summary_confirm_send_canvas_event(
|
|
188
|
+
summary_event=summary_event,
|
|
189
|
+
content_text=content_text,
|
|
190
|
+
))
|
|
191
|
+
return mode_events
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
__all__ = [
|
|
195
|
+
"build_requirement_summary_confirm_send_action",
|
|
196
|
+
"should_render_requirement_summary_as_canvas_only",
|
|
197
|
+
"with_requirement_summary_confirm_send_action",
|
|
198
|
+
"with_requirement_summary_confirm_send_canvas_event",
|
|
199
|
+
"with_model_authored_requirement_summary_event",
|
|
200
|
+
]
|
{flare_kernel-0.2.10 → flare_kernel-0.2.11}/src/flare_kernel/router/completion/response_builder.py
RENAMED
|
@@ -10,6 +10,11 @@ from flare_kernel.router.completion.analysis_policy import apply_completion_cont
|
|
|
10
10
|
from flare_kernel.router.completion.analysis_result_contract import (
|
|
11
11
|
attach_analysis_result_contract,
|
|
12
12
|
)
|
|
13
|
+
from flare_kernel.router.completion.intake_summary_events import (
|
|
14
|
+
should_render_requirement_summary_as_canvas_only,
|
|
15
|
+
with_requirement_summary_confirm_send_action,
|
|
16
|
+
with_model_authored_requirement_summary_event,
|
|
17
|
+
)
|
|
13
18
|
from flare_kernel.router.next_actions_guard import dedupe_next_actions_by_action_key
|
|
14
19
|
from flare_kernel.runtime.llm.contracts import LLMCompletion
|
|
15
20
|
from flare_kernel.runtime.llm.provider_trace import build_completion_provider_trace
|
|
@@ -46,7 +51,7 @@ def _append_sourcing_preview_lines(
|
|
|
46
51
|
if not lines:
|
|
47
52
|
return content_text
|
|
48
53
|
|
|
49
|
-
extra = "
|
|
54
|
+
extra = "先给您两条预检索参考(补充字段后再匹配候选供应商):\n" + "\n".join(lines)
|
|
50
55
|
base = str(content_text or "").rstrip()
|
|
51
56
|
return f"{base}\n\n{extra}".strip()
|
|
52
57
|
|
|
@@ -124,6 +129,7 @@ def _append_context_answer_lines(*, content_text: str, runtime_snapshot: dict[st
|
|
|
124
129
|
def build_run_result_payload(
|
|
125
130
|
*,
|
|
126
131
|
content_text: str,
|
|
132
|
+
effective_command: str = "",
|
|
127
133
|
completion_provider: str,
|
|
128
134
|
completion_model: str,
|
|
129
135
|
completion_status: str,
|
|
@@ -157,9 +163,40 @@ def build_run_result_payload(
|
|
|
157
163
|
runtime_snapshot=runtime_snapshot,
|
|
158
164
|
)
|
|
159
165
|
final_message = _append_citation_lines(content_text=final_message, citations=knowledge_citation)
|
|
160
|
-
|
|
166
|
+
canvas_only_summary = should_render_requirement_summary_as_canvas_only(
|
|
167
|
+
runtime_snapshot=runtime_snapshot,
|
|
168
|
+
orchestration_status=orchestration_status,
|
|
169
|
+
content_text=content_text,
|
|
170
|
+
completion_provider=completion_provider,
|
|
171
|
+
completion_model=completion_model,
|
|
172
|
+
completion_status=completion_status,
|
|
173
|
+
command=effective_command,
|
|
174
|
+
)
|
|
175
|
+
raw_next_actions = dedupe_next_actions_by_action_key(
|
|
161
176
|
orchestration_status.get("next_actions", runtime_snapshot["next_actions"])
|
|
162
177
|
)
|
|
178
|
+
next_actions = (
|
|
179
|
+
with_requirement_summary_confirm_send_action(
|
|
180
|
+
next_actions=raw_next_actions,
|
|
181
|
+
content_text=content_text,
|
|
182
|
+
)
|
|
183
|
+
if canvas_only_summary
|
|
184
|
+
else raw_next_actions
|
|
185
|
+
)
|
|
186
|
+
result_orchestration_status = (
|
|
187
|
+
{**orchestration_status, "next_actions": next_actions}
|
|
188
|
+
if canvas_only_summary
|
|
189
|
+
else orchestration_status
|
|
190
|
+
)
|
|
191
|
+
mode_events = with_model_authored_requirement_summary_event(
|
|
192
|
+
runtime_snapshot=runtime_snapshot,
|
|
193
|
+
orchestration_status=orchestration_status,
|
|
194
|
+
content_text=content_text,
|
|
195
|
+
completion_provider=completion_provider,
|
|
196
|
+
completion_model=completion_model,
|
|
197
|
+
completion_status=completion_status,
|
|
198
|
+
command=effective_command,
|
|
199
|
+
)
|
|
163
200
|
result = {
|
|
164
201
|
"message": final_message,
|
|
165
202
|
"provider": completion_provider,
|
|
@@ -187,22 +224,23 @@ def build_run_result_payload(
|
|
|
187
224
|
"llm_success_count": 1 if completion_status == "ok" else 0,
|
|
188
225
|
},
|
|
189
226
|
},
|
|
190
|
-
"mode_events":
|
|
227
|
+
"mode_events": mode_events,
|
|
191
228
|
"next_actions": next_actions,
|
|
192
229
|
"retrieved_knowledge": structured_retrieved_knowledge,
|
|
193
230
|
"knowledge_citation": knowledge_citation,
|
|
194
231
|
"context_answer": context_answer,
|
|
195
|
-
"orchestration_status":
|
|
232
|
+
"orchestration_status": result_orchestration_status,
|
|
196
233
|
}
|
|
197
234
|
return attach_analysis_result_contract(
|
|
198
235
|
result=result,
|
|
199
|
-
orchestration_status=
|
|
236
|
+
orchestration_status=result_orchestration_status,
|
|
200
237
|
)
|
|
201
238
|
|
|
202
239
|
|
|
203
240
|
def build_action_result_payload(
|
|
204
241
|
*,
|
|
205
242
|
content_text: str,
|
|
243
|
+
action_command: str = "action",
|
|
206
244
|
completion_provider: str,
|
|
207
245
|
completion_model: str,
|
|
208
246
|
completion_status: str,
|
|
@@ -227,6 +265,15 @@ def build_action_result_payload(
|
|
|
227
265
|
next_actions = dedupe_next_actions_by_action_key(
|
|
228
266
|
orchestration_status.get("next_actions", runtime_snapshot["next_actions"])
|
|
229
267
|
)
|
|
268
|
+
mode_events = with_model_authored_requirement_summary_event(
|
|
269
|
+
runtime_snapshot=runtime_snapshot,
|
|
270
|
+
orchestration_status=orchestration_status,
|
|
271
|
+
content_text=content_text,
|
|
272
|
+
completion_provider=completion_provider,
|
|
273
|
+
completion_model=completion_model,
|
|
274
|
+
completion_status=completion_status,
|
|
275
|
+
command=action_command,
|
|
276
|
+
)
|
|
230
277
|
return {
|
|
231
278
|
"message": content_text,
|
|
232
279
|
"provider": completion_provider,
|
|
@@ -250,7 +297,7 @@ def build_action_result_payload(
|
|
|
250
297
|
"llm_success_count": 1 if completion_status == "ok" else 0,
|
|
251
298
|
},
|
|
252
299
|
},
|
|
253
|
-
"mode_events":
|
|
300
|
+
"mode_events": mode_events,
|
|
254
301
|
"next_actions": next_actions,
|
|
255
302
|
"orchestration_status": orchestration_status,
|
|
256
303
|
"selected_action": {
|
|
@@ -12,6 +12,47 @@ from flare_kernel.runtime.llm.llm_provider import LLMCompletion
|
|
|
12
12
|
_DOCUMENT_OUTPUT_INTENTS = frozenset({"document_template_output", "document_draft_output"})
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
def _coerce_mapping(value: Any) -> dict[str, Any]:
|
|
16
|
+
return value if isinstance(value, dict) else {}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _resolve_current_question(
|
|
20
|
+
*,
|
|
21
|
+
runtime_snapshot: dict[str, Any],
|
|
22
|
+
orchestration_status: dict[str, Any],
|
|
23
|
+
) -> dict[str, Any]:
|
|
24
|
+
current_question = _coerce_mapping(orchestration_status.get("current_question"))
|
|
25
|
+
if current_question:
|
|
26
|
+
return current_question
|
|
27
|
+
mode_events = runtime_snapshot.get("mode_events")
|
|
28
|
+
event_list = mode_events if isinstance(mode_events, list) else []
|
|
29
|
+
for event in reversed(event_list):
|
|
30
|
+
if not isinstance(event, dict):
|
|
31
|
+
continue
|
|
32
|
+
payload = _coerce_mapping(event.get("payload"))
|
|
33
|
+
current_question = _coerce_mapping(payload.get("current_question"))
|
|
34
|
+
if current_question:
|
|
35
|
+
return current_question
|
|
36
|
+
return {}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _build_prompt_payload(
|
|
40
|
+
*,
|
|
41
|
+
enriched_payload: dict[str, Any],
|
|
42
|
+
runtime_snapshot: dict[str, Any],
|
|
43
|
+
orchestration_status: dict[str, Any],
|
|
44
|
+
) -> dict[str, Any]:
|
|
45
|
+
prompt_payload = dict(enriched_payload)
|
|
46
|
+
if not isinstance(prompt_payload.get("current_question"), dict):
|
|
47
|
+
current_question = _resolve_current_question(
|
|
48
|
+
runtime_snapshot=runtime_snapshot,
|
|
49
|
+
orchestration_status=orchestration_status,
|
|
50
|
+
)
|
|
51
|
+
if current_question:
|
|
52
|
+
prompt_payload["current_question"] = current_question
|
|
53
|
+
return prompt_payload
|
|
54
|
+
|
|
55
|
+
|
|
15
56
|
def _should_skip_guided_completion_for_output_request(
|
|
16
57
|
*,
|
|
17
58
|
raw_message: str,
|
|
@@ -90,7 +131,17 @@ async def resolve_turn_completion(
|
|
|
90
131
|
details={"reason": "requirement_clarification_required"},
|
|
91
132
|
)
|
|
92
133
|
|
|
93
|
-
prompt = build_prompt_fn(
|
|
134
|
+
prompt = build_prompt_fn(
|
|
135
|
+
req,
|
|
136
|
+
_build_prompt_payload(
|
|
137
|
+
enriched_payload=enriched_payload,
|
|
138
|
+
runtime_snapshot=runtime_snapshot,
|
|
139
|
+
orchestration_status=orchestration_status,
|
|
140
|
+
),
|
|
141
|
+
instance_profile,
|
|
142
|
+
resolved_mode,
|
|
143
|
+
effective_command,
|
|
144
|
+
)
|
|
94
145
|
if on_llm_delta_fn is None:
|
|
95
146
|
return await generate_llm_completion_fn(
|
|
96
147
|
prompt,
|
|
@@ -5,6 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
from typing import Any, Callable
|
|
6
6
|
|
|
7
7
|
from flare_kernel.contracts import KernelRequest
|
|
8
|
+
from flare_kernel.router.prompting.summary_contract import apply_prompt_summary_contract
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
def _normalize_action_target_mode(value: str) -> str:
|
|
@@ -87,6 +88,7 @@ def prepare_action_turn_context(
|
|
|
87
88
|
payload=action_payload,
|
|
88
89
|
instance_profile=instance_profile,
|
|
89
90
|
)
|
|
91
|
+
apply_prompt_summary_contract(payload=action_payload, runtime_snapshot=runtime_snapshot)
|
|
90
92
|
orchestration_status = build_orchestration_status_fn(
|
|
91
93
|
trace_id=trace_id,
|
|
92
94
|
command=action_command,
|