flare-kernel 0.2.11__tar.gz → 0.2.12__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 (697) hide show
  1. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/PKG-INFO +3 -2
  2. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/README.md +2 -1
  3. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/pyproject.toml +1 -1
  4. flare_kernel-0.2.12/src/flare_kernel/project_record_memory_store.py +47 -0
  5. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/project_store.py +21 -0
  6. flare_kernel-0.2.12/src/flare_kernel/router/canonical/mode_projection.py +47 -0
  7. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/payload.py +15 -4
  8. flare_kernel-0.2.12/src/flare_kernel/router/completion/capability_boundary.py +165 -0
  9. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/completion/guided.py +42 -6
  10. flare_kernel-0.2.12/src/flare_kernel/router/completion/intake_commit_contract.py +46 -0
  11. flare_kernel-0.2.12/src/flare_kernel/router/completion/intake_summary_content.py +147 -0
  12. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/completion/intake_summary_events.py +34 -10
  13. flare_kernel-0.2.12/src/flare_kernel/router/completion/intake_summary_submission.py +82 -0
  14. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/completion/response_builder.py +17 -3
  15. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/completion/selection.py +45 -6
  16. flare_kernel-0.2.12/src/flare_kernel/router/hardcode_boundary.py +104 -0
  17. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/entry_policy.py +2 -25
  18. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/classifier_utils.py +4 -4
  19. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/routing.py +15 -12
  20. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_constants/intent.py +3 -3
  21. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/domain_pack_payload.py +36 -0
  22. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_route/run.py +6 -1
  23. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/action_readiness.py +1 -1
  24. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/actions.py +2 -2
  25. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/payload/enrichment.py +47 -75
  26. flare_kernel-0.2.12/src/flare_kernel/router/payload/turn_act_enrichment.py +101 -0
  27. flare_kernel-0.2.12/src/flare_kernel/router/prompting/capability_boundary.py +29 -0
  28. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/prompting/context_blocks.py +2 -14
  29. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/prompting/core.py +31 -8
  30. flare_kernel-0.2.12/src/flare_kernel/router/prompting/patch_preview.py +20 -0
  31. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/prompting/requirement_intake.py +61 -3
  32. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/prompting/summary_contract.py +29 -8
  33. flare_kernel-0.2.12/src/flare_kernel/router/prompting/track_context.py +94 -0
  34. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/response_intent/contracts.py +51 -1
  35. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/response_intent/resolution.py +52 -3
  36. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/retrieval/aliases.py +24 -0
  37. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/draft/post_completion.py +24 -5
  38. flare_kernel-0.2.12/src/flare_kernel/router/turn_act.py +209 -0
  39. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/context/__init__.py +2 -0
  40. flare_kernel-0.2.12/src/flare_kernel/runtime/context/intake_application.py +230 -0
  41. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/domain/domain_pack_loader.py +1 -18
  42. flare_kernel-0.2.12/src/flare_kernel/runtime/domain/domain_pack_root.py +52 -0
  43. flare_kernel-0.2.12/src/flare_kernel/runtime/infrastructure/source/ocr_provider.py +58 -0
  44. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/source/text_extractor.py +5 -16
  45. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/decision_engine.py +1 -1
  46. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_canvas.py +30 -4
  47. flare_kernel-0.2.12/src/flare_kernel/runtime/orchestration/mode/intake_canvas_content.py +84 -0
  48. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_events.py +13 -1
  49. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_events.py +1 -1
  50. flare_kernel-0.2.12/src/flare_kernel/runtime/orchestration/mode/intake_model_question_plan.py +175 -0
  51. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_question.py +62 -0
  52. flare_kernel-0.2.12/src/flare_kernel/runtime/orchestration/mode/intake_question_plan_carrier.py +77 -0
  53. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_summary_artifact.py +8 -5
  54. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/module_prompt_registry.py +4 -0
  55. flare_kernel-0.2.12/src/flare_kernel/runtime/orchestration/patch_preview_runtime.py +84 -0
  56. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/structured_prompt_context.py +57 -0
  57. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/structured_reasoning.py +9 -4
  58. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/question/planner.py +14 -2
  59. flare_kernel-0.2.12/src/flare_kernel/session_message_policy.py +25 -0
  60. flare_kernel-0.2.12/src/flare_kernel/session_message_records.py +173 -0
  61. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/session_store.py +24 -38
  62. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel.egg-info/PKG-INFO +3 -2
  63. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel.egg-info/SOURCES.txt +33 -0
  64. flare_kernel-0.2.12/tests/test_canonical_mode_projection.py +57 -0
  65. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_canonical_state_payload.py +1 -1
  66. flare_kernel-0.2.12/tests/test_capability_boundary.py +48 -0
  67. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_completion_response_builder.py +69 -7
  68. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_completion_selection.py +149 -0
  69. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_domain_pack_loader.py +6 -6
  70. flare_kernel-0.2.12/tests/test_generic_domain_pack_options.py +114 -0
  71. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_guided_completion.py +40 -11
  72. flare_kernel-0.2.12/tests/test_intake_commit_context_patch.py +145 -0
  73. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_entry_policy.py +24 -0
  74. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_question_projection.py +44 -0
  75. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_classifier_utils.py +6 -3
  76. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_retrieval.py +27 -0
  77. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_routing.py +7 -7
  78. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_module_prompt_registry.py +3 -0
  79. flare_kernel-0.2.12/tests/test_orc15_guided_completion.py +92 -0
  80. flare_kernel-0.2.12/tests/test_orc15_turn_act_classification.py +266 -0
  81. flare_kernel-0.2.12/tests/test_orc16_main_chain_hardcode_boundary.py +35 -0
  82. flare_kernel-0.2.12/tests/test_patch_preview_runtime.py +47 -0
  83. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_project_api.py +22 -0
  84. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_prompting_analysis_instruction.py +157 -0
  85. flare_kernel-0.2.12/tests/test_requirement_intake_canvas_progress.py +40 -0
  86. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_requirement_intake_canvas_state.py +50 -9
  87. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_requirement_intake_continuation.py +4 -1
  88. flare_kernel-0.2.12/tests/test_requirement_intake_flow.py +273 -0
  89. flare_kernel-0.2.12/tests/test_requirement_intake_model_question_plan.py +196 -0
  90. flare_kernel-0.2.12/tests/test_requirement_intake_summary_route.py +198 -0
  91. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_response_intent_resolution.py +65 -0
  92. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_response_strategy_runtime.py +27 -0
  93. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_api.py +44 -0
  94. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_source_text_extractor.py +37 -0
  95. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_draft_intake_canvas_sync.py +14 -2
  96. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_draft_post_completion.py +13 -7
  97. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_intake_phase.py +1 -0
  98. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_response_phases.py +103 -0
  99. flare_kernel-0.2.12/tests/test_structured_prompt_context.py +155 -0
  100. flare_kernel-0.2.12/tests/test_track_prompt_context.py +77 -0
  101. flare_kernel-0.2.11/src/flare_kernel/runtime/orchestration/mode/intake_canvas_content.py +0 -29
  102. flare_kernel-0.2.11/tests/test_structured_prompt_context.py +0 -81
  103. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/setup.cfg +0 -0
  104. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/__init__.py +0 -0
  105. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/app.py +0 -0
  106. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/__init__.py +0 -0
  107. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/auth_contract.py +0 -0
  108. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/context.py +0 -0
  109. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/kernel_contract.py +0 -0
  110. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/list_event_contract.py +0 -0
  111. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/mode.py +0 -0
  112. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/project_contract.py +0 -0
  113. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/project_memory_contract.py +0 -0
  114. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/run_contract.py +0 -0
  115. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/session_contract.py +0 -0
  116. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/contracts/update_contract.py +0 -0
  117. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/list_event_broker.py +0 -0
  118. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/main.py +0 -0
  119. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/__init__.py +0 -0
  120. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/__init__.py +0 -0
  121. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/auth.py +0 -0
  122. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/auth_guard.py +0 -0
  123. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/chat.py +0 -0
  124. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/errors.py +0 -0
  125. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/list_events.py +0 -0
  126. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/project.py +0 -0
  127. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/run.py +0 -0
  128. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/session.py +0 -0
  129. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/session_list_events.py +0 -0
  130. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/api/update.py +0 -0
  131. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/__init__.py +0 -0
  132. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/analysis.py +0 -0
  133. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/checkpoint.py +0 -0
  134. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/composer_ui.py +0 -0
  135. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/context/__init__.py +0 -0
  136. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/context/analysis.py +0 -0
  137. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/context/inputs.py +0 -0
  138. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/context/session.py +0 -0
  139. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/context_authority.py +0 -0
  140. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/contract_support.py +0 -0
  141. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/flow.py +0 -0
  142. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/projection.py +0 -0
  143. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/canonical/track_actions.py +0 -0
  144. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/completion/__init__.py +0 -0
  145. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/completion/analysis_policy.py +0 -0
  146. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/completion/analysis_result_contract.py +0 -0
  147. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/completion/stream_collect.py +0 -0
  148. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/context/__init__.py +0 -0
  149. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/context/endpoint.py +0 -0
  150. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/context/sourcing_preview.py +0 -0
  151. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/__init__.py +0 -0
  152. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/amount_quantity.py +0 -0
  153. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/answer.py +0 -0
  154. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/authority/__init__.py +0 -0
  155. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/authority/checkpoint.py +0 -0
  156. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/authority/core.py +0 -0
  157. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/authority/hydration.py +0 -0
  158. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/authority/session.py +0 -0
  159. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/canonicalization.py +0 -0
  160. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/clarification.py +0 -0
  161. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/decision_rules.py +0 -0
  162. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/delivery_time.py +0 -0
  163. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/extraction/__init__.py +0 -0
  164. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/extraction/core.py +0 -0
  165. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/extraction/extractors.py +0 -0
  166. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/extraction/merge.py +0 -0
  167. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/field_projection/__init__.py +0 -0
  168. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/field_projection/core.py +0 -0
  169. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/field_projection/entity.py +0 -0
  170. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/field_projection/payload.py +0 -0
  171. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/field_projection/source.py +0 -0
  172. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/field_scope.py +0 -0
  173. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/guided/__init__.py +0 -0
  174. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/guided/confirmed_updates.py +0 -0
  175. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/guided/flags.py +0 -0
  176. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/guided/followup.py +0 -0
  177. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/guided/followup_work_item.py +0 -0
  178. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/guided/open_fields.py +0 -0
  179. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/guided/status.py +0 -0
  180. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/guided/summary.py +0 -0
  181. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/inputs.py +0 -0
  182. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/legacy_question.py +0 -0
  183. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/node_state.py +0 -0
  184. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/numeric.py +0 -0
  185. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/payload_updates.py +0 -0
  186. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/readiness.py +0 -0
  187. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/state_persistence.py +0 -0
  188. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/status/__init__.py +0 -0
  189. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/status/chooser_stage.py +0 -0
  190. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/status/core.py +0 -0
  191. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/status/guided_session.py +0 -0
  192. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/status/projection.py +0 -0
  193. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/status/schema.py +0 -0
  194. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intake/workflow_checkpoint.py +0 -0
  195. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/__init__.py +0 -0
  196. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/compat_aliases.py +0 -0
  197. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/escalation/__init__.py +0 -0
  198. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/escalation/override.py +0 -0
  199. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/escalation/pipeline.py +0 -0
  200. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/escalation/signal.py +0 -0
  201. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/session_intent/__init__.py +0 -0
  202. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/session_intent/core.py +0 -0
  203. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/session_intent/fields.py +0 -0
  204. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/intent/session_intent/small_talk.py +0 -0
  205. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel.py +0 -0
  206. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_constants/__init__.py +0 -0
  207. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_constants/intake.py +0 -0
  208. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_constants/patch.py +0 -0
  209. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_endpoint_handlers/__init__.py +0 -0
  210. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_endpoint_handlers/health.py +0 -0
  211. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_endpoint_handlers/knowledge.py +0 -0
  212. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_endpoint_handlers/sourcing.py +0 -0
  213. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_endpoint_handlers/turn.py +0 -0
  214. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/__init__.py +0 -0
  215. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/canonical_state.py +0 -0
  216. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/dependency_resolution.py +0 -0
  217. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/flow.py +0 -0
  218. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/orchestration.py +0 -0
  219. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/payload_enrichment.py +0 -0
  220. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/turn_context.py +0 -0
  221. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_facade/utils.py +0 -0
  222. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_flow_bindings/__init__.py +0 -0
  223. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_flow_bindings/intent_query.py +0 -0
  224. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_flow_bindings/mode.py +0 -0
  225. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_flow_bindings/session_intent.py +0 -0
  226. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_request_pipeline/__init__.py +0 -0
  227. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_request_pipeline/action.py +0 -0
  228. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_request_pipeline/intake.py +0 -0
  229. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_request_pipeline/intent_query.py +0 -0
  230. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_request_pipeline/intent_signal.py +0 -0
  231. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_route/__init__.py +0 -0
  232. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_route/action.py +0 -0
  233. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_route/execution.py +0 -0
  234. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/kernel_route/stream.py +0 -0
  235. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/mode/__init__.py +0 -0
  236. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/mode/resolution.py +0 -0
  237. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/mode/switch.py +0 -0
  238. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/next_actions_guard.py +0 -0
  239. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/__init__.py +0 -0
  240. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/__init__.py +0 -0
  241. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/analysis_entry_decision.py +0 -0
  242. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/builder.py +0 -0
  243. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/checkpoint_state.py +0 -0
  244. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/context.py +0 -0
  245. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/context_helpers.py +0 -0
  246. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/core.py +0 -0
  247. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/decision.py +0 -0
  248. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/followup_state.py +0 -0
  249. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/projection.py +0 -0
  250. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/result.py +0 -0
  251. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/runtime_state.py +0 -0
  252. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/__init__.py +0 -0
  253. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/context.py +0 -0
  254. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/decision.py +0 -0
  255. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/entry.py +0 -0
  256. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/flow.py +0 -0
  257. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/followup.py +0 -0
  258. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/intent.py +0 -0
  259. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/node.py +0 -0
  260. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/payload.py +0 -0
  261. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/status/state/unpack.py +0 -0
  262. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/trace/__init__.py +0 -0
  263. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/trace/core.py +0 -0
  264. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/trace/projection.py +0 -0
  265. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/orchestration/trace/steps.py +0 -0
  266. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/patch_contract.py +0 -0
  267. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/payload/__init__.py +0 -0
  268. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/payload/action.py +0 -0
  269. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/payload/analysis_canvas.py +0 -0
  270. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/prompting/__init__.py +0 -0
  271. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/prompting/artifact_template.py +0 -0
  272. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/prompting/response_strategy.py +0 -0
  273. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/request/__init__.py +0 -0
  274. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/request/identity.py +0 -0
  275. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/request/intent_resolution.py +0 -0
  276. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/response_intent/__init__.py +0 -0
  277. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/response_intent/document_output.py +0 -0
  278. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/retrieval/__init__.py +0 -0
  279. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/retrieval/field_queries.py +0 -0
  280. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/retrieval/projection.py +0 -0
  281. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/retrieval/query_builder.py +0 -0
  282. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/retrieval/search.py +0 -0
  283. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/source_library.py +0 -0
  284. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/__init__.py +0 -0
  285. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/draft/__init__.py +0 -0
  286. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/draft/completion.py +0 -0
  287. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/draft/finalize.py +0 -0
  288. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/draft/phase.py +0 -0
  289. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/draft/phase_timing.py +0 -0
  290. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/draft/prologue.py +0 -0
  291. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/event_emitter.py +0 -0
  292. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/intake/__init__.py +0 -0
  293. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/intake/phase.py +0 -0
  294. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/mode/__init__.py +0 -0
  295. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/mode/event_payload.py +0 -0
  296. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/mode/events.py +0 -0
  297. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/__init__.py +0 -0
  298. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/bootstrap.py +0 -0
  299. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/builder.py +0 -0
  300. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/builder_transport.py +0 -0
  301. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/draft_phase.py +0 -0
  302. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/phase_groups.py +0 -0
  303. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/phases.py +0 -0
  304. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/runtime.py +0 -0
  305. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/response/structured_reasoning_phase.py +0 -0
  306. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/retrieval/__init__.py +0 -0
  307. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/retrieval/phase.py +0 -0
  308. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/runtime/__init__.py +0 -0
  309. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/runtime/sourcing_observations.py +0 -0
  310. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/streaming/runtime/steps.py +0 -0
  311. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/router/text_safety.py +0 -0
  312. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/run_store.py +0 -0
  313. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/__init__.py +0 -0
  314. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/auth/__init__.py +0 -0
  315. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/auth/exchange.py +0 -0
  316. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/auth/policy.py +0 -0
  317. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/auth/scope_guard.py +0 -0
  318. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/context/analysis_application.py +0 -0
  319. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/context/document_application.py +0 -0
  320. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/context/reasoning_application.py +0 -0
  321. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/context/session_context.py +0 -0
  322. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/context/track_application.py +0 -0
  323. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/diagnostics/__init__.py +0 -0
  324. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/diagnostics/provider_audit.py +0 -0
  325. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/diagnostics/provider_audit_export.py +0 -0
  326. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/diagnostics/replay_snapshot.py +0 -0
  327. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/diagnostics/replay_snapshot_io.py +0 -0
  328. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/diagnostics/replay_snapshot_validation.py +0 -0
  329. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/domain/__init__.py +0 -0
  330. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/domain/domain_pack_paths.py +0 -0
  331. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/domain/profile_resolution.py +0 -0
  332. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/execution/__init__.py +0 -0
  333. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/execution/agent_runtime.py +0 -0
  334. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/execution/skill_runtime.py +0 -0
  335. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/__init__.py +0 -0
  336. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/chat_memory.py +0 -0
  337. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/database.py +0 -0
  338. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/dependency_status.py +0 -0
  339. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/infrastructure.py +0 -0
  340. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/knowledge_ingest.py +0 -0
  341. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/knowledge_memory.py +0 -0
  342. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/knowledge_postgres_search.py +0 -0
  343. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/knowledge_qdrant_search.py +0 -0
  344. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/knowledge_search.py +0 -0
  345. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/knowledge_terms.py +0 -0
  346. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/logging.py +0 -0
  347. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/project_memory_codec.py +0 -0
  348. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/project_memory_sql.py +0 -0
  349. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/project_memory_store.py +0 -0
  350. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/redis_client.py +0 -0
  351. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/run/__init__.py +0 -0
  352. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/run/repository.py +0 -0
  353. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/run/repository_memory.py +0 -0
  354. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/run/repository_sql.py +0 -0
  355. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/session/__init__.py +0 -0
  356. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/session/columns.py +0 -0
  357. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/session/repository.py +0 -0
  358. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/session/repository_memory.py +0 -0
  359. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/session/repository_sql.py +0 -0
  360. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/source/__init__.py +0 -0
  361. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/source/document_understanding_codec.py +0 -0
  362. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/source/library_persistence.py +0 -0
  363. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/source/schema.py +0 -0
  364. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/__init__.py +0 -0
  365. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/instance_profile_adapter.py +0 -0
  366. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/persistence.py +0 -0
  367. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/provider.py +0 -0
  368. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/provider_config.py +0 -0
  369. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/provider_gateway.py +0 -0
  370. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/provider_normalize.py +0 -0
  371. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/provider_public.py +0 -0
  372. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/sourcing/provider_result.py +0 -0
  373. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/trace.py +0 -0
  374. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/infrastructure/vector_store.py +0 -0
  375. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/intent/__init__.py +0 -0
  376. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/intent/intent_and_escalation/__init__.py +0 -0
  377. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/intent/intent_and_escalation/decision.py +0 -0
  378. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/intent/intent_and_escalation/lexicon.py +0 -0
  379. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/intent/intent_and_escalation/preprocessing.py +0 -0
  380. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/intent/intent_and_escalation/signals.py +0 -0
  381. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/intent/intent_and_escalation_classifier.py +0 -0
  382. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/__init__.py +0 -0
  383. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/completion_capture.py +0 -0
  384. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/config.py +0 -0
  385. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/contracts.py +0 -0
  386. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/dashscope_provider.py +0 -0
  387. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/dashscope_streaming_provider.py +0 -0
  388. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/fallback_policy.py +0 -0
  389. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/intent_model_policy.py +0 -0
  390. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/llm_provider.py +0 -0
  391. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/model_router.py +0 -0
  392. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/native_streaming.py +0 -0
  393. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/provider_health.py +0 -0
  394. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/provider_health_probe.py +0 -0
  395. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/provider_health_snapshot.py +0 -0
  396. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/provider_health_source.py +0 -0
  397. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/provider_quota.py +0 -0
  398. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/provider_trace.py +0 -0
  399. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/provider_usage.py +0 -0
  400. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/replay_provider.py +0 -0
  401. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/llm/streaming_provider.py +0 -0
  402. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/__init__.py +0 -0
  403. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/analysis_route_policy.py +0 -0
  404. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/analysis_router_runtime.py +0 -0
  405. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/artifact_template_runtime.py +0 -0
  406. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/canvas/__init__.py +0 -0
  407. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/canvas/toolbar_actions.py +0 -0
  408. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/canvas_sourcing_contract.py +0 -0
  409. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/__init__.py +0 -0
  410. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/canvas_state.py +0 -0
  411. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/field_definitions.py +0 -0
  412. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_action_resolution.py +0 -0
  413. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_actions.py +0 -0
  414. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_context.py +0 -0
  415. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_coverage.py +0 -0
  416. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_draft_payload.py +0 -0
  417. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_field_projection.py +0 -0
  418. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_next_actions_payload.py +0 -0
  419. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_payloads.py +0 -0
  420. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_progress_payload.py +0 -0
  421. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_question_lifecycle.py +0 -0
  422. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/intake_question_progress.py +0 -0
  423. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/orchestration.py +0 -0
  424. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/question_selection.py +0 -0
  425. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/reasoning.py +0 -0
  426. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/runtime.py +0 -0
  427. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/shared.py +0 -0
  428. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/sourcing_actions.py +0 -0
  429. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/sourcing_events.py +0 -0
  430. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/sourcing_preview.py +0 -0
  431. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/sourcing_report.py +0 -0
  432. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/mode/state_transition.py +0 -0
  433. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/observation.py +0 -0
  434. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/response_strategy_runtime.py +0 -0
  435. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/session_context_runtime.py +0 -0
  436. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/__init__.py +0 -0
  437. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/additive_search.py +0 -0
  438. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/analysis_entry.py +0 -0
  439. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/candidate_explainability.py +0 -0
  440. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/canvas_state.py +0 -0
  441. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/context_round.py +0 -0
  442. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/event_payloads.py +0 -0
  443. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/instance_db_runtime.py +0 -0
  444. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/internal_runtime.py +0 -0
  445. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/mcp_runtime.py +0 -0
  446. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/observation_payloads.py +0 -0
  447. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/observations.py +0 -0
  448. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/parameter_draft.py +0 -0
  449. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/provider_config_loader.py +0 -0
  450. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/provider_health.py +0 -0
  451. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/result_window.py +0 -0
  452. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/search_runtime.py +0 -0
  453. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/source_priority.py +0 -0
  454. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/sourcing/web_runtime.py +0 -0
  455. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/orchestration/track_runtime.py +0 -0
  456. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/project_memory/__init__.py +0 -0
  457. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/project_memory/extraction.py +0 -0
  458. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/project_memory/recall.py +0 -0
  459. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/project_memory/runtime.py +0 -0
  460. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/__init__.py +0 -0
  461. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/__init__.py +0 -0
  462. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/api.py +0 -0
  463. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/branching/__init__.py +0 -0
  464. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/branching/core.py +0 -0
  465. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/branching/policy.py +0 -0
  466. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/context.py +0 -0
  467. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/field_selection.py +0 -0
  468. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/gap_detection.py +0 -0
  469. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/hypothesis.py +0 -0
  470. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/planning.py +0 -0
  471. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/priority.py +0 -0
  472. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/question/__init__.py +0 -0
  473. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/question/builder.py +0 -0
  474. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/question/decision.py +0 -0
  475. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/question/extraction.py +0 -0
  476. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/question/structured.py +0 -0
  477. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/readiness/__init__.py +0 -0
  478. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/readiness/core.py +0 -0
  479. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/readiness/scoring.py +0 -0
  480. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/shared.py +0 -0
  481. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/understanding_state.py +0 -0
  482. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/visible_response.py +0 -0
  483. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/reasoning/intake/visible_summary.py +0 -0
  484. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/session/__init__.py +0 -0
  485. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/session/checkpoint_manager.py +0 -0
  486. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/session/intake_session_store.py +0 -0
  487. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/session/models.py +0 -0
  488. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/source_ingestion/__init__.py +0 -0
  489. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/source_ingestion/artifacts.py +0 -0
  490. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/source_ingestion/chunk_storage.py +0 -0
  491. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/source_ingestion/knowledge_storage.py +0 -0
  492. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/source_ingestion/runtime.py +0 -0
  493. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/runtime/source_ingestion/storage.py +0 -0
  494. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/session_archive_context.py +0 -0
  495. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/session_archive_graph.py +0 -0
  496. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/session_archive_metrics.py +0 -0
  497. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/session_archive_summary.py +0 -0
  498. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/session_lifecycle_policy.py +0 -0
  499. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/session_record_policy.py +0 -0
  500. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/session_replay.py +0 -0
  501. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/update/__init__.py +0 -0
  502. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/update/compatibility.py +0 -0
  503. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/update/planner.py +0 -0
  504. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/update/registry.py +0 -0
  505. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/update/versioning.py +0 -0
  506. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel/user_store.py +0 -0
  507. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel.egg-info/dependency_links.txt +0 -0
  508. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel.egg-info/requires.txt +0 -0
  509. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/src/flare_kernel.egg-info/top_level.txt +0 -0
  510. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_action_payload.py +0 -0
  511. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_action_readiness.py +0 -0
  512. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_analysis_canvas_payload.py +0 -0
  513. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_analysis_context_patch.py +0 -0
  514. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_analysis_e2e.py +0 -0
  515. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_analysis_entry_decision.py +0 -0
  516. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_analysis_route_projection.py +0 -0
  517. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_analysis_route_runtime.py +0 -0
  518. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_artifact_template_runtime.py +0 -0
  519. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_auth_exchange.py +0 -0
  520. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_auth_scope_guard.py +0 -0
  521. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_basics.py +0 -0
  522. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_builder_split_modules.py +0 -0
  523. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_business_hardcode_guard.py +0 -0
  524. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_canonical_state_context_analysis.py +0 -0
  525. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_canonical_state_context_inputs.py +0 -0
  526. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_canonical_state_context_session.py +0 -0
  527. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_canonical_state_flow.py +0 -0
  528. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_canonical_state_projection.py +0 -0
  529. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_canvas_sourcing_contract_meta.py +0 -0
  530. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_chat_api_alias.py +0 -0
  531. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_command_resolution_analysis_mode.py +0 -0
  532. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_compat_aliases.py +0 -0
  533. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_context_authority_projection.py +0 -0
  534. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_dashscope_streaming_provider.py +0 -0
  535. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_decision_engine.py +0 -0
  536. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_endpoint_context.py +0 -0
  537. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_flare_v1_patch_contract.py +0 -0
  538. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_infrastructure_helpers.py +0 -0
  539. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_infrastructure_knowledge.py +0 -0
  540. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_amount_quantity.py +0 -0
  541. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_answer.py +0 -0
  542. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_authority.py +0 -0
  543. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_authority_checkpoint.py +0 -0
  544. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_authority_hydration.py +0 -0
  545. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_authority_session.py +0 -0
  546. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_canonicalization.py +0 -0
  547. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_clarification.py +0 -0
  548. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_decision_rules.py +0 -0
  549. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_delivery_time.py +0 -0
  550. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_domain_context_options.py +0 -0
  551. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_extraction.py +0 -0
  552. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_extraction_extractors.py +0 -0
  553. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_extraction_merge.py +0 -0
  554. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_field_projection.py +0 -0
  555. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_field_projection_entity.py +0 -0
  556. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_field_projection_payload.py +0 -0
  557. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_field_projection_source.py +0 -0
  558. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_field_scope.py +0 -0
  559. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_guided_confirmed_updates.py +0 -0
  560. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_guided_flags.py +0 -0
  561. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_guided_followup.py +0 -0
  562. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_guided_followup_work_item.py +0 -0
  563. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_guided_open_fields.py +0 -0
  564. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_guided_status.py +0 -0
  565. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_guided_summary.py +0 -0
  566. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_inputs.py +0 -0
  567. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_node_state.py +0 -0
  568. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_numeric.py +0 -0
  569. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_payload_updates.py +0 -0
  570. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_question_extraction.py +0 -0
  571. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_readiness.py +0 -0
  572. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_reasoning_priority.py +0 -0
  573. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_state_persistence.py +0 -0
  574. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_status.py +0 -0
  575. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_status_guided_session.py +0 -0
  576. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_status_projection.py +0 -0
  577. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_status_schema.py +0 -0
  578. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_status_stage.py +0 -0
  579. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_visible_response.py +0 -0
  580. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intake_workflow_checkpoint.py +0 -0
  581. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_escalation_classifier.py +0 -0
  582. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_escalation_override.py +0 -0
  583. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_escalation_pipeline.py +0 -0
  584. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_escalation_signal.py +0 -0
  585. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_resolution.py +0 -0
  586. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_intent_type_compat_aliases.py +0 -0
  587. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_alias_delegation.py +0 -0
  588. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_endpoint_handlers.py +0 -0
  589. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_endpoint_handlers_sourcing.py +0 -0
  590. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_facade_helpers.py +0 -0
  591. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_facade_turn_context.py +0 -0
  592. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_intent_query_flow.py +0 -0
  593. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_mode_flow.py +0 -0
  594. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_route_execution_wrappers.py +0 -0
  595. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_kernel_session_intent_flow.py +0 -0
  596. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_list_events.py +0 -0
  597. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider.py +0 -0
  598. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider_fallback_policy.py +0 -0
  599. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider_health_file.py +0 -0
  600. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider_health_probe.py +0 -0
  601. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider_health_snapshot.py +0 -0
  602. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider_live.py +0 -0
  603. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider_native_streaming.py +0 -0
  604. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider_quota.py +0 -0
  605. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_provider_streaming.py +0 -0
  606. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_llm_replay_provider.py +0 -0
  607. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_mode_orchestration_state_bridge.py +0 -0
  608. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_mode_reasoning.py +0 -0
  609. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_mode_resolution.py +0 -0
  610. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_mode_switch.py +0 -0
  611. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_model_router.py +0 -0
  612. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_new_flow_guard.py +0 -0
  613. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_checkpoint_state.py +0 -0
  614. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_followup_state.py +0 -0
  615. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_context.py +0 -0
  616. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_context_helpers.py +0 -0
  617. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_decision.py +0 -0
  618. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_projection.py +0 -0
  619. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_result.py +0 -0
  620. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_runtime_state.py +0 -0
  621. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_state_context.py +0 -0
  622. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_state_decision.py +0 -0
  623. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_state_entry.py +0 -0
  624. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_state_followup.py +0 -0
  625. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_state_intent.py +0 -0
  626. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_state_node.py +0 -0
  627. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_state_payload.py +0 -0
  628. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_status_state_unpack.py +0 -0
  629. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_trace.py +0 -0
  630. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_trace_projection.py +0 -0
  631. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_orchestration_trace_steps.py +0 -0
  632. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_patch_contract.py +0 -0
  633. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_payload_enrichment.py +0 -0
  634. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_pln03_question_chooser.py +0 -0
  635. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_pln11_question_option_extraction.py +0 -0
  636. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_project_memory_runtime.py +0 -0
  637. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_project_memory_store.py +0 -0
  638. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_prompting_requirement_intake.py +0 -0
  639. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_prompting_user_template_instruction.py +0 -0
  640. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_provider_audit.py +0 -0
  641. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_provider_audit_export.py +0 -0
  642. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_replay_snapshot.py +0 -0
  643. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_replay_snapshot_validation.py +0 -0
  644. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_request_identity.py +0 -0
  645. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_request_intent_resolution.py +0 -0
  646. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_retrieval_aliases.py +0 -0
  647. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_retrieval_field_queries.py +0 -0
  648. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_retrieval_projection.py +0 -0
  649. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_retrieval_query_builder.py +0 -0
  650. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_retrieval_search.py +0 -0
  651. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_run_api.py +0 -0
  652. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_run_sql_repository.py +0 -0
  653. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_run_store.py +0 -0
  654. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_archive_summary.py +0 -0
  655. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_context_persistence.py +0 -0
  656. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_intent.py +0 -0
  657. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_intent_fields.py +0 -0
  658. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_intent_small_talk.py +0 -0
  659. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_lifecycle_api.py +0 -0
  660. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_replay_api.py +0 -0
  661. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_sql_columns.py +0 -0
  662. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_sql_migration.py +0 -0
  663. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_session_sql_repository.py +0 -0
  664. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_source_ingestion_runtime.py +0 -0
  665. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_source_ingestion_ssot_acceptance.py +0 -0
  666. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_source_library.py +0 -0
  667. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_source_library_persistence_scope.py +0 -0
  668. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_additive_search.py +0 -0
  669. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_candidate_explainability.py +0 -0
  670. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_context_reuse.py +0 -0
  671. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_e2e.py +0 -0
  672. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_instance_profile_adapter.py +0 -0
  673. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_parameter_draft.py +0 -0
  674. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_preview_context.py +0 -0
  675. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_provider.py +0 -0
  676. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_provider_adapters.py +0 -0
  677. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_provider_config_loader.py +0 -0
  678. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_provider_health.py +0 -0
  679. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_runtime_additive_search.py +0 -0
  680. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_search_runtime.py +0 -0
  681. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_sourcing_source_priority.py +0 -0
  682. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_stream_collect_completion.py +0 -0
  683. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_draft_completion.py +0 -0
  684. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_draft_finalize.py +0 -0
  685. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_draft_phase.py +0 -0
  686. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_draft_prologue.py +0 -0
  687. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_event_emitter.py +0 -0
  688. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_mode_event_payload.py +0 -0
  689. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_mode_events.py +0 -0
  690. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_response_bootstrap.py +0 -0
  691. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_response_runtime.py +0 -0
  692. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_response_transport.py +0 -0
  693. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_retrieval_phase.py +0 -0
  694. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_streaming_runtime_steps.py +0 -0
  695. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_text_safety.py +0 -0
  696. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/tests/test_track_runtime.py +0 -0
  697. {flare_kernel-0.2.11 → flare_kernel-0.2.12}/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.11
