flare-kernel 0.2.12__tar.gz → 0.2.14__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.12 → flare_kernel-0.2.14}/PKG-INFO +1 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/pyproject.toml +1 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/__init__.py +8 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/project_memory_contract.py +79 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/composer_ui.py +22 -7
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/intake_summary_events.py +55 -5
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/response_builder.py +62 -14
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/selection.py +15 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/amount_quantity.py +2 -2
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/core.py +2 -2
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/extractors.py +17 -5
- flare_kernel-0.2.14/src/flare_kernel/router/intake/extraction/quantity_classifier.py +50 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/enrichment.py +1 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/artifact_template.py +3 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/core.py +5 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/requirement_intake.py +2 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/completion.py +1 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/finalize.py +12 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/phase.py +2 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/post_completion.py +71 -6
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/prologue.py +15 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/phases.py +1 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/structured_reasoning_phase.py +99 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/text_safety.py +6 -1
- flare_kernel-0.2.14/src/flare_kernel/runtime/infrastructure/project_memory_review_sql.py +57 -0
- flare_kernel-0.2.14/src/flare_kernel/runtime/infrastructure/project_memory_review_store.py +212 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/project_memory_store.py +5 -0
- flare_kernel-0.2.14/src/flare_kernel/runtime/infrastructure/project_memory_version_sql.py +46 -0
- flare_kernel-0.2.14/src/flare_kernel/runtime/infrastructure/project_memory_version_store.py +205 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/artifact_template_runtime.py +6 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/canvas_state.py +28 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_canvas.py +1 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_question.py +0 -4
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_summary_artifact.py +5 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/patch_preview_runtime.py +62 -13
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/structured_reasoning.py +2 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/project_memory/__init__.py +4 -0
- flare_kernel-0.2.14/src/flare_kernel/runtime/project_memory/decision.py +89 -0
- flare_kernel-0.2.14/src/flare_kernel/runtime/project_memory/promotion.py +187 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/project_memory/recall.py +35 -2
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/project_memory/runtime.py +2 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/PKG-INFO +1 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/SOURCES.txt +14 -0
- flare_kernel-0.2.14/tests/test_artifact_template_prompt.py +26 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_artifact_template_runtime.py +20 -0
- flare_kernel-0.2.14/tests/test_canonical_composer_ui_projection.py +55 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_completion_response_builder.py +79 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_completion_selection.py +38 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_amount_quantity.py +7 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_extraction.py +22 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_extraction_extractors.py +1 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orc15_guided_completion.py +1 -1
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_patch_preview_runtime.py +20 -1
- flare_kernel-0.2.14/tests/test_project_memory_promotion.py +86 -0
- flare_kernel-0.2.14/tests/test_project_memory_promotion_decision.py +118 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_project_memory_runtime.py +58 -0
- flare_kernel-0.2.14/tests/test_project_memory_versions.py +93 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_prompting_analysis_instruction.py +10 -0
- flare_kernel-0.2.14/tests/test_requirement_intake_canvas_visibility.py +78 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_model_question_plan.py +50 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_summary_route.py +47 -2
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_completion.py +47 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_finalize.py +11 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_post_completion.py +131 -1
- flare_kernel-0.2.14/tests/test_streaming_draft_prologue.py +94 -0
- flare_kernel-0.2.14/tests/test_streaming_structured_reasoning_projection.py +103 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_structured_prompt_context.py +1 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_text_safety.py +9 -0
- flare_kernel-0.2.12/tests/test_streaming_draft_prologue.py +0 -45
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/README.md +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/setup.cfg +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/app.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/auth_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/kernel_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/list_event_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/mode.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/project_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/run_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/session_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/update_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/list_event_broker.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/main.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/project_record_memory_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/project_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/auth.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/auth_guard.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/chat.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/errors.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/list_events.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/project.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/run.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/session.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/session_list_events.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/update.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/analysis.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/checkpoint.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context/analysis.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context/inputs.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context/session.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context_authority.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/contract_support.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/flow.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/mode_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/track_actions.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/analysis_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/analysis_result_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/capability_boundary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/guided.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/intake_commit_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/intake_summary_content.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/intake_summary_submission.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/stream_collect.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/context/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/context/endpoint.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/context/sourcing_preview.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/hardcode_boundary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/answer.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/checkpoint.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/core.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/hydration.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/session.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/canonicalization.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/clarification.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/decision_rules.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/delivery_time.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/entry_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/merge.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/core.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/entity.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/source.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_scope.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/confirmed_updates.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/flags.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/followup.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/followup_work_item.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/open_fields.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/status.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/summary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/inputs.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/legacy_question.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/node_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/numeric.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/payload_updates.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/readiness.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/state_persistence.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/chooser_stage.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/core.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/guided_session.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/schema.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/workflow_checkpoint.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/classifier_utils.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/compat_aliases.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/escalation/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/escalation/override.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/escalation/pipeline.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/escalation/signal.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/routing.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/session_intent/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/session_intent/core.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/session_intent/fields.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/session_intent/small_talk.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_constants/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_constants/intake.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_constants/intent.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_constants/patch.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/health.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/knowledge.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/sourcing.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/turn.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/canonical_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/dependency_resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/domain_pack_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/flow.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/orchestration.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/payload_enrichment.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/turn_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/utils.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_flow_bindings/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_flow_bindings/intent_query.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_flow_bindings/mode.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_flow_bindings/session_intent.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/action.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/intake.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/intent_query.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/intent_signal.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/action.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/execution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/run.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/stream.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/mode/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/mode/resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/mode/switch.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/next_actions_guard.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/action_readiness.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/actions.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/analysis_entry_decision.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/builder.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/checkpoint_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/context_helpers.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/core.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/decision.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/followup_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/result.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/runtime_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/decision.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/entry.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/flow.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/followup.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/intent.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/node.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/unpack.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/trace/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/trace/core.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/trace/projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/trace/steps.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/patch_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/action.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/analysis_canvas.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/turn_act_enrichment.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/capability_boundary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/context_blocks.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/patch_preview.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/response_strategy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/summary_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/track_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/request/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/request/identity.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/request/intent_resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/response_intent/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/response_intent/contracts.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/response_intent/document_output.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/response_intent/resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/aliases.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/field_queries.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/query_builder.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/search.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/source_library.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/phase_timing.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/event_emitter.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/intake/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/intake/phase.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/mode/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/mode/event_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/mode/events.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/bootstrap.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/builder.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/builder_transport.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/draft_phase.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/phase_groups.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/retrieval/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/retrieval/phase.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/runtime/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/runtime/sourcing_observations.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/runtime/steps.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/turn_act.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/run_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/auth/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/auth/exchange.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/auth/policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/auth/scope_guard.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/analysis_application.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/document_application.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/intake_application.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/reasoning_application.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/session_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/track_application.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/provider_audit.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/provider_audit_export.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/replay_snapshot.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/replay_snapshot_io.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/replay_snapshot_validation.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/domain_pack_loader.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/domain_pack_paths.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/domain_pack_root.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/profile_resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/execution/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/execution/agent_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/execution/skill_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/chat_memory.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/database.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/dependency_status.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/infrastructure.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_ingest.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_memory.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_postgres_search.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_qdrant_search.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_search.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_terms.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/logging.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/project_memory_codec.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/project_memory_sql.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/redis_client.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/run/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/run/repository.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/run/repository_memory.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/run/repository_sql.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/columns.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/repository.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/repository_memory.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/repository_sql.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/document_understanding_codec.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/library_persistence.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/ocr_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/schema.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/text_extractor.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/instance_profile_adapter.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/persistence.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_config.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_gateway.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_normalize.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_public.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_result.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/trace.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/vector_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/decision.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/lexicon.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/preprocessing.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/signals.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation_classifier.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/completion_capture.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/config.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/contracts.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/dashscope_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/dashscope_streaming_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/fallback_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/intent_model_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/llm_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/model_router.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/native_streaming.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_health.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_health_probe.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_health_snapshot.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_health_source.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_quota.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_trace.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_usage.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/replay_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/streaming_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/analysis_route_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/analysis_router_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/canvas/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/canvas/toolbar_actions.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/canvas_sourcing_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/decision_engine.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/field_definitions.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_action_resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_actions.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_content.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_events.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_coverage.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_draft_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_events.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_field_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_model_question_plan.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_next_actions_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_payloads.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_progress_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_question_lifecycle.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_question_plan_carrier.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_question_progress.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/orchestration.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/question_selection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/reasoning.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/shared.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/sourcing_actions.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/sourcing_events.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/sourcing_preview.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/sourcing_report.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/state_transition.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/module_prompt_registry.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/observation.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/response_strategy_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/session_context_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/additive_search.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/analysis_entry.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/candidate_explainability.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/canvas_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/context_round.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/event_payloads.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/instance_db_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/internal_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/mcp_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/observation_payloads.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/observations.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/parameter_draft.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/provider_config_loader.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/provider_health.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/result_window.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/search_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/source_priority.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/web_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/structured_prompt_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/track_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/project_memory/extraction.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/api.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/branching/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/branching/core.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/branching/policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/field_selection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/gap_detection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/hypothesis.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/planning.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/priority.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/builder.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/decision.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/extraction.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/planner.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/structured.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/readiness/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/readiness/core.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/readiness/scoring.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/shared.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/understanding_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/visible_response.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/visible_summary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/session/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/session/checkpoint_manager.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/session/intake_session_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/session/models.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/artifacts.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/chunk_storage.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/knowledge_storage.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/storage.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_archive_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_archive_graph.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_archive_metrics.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_archive_summary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_lifecycle_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_message_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_message_records.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_record_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_replay.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/__init__.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/compatibility.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/planner.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/registry.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/versioning.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/user_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/dependency_links.txt +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/requires.txt +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/top_level.txt +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_action_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_action_readiness.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_canvas_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_context_patch.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_e2e.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_entry_decision.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_route_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_route_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_auth_exchange.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_auth_scope_guard.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_basics.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_builder_split_modules.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_business_hardcode_guard.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_mode_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_context_analysis.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_context_inputs.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_context_session.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_flow.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canvas_sourcing_contract_meta.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_capability_boundary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_chat_api_alias.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_command_resolution_analysis_mode.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_compat_aliases.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_context_authority_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_dashscope_streaming_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_decision_engine.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_domain_pack_loader.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_endpoint_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_flare_v1_patch_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_generic_domain_pack_options.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_guided_completion.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_infrastructure_helpers.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_infrastructure_knowledge.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_answer.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_authority.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_authority_checkpoint.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_authority_hydration.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_authority_session.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_canonicalization.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_clarification.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_commit_context_patch.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_decision_rules.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_delivery_time.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_domain_context_options.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_entry_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_extraction_merge.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_projection_entity.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_projection_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_projection_source.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_scope.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_confirmed_updates.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_flags.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_followup.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_followup_work_item.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_open_fields.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_status.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_summary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_inputs.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_node_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_numeric.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_payload_updates.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_question_extraction.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_question_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_readiness.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_reasoning_priority.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_state_persistence.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status_guided_session.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status_schema.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status_stage.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_visible_response.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_workflow_checkpoint.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_classifier_utils.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_escalation_classifier.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_escalation_override.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_escalation_pipeline.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_escalation_signal.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_retrieval.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_routing.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_type_compat_aliases.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_alias_delegation.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_endpoint_handlers.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_endpoint_handlers_sourcing.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_facade_helpers.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_facade_turn_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_intent_query_flow.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_mode_flow.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_route_execution_wrappers.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_session_intent_flow.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_list_events.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_fallback_policy.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_health_file.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_health_probe.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_health_snapshot.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_live.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_native_streaming.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_quota.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_streaming.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_replay_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_mode_orchestration_state_bridge.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_mode_reasoning.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_mode_resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_mode_switch.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_model_router.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_module_prompt_registry.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_new_flow_guard.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orc15_turn_act_classification.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orc16_main_chain_hardcode_boundary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_checkpoint_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_followup_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_context_helpers.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_decision.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_result.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_runtime_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_decision.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_entry.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_followup.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_intent.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_node.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_unpack.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_trace.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_trace_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_trace_steps.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_patch_contract.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_payload_enrichment.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_pln03_question_chooser.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_pln11_question_option_extraction.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_project_api.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_project_memory_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_prompting_requirement_intake.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_prompting_user_template_instruction.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_provider_audit.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_provider_audit_export.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_replay_snapshot.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_replay_snapshot_validation.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_request_identity.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_request_intent_resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_canvas_progress.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_canvas_state.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_continuation.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_flow.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_response_intent_resolution.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_response_strategy_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_aliases.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_field_queries.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_projection.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_query_builder.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_search.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_run_api.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_run_sql_repository.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_run_store.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_api.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_archive_summary.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_context_persistence.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_intent.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_intent_fields.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_intent_small_talk.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_lifecycle_api.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_replay_api.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_sql_columns.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_sql_migration.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_sql_repository.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_ingestion_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_ingestion_ssot_acceptance.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_library.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_library_persistence_scope.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_text_extractor.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_additive_search.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_candidate_explainability.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_context_reuse.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_e2e.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_instance_profile_adapter.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_parameter_draft.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_preview_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_provider.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_provider_adapters.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_provider_config_loader.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_provider_health.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_runtime_additive_search.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_search_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_source_priority.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_stream_collect_completion.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_intake_canvas_sync.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_phase.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_event_emitter.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_intake_phase.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_mode_event_payload.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_mode_events.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_response_bootstrap.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_response_phases.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_response_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_response_transport.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_retrieval_phase.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_runtime_steps.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_track_prompt_context.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_track_runtime.py +0 -0
- {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_update_plane.py +0 -0
|
@@ -45,8 +45,12 @@ from flare_kernel.contracts.project_contract import (
|
|
|
45
45
|
)
|
|
46
46
|
from flare_kernel.contracts.project_memory_contract import (
|
|
47
47
|
ProjectMemoryCandidate,
|
|
48
|
+
ProjectMemoryPromotionDecision,
|
|
49
|
+
ProjectMemoryPromotionCandidate,
|
|
50
|
+
ProjectMemoryPromotionReview,
|
|
48
51
|
ProjectMemoryRecall,
|
|
49
52
|
ProjectMemoryRecord,
|
|
53
|
+
ProjectMemoryVersion,
|
|
50
54
|
)
|
|
51
55
|
from flare_kernel.contracts.run_contract import (
|
|
52
56
|
RunEventListResponse,
|
|
@@ -114,8 +118,12 @@ __all__ = [
|
|
|
114
118
|
"ProjectUpsertRequest",
|
|
115
119
|
"ProjectsResponse",
|
|
116
120
|
"ProjectMemoryCandidate",
|
|
121
|
+
"ProjectMemoryPromotionDecision",
|
|
122
|
+
"ProjectMemoryPromotionCandidate",
|
|
123
|
+
"ProjectMemoryPromotionReview",
|
|
117
124
|
"ProjectMemoryRecord",
|
|
118
125
|
"ProjectMemoryRecall",
|
|
126
|
+
"ProjectMemoryVersion",
|
|
119
127
|
"RunRecord",
|
|
120
128
|
"RunEventRecord",
|
|
121
129
|
"RunListResponse",
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/project_memory_contract.py
RENAMED
|
@@ -29,6 +29,62 @@ class ProjectMemoryCandidate(BaseModel):
|
|
|
29
29
|
source_id: str = ""
|
|
30
30
|
|
|
31
31
|
|
|
32
|
+
class ProjectMemoryPromotionCandidate(BaseModel):
|
|
33
|
+
"""Reviewable Project Memory promotion candidate.
|
|
34
|
+
|
|
35
|
+
Candidates are not durable Project Memory records. They are pending review
|
|
36
|
+
inputs for KM-01/KM-02 governance and must not imply automatic persistence.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
candidate_id: str
|
|
40
|
+
project_id: str
|
|
41
|
+
user_id: str
|
|
42
|
+
memory_type: str = "fact"
|
|
43
|
+
content: str
|
|
44
|
+
evidence: list[dict[str, Any]] = Field(default_factory=list)
|
|
45
|
+
confidence: float | None = None
|
|
46
|
+
source_kind: str = "runtime_snapshot"
|
|
47
|
+
source_session_id: str = ""
|
|
48
|
+
source_message_id: str = ""
|
|
49
|
+
source_id: str = ""
|
|
50
|
+
review_status: str = "pending"
|
|
51
|
+
created_at: str = ""
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class ProjectMemoryPromotionReview(BaseModel):
|
|
55
|
+
"""Batch of reviewable Project Memory promotion candidates."""
|
|
56
|
+
|
|
57
|
+
schema_version: str = "project_memory.promotion_review.v1"
|
|
58
|
+
project_id: str
|
|
59
|
+
user_id: str
|
|
60
|
+
candidates: list[ProjectMemoryPromotionCandidate] = Field(default_factory=list)
|
|
61
|
+
candidate_count: int | None = None
|
|
62
|
+
degraded: bool = False
|
|
63
|
+
created_at: str = ""
|
|
64
|
+
|
|
65
|
+
def model_post_init(self, __context: Any) -> None:
|
|
66
|
+
"""Keep candidate_count aligned when caller omits it."""
|
|
67
|
+
|
|
68
|
+
if self.candidate_count is None:
|
|
69
|
+
self.candidate_count = len(self.candidates)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class ProjectMemoryPromotionDecision(BaseModel):
|
|
73
|
+
"""Durable review decision for one Project Memory promotion candidate."""
|
|
74
|
+
|
|
75
|
+
decision_id: str
|
|
76
|
+
candidate_id: str
|
|
77
|
+
project_id: str
|
|
78
|
+
user_id: str
|
|
79
|
+
review_status: str = "pending"
|
|
80
|
+
decided_by: str = ""
|
|
81
|
+
decision_reason: str = ""
|
|
82
|
+
memory_id: str = ""
|
|
83
|
+
candidate: dict[str, Any] = Field(default_factory=dict)
|
|
84
|
+
created_at: str = ""
|
|
85
|
+
updated_at: str = ""
|
|
86
|
+
|
|
87
|
+
|
|
32
88
|
class ProjectMemoryRecord(BaseModel):
|
|
33
89
|
"""Durable Project Memory record stored under project and user scope.
|
|
34
90
|
|
|
@@ -63,6 +119,27 @@ class ProjectMemoryRecord(BaseModel):
|
|
|
63
119
|
updated_at: str
|
|
64
120
|
|
|
65
121
|
|
|
122
|
+
class ProjectMemoryVersion(BaseModel):
|
|
123
|
+
"""Immutable audit snapshot for one Project Memory record version."""
|
|
124
|
+
|
|
125
|
+
version_id: str
|
|
126
|
+
memory_id: str
|
|
127
|
+
version_number: int
|
|
128
|
+
project_id: str
|
|
129
|
+
user_id: str
|
|
130
|
+
source_session_id: str = ""
|
|
131
|
+
source_message_id: str = ""
|
|
132
|
+
source_id: str = ""
|
|
133
|
+
memory_type: str = "fact"
|
|
134
|
+
content: str
|
|
135
|
+
evidence: list[dict[str, Any]] = Field(default_factory=list)
|
|
136
|
+
confidence: float | None = None
|
|
137
|
+
status: str = "active"
|
|
138
|
+
created_at: str
|
|
139
|
+
updated_at: str
|
|
140
|
+
version_created_at: str
|
|
141
|
+
|
|
142
|
+
|
|
66
143
|
class ProjectMemoryRecall(BaseModel):
|
|
67
144
|
"""Project Memory recall payload consumed by context assembly.
|
|
68
145
|
|
|
@@ -83,3 +160,5 @@ class ProjectMemoryRecall(BaseModel):
|
|
|
83
160
|
memory_ids: list[str] = Field(default_factory=list)
|
|
84
161
|
memories: list[dict[str, Any]] = Field(default_factory=list)
|
|
85
162
|
degraded: bool = False
|
|
163
|
+
recall_strategy: str = "lexical"
|
|
164
|
+
semantic_degraded: bool = False
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/composer_ui.py
RENAMED
|
@@ -8,6 +8,8 @@ from __future__ import annotations
|
|
|
8
8
|
|
|
9
9
|
from typing import Any
|
|
10
10
|
|
|
11
|
+
_CONFIRM_SEND_PROMPT_ACTION_KEY = "confirm_send_prompt"
|
|
12
|
+
|
|
11
13
|
|
|
12
14
|
def _trim(value: Any) -> str:
|
|
13
15
|
return str(value or "").strip()
|
|
@@ -32,22 +34,34 @@ def _next_action_keys(next_actions: list[Any]) -> list[str]:
|
|
|
32
34
|
return keys
|
|
33
35
|
|
|
34
36
|
|
|
37
|
+
def _has_confirm_send_prompt_action(next_actions: list[Any]) -> bool:
|
|
38
|
+
for item in next_actions:
|
|
39
|
+
if not isinstance(item, dict):
|
|
40
|
+
continue
|
|
41
|
+
payload = item.get("payload") if isinstance(item.get("payload"), dict) else {}
|
|
42
|
+
action_key = _trim(item.get("action_key") or item.get("type") or item.get("command"))
|
|
43
|
+
action_type = _trim(item.get("action_type") or payload.get("action_type") or payload.get("type"))
|
|
44
|
+
if action_key == _CONFIRM_SEND_PROMPT_ACTION_KEY or action_type == _CONFIRM_SEND_PROMPT_ACTION_KEY:
|
|
45
|
+
return True
|
|
46
|
+
return False
|
|
47
|
+
|
|
48
|
+
|
|
35
49
|
def _resolve_chooser_visibility(
|
|
36
50
|
*,
|
|
37
51
|
activated_mode: str,
|
|
38
52
|
stage_key: str,
|
|
39
53
|
status_key: str,
|
|
40
54
|
current_question: dict[str, Any] | None,
|
|
41
|
-
|
|
55
|
+
next_actions: list[Any],
|
|
42
56
|
) -> tuple[str, bool]:
|
|
43
|
-
if _trim(activated_mode) == "auto":
|
|
44
|
-
return "none", False
|
|
45
57
|
if stage_key == "requirement_intake" and isinstance(current_question, dict):
|
|
46
58
|
return "question", True
|
|
59
|
+
if stage_key == "requirement_intake" and _has_confirm_send_prompt_action(next_actions):
|
|
60
|
+
return _CONFIRM_SEND_PROMPT_ACTION_KEY, True
|
|
61
|
+
if _trim(activated_mode) == "auto":
|
|
62
|
+
return "none", False
|
|
47
63
|
if _is_requirement_intake_mode(activated_mode) and isinstance(current_question, dict):
|
|
48
64
|
return "question", True
|
|
49
|
-
if stage_key == "requirement_intake" and status_key in {"collecting", "blocked"} and bool(required_missing):
|
|
50
|
-
return "question", True
|
|
51
65
|
return "none", False
|
|
52
66
|
|
|
53
67
|
|
|
@@ -90,7 +104,7 @@ def build_composer_ui_projection(
|
|
|
90
104
|
stage_key=stage_key,
|
|
91
105
|
status_key=status_key,
|
|
92
106
|
current_question=current_question,
|
|
93
|
-
|
|
107
|
+
next_actions=next_actions,
|
|
94
108
|
)
|
|
95
109
|
dismiss_token = _build_dismiss_token(
|
|
96
110
|
chooser_kind=chooser_kind,
|
|
@@ -112,12 +126,13 @@ def build_composer_ui_projection(
|
|
|
112
126
|
"next_action_keys": _next_action_keys(next_actions),
|
|
113
127
|
}
|
|
114
128
|
active_manual_mode = _trim(activated_mode) not in {"", "auto"}
|
|
129
|
+
recommendation_visible = not active_manual_mode
|
|
115
130
|
return {
|
|
116
131
|
"active_mode": _trim(activated_mode) or "auto",
|
|
117
132
|
"mode_source": _trim(mode_source),
|
|
118
133
|
"source": "authoritative",
|
|
119
134
|
"recommendation_panel": {
|
|
120
|
-
"visible":
|
|
135
|
+
"visible": recommendation_visible,
|
|
121
136
|
"source": "authoritative",
|
|
122
137
|
"reason": "active_mode" if active_manual_mode else "auto_mode",
|
|
123
138
|
},
|
|
@@ -11,12 +11,15 @@ from flare_kernel.router.completion.intake_summary_content import (
|
|
|
11
11
|
from flare_kernel.router.completion.intake_summary_submission import (
|
|
12
12
|
CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
13
13
|
build_requirement_summary_submission_payload,
|
|
14
|
+
is_requirement_summary_submission,
|
|
14
15
|
)
|
|
15
16
|
from flare_kernel.runtime.orchestration.mode.intake_summary_artifact import (
|
|
16
17
|
build_model_authored_requirement_summary_event,
|
|
17
18
|
)
|
|
18
19
|
|
|
19
|
-
_CANVAS_ONLY_COMMANDS = frozenset(
|
|
20
|
+
_CANVAS_ONLY_COMMANDS = frozenset(
|
|
21
|
+
{"", "send_message", "submit_intake_answer", "continue_collection", "apply", "implement"}
|
|
22
|
+
)
|
|
20
23
|
_CANONICAL_SUMMARY_COMMANDS = frozenset({"apply", "implement"})
|
|
21
24
|
_DOCUMENT_OUTPUT_INTENTS = frozenset({"document_template_output", "document_draft_output"})
|
|
22
25
|
_CONFIRM_SEND_PROMPT_ACTION_KEY = CONFIRM_SEND_PROMPT_ACTION_KEY
|
|
@@ -73,16 +76,16 @@ def build_requirement_summary_confirm_send_action(
|
|
|
73
76
|
"action_key": _CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
74
77
|
"action_type": _CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
75
78
|
"label": "确认发送",
|
|
76
|
-
"target_mode": "
|
|
79
|
+
"target_mode": "requirement_intake",
|
|
77
80
|
"priority": 0,
|
|
78
81
|
"status": "available",
|
|
79
|
-
"command": "
|
|
82
|
+
"command": "implement",
|
|
80
83
|
"reason": "确认后会将整理后的完整提示词作为下一条消息发送。",
|
|
81
84
|
"payload": {
|
|
82
85
|
"action_key": _CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
83
86
|
"action_type": _CONFIRM_SEND_PROMPT_ACTION_KEY,
|
|
84
|
-
"command": "
|
|
85
|
-
"target_mode": "
|
|
87
|
+
"command": "implement",
|
|
88
|
+
"target_mode": "requirement_intake",
|
|
86
89
|
"prompt_text": prompt,
|
|
87
90
|
"answer_value": prompt,
|
|
88
91
|
"submit_label": "确认发送",
|
|
@@ -111,6 +114,50 @@ def with_requirement_summary_confirm_send_action(
|
|
|
111
114
|
return [confirm_action, *resolved]
|
|
112
115
|
|
|
113
116
|
|
|
117
|
+
def without_requirement_summary_confirm_send_action(
|
|
118
|
+
*,
|
|
119
|
+
next_actions: list[dict[str, Any]],
|
|
120
|
+
) -> list[dict[str, Any]]:
|
|
121
|
+
"""Remove consumed prompt-confirm actions without changing recommendations."""
|
|
122
|
+
|
|
123
|
+
actions = next_actions if isinstance(next_actions, list) else []
|
|
124
|
+
return [
|
|
125
|
+
dict(action)
|
|
126
|
+
for action in actions
|
|
127
|
+
if isinstance(action, dict) and not _is_confirm_send_prompt_action(action)
|
|
128
|
+
]
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def is_requirement_summary_submission_payload(payload: dict[str, Any] | None) -> bool:
|
|
132
|
+
"""Return whether the current turn is an explicit prompt-summary submit."""
|
|
133
|
+
|
|
134
|
+
return is_requirement_summary_submission(payload)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def without_requirement_summary_confirm_send_canvas_event(
|
|
138
|
+
*,
|
|
139
|
+
summary_event: dict[str, Any] | None,
|
|
140
|
+
) -> dict[str, Any] | None:
|
|
141
|
+
"""Remove consumed prompt-confirm actions from a Canvas summary event."""
|
|
142
|
+
|
|
143
|
+
if not isinstance(summary_event, dict):
|
|
144
|
+
return summary_event
|
|
145
|
+
payload = _coerce_mapping(summary_event.get("payload"))
|
|
146
|
+
canvas_state = _coerce_mapping(payload.get("canvas_state"))
|
|
147
|
+
if not canvas_state:
|
|
148
|
+
return summary_event
|
|
149
|
+
next_actions = without_requirement_summary_confirm_send_action(
|
|
150
|
+
next_actions=(
|
|
151
|
+
canvas_state.get("next_actions")
|
|
152
|
+
if isinstance(canvas_state.get("next_actions"), list)
|
|
153
|
+
else []
|
|
154
|
+
),
|
|
155
|
+
)
|
|
156
|
+
next_canvas_state = {**canvas_state, "next_actions": next_actions}
|
|
157
|
+
next_payload = {**payload, "canvas_state": next_canvas_state}
|
|
158
|
+
return {**summary_event, "payload": next_payload}
|
|
159
|
+
|
|
160
|
+
|
|
114
161
|
def with_requirement_summary_confirm_send_canvas_event(
|
|
115
162
|
*,
|
|
116
163
|
summary_event: dict[str, Any] | None,
|
|
@@ -215,10 +262,13 @@ def with_model_authored_requirement_summary_event(
|
|
|
215
262
|
|
|
216
263
|
__all__ = [
|
|
217
264
|
"build_requirement_summary_confirm_send_action",
|
|
265
|
+
"is_requirement_summary_submission_payload",
|
|
218
266
|
"resolve_requirement_summary_content",
|
|
219
267
|
"resolve_reviewable_requirement_summary_content",
|
|
220
268
|
"should_render_requirement_summary_as_canvas_only",
|
|
221
269
|
"with_requirement_summary_confirm_send_action",
|
|
222
270
|
"with_requirement_summary_confirm_send_canvas_event",
|
|
223
271
|
"with_model_authored_requirement_summary_event",
|
|
272
|
+
"without_requirement_summary_confirm_send_action",
|
|
273
|
+
"without_requirement_summary_confirm_send_canvas_event",
|
|
224
274
|
]
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/response_builder.py
RENAMED
|
@@ -14,10 +14,16 @@ from flare_kernel.router.completion.intake_commit_contract import (
|
|
|
14
14
|
attach_intake_commit_context_contract,
|
|
15
15
|
)
|
|
16
16
|
from flare_kernel.router.completion.intake_summary_events import (
|
|
17
|
+
is_requirement_summary_submission_payload,
|
|
17
18
|
resolve_reviewable_requirement_summary_content,
|
|
18
19
|
should_render_requirement_summary_as_canvas_only,
|
|
19
20
|
with_requirement_summary_confirm_send_action,
|
|
20
21
|
with_model_authored_requirement_summary_event,
|
|
22
|
+
without_requirement_summary_confirm_send_action,
|
|
23
|
+
without_requirement_summary_confirm_send_canvas_event,
|
|
24
|
+
)
|
|
25
|
+
from flare_kernel.runtime.orchestration.mode.intake_summary_artifact import (
|
|
26
|
+
build_model_authored_requirement_summary_event,
|
|
21
27
|
)
|
|
22
28
|
from flare_kernel.router.next_actions_guard import dedupe_next_actions_by_action_key
|
|
23
29
|
from flare_kernel.runtime.llm.contracts import LLMCompletion
|
|
@@ -130,6 +136,35 @@ def _append_context_answer_lines(*, content_text: str, runtime_snapshot: dict[st
|
|
|
130
136
|
return f"{base}\n\n{appendix}".strip(), context_answer
|
|
131
137
|
|
|
132
138
|
|
|
139
|
+
def _with_requirement_summary_submission_result_event(
|
|
140
|
+
*,
|
|
141
|
+
runtime_snapshot: dict[str, Any],
|
|
142
|
+
content_text: str,
|
|
143
|
+
completion_provider: str,
|
|
144
|
+
completion_model: str,
|
|
145
|
+
completion_status: str,
|
|
146
|
+
) -> list[dict[str, Any]]:
|
|
147
|
+
mode_events = list(
|
|
148
|
+
runtime_snapshot.get("mode_events")
|
|
149
|
+
if isinstance(runtime_snapshot.get("mode_events"), list)
|
|
150
|
+
else []
|
|
151
|
+
)
|
|
152
|
+
summary_event = build_model_authored_requirement_summary_event(
|
|
153
|
+
runtime_snapshot=runtime_snapshot,
|
|
154
|
+
content_text=content_text,
|
|
155
|
+
completion_provider=completion_provider,
|
|
156
|
+
completion_model=completion_model,
|
|
157
|
+
completion_status=completion_status,
|
|
158
|
+
content_source="model",
|
|
159
|
+
)
|
|
160
|
+
summary_event = without_requirement_summary_confirm_send_canvas_event(
|
|
161
|
+
summary_event=summary_event,
|
|
162
|
+
)
|
|
163
|
+
if summary_event:
|
|
164
|
+
mode_events.append(summary_event)
|
|
165
|
+
return mode_events
|
|
166
|
+
|
|
167
|
+
|
|
133
168
|
def build_run_result_payload(
|
|
134
169
|
*,
|
|
135
170
|
content_text: str,
|
|
@@ -183,27 +218,40 @@ def build_run_result_payload(
|
|
|
183
218
|
raw_next_actions = dedupe_next_actions_by_action_key(
|
|
184
219
|
orchestration_status.get("next_actions", runtime_snapshot["next_actions"])
|
|
185
220
|
)
|
|
186
|
-
|
|
187
|
-
|
|
221
|
+
runtime_payload = runtime_snapshot.get("payload") if isinstance(runtime_snapshot.get("payload"), dict) else {}
|
|
222
|
+
summary_submission_turn = is_requirement_summary_submission_payload(runtime_payload)
|
|
223
|
+
if summary_submission_turn:
|
|
224
|
+
next_actions = without_requirement_summary_confirm_send_action(next_actions=raw_next_actions)
|
|
225
|
+
elif canvas_only_summary:
|
|
226
|
+
next_actions = with_requirement_summary_confirm_send_action(
|
|
188
227
|
next_actions=raw_next_actions,
|
|
189
228
|
content_text=summary_content,
|
|
190
229
|
)
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
)
|
|
230
|
+
else:
|
|
231
|
+
next_actions = raw_next_actions
|
|
194
232
|
result_orchestration_status = (
|
|
195
233
|
{**orchestration_status, "next_actions": next_actions}
|
|
196
|
-
if canvas_only_summary
|
|
234
|
+
if canvas_only_summary or summary_submission_turn
|
|
197
235
|
else orchestration_status
|
|
198
236
|
)
|
|
199
|
-
mode_events =
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
237
|
+
mode_events = (
|
|
238
|
+
_with_requirement_summary_submission_result_event(
|
|
239
|
+
runtime_snapshot=runtime_snapshot,
|
|
240
|
+
content_text=content_text,
|
|
241
|
+
completion_provider=completion_provider,
|
|
242
|
+
completion_model=completion_model,
|
|
243
|
+
completion_status=completion_status,
|
|
244
|
+
)
|
|
245
|
+
if summary_submission_turn
|
|
246
|
+
else with_model_authored_requirement_summary_event(
|
|
247
|
+
runtime_snapshot=runtime_snapshot,
|
|
248
|
+
orchestration_status=orchestration_status,
|
|
249
|
+
content_text=content_text,
|
|
250
|
+
completion_provider=completion_provider,
|
|
251
|
+
completion_model=completion_model,
|
|
252
|
+
completion_status=completion_status,
|
|
253
|
+
command=effective_command,
|
|
254
|
+
)
|
|
207
255
|
)
|
|
208
256
|
result = {
|
|
209
257
|
"message": final_message,
|
|
@@ -108,6 +108,17 @@ def _should_skip_guided_completion_for_output_request(
|
|
|
108
108
|
return str(response_intent_result.get("response_intent") or "") in _MODEL_OWNED_RESPONSE_INTENTS
|
|
109
109
|
|
|
110
110
|
|
|
111
|
+
def _should_allow_requirement_clarification_guardrail(
|
|
112
|
+
*,
|
|
113
|
+
resolved_mode: str,
|
|
114
|
+
effective_command: str,
|
|
115
|
+
) -> bool:
|
|
116
|
+
return (
|
|
117
|
+
str(resolved_mode or "").strip() == "requirement_intake"
|
|
118
|
+
and str(effective_command or "").strip() == "send_message"
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
|
|
111
122
|
async def resolve_turn_completion(
|
|
112
123
|
*,
|
|
113
124
|
req: KernelRequest,
|
|
@@ -156,7 +167,10 @@ async def resolve_turn_completion(
|
|
|
156
167
|
if isinstance(guided_completion, LLMCompletion):
|
|
157
168
|
return guided_completion
|
|
158
169
|
|
|
159
|
-
if
|
|
170
|
+
if _should_allow_requirement_clarification_guardrail(
|
|
171
|
+
resolved_mode=resolved_mode,
|
|
172
|
+
effective_command=effective_command,
|
|
173
|
+
) and should_force_requirement_clarification_fn(
|
|
160
174
|
req=req,
|
|
161
175
|
message=raw_message,
|
|
162
176
|
retrieved_knowledge=retrieved_knowledge,
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/amount_quantity.py
RENAMED
|
@@ -111,7 +111,7 @@ def canonicalize_quantity_value(raw_text: str) -> dict[str, Any] | None:
|
|
|
111
111
|
return None
|
|
112
112
|
precision = detect_numeric_precision(text)
|
|
113
113
|
range_match = re.search(
|
|
114
|
-
r"(?P<min>\d+(?:\.\d+)?|[一二两三四五六七八九十百千万]+)\s*(?P<unit
|
|
114
|
+
r"(?P<min>\d+(?:\.\d+)?|[一二两三四五六七八九十百千万]+)\s*(?P<unit>台|套|个|部|件|张|人|节点|机柜|场|次)?\s*(?:到|至|~|~|-|—)\s*(?P<max>\d+(?:\.\d+)?|[一二两三四五六七八九十百千万]+)\s*(?P<unit2>台|套|个|部|件|张|人|节点|机柜|场|次)?",
|
|
115
115
|
text,
|
|
116
116
|
)
|
|
117
117
|
if range_match:
|
|
@@ -137,7 +137,7 @@ def canonicalize_quantity_value(raw_text: str) -> dict[str, Any] | None:
|
|
|
137
137
|
"confidence": 0.92,
|
|
138
138
|
}
|
|
139
139
|
single_match = re.search(
|
|
140
|
-
r"(?P<number>\d+(?:\.\d+)?|[一二两三四五六七八九十百千万]+)\s*(?P<unit
|
|
140
|
+
r"(?P<number>\d+(?:\.\d+)?|[一二两三四五六七八九十百千万]+)\s*(?P<unit>台|套|个|部|件|张|人|节点|机柜|场|次)?",
|
|
141
141
|
text,
|
|
142
142
|
)
|
|
143
143
|
if not single_match:
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/core.py
RENAMED
|
@@ -38,8 +38,8 @@ def extract_intake_budget(message: str) -> str:
|
|
|
38
38
|
return extract_intake_budget_from_router(message)
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
def extract_intake_quantity(message: str) -> str:
|
|
42
|
-
return extract_intake_quantity_from_router(message)
|
|
41
|
+
def extract_intake_quantity(message: str, context: dict[str, Any] | None = None) -> str:
|
|
42
|
+
return extract_intake_quantity_from_router(message, context=context)
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
def extract_intake_constraints(message: str) -> str:
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/extractors.py
RENAMED
|
@@ -9,6 +9,9 @@ from flare_kernel.router.intake.canonicalization import (
|
|
|
9
9
|
canonicalize_delivery_time_value,
|
|
10
10
|
parse_simple_chinese_number,
|
|
11
11
|
)
|
|
12
|
+
from flare_kernel.router.intake.extraction.quantity_classifier import (
|
|
13
|
+
resolve_quantity_unit_from_context,
|
|
14
|
+
)
|
|
12
15
|
from flare_kernel.router.text_safety import (
|
|
13
16
|
contains_any_text,
|
|
14
17
|
normalize_message_text,
|
|
@@ -41,6 +44,7 @@ _INTAKE_INSTRUCTION_CONTEXT_HINTS = (
|
|
|
41
44
|
"下一步",
|
|
42
45
|
"待确认",
|
|
43
46
|
)
|
|
47
|
+
_QUANTITY_UNIT_PATTERN = "台|套|个|部|件|张|场|次"
|
|
44
48
|
|
|
45
49
|
|
|
46
50
|
def is_intake_control_message(message: str) -> bool:
|
|
@@ -128,14 +132,22 @@ def extract_intake_budget(message: str) -> str:
|
|
|
128
132
|
return f"预算{raw_number}{unit}"
|
|
129
133
|
|
|
130
134
|
|
|
131
|
-
def extract_intake_quantity(message: str) -> str:
|
|
135
|
+
def extract_intake_quantity(message: str, context: dict[str, Any] | None = None) -> str:
|
|
132
136
|
if not message:
|
|
133
137
|
return ""
|
|
134
|
-
matched = re.search(
|
|
138
|
+
matched = re.search(
|
|
139
|
+
rf"(?:要|需要|预计|约|大概|采购)?\s*([\d一二两三四五六七八九十百千万]+)\s*({_QUANTITY_UNIT_PATTERN})",
|
|
140
|
+
message,
|
|
141
|
+
)
|
|
135
142
|
if not matched:
|
|
136
143
|
return ""
|
|
137
144
|
raw_number = str(matched.group(1) or "").strip()
|
|
138
|
-
unit =
|
|
145
|
+
unit = resolve_quantity_unit_from_context(
|
|
146
|
+
message=message,
|
|
147
|
+
unit=str(matched.group(2) or "").strip(),
|
|
148
|
+
match_end=matched.end(),
|
|
149
|
+
context=context,
|
|
150
|
+
)
|
|
139
151
|
if not raw_number or not unit:
|
|
140
152
|
return ""
|
|
141
153
|
normalized_number = parse_simple_chinese_number(raw_number)
|
|
@@ -181,7 +193,7 @@ def extract_intake_fields_from_message(
|
|
|
181
193
|
extract_intake_goal_fn: Callable[[str], str] = extract_intake_goal,
|
|
182
194
|
extract_intake_use_case_fn: Callable[[str], str] = extract_intake_use_case,
|
|
183
195
|
extract_intake_budget_fn: Callable[[str], str] = extract_intake_budget,
|
|
184
|
-
extract_intake_quantity_fn: Callable[
|
|
196
|
+
extract_intake_quantity_fn: Callable[..., str] = extract_intake_quantity,
|
|
185
197
|
extract_intake_constraints_fn: Callable[[str], str] = extract_intake_constraints,
|
|
186
198
|
extract_intake_delivery_time_fn: Callable[[str], str] = extract_intake_delivery_time,
|
|
187
199
|
) -> dict[str, Any]:
|
|
@@ -205,7 +217,7 @@ def extract_intake_fields_from_message(
|
|
|
205
217
|
if budget:
|
|
206
218
|
fields["budget"] = budget
|
|
207
219
|
if "quantity" in extraction_scope:
|
|
208
|
-
quantity = extract_intake_quantity_fn(normalized_message)
|
|
220
|
+
quantity = extract_intake_quantity_fn(normalized_message, context=context)
|
|
209
221
|
if quantity:
|
|
210
222
|
fields["quantity"] = quantity
|
|
211
223
|
if "constraints" in extraction_scope:
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Quantity classifier calibration helpers for intake extraction."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from flare_kernel.router.text_safety import contains_any_text
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _coerce_mapping(value: Any) -> dict[str, Any]:
|
|
11
|
+
return value if isinstance(value, dict) else {}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _coerce_text_list(value: Any) -> tuple[str, ...]:
|
|
15
|
+
if not isinstance(value, list):
|
|
16
|
+
return ()
|
|
17
|
+
return tuple(str(item or "").strip() for item in value if str(item or "").strip())
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _quantity_rules(context: dict[str, Any] | None) -> list[dict[str, Any]]:
|
|
21
|
+
semantics = _coerce_mapping(_coerce_mapping(context).get("field_semantics"))
|
|
22
|
+
quantity = _coerce_mapping(semantics.get("quantity"))
|
|
23
|
+
rules = quantity.get("classifier_calibration")
|
|
24
|
+
return [item for item in rules if isinstance(item, dict)] if isinstance(rules, list) else []
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def resolve_quantity_unit_from_context(
|
|
28
|
+
*,
|
|
29
|
+
message: str,
|
|
30
|
+
unit: str,
|
|
31
|
+
match_end: int,
|
|
32
|
+
context: dict[str, Any] | None,
|
|
33
|
+
) -> str:
|
|
34
|
+
following_text = str(message or "")[match_end : match_end + 16]
|
|
35
|
+
for rule in _quantity_rules(context):
|
|
36
|
+
source_units = _coerce_text_list(rule.get("source_units"))
|
|
37
|
+
context_terms = _coerce_text_list(rule.get("context_terms"))
|
|
38
|
+
negative_terms = _coerce_text_list(rule.get("negative_context_terms"))
|
|
39
|
+
target_unit = str(rule.get("target_unit") or "").strip()
|
|
40
|
+
if unit not in source_units or not target_unit:
|
|
41
|
+
continue
|
|
42
|
+
if context_terms and not contains_any_text(following_text, context_terms):
|
|
43
|
+
continue
|
|
44
|
+
if negative_terms and contains_any_text(following_text, negative_terms):
|
|
45
|
+
continue
|
|
46
|
+
return target_unit
|
|
47
|
+
return unit
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
__all__ = ["resolve_quantity_unit_from_context"]
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/artifact_template.py
RENAMED
|
@@ -25,6 +25,9 @@ def append_artifact_template_prompt_parts(prompt_parts: list[str], payload: dict
|
|
|
25
25
|
"artifact_template_instruction: 当前 domain pack 提供了 artifact_template_result;"
|
|
26
26
|
"当 response_intent_result 要求文档/模板/草案输出时,必须优先使用该模板、章节和字段;"
|
|
27
27
|
"模板只提供基础骨架,不是固定文案;必须根据用户主题改写标题、章节名称和正文措辞;"
|
|
28
|
+
"不得原样复制模板中的 {{...}}、字段标识、代码式变量名或英文代号;"
|
|
29
|
+
"需要留空时使用自然中文“待补充/待验证”;"
|
|
30
|
+
"不得主动生成未由用户、实例资料或检索证据给出的产品名/项目代号;"
|
|
28
31
|
"不得把模板缺口变成阻塞式追问;缺失内容应放在正文后的待补充/待验证项。"
|
|
29
32
|
)
|
|
30
33
|
|
|
@@ -231,4 +231,9 @@ def build_prompt(
|
|
|
231
231
|
prompt_parts.append(_build_sourcing_instruction(payload))
|
|
232
232
|
if effective_command == "generate_analysis":
|
|
233
233
|
prompt_parts.append(_build_analysis_instruction(use_sourcing_template=True))
|
|
234
|
+
if effective_command == "generate_analysis" and effective_intent not in {
|
|
235
|
+
"requirement_intake",
|
|
236
|
+
"intelligent_sourcing",
|
|
237
|
+
}:
|
|
238
|
+
prompt_parts.append(_build_analysis_instruction(use_sourcing_template=False))
|
|
234
239
|
return "\n".join(prompt_parts)
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/requirement_intake.py
RENAMED
|
@@ -39,6 +39,8 @@ _REQUIREMENT_INTAKE_INSTRUCTION = (
|
|
|
39
39
|
"如用户要求梳理具体需求、功能、清单或维度,正文必须展开编号维度与项目符号,不要只给一句话概括;"
|
|
40
40
|
"初步结论必须包含明确判断,不要只复述用户原话;优先给出一版可讨论答案,"
|
|
41
41
|
"并写清楚当前已收敛到什么方向、已排除什么方向、哪些内容是当前假设、待验证点或后续需要校准的判断;"
|
|
42
|
+
"当中文量词与上下文对象轻微不一致、但上下文能唯一推导对象或动作时,先按上下文校准为当前假设,"
|
|
43
|
+
"量词差异只作为待验证项,不要升级成阻塞性意图二选一;"
|
|
42
44
|
"专业解释必须说明为什么这样判断、下一步方案如何拆、哪些假设会改变结论;"
|
|
43
45
|
"用户询问输入、资料、字段、要素、标准、准备方式或判断口径时,也必须先围绕用户目标输出专业准备清单或评估维度,"
|
|
44
46
|
"同时给出一版可先推进的方案路径;然后再追问一个最高优先级校准问题;"
|
{flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/completion.py
RENAMED
|
@@ -24,7 +24,7 @@ class DraftCompletionArtifacts:
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def _resolve_llm_trace_status(completion_status: str) -> str:
|
|
27
|
-
return "completed" if completion_status in {"ok", "orchestrated"} else "failed"
|
|
27
|
+
return "completed" if completion_status in {"ok", "orchestrated", "guardrail"} else "failed"
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
async def resolve_draft_completion_artifacts(
|