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.
Files changed (710) hide show
  1. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/PKG-INFO +1 -1
  2. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/pyproject.toml +1 -1
  3. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/__init__.py +8 -0
  4. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/project_memory_contract.py +79 -0
  5. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/composer_ui.py +22 -7
  6. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/intake_summary_events.py +55 -5
  7. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/response_builder.py +62 -14
  8. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/selection.py +15 -1
  9. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/amount_quantity.py +2 -2
  10. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/core.py +2 -2
  11. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/extractors.py +17 -5
  12. flare_kernel-0.2.14/src/flare_kernel/router/intake/extraction/quantity_classifier.py +50 -0
  13. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/enrichment.py +1 -0
  14. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/artifact_template.py +3 -0
  15. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/core.py +5 -0
  16. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/requirement_intake.py +2 -0
  17. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/completion.py +1 -1
  18. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/finalize.py +12 -0
  19. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/phase.py +2 -0
  20. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/post_completion.py +71 -6
  21. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/prologue.py +15 -0
  22. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/phases.py +1 -0
  23. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/structured_reasoning_phase.py +99 -0
  24. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/text_safety.py +6 -1
  25. flare_kernel-0.2.14/src/flare_kernel/runtime/infrastructure/project_memory_review_sql.py +57 -0
  26. flare_kernel-0.2.14/src/flare_kernel/runtime/infrastructure/project_memory_review_store.py +212 -0
  27. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/project_memory_store.py +5 -0
  28. flare_kernel-0.2.14/src/flare_kernel/runtime/infrastructure/project_memory_version_sql.py +46 -0
  29. flare_kernel-0.2.14/src/flare_kernel/runtime/infrastructure/project_memory_version_store.py +205 -0
  30. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/artifact_template_runtime.py +6 -1
  31. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/canvas_state.py +28 -1
  32. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_canvas.py +1 -1
  33. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_question.py +0 -4
  34. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_summary_artifact.py +5 -0
  35. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/patch_preview_runtime.py +62 -13
  36. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/structured_reasoning.py +2 -0
  37. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/project_memory/__init__.py +4 -0
  38. flare_kernel-0.2.14/src/flare_kernel/runtime/project_memory/decision.py +89 -0
  39. flare_kernel-0.2.14/src/flare_kernel/runtime/project_memory/promotion.py +187 -0
  40. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/project_memory/recall.py +35 -2
  41. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/project_memory/runtime.py +2 -0
  42. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/PKG-INFO +1 -1
  43. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/SOURCES.txt +14 -0
  44. flare_kernel-0.2.14/tests/test_artifact_template_prompt.py +26 -0
  45. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_artifact_template_runtime.py +20 -0
  46. flare_kernel-0.2.14/tests/test_canonical_composer_ui_projection.py +55 -0
  47. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_completion_response_builder.py +79 -1
  48. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_completion_selection.py +38 -0
  49. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_amount_quantity.py +7 -0
  50. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_extraction.py +22 -0
  51. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_extraction_extractors.py +1 -1
  52. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orc15_guided_completion.py +1 -1
  53. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_patch_preview_runtime.py +20 -1
  54. flare_kernel-0.2.14/tests/test_project_memory_promotion.py +86 -0
  55. flare_kernel-0.2.14/tests/test_project_memory_promotion_decision.py +118 -0
  56. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_project_memory_runtime.py +58 -0
  57. flare_kernel-0.2.14/tests/test_project_memory_versions.py +93 -0
  58. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_prompting_analysis_instruction.py +10 -0
  59. flare_kernel-0.2.14/tests/test_requirement_intake_canvas_visibility.py +78 -0
  60. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_model_question_plan.py +50 -0
  61. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_summary_route.py +47 -2
  62. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_completion.py +47 -0
  63. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_finalize.py +11 -0
  64. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_post_completion.py +131 -1
  65. flare_kernel-0.2.14/tests/test_streaming_draft_prologue.py +94 -0
  66. flare_kernel-0.2.14/tests/test_streaming_structured_reasoning_projection.py +103 -0
  67. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_structured_prompt_context.py +1 -0
  68. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_text_safety.py +9 -0
  69. flare_kernel-0.2.12/tests/test_streaming_draft_prologue.py +0 -45
  70. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/README.md +0 -0
  71. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/setup.cfg +0 -0
  72. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/__init__.py +0 -0
  73. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/app.py +0 -0
  74. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/auth_contract.py +0 -0
  75. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/context.py +0 -0
  76. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/kernel_contract.py +0 -0
  77. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/list_event_contract.py +0 -0
  78. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/mode.py +0 -0
  79. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/project_contract.py +0 -0
  80. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/run_contract.py +0 -0
  81. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/session_contract.py +0 -0
  82. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/contracts/update_contract.py +0 -0
  83. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/list_event_broker.py +0 -0
  84. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/main.py +0 -0
  85. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/project_record_memory_store.py +0 -0
  86. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/project_store.py +0 -0
  87. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/__init__.py +0 -0
  88. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/__init__.py +0 -0
  89. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/auth.py +0 -0
  90. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/auth_guard.py +0 -0
  91. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/chat.py +0 -0
  92. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/errors.py +0 -0
  93. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/list_events.py +0 -0
  94. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/project.py +0 -0
  95. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/run.py +0 -0
  96. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/session.py +0 -0
  97. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/session_list_events.py +0 -0
  98. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/api/update.py +0 -0
  99. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/__init__.py +0 -0
  100. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/analysis.py +0 -0
  101. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/checkpoint.py +0 -0
  102. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context/__init__.py +0 -0
  103. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context/analysis.py +0 -0
  104. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context/inputs.py +0 -0
  105. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context/session.py +0 -0
  106. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/context_authority.py +0 -0
  107. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/contract_support.py +0 -0
  108. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/flow.py +0 -0
  109. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/mode_projection.py +0 -0
  110. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/payload.py +0 -0
  111. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/projection.py +0 -0
  112. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/canonical/track_actions.py +0 -0
  113. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/__init__.py +0 -0
  114. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/analysis_policy.py +0 -0
  115. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/analysis_result_contract.py +0 -0
  116. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/capability_boundary.py +0 -0
  117. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/guided.py +0 -0
  118. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/intake_commit_contract.py +0 -0
  119. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/intake_summary_content.py +0 -0
  120. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/intake_summary_submission.py +0 -0
  121. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/completion/stream_collect.py +0 -0
  122. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/context/__init__.py +0 -0
  123. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/context/endpoint.py +0 -0
  124. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/context/sourcing_preview.py +0 -0
  125. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/hardcode_boundary.py +0 -0
  126. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/__init__.py +0 -0
  127. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/answer.py +0 -0
  128. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/__init__.py +0 -0
  129. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/checkpoint.py +0 -0
  130. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/core.py +0 -0
  131. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/hydration.py +0 -0
  132. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/authority/session.py +0 -0
  133. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/canonicalization.py +0 -0
  134. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/clarification.py +0 -0
  135. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/decision_rules.py +0 -0
  136. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/delivery_time.py +0 -0
  137. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/entry_policy.py +0 -0
  138. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/__init__.py +0 -0
  139. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/extraction/merge.py +0 -0
  140. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/__init__.py +0 -0
  141. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/core.py +0 -0
  142. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/entity.py +0 -0
  143. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/payload.py +0 -0
  144. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_projection/source.py +0 -0
  145. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/field_scope.py +0 -0
  146. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/__init__.py +0 -0
  147. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/confirmed_updates.py +0 -0
  148. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/flags.py +0 -0
  149. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/followup.py +0 -0
  150. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/followup_work_item.py +0 -0
  151. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/open_fields.py +0 -0
  152. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/status.py +0 -0
  153. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/guided/summary.py +0 -0
  154. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/inputs.py +0 -0
  155. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/legacy_question.py +0 -0
  156. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/node_state.py +0 -0
  157. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/numeric.py +0 -0
  158. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/payload_updates.py +0 -0
  159. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/readiness.py +0 -0
  160. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/state_persistence.py +0 -0
  161. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/__init__.py +0 -0
  162. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/chooser_stage.py +0 -0
  163. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/core.py +0 -0
  164. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/guided_session.py +0 -0
  165. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/projection.py +0 -0
  166. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/status/schema.py +0 -0
  167. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intake/workflow_checkpoint.py +0 -0
  168. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/__init__.py +0 -0
  169. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/classifier_utils.py +0 -0
  170. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/compat_aliases.py +0 -0
  171. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/escalation/__init__.py +0 -0
  172. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/escalation/override.py +0 -0
  173. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/escalation/pipeline.py +0 -0
  174. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/escalation/signal.py +0 -0
  175. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/routing.py +0 -0
  176. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/session_intent/__init__.py +0 -0
  177. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/session_intent/core.py +0 -0
  178. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/session_intent/fields.py +0 -0
  179. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/intent/session_intent/small_talk.py +0 -0
  180. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel.py +0 -0
  181. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_constants/__init__.py +0 -0
  182. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_constants/intake.py +0 -0
  183. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_constants/intent.py +0 -0
  184. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_constants/patch.py +0 -0
  185. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/__init__.py +0 -0
  186. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/health.py +0 -0
  187. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/knowledge.py +0 -0
  188. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/sourcing.py +0 -0
  189. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_endpoint_handlers/turn.py +0 -0
  190. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/__init__.py +0 -0
  191. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/canonical_state.py +0 -0
  192. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/dependency_resolution.py +0 -0
  193. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/domain_pack_payload.py +0 -0
  194. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/flow.py +0 -0
  195. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/orchestration.py +0 -0
  196. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/payload_enrichment.py +0 -0
  197. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/turn_context.py +0 -0
  198. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_facade/utils.py +0 -0
  199. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_flow_bindings/__init__.py +0 -0
  200. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_flow_bindings/intent_query.py +0 -0
  201. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_flow_bindings/mode.py +0 -0
  202. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_flow_bindings/session_intent.py +0 -0
  203. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/__init__.py +0 -0
  204. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/action.py +0 -0
  205. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/intake.py +0 -0
  206. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/intent_query.py +0 -0
  207. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_request_pipeline/intent_signal.py +0 -0
  208. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/__init__.py +0 -0
  209. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/action.py +0 -0
  210. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/execution.py +0 -0
  211. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/run.py +0 -0
  212. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/kernel_route/stream.py +0 -0
  213. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/mode/__init__.py +0 -0
  214. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/mode/resolution.py +0 -0
  215. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/mode/switch.py +0 -0
  216. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/next_actions_guard.py +0 -0
  217. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/__init__.py +0 -0
  218. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/__init__.py +0 -0
  219. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/action_readiness.py +0 -0
  220. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/actions.py +0 -0
  221. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/analysis_entry_decision.py +0 -0
  222. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/builder.py +0 -0
  223. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/checkpoint_state.py +0 -0
  224. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/context.py +0 -0
  225. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/context_helpers.py +0 -0
  226. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/core.py +0 -0
  227. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/decision.py +0 -0
  228. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/followup_state.py +0 -0
  229. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/projection.py +0 -0
  230. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/result.py +0 -0
  231. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/runtime_state.py +0 -0
  232. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/__init__.py +0 -0
  233. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/context.py +0 -0
  234. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/decision.py +0 -0
  235. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/entry.py +0 -0
  236. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/flow.py +0 -0
  237. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/followup.py +0 -0
  238. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/intent.py +0 -0
  239. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/node.py +0 -0
  240. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/payload.py +0 -0
  241. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/status/state/unpack.py +0 -0
  242. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/trace/__init__.py +0 -0
  243. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/trace/core.py +0 -0
  244. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/trace/projection.py +0 -0
  245. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/orchestration/trace/steps.py +0 -0
  246. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/patch_contract.py +0 -0
  247. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/__init__.py +0 -0
  248. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/action.py +0 -0
  249. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/analysis_canvas.py +0 -0
  250. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/payload/turn_act_enrichment.py +0 -0
  251. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/__init__.py +0 -0
  252. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/capability_boundary.py +0 -0
  253. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/context_blocks.py +0 -0
  254. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/patch_preview.py +0 -0
  255. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/response_strategy.py +0 -0
  256. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/summary_contract.py +0 -0
  257. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/prompting/track_context.py +0 -0
  258. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/request/__init__.py +0 -0
  259. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/request/identity.py +0 -0
  260. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/request/intent_resolution.py +0 -0
  261. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/response_intent/__init__.py +0 -0
  262. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/response_intent/contracts.py +0 -0
  263. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/response_intent/document_output.py +0 -0
  264. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/response_intent/resolution.py +0 -0
  265. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/__init__.py +0 -0
  266. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/aliases.py +0 -0
  267. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/field_queries.py +0 -0
  268. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/projection.py +0 -0
  269. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/query_builder.py +0 -0
  270. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/retrieval/search.py +0 -0
  271. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/source_library.py +0 -0
  272. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/__init__.py +0 -0
  273. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/__init__.py +0 -0
  274. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/draft/phase_timing.py +0 -0
  275. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/event_emitter.py +0 -0
  276. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/intake/__init__.py +0 -0
  277. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/intake/phase.py +0 -0
  278. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/mode/__init__.py +0 -0
  279. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/mode/event_payload.py +0 -0
  280. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/mode/events.py +0 -0
  281. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/__init__.py +0 -0
  282. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/bootstrap.py +0 -0
  283. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/builder.py +0 -0
  284. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/builder_transport.py +0 -0
  285. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/draft_phase.py +0 -0
  286. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/phase_groups.py +0 -0
  287. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/response/runtime.py +0 -0
  288. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/retrieval/__init__.py +0 -0
  289. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/retrieval/phase.py +0 -0
  290. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/runtime/__init__.py +0 -0
  291. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/runtime/sourcing_observations.py +0 -0
  292. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/streaming/runtime/steps.py +0 -0
  293. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/router/turn_act.py +0 -0
  294. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/run_store.py +0 -0
  295. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/__init__.py +0 -0
  296. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/auth/__init__.py +0 -0
  297. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/auth/exchange.py +0 -0
  298. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/auth/policy.py +0 -0
  299. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/auth/scope_guard.py +0 -0
  300. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/__init__.py +0 -0
  301. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/analysis_application.py +0 -0
  302. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/document_application.py +0 -0
  303. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/intake_application.py +0 -0
  304. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/reasoning_application.py +0 -0
  305. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/session_context.py +0 -0
  306. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/context/track_application.py +0 -0
  307. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/__init__.py +0 -0
  308. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/provider_audit.py +0 -0
  309. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/provider_audit_export.py +0 -0
  310. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/replay_snapshot.py +0 -0
  311. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/replay_snapshot_io.py +0 -0
  312. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/diagnostics/replay_snapshot_validation.py +0 -0
  313. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/__init__.py +0 -0
  314. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/domain_pack_loader.py +0 -0
  315. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/domain_pack_paths.py +0 -0
  316. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/domain_pack_root.py +0 -0
  317. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/domain/profile_resolution.py +0 -0
  318. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/execution/__init__.py +0 -0
  319. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/execution/agent_runtime.py +0 -0
  320. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/execution/skill_runtime.py +0 -0
  321. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/__init__.py +0 -0
  322. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/chat_memory.py +0 -0
  323. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/database.py +0 -0
  324. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/dependency_status.py +0 -0
  325. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/infrastructure.py +0 -0
  326. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_ingest.py +0 -0
  327. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_memory.py +0 -0
  328. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_postgres_search.py +0 -0
  329. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_qdrant_search.py +0 -0
  330. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_search.py +0 -0
  331. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/knowledge_terms.py +0 -0
  332. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/logging.py +0 -0
  333. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/project_memory_codec.py +0 -0
  334. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/project_memory_sql.py +0 -0
  335. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/redis_client.py +0 -0
  336. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/run/__init__.py +0 -0
  337. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/run/repository.py +0 -0
  338. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/run/repository_memory.py +0 -0
  339. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/run/repository_sql.py +0 -0
  340. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/__init__.py +0 -0
  341. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/columns.py +0 -0
  342. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/repository.py +0 -0
  343. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/repository_memory.py +0 -0
  344. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/session/repository_sql.py +0 -0
  345. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/__init__.py +0 -0
  346. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/document_understanding_codec.py +0 -0
  347. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/library_persistence.py +0 -0
  348. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/ocr_provider.py +0 -0
  349. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/schema.py +0 -0
  350. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/source/text_extractor.py +0 -0
  351. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/__init__.py +0 -0
  352. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/instance_profile_adapter.py +0 -0
  353. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/persistence.py +0 -0
  354. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider.py +0 -0
  355. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_config.py +0 -0
  356. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_gateway.py +0 -0
  357. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_normalize.py +0 -0
  358. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_public.py +0 -0
  359. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/sourcing/provider_result.py +0 -0
  360. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/trace.py +0 -0
  361. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/infrastructure/vector_store.py +0 -0
  362. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/__init__.py +0 -0
  363. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/__init__.py +0 -0
  364. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/decision.py +0 -0
  365. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/lexicon.py +0 -0
  366. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/preprocessing.py +0 -0
  367. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation/signals.py +0 -0
  368. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/intent/intent_and_escalation_classifier.py +0 -0
  369. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/__init__.py +0 -0
  370. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/completion_capture.py +0 -0
  371. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/config.py +0 -0
  372. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/contracts.py +0 -0
  373. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/dashscope_provider.py +0 -0
  374. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/dashscope_streaming_provider.py +0 -0
  375. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/fallback_policy.py +0 -0
  376. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/intent_model_policy.py +0 -0
  377. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/llm_provider.py +0 -0
  378. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/model_router.py +0 -0
  379. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/native_streaming.py +0 -0
  380. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_health.py +0 -0
  381. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_health_probe.py +0 -0
  382. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_health_snapshot.py +0 -0
  383. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_health_source.py +0 -0
  384. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_quota.py +0 -0
  385. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_trace.py +0 -0
  386. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/provider_usage.py +0 -0
  387. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/replay_provider.py +0 -0
  388. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/llm/streaming_provider.py +0 -0
  389. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/__init__.py +0 -0
  390. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/analysis_route_policy.py +0 -0
  391. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/analysis_router_runtime.py +0 -0
  392. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/canvas/__init__.py +0 -0
  393. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/canvas/toolbar_actions.py +0 -0
  394. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/canvas_sourcing_contract.py +0 -0
  395. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/decision_engine.py +0 -0
  396. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/__init__.py +0 -0
  397. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/field_definitions.py +0 -0
  398. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_action_resolution.py +0 -0
  399. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_actions.py +0 -0
  400. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_content.py +0 -0
  401. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_events.py +0 -0
  402. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_context.py +0 -0
  403. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_coverage.py +0 -0
  404. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_draft_payload.py +0 -0
  405. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_events.py +0 -0
  406. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_field_projection.py +0 -0
  407. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_model_question_plan.py +0 -0
  408. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_next_actions_payload.py +0 -0
  409. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_payloads.py +0 -0
  410. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_progress_payload.py +0 -0
  411. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_question_lifecycle.py +0 -0
  412. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_question_plan_carrier.py +0 -0
  413. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/intake_question_progress.py +0 -0
  414. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/orchestration.py +0 -0
  415. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/question_selection.py +0 -0
  416. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/reasoning.py +0 -0
  417. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/runtime.py +0 -0
  418. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/shared.py +0 -0
  419. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/sourcing_actions.py +0 -0
  420. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/sourcing_events.py +0 -0
  421. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/sourcing_preview.py +0 -0
  422. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/sourcing_report.py +0 -0
  423. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/mode/state_transition.py +0 -0
  424. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/module_prompt_registry.py +0 -0
  425. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/observation.py +0 -0
  426. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/response_strategy_runtime.py +0 -0
  427. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/session_context_runtime.py +0 -0
  428. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/__init__.py +0 -0
  429. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/additive_search.py +0 -0
  430. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/analysis_entry.py +0 -0
  431. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/candidate_explainability.py +0 -0
  432. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/canvas_state.py +0 -0
  433. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/context_round.py +0 -0
  434. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/event_payloads.py +0 -0
  435. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/instance_db_runtime.py +0 -0
  436. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/internal_runtime.py +0 -0
  437. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/mcp_runtime.py +0 -0
  438. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/observation_payloads.py +0 -0
  439. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/observations.py +0 -0
  440. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/parameter_draft.py +0 -0
  441. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/provider_config_loader.py +0 -0
  442. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/provider_health.py +0 -0
  443. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/result_window.py +0 -0
  444. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/search_runtime.py +0 -0
  445. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/source_priority.py +0 -0
  446. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/sourcing/web_runtime.py +0 -0
  447. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/structured_prompt_context.py +0 -0
  448. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/orchestration/track_runtime.py +0 -0
  449. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/project_memory/extraction.py +0 -0
  450. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/__init__.py +0 -0
  451. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/__init__.py +0 -0
  452. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/api.py +0 -0
  453. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/branching/__init__.py +0 -0
  454. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/branching/core.py +0 -0
  455. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/branching/policy.py +0 -0
  456. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/context.py +0 -0
  457. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/field_selection.py +0 -0
  458. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/gap_detection.py +0 -0
  459. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/hypothesis.py +0 -0
  460. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/planning.py +0 -0
  461. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/priority.py +0 -0
  462. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/__init__.py +0 -0
  463. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/builder.py +0 -0
  464. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/decision.py +0 -0
  465. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/extraction.py +0 -0
  466. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/planner.py +0 -0
  467. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/question/structured.py +0 -0
  468. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/readiness/__init__.py +0 -0
  469. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/readiness/core.py +0 -0
  470. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/readiness/scoring.py +0 -0
  471. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/shared.py +0 -0
  472. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/understanding_state.py +0 -0
  473. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/visible_response.py +0 -0
  474. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/reasoning/intake/visible_summary.py +0 -0
  475. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/session/__init__.py +0 -0
  476. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/session/checkpoint_manager.py +0 -0
  477. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/session/intake_session_store.py +0 -0
  478. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/session/models.py +0 -0
  479. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/__init__.py +0 -0
  480. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/artifacts.py +0 -0
  481. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/chunk_storage.py +0 -0
  482. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/knowledge_storage.py +0 -0
  483. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/runtime.py +0 -0
  484. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/runtime/source_ingestion/storage.py +0 -0
  485. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_archive_context.py +0 -0
  486. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_archive_graph.py +0 -0
  487. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_archive_metrics.py +0 -0
  488. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_archive_summary.py +0 -0
  489. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_lifecycle_policy.py +0 -0
  490. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_message_policy.py +0 -0
  491. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_message_records.py +0 -0
  492. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_record_policy.py +0 -0
  493. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_replay.py +0 -0
  494. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/session_store.py +0 -0
  495. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/__init__.py +0 -0
  496. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/compatibility.py +0 -0
  497. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/planner.py +0 -0
  498. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/registry.py +0 -0
  499. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/update/versioning.py +0 -0
  500. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel/user_store.py +0 -0
  501. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/dependency_links.txt +0 -0
  502. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/requires.txt +0 -0
  503. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/src/flare_kernel.egg-info/top_level.txt +0 -0
  504. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_action_payload.py +0 -0
  505. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_action_readiness.py +0 -0
  506. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_canvas_payload.py +0 -0
  507. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_context_patch.py +0 -0
  508. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_e2e.py +0 -0
  509. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_entry_decision.py +0 -0
  510. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_route_projection.py +0 -0
  511. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_analysis_route_runtime.py +0 -0
  512. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_auth_exchange.py +0 -0
  513. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_auth_scope_guard.py +0 -0
  514. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_basics.py +0 -0
  515. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_builder_split_modules.py +0 -0
  516. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_business_hardcode_guard.py +0 -0
  517. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_mode_projection.py +0 -0
  518. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_context_analysis.py +0 -0
  519. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_context_inputs.py +0 -0
  520. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_context_session.py +0 -0
  521. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_flow.py +0 -0
  522. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_payload.py +0 -0
  523. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canonical_state_projection.py +0 -0
  524. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_canvas_sourcing_contract_meta.py +0 -0
  525. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_capability_boundary.py +0 -0
  526. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_chat_api_alias.py +0 -0
  527. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_command_resolution_analysis_mode.py +0 -0
  528. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_compat_aliases.py +0 -0
  529. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_context_authority_projection.py +0 -0
  530. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_dashscope_streaming_provider.py +0 -0
  531. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_decision_engine.py +0 -0
  532. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_domain_pack_loader.py +0 -0
  533. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_endpoint_context.py +0 -0
  534. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_flare_v1_patch_contract.py +0 -0
  535. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_generic_domain_pack_options.py +0 -0
  536. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_guided_completion.py +0 -0
  537. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_infrastructure_helpers.py +0 -0
  538. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_infrastructure_knowledge.py +0 -0
  539. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_answer.py +0 -0
  540. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_authority.py +0 -0
  541. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_authority_checkpoint.py +0 -0
  542. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_authority_hydration.py +0 -0
  543. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_authority_session.py +0 -0
  544. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_canonicalization.py +0 -0
  545. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_clarification.py +0 -0
  546. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_commit_context_patch.py +0 -0
  547. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_decision_rules.py +0 -0
  548. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_delivery_time.py +0 -0
  549. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_domain_context_options.py +0 -0
  550. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_entry_policy.py +0 -0
  551. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_extraction_merge.py +0 -0
  552. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_projection.py +0 -0
  553. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_projection_entity.py +0 -0
  554. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_projection_payload.py +0 -0
  555. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_projection_source.py +0 -0
  556. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_field_scope.py +0 -0
  557. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_confirmed_updates.py +0 -0
  558. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_flags.py +0 -0
  559. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_followup.py +0 -0
  560. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_followup_work_item.py +0 -0
  561. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_open_fields.py +0 -0
  562. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_status.py +0 -0
  563. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_guided_summary.py +0 -0
  564. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_inputs.py +0 -0
  565. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_node_state.py +0 -0
  566. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_numeric.py +0 -0
  567. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_payload_updates.py +0 -0
  568. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_question_extraction.py +0 -0
  569. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_question_projection.py +0 -0
  570. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_readiness.py +0 -0
  571. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_reasoning_priority.py +0 -0
  572. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_state_persistence.py +0 -0
  573. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status.py +0 -0
  574. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status_guided_session.py +0 -0
  575. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status_projection.py +0 -0
  576. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status_schema.py +0 -0
  577. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_status_stage.py +0 -0
  578. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_visible_response.py +0 -0
  579. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intake_workflow_checkpoint.py +0 -0
  580. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_classifier_utils.py +0 -0
  581. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_escalation_classifier.py +0 -0
  582. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_escalation_override.py +0 -0
  583. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_escalation_pipeline.py +0 -0
  584. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_escalation_signal.py +0 -0
  585. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_resolution.py +0 -0
  586. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_retrieval.py +0 -0
  587. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_routing.py +0 -0
  588. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_intent_type_compat_aliases.py +0 -0
  589. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_alias_delegation.py +0 -0
  590. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_endpoint_handlers.py +0 -0
  591. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_endpoint_handlers_sourcing.py +0 -0
  592. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_facade_helpers.py +0 -0
  593. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_facade_turn_context.py +0 -0
  594. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_intent_query_flow.py +0 -0
  595. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_mode_flow.py +0 -0
  596. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_route_execution_wrappers.py +0 -0
  597. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_kernel_session_intent_flow.py +0 -0
  598. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_list_events.py +0 -0
  599. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider.py +0 -0
  600. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_fallback_policy.py +0 -0
  601. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_health_file.py +0 -0
  602. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_health_probe.py +0 -0
  603. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_health_snapshot.py +0 -0
  604. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_live.py +0 -0
  605. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_native_streaming.py +0 -0
  606. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_quota.py +0 -0
  607. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_provider_streaming.py +0 -0
  608. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_llm_replay_provider.py +0 -0
  609. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_mode_orchestration_state_bridge.py +0 -0
  610. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_mode_reasoning.py +0 -0
  611. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_mode_resolution.py +0 -0
  612. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_mode_switch.py +0 -0
  613. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_model_router.py +0 -0
  614. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_module_prompt_registry.py +0 -0
  615. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_new_flow_guard.py +0 -0
  616. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orc15_turn_act_classification.py +0 -0
  617. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orc16_main_chain_hardcode_boundary.py +0 -0
  618. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_checkpoint_state.py +0 -0
  619. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_followup_state.py +0 -0
  620. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_context.py +0 -0
  621. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_context_helpers.py +0 -0
  622. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_decision.py +0 -0
  623. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_projection.py +0 -0
  624. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_result.py +0 -0
  625. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_runtime_state.py +0 -0
  626. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_context.py +0 -0
  627. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_decision.py +0 -0
  628. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_entry.py +0 -0
  629. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_followup.py +0 -0
  630. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_intent.py +0 -0
  631. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_node.py +0 -0
  632. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_payload.py +0 -0
  633. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_status_state_unpack.py +0 -0
  634. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_trace.py +0 -0
  635. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_trace_projection.py +0 -0
  636. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_orchestration_trace_steps.py +0 -0
  637. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_patch_contract.py +0 -0
  638. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_payload_enrichment.py +0 -0
  639. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_pln03_question_chooser.py +0 -0
  640. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_pln11_question_option_extraction.py +0 -0
  641. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_project_api.py +0 -0
  642. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_project_memory_store.py +0 -0
  643. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_prompting_requirement_intake.py +0 -0
  644. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_prompting_user_template_instruction.py +0 -0
  645. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_provider_audit.py +0 -0
  646. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_provider_audit_export.py +0 -0
  647. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_replay_snapshot.py +0 -0
  648. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_replay_snapshot_validation.py +0 -0
  649. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_request_identity.py +0 -0
  650. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_request_intent_resolution.py +0 -0
  651. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_canvas_progress.py +0 -0
  652. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_canvas_state.py +0 -0
  653. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_continuation.py +0 -0
  654. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_requirement_intake_flow.py +0 -0
  655. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_response_intent_resolution.py +0 -0
  656. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_response_strategy_runtime.py +0 -0
  657. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_aliases.py +0 -0
  658. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_field_queries.py +0 -0
  659. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_projection.py +0 -0
  660. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_query_builder.py +0 -0
  661. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_retrieval_search.py +0 -0
  662. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_run_api.py +0 -0
  663. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_run_sql_repository.py +0 -0
  664. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_run_store.py +0 -0
  665. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_api.py +0 -0
  666. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_archive_summary.py +0 -0
  667. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_context_persistence.py +0 -0
  668. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_intent.py +0 -0
  669. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_intent_fields.py +0 -0
  670. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_intent_small_talk.py +0 -0
  671. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_lifecycle_api.py +0 -0
  672. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_replay_api.py +0 -0
  673. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_sql_columns.py +0 -0
  674. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_sql_migration.py +0 -0
  675. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_session_sql_repository.py +0 -0
  676. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_ingestion_runtime.py +0 -0
  677. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_ingestion_ssot_acceptance.py +0 -0
  678. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_library.py +0 -0
  679. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_library_persistence_scope.py +0 -0
  680. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_source_text_extractor.py +0 -0
  681. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_additive_search.py +0 -0
  682. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_candidate_explainability.py +0 -0
  683. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_context_reuse.py +0 -0
  684. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_e2e.py +0 -0
  685. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_instance_profile_adapter.py +0 -0
  686. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_parameter_draft.py +0 -0
  687. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_preview_context.py +0 -0
  688. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_provider.py +0 -0
  689. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_provider_adapters.py +0 -0
  690. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_provider_config_loader.py +0 -0
  691. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_provider_health.py +0 -0
  692. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_runtime_additive_search.py +0 -0
  693. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_search_runtime.py +0 -0
  694. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_sourcing_source_priority.py +0 -0
  695. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_stream_collect_completion.py +0 -0
  696. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_intake_canvas_sync.py +0 -0
  697. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_draft_phase.py +0 -0
  698. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_event_emitter.py +0 -0
  699. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_intake_phase.py +0 -0
  700. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_mode_event_payload.py +0 -0
  701. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_mode_events.py +0 -0
  702. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_response_bootstrap.py +0 -0
  703. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_response_phases.py +0 -0
  704. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_response_runtime.py +0 -0
  705. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_response_transport.py +0 -0
  706. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_retrieval_phase.py +0 -0
  707. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_streaming_runtime_steps.py +0 -0
  708. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_track_prompt_context.py +0 -0
  709. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_track_runtime.py +0 -0
  710. {flare_kernel-0.2.12 → flare_kernel-0.2.14}/tests/test_update_plane.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flare-kernel