3
+ Version: 0.2.12
4
4
  Summary: FLARE kernel runtime package
5
5
  License: Proprietary
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -60,7 +60,8 @@ kernel 现已输出 mode/context 运行时占位事件与字段。
60
60
  1. kernel 支持从 domain-pack 读取品牌配置:
61
61
  `branding/instance-branding.json`
62
62
  2. 读取方式:
63
- - 仅通过环境变量 `FLARE_DOMAIN_PACK_ROOT` 显式指定
63
+ - 优先通过环境变量 `FLARE_DOMAIN_PACK_ROOT` 显式指定
64
+ - 本地仓库运行时可回退到仓库根目录下的 `domain-packs/`
64
65
  3. 注入位置:
65
66
  - `POST /kernel/run` 响应 `result.instance_profile`
66
67
  - `POST /kernel/stream` SSE 事件 `instance_profile`
@@ -38,7 +38,8 @@ kernel 现已输出 mode/context 运行时占位事件与字段。
38
38
  1. kernel 支持从 domain-pack 读取品牌配置:
39
39
  `branding/instance-branding.json`
40
40
  2. 读取方式:
41
- - 仅通过环境变量 `FLARE_DOMAIN_PACK_ROOT` 显式指定
41
+ - 优先通过环境变量 `FLARE_DOMAIN_PACK_ROOT` 显式指定
42
+ - 本地仓库运行时可回退到仓库根目录下的 `domain-packs/`
42
43
  3. 注入位置:
43
44
  - `POST /kernel/run` 响应 `result.instance_profile`
44
45
  - `POST /kernel/stream` SSE 事件 `instance_profile`
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "flare-kernel"
7
- version = "0.2.11"
7
+ version = "0.2.12"
8
8
  description = "FLARE kernel runtime package"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -0,0 +1,47 @@
1
+ """In-memory Project record storage for local runs without SQL DSN."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from datetime import UTC, datetime
6
+ from typing import Any
7
+
8
+ _PROJECT_RECORDS: dict[str, dict[str, Any]] = {}
9
+
10
+
11
+ def _now_iso() -> str:
12
+ return datetime.now(UTC).isoformat()
13
+
14
+
15
+ def _normalize_text(value: Any) -> str:
16
+ return " ".join(str(value or "").split()).strip()
17
+
18
+
19
+ def list_project_records() -> list[dict[str, Any]]:
20
+ return [
21
+ dict(record)
22
+ for record in sorted(
23
+ _PROJECT_RECORDS.values(),
24
+ key=lambda item: str(item.get("updated_at") or ""),
25
+ reverse=True,
26
+ )
27
+ ]
28
+
29
+
30
+ def get_project_record(*, project_id: str) -> dict[str, Any] | None:
31
+ record = _PROJECT_RECORDS.get(_normalize_text(project_id))
32
+ return dict(record) if record else None
33
+
34
+
35
+ def upsert_project_record(*, project_id: str, project_name: str | None, status: str | None) -> dict[str, Any]:
36
+ resolved_project_id = _normalize_text(project_id)
37
+ now = _now_iso()
38
+ existing = dict(_PROJECT_RECORDS.get(resolved_project_id) or {})
39
+ record = {
40
+ "project_id": resolved_project_id,
41
+ "project_name": _normalize_text(project_name) or _normalize_text(existing.get("project_name")) or resolved_project_id,
42
+ "status": _normalize_text(status) or _normalize_text(existing.get("status")) or "active",
43
+ "created_at": _normalize_text(existing.get("created_at")) or now,
44
+ "updated_at": now,
45
+ }
46
+ _PROJECT_RECORDS[resolved_project_id] = record
47
+ return dict(record)
@@ -2,9 +2,15 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import os
5
6
  from datetime import UTC, datetime
6
7
  from typing import Any
7
8
 
9
+ from flare_kernel.project_record_memory_store import (
10
+ get_project_record,
11
+ list_project_records,
12
+ upsert_project_record,
13
+ )
8
14
  from flare_kernel.runtime.infrastructure.database import build_sqlalchemy_engine
9
15
  from flare_kernel.session_store import list_sessions
10
16
  from flare_kernel.user_store import get_current_user_id
@@ -33,6 +39,10 @@ def _normalize_text(value: Any) -> str:
33
39
  return " ".join(str(value or "").split()).strip()
34
40
 
35
41
 
42
+ def _use_in_memory_project_store() -> bool:
43
+ return not str(os.getenv("FLARE_POSTGRES_DSN") or "").strip()
44
+
45
+
36
46
  def _ensure_project_table(conn: Any, text_fn: Any) -> None:
37
47
  """Create the durable Project table when it does not exist.
38
48
 
@@ -111,6 +121,9 @@ def list_projects() -> list[dict[str, Any]]:
111
121
  Project view dictionaries sorted by persisted updated_at descending.
112
122
  """
113
123
 
124
+ if _use_in_memory_project_store():
125
+ return [_build_project_view(row) for row in list_project_records()]
126
+
114
127
  from sqlalchemy import text
115
128
 
116
129
  with _project_engine().begin() as conn:
@@ -144,6 +157,10 @@ def get_project(*, project_id: str) -> dict[str, Any] | None:
144
157
  if not resolved_project_id:
145
158
  return None
146
159
 
160
+ if _use_in_memory_project_store():
161
+ record = get_project_record(project_id=resolved_project_id)
162
+ return _build_project_view(record) if record else None
163
+
147
164
  from sqlalchemy import text
148
165
 
149
166
  with _project_engine().begin() as conn:
@@ -183,6 +200,10 @@ def upsert_project(*, project_id: str, project_name: str | None, status: str | N
183
200
  if not resolved_project_id:
184
201
  raise ValueError("project_id is required")
185
202
 
203
+ if _use_in_memory_project_store():
204
+ record = upsert_project_record(project_id=resolved_project_id, project_name=project_name, status=status)
205
+ return _build_project_view(record)
206
+
186
207
  now = _now_iso()
187
208
  next_project_name = _normalize_text(project_name)
188
209
  next_status = _normalize_text(status)
@@ -0,0 +1,47 @@
1
+ """Frontend-facing mode projection rules.
2
+
3
+ This module owns round-end mode reset projection. It does not decide workflow
4
+ state; it only maps canonical workflow state to composer-facing mode state.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from typing import Any
10
+
11
+ _ROUND_SCOPED_MODE_SOURCES = {"manual_hint", "current_hint"}
12
+ _ROUND_SCOPED_COMMANDS = {
13
+ "activate_requirement_intake",
14
+ "submit_intake_answer",
15
+ "implement",
16
+ "apply",
17
+ }
18
+
19
+
20
+ def _clean_text(value: Any) -> str:
21
+ return str(value or "").strip()
22
+
23
+
24
+ def resolve_round_end_mode_projection(
25
+ *,
26
+ activated_mode: str,
27
+ suggested_mode: Any,
28
+ mode_source: str,
29
+ command: str,
30
+ intake_session_completed: bool,
31
+ ) -> dict[str, Any]:
32
+ """Return frontend-facing mode projection for a completed round.
33
+
34
+ Manual mode hints and command activations are round-scoped. The workflow can
35
+ still expose stage/status/question separately, but composer active mode must
36
+ return to auto so the frontend does not persist manual mode locally.
37
+ """
38
+
39
+ reset_to_auto = bool(intake_session_completed) or _clean_text(mode_source) in _ROUND_SCOPED_MODE_SOURCES
40
+ if not reset_to_auto:
41
+ reset_to_auto = _clean_text(command).lower() in _ROUND_SCOPED_COMMANDS
42
+ if reset_to_auto:
43
+ return {"activated_mode": "auto", "suggested_mode": None}
44
+ return {"activated_mode": _clean_text(activated_mode) or "auto", "suggested_mode": suggested_mode}
45
+
46
+
47
+ __all__ = ["resolve_round_end_mode_projection"]
@@ -18,6 +18,7 @@ from flare_kernel.router.canonical.contract_support import (
18
18
  )