3
- Version: 0.2.12
3
+ Version: 0.2.14
4
4
  Summary: FLARE kernel runtime package
5
5
  License: Proprietary
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "flare-kernel"
7
- version = "0.2.12"
7
+ version = "0.2.14"
8
8
  description = "FLARE kernel runtime package"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -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",
@@ -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
@@ -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
- required_missing: list[Any],
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
- required_missing=required_missing,
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": not active_manual_mode,
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({"", "send_message", "apply", "implement"})
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": "auto",
79
+ "target_mode": "requirement_intake",
77
80
  "priority": 0,
78
81
  "status": "available",
79
- "command": "send_message",
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": "send_message",
85
- "target_mode": "auto",
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
  ]
@@ -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
- next_actions = (
187
- with_requirement_summary_confirm_send_action(
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
- if canvas_only_summary
192
- else raw_next_actions
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 = with_model_authored_requirement_summary_event(
200
- runtime_snapshot=runtime_snapshot,
201
- orchestration_status=orchestration_status,
202
- content_text=content_text,
203
- completion_provider=completion_provider,
204
- completion_model=completion_model,
205
- completion_status=completion_status,
206
- command=effective_command,
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 should_force_requirement_clarification_fn(
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,
@@ -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>台|套|个|部|件|张|人|节点|机柜)?\s*(?:到|至|~|~|-|—)\s*(?P<max>\d+(?:\.\d+)?|[一二两三四五六七八九十百千万]+)\s*(?P<unit2>台|套|个|部|件|张|人|节点|机柜)?",
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:
@@ -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:
@@ -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(r"(?:要|需要|预计|约|大概|采购)?\s*([\d一二两三四五六七八九十百千万]+)\s*(台|套|个|部|件|张)", message)
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 = str(matched.group(2) or "").strip()
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[[str], str] = extract_intake_quantity,
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"]
@@ -192,6 +192,7 @@ def enrich_payload(
192
192
  context={
193
193
  "mode": resolved_mode,
194
194
  "allowed_fields": allowed_fields,
195
+ "field_semantics": payload.get("field_semantics"),
195
196
  },
196
197
  )
197
198
  )
@@ -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)
@@ -39,6 +39,8 @@ _REQUIREMENT_INTAKE_INSTRUCTION = (
39
39
  "如用户要求梳理具体需求、功能、清单或维度,正文必须展开编号维度与项目符号,不要只给一句话概括;"
40
40
  "初步结论必须包含明确判断,不要只复述用户原话;优先给出一版可讨论答案,"
41
41
  "并写清楚当前已收敛到什么方向、已排除什么方向、哪些内容是当前假设、待验证点或后续需要校准的判断;"
42
+ "当中文量词与上下文对象轻微不一致、但上下文能唯一推导对象或动作时,先按上下文校准为当前假设,"
43
+ "量词差异只作为待验证项,不要升级成阻塞性意图二选一;"
42
44
  "专业解释必须说明为什么这样判断、下一步方案如何拆、哪些假设会改变结论;"
43
45
  "用户询问输入、资料、字段、要素、标准、准备方式或判断口径时,也必须先围绕用户目标输出专业准备清单或评估维度,"
44
46
  "同时给出一版可先推进的方案路径;然后再追问一个最高优先级校准问题;"
@@ -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(