19
19
  from flare_kernel.router.canonical.composer_ui import build_composer_ui_projection
20
20
  from flare_kernel.router.canonical.context_authority import build_context_authority_projection
21
+ from flare_kernel.router.canonical.mode_projection import resolve_round_end_mode_projection
21
22
  from flare_kernel.router.canonical.projection import resolve_canonical_next_actions
22
23
  from flare_kernel.router.canonical.track_actions import build_track_next_actions
23
24
  from flare_kernel.router.intake.status.projection import (
@@ -40,8 +41,11 @@ def _resolve_analysis_title(*, command: str, can_generate: bool, orchestration_s
40
41
  return ""
41
42
  analysis_route = orchestration_status.get("analysis_route")
42
43
  if isinstance(analysis_route, dict):
44
+ route_title = str(analysis_route.get("title") or analysis_route.get("display_title") or "").strip()
45
+ if route_title:
46
+ return route_title
43
47
  if str(analysis_route.get("analysis_type") or "").strip().lower() == "sourcing":
44
- return "寻源分析"
48
+ return "候选分析"
45
49
  return "需求分析"
46
50
 
47
51
 
@@ -115,8 +119,15 @@ def build_canonical_payload(
115
119
  module_prompt_registry = coerce_action_list(authoritative_runtime_payload.get("module_prompt_registry"))
116
120
  current_question = authoritative_current_question
117
121
  next_actions = authoritative_next_actions
118
- projected_activated_mode = "auto" if intake_session_completed else activated_mode
119
- projected_suggested_mode = None if intake_session_completed else canonical_context.get("suggested_mode")
122
+ mode_projection = resolve_round_end_mode_projection(
123
+ activated_mode=activated_mode,
124
+ suggested_mode=canonical_context.get("suggested_mode"),
125
+ mode_source=mode_source,
126
+ command=command,
127
+ intake_session_completed=intake_session_completed,
128
+ )
129
+ projected_activated_mode = mode_projection["activated_mode"]
130
+ projected_suggested_mode = mode_projection["suggested_mode"]
120
131
  composer_ui = build_composer_ui_projection(
121
132
  activated_mode=projected_activated_mode,
122
133
  mode_source=mode_source,
@@ -211,7 +222,7 @@ def build_canonical_payload(
211
222
  "mode": {
212
223
  "suggested": projected_suggested_mode,
213
224
  "activated": projected_activated_mode,
214
- "is_activation_explicit": explicit_activation and projected_activated_mode != "auto",
225
+ "is_activation_explicit": explicit_activation,
215
226
  "activation_source": mode_source if explicit_activation else "none",
216
227
  },
217
228
  "stage": stage_key,
@@ -0,0 +1,165 @@
1
+ """Capability-boundary completion helpers.
2
+
3
+ This module projects backend-owned module prompt registry entries into
4
+ customer-visible capability boundary text. It does not decide workflow state or
5
+ embed domain-specific capabilities; supported interactions come from payload
6
+ contracts such as ``module_prompt_registry``.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from typing import Any
12
+
13
+ from flare_kernel.runtime.llm.llm_provider import LLMCompletion
14
+
15
+ _CAPABILITY_INQUIRY_TERMS = (
16
+ "支持哪些交互",
17
+ "支持什么交互",
18
+ "有哪些交互",
19
+ "能怎么交互",
20
+ "可以怎么交互",
21
+ "支持哪些功能",
22
+ "有什么功能",
23
+ "你能做什么",
24
+ "你会做什么",
25
+ )
26
+
27
+ _INTERACTION_REQUEST_TERMS = ("功能", "交互", "模式", "工具", "按钮", "插件", "入口")
28
+ _INTERACTION_ACTION_TERMS = ("开启", "打开", "进入", "启动", "使用", "调用", "执行")
29
+ _SUPPORTED_TRIGGER_LIMIT = 16
30
+ _SUPPORTED_INTERACTION_LIMIT = 6
31
+
32
+
33
+ def _clean_text(value: Any) -> str:
34
+ return " ".join(str(value or "").split()).strip()
35
+
36
+
37
+ def _as_list(value: Any) -> list[Any]:
38
+ return value if isinstance(value, list) else []
39
+
40
+
41
+ def _contains_any(text: str, terms: tuple[str, ...] | list[str]) -> bool:
42
+ return any(term for term in terms if term and term in text)
43
+
44
+
45
+ def _module_entries(payload: dict[str, Any]) -> list[dict[str, Any]]:
46
+ entries = payload.get("module_prompt_registry")
47
+ return [item for item in entries if isinstance(item, dict)] if isinstance(entries, list) else []
48
+
49
+
50
+ def _interaction_label(entry: dict[str, Any]) -> str:
51
+ return _clean_text(entry.get("action_text") or entry.get("label") or entry.get("module_key"))
52
+
53
+
54
+ def build_supported_interactions(payload: dict[str, Any]) -> list[dict[str, str]]:
55
+ """Return customer-visible supported interactions from backend registry."""
56
+
57
+ interactions: list[dict[str, str]] = []
58
+ seen: set[str] = set()
59
+ for entry in _module_entries(payload):
60
+ label = _interaction_label(entry)
61
+ if not label or label in seen:
62
+ continue
63
+ seen.add(label)
64
+ interactions.append(
65
+ {
66
+ "label": label,
67
+ "reason": _clean_text(entry.get("reason")),
68
+ "module_key": _clean_text(entry.get("module_key") or entry.get("key")),
69
+ }
70
+ )
71
+ if len(interactions) >= _SUPPORTED_INTERACTION_LIMIT:
72
+ break
73
+ return interactions
74
+
75
+
76
+ def _supported_trigger_terms(payload: dict[str, Any]) -> list[str]:
77
+ terms: list[str] = []
78
+ for entry in _module_entries(payload):
79
+ for value in (
80
+ _interaction_label(entry),
81
+ _clean_text(entry.get("label")),
82
+ _clean_text(entry.get("module_key") or entry.get("key")),
83
+ ):
84
+ if value and value not in terms:
85
+ terms.append(value)
86
+ for keyword in _as_list(entry.get("trigger_keywords")):
87
+ text = _clean_text(keyword)
88
+ if text and text not in terms:
89
+ terms.append(text)
90
+ if len(terms) >= _SUPPORTED_TRIGGER_LIMIT:
91
+ break
92
+ return terms[:_SUPPORTED_TRIGGER_LIMIT]
93
+
94
+
95
+ def _is_capability_inquiry(message: str) -> bool:
96
+ text = _clean_text(message)
97
+ return _contains_any(text, _CAPABILITY_INQUIRY_TERMS)
98
+
99
+
100
+ def _is_unknown_interaction_request(message: str, payload: dict[str, Any]) -> bool:
101
+ text = _clean_text(message)
102
+ if not text or _is_capability_inquiry(text):
103
+ return False
104
+ if _contains_any(text, _supported_trigger_terms(payload)):
105
+ return False
106
+ has_interaction_noun = _contains_any(text, _INTERACTION_REQUEST_TERMS)
107
+ has_action_verb = _contains_any(text, _INTERACTION_ACTION_TERMS)
108
+ return bool(has_interaction_noun and has_action_verb)
109
+
110
+
111
+ def _format_supported_interactions(interactions: list[dict[str, str]]) -> str:
112
+ if not interactions:
113
+ return "目前可支持已配置的交互方式;当前配置暂未返回可展示的能力清单。"
114
+ lines = ["目前支持的交互方式:"]
115
+ for item in interactions:
116
+ reason = item.get("reason") or "可基于当前任务上下文继续推进。"
117
+ lines.append(f"- {item['label']}:{reason}")
118
+ return "\n".join(lines)
119
+
120
+
121
+ def build_capability_overview_message(payload: dict[str, Any]) -> str:
122
+ return _format_supported_interactions(build_supported_interactions(payload))
123
+
124
+
125
+ def build_unknown_interaction_message(payload: dict[str, Any]) -> str:
126
+ supported = _format_supported_interactions(build_supported_interactions(payload))
127
+ return (
128
+ "这个交互方式目前还没有开发到,暂时不能直接完成。\n"
129
+ f"{supported}\n"
130
+ "您可以换成上面任一交互方式继续,我会按当前任务上下文接着处理。"
131
+ )
132
+
133
+
134
+ def resolve_capability_boundary_completion(
135
+ *,
136
+ message: str,
137
+ payload: dict[str, Any],
138
+ ) -> LLMCompletion | None:
139
+ """Return a deterministic boundary response when the turn is about app capabilities."""
140
+
141
+ if _is_capability_inquiry(message):
142
+ return LLMCompletion(
143
+ provider="kernel_guardrail",
144
+ model="capability_boundary",
145
+ content=build_capability_overview_message(payload),
146
+ status="guardrail",
147
+ details={"reason": "supported_interactions_inquiry"},
148
+ )
149
+ if _is_unknown_interaction_request(message, payload):
150
+ return LLMCompletion(
151
+ provider="kernel_guardrail",
152
+ model="capability_boundary",
153
+ content=build_unknown_interaction_message(payload),
154
+ status="guardrail",
155
+ details={"reason": "unknown_interaction_request"},
156
+ )
157
+ return None
158
+
159
+
160
+ __all__ = [
161
+ "build_capability_overview_message",
162
+ "build_supported_interactions",
163
+ "build_unknown_interaction_message",
164
+ "resolve_capability_boundary_completion",
165
+ ]
@@ -6,17 +6,25 @@ from dataclasses import dataclass
6
6
  from typing import Any
7
7
 
8
8
  from flare_kernel.contracts import KernelRequest
9
+ from flare_kernel.router.completion.intake_summary_submission import (
10
+ is_requirement_summary_submission,
11
+ )
12
+ from flare_kernel.router.turn_act import classify_turn_act
9
13
  from flare_kernel.runtime.llm.llm_provider import LLMCompletion
10
14
 
11
15
  _REQUIREMENT_INTAKE_COMMAND_SCORES = {
12
- "": {"main_chain": 1.0, "patch_only": 0.0},
13
- "send_message": {"main_chain": 1.0, "patch_only": 0.0},
14
- "submit_intake_answer": {"main_chain": 0.0, "patch_only": 1.0},
15
- "activate_requirement_intake": {"main_chain": 0.0, "patch_only": 1.0},
16
+ "": {"main_chain": 0.0, "patch_only": 1.0, "phase_floor": 0.0},
17
+ "send_message": {"main_chain": 0.0, "patch_only": 1.0, "phase_floor": 0.0},
18
+ "submit_intake_answer": {"main_chain": 0.0, "patch_only": 1.0, "phase_floor": 0.0},
19
+ "continue_collection": {"main_chain": 0.0, "patch_only": 1.0, "phase_floor": 0.0},
20
+ "activate_requirement_intake": {"main_chain": 0.0, "patch_only": 1.0, "phase_floor": 1.0},
21
+ "apply": {"main_chain": 0.0, "patch_only": 1.0, "phase_floor": 1.0},
22
+ "implement": {"main_chain": 0.0, "patch_only": 1.0, "phase_floor": 1.0},
16
23
  }
17
- _DEFAULT_REQUIREMENT_INTAKE_COMMAND_SCORE = {"main_chain": 1.0, "patch_only": 0.0}
24
+ _DEFAULT_REQUIREMENT_INTAKE_COMMAND_SCORE = {"main_chain": 1.0, "patch_only": 0.0, "phase_floor": 0.0}
18
25
  _PATCH_ONLY_COMPLETION_MODES = frozenset({"patch_only", "state_patch_only"})
19
26
  _MAIN_CHAIN_COMPLETION_MODES = frozenset({"main_chain", "llm", "generate"})
27
+ _MAIN_CHAIN_TURN_KINDS = frozenset({"clarification_question", "patch_request", "mixed"})
20
28
 
21
29
 
22
30
  @dataclass(frozen=True)
@@ -140,11 +148,39 @@ def _resolve_requirement_intake_guided_decision(
140
148
  payload_decision = _payload_patch_decision(payload)
141
149
  if payload_decision is not None:
142
150
  return payload_decision
151
+ if is_requirement_summary_submission(payload):
152
+ return _GuidedCompletionDecision(
153
+ action="main_chain",
154
+ main_chain_score=1.0,
155
+ patch_only_score=0.0,
156
+ phase_score=1.0,
157
+ policy_reason="requirement_summary_submission",
158
+ )
159
+ if command in {"", "send_message"} and _is_collecting_question_phase(orchestration_status):
160
+ turn_act = classify_turn_act(
161
+ message=str(payload.get("message") or ""),
162
+ current_question=orchestration_status.get("current_question")
163
+ if isinstance(orchestration_status.get("current_question"), dict)
164
+ else None,
165
+ field_definitions=payload.get("field_definitions"),
166
+ )
167
+ turn_kind = str(turn_act.get("turn_kind") or "").strip()
168
+ if turn_kind in _MAIN_CHAIN_TURN_KINDS:
169
+ return _GuidedCompletionDecision(
170
+ action="main_chain",
171
+ main_chain_score=1.0,
172
+ patch_only_score=0.0,
173
+ phase_score=1.0,
174
+ policy_reason=f"orc15_{turn_kind}",
175
+ )
143
176
  command_scores = _REQUIREMENT_INTAKE_COMMAND_SCORES.get(
144
177
  command,
145
178
  _DEFAULT_REQUIREMENT_INTAKE_COMMAND_SCORE,
146
179
  )
147
- phase_score = float(_is_collecting_question_phase(orchestration_status))
180
+ phase_score = max(
181
+ float(_is_collecting_question_phase(orchestration_status)),
182
+ float(command_scores.get("phase_floor") or 0.0),
183
+ )
148
184
  patch_only_score = phase_score * float(command_scores["patch_only"])
149
185
  main_chain_score = float(command_scores["main_chain"])
150
186
  action = "patch_only" if patch_only_score > main_chain_score else "main_chain"
@@ -0,0 +1,46 @@
1
+ """Requirement-intake commit projection for non-stream run results.
2
+
3
+ DOC HELPER — run result intake context writeback boundary.
4
+ This helper exposes the same context patch carried by stream completion events.
5
+ It only frames an already-canonical context patch on the response result.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import Any
11
+
12
+ from flare_kernel.runtime.context.intake_application import build_context_patch_from_intake_commit
13
+
14
+
15
+ def _merge_context_patches(existing: Any, incoming: dict[str, Any]) -> dict[str, Any]:
16
+ merged = dict(existing) if isinstance(existing, dict) else {}
17
+ for key, value in incoming.items():
18
+ if isinstance(value, list):
19
+ current = merged.get(key) if isinstance(merged.get(key), list) else []
20
+ merged[key] = [*current, *value]
21
+ elif isinstance(value, dict) and isinstance(merged.get(key), dict):
22
+ merged[key] = {**merged[key], **value}
23
+ else:
24
+ merged[key] = value
25
+ return merged
26
+
27
+
28
+ def attach_intake_commit_context_contract(
29
+ *,
30
+ result: dict[str, Any],
31
+ runtime_snapshot: dict[str, Any],
32
+ orchestration_status: dict[str, Any],
33
+ command: str,
34
+ ) -> dict[str, Any]:
35
+ context_patch = build_context_patch_from_intake_commit(
36
+ runtime_snapshot=runtime_snapshot,
37
+ orchestration_status=orchestration_status,
38
+ command=command,
39
+ )
40
+ if not context_patch:
41
+ return result
42
+ result["context_patch"] = _merge_context_patches(result.get("context_patch"), context_patch)
43
+ return result
44
+
45
+
46
+ __all__ = ["attach_intake_commit_context_contract"]
@@ -0,0 +1,147 @@
1
+ """Resolve requirement-intake Canvas summary content.
2
+
3
+ The Canvas prompt review surface must not reuse the main assistant reply as the
4
+ reviewable prompt. This module resolves backend-owned scope content from
5
+ canonical intake/runtime state only.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import Any
11
+
12
+
13
+ def _clean_text(value: Any) -> str:
14
+ return str(value or "").strip()
15
+
16
+
17
+ def _coerce_mapping(value: Any) -> dict[str, Any]:
18
+ return value if isinstance(value, dict) else {}
19
+
20
+
21
+ def _mode_event_payloads(runtime_snapshot: dict[str, Any]) -> list[dict[str, Any]]:
22
+ mode_events = runtime_snapshot.get("mode_events")
23
+ if not isinstance(mode_events, list):
24
+ return []
25
+ payloads: list[dict[str, Any]] = []
26
+ for event in mode_events:
27
+ if not isinstance(event, dict):
28
+ continue
29
+ payload = event.get("payload")
30
+ if isinstance(payload, dict):
31
+ payloads.append(payload)
32
+ return payloads
33
+
34
+
35
+ def _explicit_summary_content(runtime_snapshot: dict[str, Any]) -> str:
36
+ payload = _coerce_mapping(runtime_snapshot.get("payload"))
37
+ content = _clean_text(payload.get("requirement_summary_content"))
38
+ if content:
39
+ return content
40
+ summary = _coerce_mapping(payload.get("requirement_summary"))
41
+ content = _clean_text(summary.get("content"))
42
+ if content:
43
+ return content
44
+ content = _clean_text(payload.get("canvas_content"))
45
+ if content:
46
+ return content
47
+ for event_payload in reversed(_mode_event_payloads(runtime_snapshot)):
48
+ summary = _coerce_mapping(event_payload.get("requirement_summary"))
49
+ content = _clean_text(summary.get("content"))
50
+ if content:
51
+ return content
52
+ canvas_state = _coerce_mapping(event_payload.get("canvas_state"))
53
+ summary = _coerce_mapping(canvas_state.get("requirement_summary"))
54
+ content = _clean_text(summary.get("content"))
55
+ if content:
56
+ return content
57
+ content = _clean_text(event_payload.get("canvas_content"))
58
+ if content:
59
+ return content
60
+ return ""
61
+
62
+
63
+ def _understanding_scope_content(runtime_snapshot: dict[str, Any]) -> str:
64
+ for event_payload in reversed(_mode_event_payloads(runtime_snapshot)):
65
+ understanding = _coerce_mapping(event_payload.get("intake_understanding"))
66
+ context = _coerce_mapping(understanding.get("understood_context"))
67
+ for value in (
68
+ context.get("context_phrase"),
69
+ understanding.get("raw_user_goal"),
70
+ event_payload.get("message_excerpt"),
71
+ ):
72
+ content = _clean_text(value)
73
+ if content:
74
+ return content
75
+ return ""
76
+
77
+
78
+ def _payload_message_scope_content(runtime_snapshot: dict[str, Any]) -> str:
79
+ payload = _coerce_mapping(runtime_snapshot.get("payload"))
80
+ return _clean_text(payload.get("message"))
81
+
82
+
83
+ def _row_text(row: dict[str, Any]) -> str:
84
+ label = _clean_text(row.get("label") or row.get("field_key") or row.get("key"))
85
+ value = _clean_text(row.get("value") or row.get("field_value") or row.get("display_value"))
86
+ if not label:
87
+ return value
88
+ if not value:
89
+ return label
90
+ return f"{label}:{value}"
91
+
92
+
93
+ def _field_scope_content(runtime_snapshot: dict[str, Any]) -> str:
94
+ for event_payload in reversed(_mode_event_payloads(runtime_snapshot)):
95
+ canvas_state = _coerce_mapping(event_payload.get("canvas_state"))
96
+ collected = canvas_state.get("collected")
97
+ if not isinstance(collected, list):
98
+ continue
99
+ lines: list[str] = []
100
+ for row in collected:
101
+ if not isinstance(row, dict):
102
+ continue
103
+ text = _row_text(row)
104
+ if text:
105
+ lines.append(text)
106
+ if lines:
107
+ return "\n".join(lines)
108
+ return ""
109
+
110
+
111
+ def resolve_requirement_summary_content(
112
+ *,
113
+ runtime_snapshot: dict[str, Any],
114
+ ) -> str:
115
+ """Resolve canonical prompt/scope content for requirement-intake fallback."""
116
+
117
+ if _clean_text(runtime_snapshot.get("mode_key")) != "requirement_intake":
118
+ return ""
119
+ return (
120
+ _explicit_summary_content(runtime_snapshot)
121
+ or _understanding_scope_content(runtime_snapshot)
122
+ or _field_scope_content(runtime_snapshot)
123
+ or _payload_message_scope_content(runtime_snapshot)
124
+ )
125
+
126
+
127
+ def resolve_reviewable_requirement_summary_content(
128
+ *,
129
+ runtime_snapshot: dict[str, Any],
130
+ content_text: str,
131
+ ) -> str:
132
+ """Resolve the user-reviewable requirement summary text.
133
+
134
+ The model-authored main-chain summary is the preferred review surface when
135
+ present. Canonical scope remains the fallback for patch-only or empty model
136
+ turns, so field state can still be rendered without inventing content.
137
+ """
138
+
139
+ return _clean_text(content_text) or resolve_requirement_summary_content(
140
+ runtime_snapshot=runtime_snapshot,
141
+ )
142
+
143
+
144
+ __all__ = [
145
+ "resolve_requirement_summary_content",
146
+ "resolve_reviewable_requirement_summary_content",
147
+ ]