flare-kernel 0.2.13__tar.gz → 0.2.15__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 (715) hide show
  1. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/PKG-INFO +1 -1
  2. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/pyproject.toml +1 -1
  3. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/draft/finalize.py +12 -0
  4. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/draft/phase.py +2 -0
  5. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/draft/post_completion.py +15 -1
  6. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/draft/prologue.py +15 -0
  7. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/context/reasoning_application.py +80 -0
  8. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/context/session_context.py +5 -1
  9. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/canvas_state.py +28 -1
  10. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_canvas.py +1 -1
  11. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_content.py +26 -5
  12. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_context.py +12 -0
  13. flare_kernel-0.2.15/src/flare_kernel/runtime/orchestration/mode/intake_field_hydration.py +121 -0
  14. flare_kernel-0.2.15/src/flare_kernel/runtime/orchestration/structured_reasoning.py +156 -0
  15. flare_kernel-0.2.13/src/flare_kernel/runtime/orchestration/structured_reasoning.py → flare_kernel-0.2.15/src/flare_kernel/runtime/orchestration/structured_reasoning_normalization.py +64 -127
  16. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel.egg-info/PKG-INFO +1 -1
  17. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel.egg-info/SOURCES.txt +5 -0
  18. flare_kernel-0.2.15/tests/test_reasoning_context_patch.py +45 -0
  19. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_requirement_intake_canvas_state.py +122 -2
  20. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_requirement_intake_flow.py +6 -1
  21. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_draft_finalize.py +11 -0
  22. flare_kernel-0.2.15/tests/test_streaming_draft_prologue.py +94 -0
  23. flare_kernel-0.2.15/tests/test_streaming_reasoning_context_patch.py +93 -0
  24. flare_kernel-0.2.15/tests/test_structured_reasoning.py +85 -0
  25. flare_kernel-0.2.13/tests/test_streaming_draft_prologue.py +0 -45
  26. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/README.md +0 -0
  27. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/setup.cfg +0 -0
  28. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/__init__.py +0 -0
  29. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/app.py +0 -0
  30. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/__init__.py +0 -0
  31. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/auth_contract.py +0 -0
  32. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/context.py +0 -0
  33. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/kernel_contract.py +0 -0
  34. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/list_event_contract.py +0 -0
  35. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/mode.py +0 -0
  36. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/project_contract.py +0 -0
  37. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/project_memory_contract.py +0 -0
  38. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/run_contract.py +0 -0
  39. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/session_contract.py +0 -0
  40. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/contracts/update_contract.py +0 -0
  41. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/list_event_broker.py +0 -0
  42. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/main.py +0 -0
  43. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/project_record_memory_store.py +0 -0
  44. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/project_store.py +0 -0
  45. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/__init__.py +0 -0
  46. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/__init__.py +0 -0
  47. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/auth.py +0 -0
  48. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/auth_guard.py +0 -0
  49. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/chat.py +0 -0
  50. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/errors.py +0 -0
  51. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/list_events.py +0 -0
  52. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/project.py +0 -0
  53. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/run.py +0 -0
  54. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/session.py +0 -0
  55. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/session_list_events.py +0 -0
  56. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/api/update.py +0 -0
  57. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/__init__.py +0 -0
  58. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/analysis.py +0 -0
  59. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/checkpoint.py +0 -0
  60. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/composer_ui.py +0 -0
  61. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/context/__init__.py +0 -0
  62. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/context/analysis.py +0 -0
  63. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/context/inputs.py +0 -0
  64. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/context/session.py +0 -0
  65. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/context_authority.py +0 -0
  66. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/contract_support.py +0 -0
  67. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/flow.py +0 -0
  68. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/mode_projection.py +0 -0
  69. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/payload.py +0 -0
  70. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/projection.py +0 -0
  71. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/canonical/track_actions.py +0 -0
  72. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/__init__.py +0 -0
  73. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/analysis_policy.py +0 -0
  74. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/analysis_result_contract.py +0 -0
  75. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/capability_boundary.py +0 -0
  76. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/guided.py +0 -0
  77. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/intake_commit_contract.py +0 -0
  78. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/intake_summary_content.py +0 -0
  79. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/intake_summary_events.py +0 -0
  80. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/intake_summary_submission.py +0 -0
  81. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/response_builder.py +0 -0
  82. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/selection.py +0 -0
  83. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/completion/stream_collect.py +0 -0
  84. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/context/__init__.py +0 -0
  85. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/context/endpoint.py +0 -0
  86. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/context/sourcing_preview.py +0 -0
  87. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/hardcode_boundary.py +0 -0
  88. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/__init__.py +0 -0
  89. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/amount_quantity.py +0 -0
  90. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/answer.py +0 -0
  91. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/authority/__init__.py +0 -0
  92. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/authority/checkpoint.py +0 -0
  93. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/authority/core.py +0 -0
  94. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/authority/hydration.py +0 -0
  95. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/authority/session.py +0 -0
  96. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/canonicalization.py +0 -0
  97. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/clarification.py +0 -0
  98. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/decision_rules.py +0 -0
  99. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/delivery_time.py +0 -0
  100. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/entry_policy.py +0 -0
  101. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/extraction/__init__.py +0 -0
  102. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/extraction/core.py +0 -0
  103. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/extraction/extractors.py +0 -0
  104. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/extraction/merge.py +0 -0
  105. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/extraction/quantity_classifier.py +0 -0
  106. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/field_projection/__init__.py +0 -0
  107. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/field_projection/core.py +0 -0
  108. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/field_projection/entity.py +0 -0
  109. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/field_projection/payload.py +0 -0
  110. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/field_projection/source.py +0 -0
  111. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/field_scope.py +0 -0
  112. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/guided/__init__.py +0 -0
  113. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/guided/confirmed_updates.py +0 -0
  114. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/guided/flags.py +0 -0
  115. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/guided/followup.py +0 -0
  116. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/guided/followup_work_item.py +0 -0
  117. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/guided/open_fields.py +0 -0
  118. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/guided/status.py +0 -0
  119. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/guided/summary.py +0 -0
  120. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/inputs.py +0 -0
  121. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/legacy_question.py +0 -0
  122. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/node_state.py +0 -0
  123. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/numeric.py +0 -0
  124. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/payload_updates.py +0 -0
  125. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/readiness.py +0 -0
  126. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/state_persistence.py +0 -0
  127. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/status/__init__.py +0 -0
  128. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/status/chooser_stage.py +0 -0
  129. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/status/core.py +0 -0
  130. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/status/guided_session.py +0 -0
  131. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/status/projection.py +0 -0
  132. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/status/schema.py +0 -0
  133. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intake/workflow_checkpoint.py +0 -0
  134. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/__init__.py +0 -0
  135. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/classifier_utils.py +0 -0
  136. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/compat_aliases.py +0 -0
  137. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/escalation/__init__.py +0 -0
  138. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/escalation/override.py +0 -0
  139. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/escalation/pipeline.py +0 -0
  140. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/escalation/signal.py +0 -0
  141. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/routing.py +0 -0
  142. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/session_intent/__init__.py +0 -0
  143. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/session_intent/core.py +0 -0
  144. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/session_intent/fields.py +0 -0
  145. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/intent/session_intent/small_talk.py +0 -0
  146. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel.py +0 -0
  147. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_constants/__init__.py +0 -0
  148. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_constants/intake.py +0 -0
  149. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_constants/intent.py +0 -0
  150. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_constants/patch.py +0 -0
  151. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_endpoint_handlers/__init__.py +0 -0
  152. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_endpoint_handlers/health.py +0 -0
  153. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_endpoint_handlers/knowledge.py +0 -0
  154. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_endpoint_handlers/sourcing.py +0 -0
  155. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_endpoint_handlers/turn.py +0 -0
  156. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/__init__.py +0 -0
  157. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/canonical_state.py +0 -0
  158. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/dependency_resolution.py +0 -0
  159. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/domain_pack_payload.py +0 -0
  160. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/flow.py +0 -0
  161. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/orchestration.py +0 -0
  162. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/payload_enrichment.py +0 -0
  163. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/turn_context.py +0 -0
  164. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_facade/utils.py +0 -0
  165. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_flow_bindings/__init__.py +0 -0
  166. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_flow_bindings/intent_query.py +0 -0
  167. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_flow_bindings/mode.py +0 -0
  168. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_flow_bindings/session_intent.py +0 -0
  169. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_request_pipeline/__init__.py +0 -0
  170. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_request_pipeline/action.py +0 -0
  171. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_request_pipeline/intake.py +0 -0
  172. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_request_pipeline/intent_query.py +0 -0
  173. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_request_pipeline/intent_signal.py +0 -0
  174. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_route/__init__.py +0 -0
  175. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_route/action.py +0 -0
  176. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_route/execution.py +0 -0
  177. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_route/run.py +0 -0
  178. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/kernel_route/stream.py +0 -0
  179. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/mode/__init__.py +0 -0
  180. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/mode/resolution.py +0 -0
  181. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/mode/switch.py +0 -0
  182. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/next_actions_guard.py +0 -0
  183. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/__init__.py +0 -0
  184. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/__init__.py +0 -0
  185. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/action_readiness.py +0 -0
  186. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/actions.py +0 -0
  187. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/analysis_entry_decision.py +0 -0
  188. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/builder.py +0 -0
  189. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/checkpoint_state.py +0 -0
  190. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/context.py +0 -0
  191. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/context_helpers.py +0 -0
  192. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/core.py +0 -0
  193. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/decision.py +0 -0
  194. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/followup_state.py +0 -0
  195. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/projection.py +0 -0
  196. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/result.py +0 -0
  197. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/runtime_state.py +0 -0
  198. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/__init__.py +0 -0
  199. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/context.py +0 -0
  200. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/decision.py +0 -0
  201. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/entry.py +0 -0
  202. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/flow.py +0 -0
  203. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/followup.py +0 -0
  204. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/intent.py +0 -0
  205. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/node.py +0 -0
  206. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/payload.py +0 -0
  207. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/status/state/unpack.py +0 -0
  208. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/trace/__init__.py +0 -0
  209. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/trace/core.py +0 -0
  210. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/trace/projection.py +0 -0
  211. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/orchestration/trace/steps.py +0 -0
  212. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/patch_contract.py +0 -0
  213. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/payload/__init__.py +0 -0
  214. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/payload/action.py +0 -0
  215. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/payload/analysis_canvas.py +0 -0
  216. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/payload/enrichment.py +0 -0
  217. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/payload/turn_act_enrichment.py +0 -0
  218. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/__init__.py +0 -0
  219. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/artifact_template.py +0 -0
  220. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/capability_boundary.py +0 -0
  221. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/context_blocks.py +0 -0
  222. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/core.py +0 -0
  223. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/patch_preview.py +0 -0
  224. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/requirement_intake.py +0 -0
  225. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/response_strategy.py +0 -0
  226. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/summary_contract.py +0 -0
  227. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/prompting/track_context.py +0 -0
  228. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/request/__init__.py +0 -0
  229. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/request/identity.py +0 -0
  230. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/request/intent_resolution.py +0 -0
  231. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/response_intent/__init__.py +0 -0
  232. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/response_intent/contracts.py +0 -0
  233. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/response_intent/document_output.py +0 -0
  234. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/response_intent/resolution.py +0 -0
  235. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/retrieval/__init__.py +0 -0
  236. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/retrieval/aliases.py +0 -0
  237. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/retrieval/field_queries.py +0 -0
  238. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/retrieval/projection.py +0 -0
  239. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/retrieval/query_builder.py +0 -0
  240. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/retrieval/search.py +0 -0
  241. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/source_library.py +0 -0
  242. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/__init__.py +0 -0
  243. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/draft/__init__.py +0 -0
  244. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/draft/completion.py +0 -0
  245. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/draft/phase_timing.py +0 -0
  246. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/event_emitter.py +0 -0
  247. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/intake/__init__.py +0 -0
  248. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/intake/phase.py +0 -0
  249. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/mode/__init__.py +0 -0
  250. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/mode/event_payload.py +0 -0
  251. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/mode/events.py +0 -0
  252. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/__init__.py +0 -0
  253. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/bootstrap.py +0 -0
  254. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/builder.py +0 -0
  255. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/builder_transport.py +0 -0
  256. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/draft_phase.py +0 -0
  257. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/phase_groups.py +0 -0
  258. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/phases.py +0 -0
  259. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/runtime.py +0 -0
  260. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/response/structured_reasoning_phase.py +0 -0
  261. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/retrieval/__init__.py +0 -0
  262. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/retrieval/phase.py +0 -0
  263. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/runtime/__init__.py +0 -0
  264. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/runtime/sourcing_observations.py +0 -0
  265. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/streaming/runtime/steps.py +0 -0
  266. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/text_safety.py +0 -0
  267. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/router/turn_act.py +0 -0
  268. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/run_store.py +0 -0
  269. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/__init__.py +0 -0
  270. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/auth/__init__.py +0 -0
  271. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/auth/exchange.py +0 -0
  272. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/auth/policy.py +0 -0
  273. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/auth/scope_guard.py +0 -0
  274. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/context/__init__.py +0 -0
  275. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/context/analysis_application.py +0 -0
  276. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/context/document_application.py +0 -0
  277. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/context/intake_application.py +0 -0
  278. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/context/track_application.py +0 -0
  279. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/diagnostics/__init__.py +0 -0
  280. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/diagnostics/provider_audit.py +0 -0
  281. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/diagnostics/provider_audit_export.py +0 -0
  282. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/diagnostics/replay_snapshot.py +0 -0
  283. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/diagnostics/replay_snapshot_io.py +0 -0
  284. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/diagnostics/replay_snapshot_validation.py +0 -0
  285. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/domain/__init__.py +0 -0
  286. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/domain/domain_pack_loader.py +0 -0
  287. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/domain/domain_pack_paths.py +0 -0
  288. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/domain/domain_pack_root.py +0 -0
  289. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/domain/profile_resolution.py +0 -0
  290. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/execution/__init__.py +0 -0
  291. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/execution/agent_runtime.py +0 -0
  292. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/execution/skill_runtime.py +0 -0
  293. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/__init__.py +0 -0
  294. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/chat_memory.py +0 -0
  295. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/database.py +0 -0
  296. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/dependency_status.py +0 -0
  297. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/infrastructure.py +0 -0
  298. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/knowledge_ingest.py +0 -0
  299. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/knowledge_memory.py +0 -0
  300. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/knowledge_postgres_search.py +0 -0
  301. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/knowledge_qdrant_search.py +0 -0
  302. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/knowledge_search.py +0 -0
  303. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/knowledge_terms.py +0 -0
  304. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/logging.py +0 -0
  305. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/project_memory_codec.py +0 -0
  306. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/project_memory_review_sql.py +0 -0
  307. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/project_memory_review_store.py +0 -0
  308. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/project_memory_sql.py +0 -0
  309. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/project_memory_store.py +0 -0
  310. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/project_memory_version_sql.py +0 -0
  311. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/project_memory_version_store.py +0 -0
  312. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/redis_client.py +0 -0
  313. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/run/__init__.py +0 -0
  314. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/run/repository.py +0 -0
  315. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/run/repository_memory.py +0 -0
  316. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/run/repository_sql.py +0 -0
  317. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/session/__init__.py +0 -0
  318. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/session/columns.py +0 -0
  319. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/session/repository.py +0 -0
  320. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/session/repository_memory.py +0 -0
  321. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/session/repository_sql.py +0 -0
  322. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/source/__init__.py +0 -0
  323. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/source/document_understanding_codec.py +0 -0
  324. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/source/library_persistence.py +0 -0
  325. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/source/ocr_provider.py +0 -0
  326. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/source/schema.py +0 -0
  327. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/source/text_extractor.py +0 -0
  328. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/__init__.py +0 -0
  329. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/instance_profile_adapter.py +0 -0
  330. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/persistence.py +0 -0
  331. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/provider.py +0 -0
  332. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/provider_config.py +0 -0
  333. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/provider_gateway.py +0 -0
  334. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/provider_normalize.py +0 -0
  335. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/provider_public.py +0 -0
  336. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/sourcing/provider_result.py +0 -0
  337. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/trace.py +0 -0
  338. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/infrastructure/vector_store.py +0 -0
  339. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/intent/__init__.py +0 -0
  340. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/intent/intent_and_escalation/__init__.py +0 -0
  341. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/intent/intent_and_escalation/decision.py +0 -0
  342. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/intent/intent_and_escalation/lexicon.py +0 -0
  343. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/intent/intent_and_escalation/preprocessing.py +0 -0
  344. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/intent/intent_and_escalation/signals.py +0 -0
  345. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/intent/intent_and_escalation_classifier.py +0 -0
  346. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/__init__.py +0 -0
  347. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/completion_capture.py +0 -0
  348. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/config.py +0 -0
  349. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/contracts.py +0 -0
  350. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/dashscope_provider.py +0 -0
  351. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/dashscope_streaming_provider.py +0 -0
  352. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/fallback_policy.py +0 -0
  353. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/intent_model_policy.py +0 -0
  354. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/llm_provider.py +0 -0
  355. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/model_router.py +0 -0
  356. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/native_streaming.py +0 -0
  357. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/provider_health.py +0 -0
  358. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/provider_health_probe.py +0 -0
  359. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/provider_health_snapshot.py +0 -0
  360. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/provider_health_source.py +0 -0
  361. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/provider_quota.py +0 -0
  362. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/provider_trace.py +0 -0
  363. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/provider_usage.py +0 -0
  364. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/replay_provider.py +0 -0
  365. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/llm/streaming_provider.py +0 -0
  366. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/__init__.py +0 -0
  367. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/analysis_route_policy.py +0 -0
  368. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/analysis_router_runtime.py +0 -0
  369. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/artifact_template_runtime.py +0 -0
  370. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/canvas/__init__.py +0 -0
  371. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/canvas/toolbar_actions.py +0 -0
  372. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/canvas_sourcing_contract.py +0 -0
  373. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/decision_engine.py +0 -0
  374. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/__init__.py +0 -0
  375. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/field_definitions.py +0 -0
  376. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_action_resolution.py +0 -0
  377. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_actions.py +0 -0
  378. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_canvas_events.py +0 -0
  379. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_coverage.py +0 -0
  380. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_draft_payload.py +0 -0
  381. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_events.py +0 -0
  382. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_field_projection.py +0 -0
  383. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_model_question_plan.py +0 -0
  384. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_next_actions_payload.py +0 -0
  385. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_payloads.py +0 -0
  386. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_progress_payload.py +0 -0
  387. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_question.py +0 -0
  388. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_question_lifecycle.py +0 -0
  389. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_question_plan_carrier.py +0 -0
  390. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_question_progress.py +0 -0
  391. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/intake_summary_artifact.py +0 -0
  392. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/orchestration.py +0 -0
  393. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/question_selection.py +0 -0
  394. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/reasoning.py +0 -0
  395. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/runtime.py +0 -0
  396. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/shared.py +0 -0
  397. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/sourcing_actions.py +0 -0
  398. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/sourcing_events.py +0 -0
  399. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/sourcing_preview.py +0 -0
  400. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/sourcing_report.py +0 -0
  401. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/mode/state_transition.py +0 -0
  402. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/module_prompt_registry.py +0 -0
  403. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/observation.py +0 -0
  404. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/patch_preview_runtime.py +0 -0
  405. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/response_strategy_runtime.py +0 -0
  406. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/session_context_runtime.py +0 -0
  407. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/__init__.py +0 -0
  408. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/additive_search.py +0 -0
  409. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/analysis_entry.py +0 -0
  410. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/candidate_explainability.py +0 -0
  411. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/canvas_state.py +0 -0
  412. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/context_round.py +0 -0
  413. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/event_payloads.py +0 -0
  414. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/instance_db_runtime.py +0 -0
  415. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/internal_runtime.py +0 -0
  416. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/mcp_runtime.py +0 -0
  417. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/observation_payloads.py +0 -0
  418. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/observations.py +0 -0
  419. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/parameter_draft.py +0 -0
  420. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/provider_config_loader.py +0 -0
  421. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/provider_health.py +0 -0
  422. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/result_window.py +0 -0
  423. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/search_runtime.py +0 -0
  424. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/source_priority.py +0 -0
  425. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/sourcing/web_runtime.py +0 -0
  426. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/structured_prompt_context.py +0 -0
  427. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/orchestration/track_runtime.py +0 -0
  428. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/project_memory/__init__.py +0 -0
  429. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/project_memory/decision.py +0 -0
  430. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/project_memory/extraction.py +0 -0
  431. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/project_memory/promotion.py +0 -0
  432. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/project_memory/recall.py +0 -0
  433. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/project_memory/runtime.py +0 -0
  434. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/__init__.py +0 -0
  435. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/__init__.py +0 -0
  436. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/api.py +0 -0
  437. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/branching/__init__.py +0 -0
  438. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/branching/core.py +0 -0
  439. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/branching/policy.py +0 -0
  440. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/context.py +0 -0
  441. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/field_selection.py +0 -0
  442. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/gap_detection.py +0 -0
  443. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/hypothesis.py +0 -0
  444. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/planning.py +0 -0
  445. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/priority.py +0 -0
  446. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/question/__init__.py +0 -0
  447. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/question/builder.py +0 -0
  448. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/question/decision.py +0 -0
  449. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/question/extraction.py +0 -0
  450. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/question/planner.py +0 -0
  451. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/question/structured.py +0 -0
  452. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/readiness/__init__.py +0 -0
  453. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/readiness/core.py +0 -0
  454. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/readiness/scoring.py +0 -0
  455. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/shared.py +0 -0
  456. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/understanding_state.py +0 -0
  457. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/visible_response.py +0 -0
  458. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/reasoning/intake/visible_summary.py +0 -0
  459. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/session/__init__.py +0 -0
  460. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/session/checkpoint_manager.py +0 -0
  461. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/session/intake_session_store.py +0 -0
  462. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/session/models.py +0 -0
  463. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/source_ingestion/__init__.py +0 -0
  464. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/source_ingestion/artifacts.py +0 -0
  465. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/source_ingestion/chunk_storage.py +0 -0
  466. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/source_ingestion/knowledge_storage.py +0 -0
  467. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/source_ingestion/runtime.py +0 -0
  468. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/runtime/source_ingestion/storage.py +0 -0
  469. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_archive_context.py +0 -0
  470. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_archive_graph.py +0 -0
  471. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_archive_metrics.py +0 -0
  472. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_archive_summary.py +0 -0
  473. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_lifecycle_policy.py +0 -0
  474. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_message_policy.py +0 -0
  475. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_message_records.py +0 -0
  476. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_record_policy.py +0 -0
  477. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_replay.py +0 -0
  478. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/session_store.py +0 -0
  479. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/update/__init__.py +0 -0
  480. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/update/compatibility.py +0 -0
  481. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/update/planner.py +0 -0
  482. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/update/registry.py +0 -0
  483. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/update/versioning.py +0 -0
  484. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel/user_store.py +0 -0
  485. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel.egg-info/dependency_links.txt +0 -0
  486. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel.egg-info/requires.txt +0 -0
  487. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/src/flare_kernel.egg-info/top_level.txt +0 -0
  488. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_action_payload.py +0 -0
  489. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_action_readiness.py +0 -0
  490. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_analysis_canvas_payload.py +0 -0
  491. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_analysis_context_patch.py +0 -0
  492. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_analysis_e2e.py +0 -0
  493. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_analysis_entry_decision.py +0 -0
  494. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_analysis_route_projection.py +0 -0
  495. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_analysis_route_runtime.py +0 -0
  496. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_artifact_template_prompt.py +0 -0
  497. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_artifact_template_runtime.py +0 -0
  498. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_auth_exchange.py +0 -0
  499. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_auth_scope_guard.py +0 -0
  500. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_basics.py +0 -0
  501. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_builder_split_modules.py +0 -0
  502. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_business_hardcode_guard.py +0 -0
  503. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canonical_composer_ui_projection.py +0 -0
  504. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canonical_mode_projection.py +0 -0
  505. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canonical_state_context_analysis.py +0 -0
  506. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canonical_state_context_inputs.py +0 -0
  507. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canonical_state_context_session.py +0 -0
  508. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canonical_state_flow.py +0 -0
  509. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canonical_state_payload.py +0 -0
  510. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canonical_state_projection.py +0 -0
  511. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_canvas_sourcing_contract_meta.py +0 -0
  512. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_capability_boundary.py +0 -0
  513. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_chat_api_alias.py +0 -0
  514. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_command_resolution_analysis_mode.py +0 -0
  515. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_compat_aliases.py +0 -0
  516. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_completion_response_builder.py +0 -0
  517. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_completion_selection.py +0 -0
  518. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_context_authority_projection.py +0 -0
  519. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_dashscope_streaming_provider.py +0 -0
  520. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_decision_engine.py +0 -0
  521. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_domain_pack_loader.py +0 -0
  522. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_endpoint_context.py +0 -0
  523. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_flare_v1_patch_contract.py +0 -0
  524. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_generic_domain_pack_options.py +0 -0
  525. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_guided_completion.py +0 -0
  526. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_infrastructure_helpers.py +0 -0
  527. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_infrastructure_knowledge.py +0 -0
  528. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_amount_quantity.py +0 -0
  529. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_answer.py +0 -0
  530. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_authority.py +0 -0
  531. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_authority_checkpoint.py +0 -0
  532. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_authority_hydration.py +0 -0
  533. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_authority_session.py +0 -0
  534. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_canonicalization.py +0 -0
  535. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_clarification.py +0 -0
  536. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_commit_context_patch.py +0 -0
  537. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_decision_rules.py +0 -0
  538. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_delivery_time.py +0 -0
  539. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_domain_context_options.py +0 -0
  540. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_entry_policy.py +0 -0
  541. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_extraction.py +0 -0
  542. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_extraction_extractors.py +0 -0
  543. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_extraction_merge.py +0 -0
  544. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_field_projection.py +0 -0
  545. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_field_projection_entity.py +0 -0
  546. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_field_projection_payload.py +0 -0
  547. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_field_projection_source.py +0 -0
  548. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_field_scope.py +0 -0
  549. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_guided_confirmed_updates.py +0 -0
  550. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_guided_flags.py +0 -0
  551. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_guided_followup.py +0 -0
  552. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_guided_followup_work_item.py +0 -0
  553. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_guided_open_fields.py +0 -0
  554. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_guided_status.py +0 -0
  555. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_guided_summary.py +0 -0
  556. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_inputs.py +0 -0
  557. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_node_state.py +0 -0
  558. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_numeric.py +0 -0
  559. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_payload_updates.py +0 -0
  560. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_question_extraction.py +0 -0
  561. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_question_projection.py +0 -0
  562. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_readiness.py +0 -0
  563. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_reasoning_priority.py +0 -0
  564. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_state_persistence.py +0 -0
  565. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_status.py +0 -0
  566. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_status_guided_session.py +0 -0
  567. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_status_projection.py +0 -0
  568. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_status_schema.py +0 -0
  569. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_status_stage.py +0 -0
  570. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_visible_response.py +0 -0
  571. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intake_workflow_checkpoint.py +0 -0
  572. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_classifier_utils.py +0 -0
  573. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_escalation_classifier.py +0 -0
  574. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_escalation_override.py +0 -0
  575. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_escalation_pipeline.py +0 -0
  576. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_escalation_signal.py +0 -0
  577. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_resolution.py +0 -0
  578. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_retrieval.py +0 -0
  579. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_routing.py +0 -0
  580. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_intent_type_compat_aliases.py +0 -0
  581. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_alias_delegation.py +0 -0
  582. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_endpoint_handlers.py +0 -0
  583. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_endpoint_handlers_sourcing.py +0 -0
  584. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_facade_helpers.py +0 -0
  585. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_facade_turn_context.py +0 -0
  586. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_intent_query_flow.py +0 -0
  587. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_mode_flow.py +0 -0
  588. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_route_execution_wrappers.py +0 -0
  589. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_kernel_session_intent_flow.py +0 -0
  590. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_list_events.py +0 -0
  591. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider.py +0 -0
  592. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider_fallback_policy.py +0 -0
  593. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider_health_file.py +0 -0
  594. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider_health_probe.py +0 -0
  595. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider_health_snapshot.py +0 -0
  596. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider_live.py +0 -0
  597. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider_native_streaming.py +0 -0
  598. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider_quota.py +0 -0
  599. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_provider_streaming.py +0 -0
  600. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_llm_replay_provider.py +0 -0
  601. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_mode_orchestration_state_bridge.py +0 -0
  602. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_mode_reasoning.py +0 -0
  603. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_mode_resolution.py +0 -0
  604. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_mode_switch.py +0 -0
  605. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_model_router.py +0 -0
  606. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_module_prompt_registry.py +0 -0
  607. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_new_flow_guard.py +0 -0
  608. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orc15_guided_completion.py +0 -0
  609. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orc15_turn_act_classification.py +0 -0
  610. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orc16_main_chain_hardcode_boundary.py +0 -0
  611. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_checkpoint_state.py +0 -0
  612. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_followup_state.py +0 -0
  613. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_context.py +0 -0
  614. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_context_helpers.py +0 -0
  615. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_decision.py +0 -0
  616. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_projection.py +0 -0
  617. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_result.py +0 -0
  618. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_runtime_state.py +0 -0
  619. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_state_context.py +0 -0
  620. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_state_decision.py +0 -0
  621. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_state_entry.py +0 -0
  622. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_state_followup.py +0 -0
  623. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_state_intent.py +0 -0
  624. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_state_node.py +0 -0
  625. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_state_payload.py +0 -0
  626. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_status_state_unpack.py +0 -0
  627. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_trace.py +0 -0
  628. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_trace_projection.py +0 -0
  629. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_orchestration_trace_steps.py +0 -0
  630. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_patch_contract.py +0 -0
  631. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_patch_preview_runtime.py +0 -0
  632. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_payload_enrichment.py +0 -0
  633. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_pln03_question_chooser.py +0 -0
  634. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_pln11_question_option_extraction.py +0 -0
  635. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_project_api.py +0 -0
  636. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_project_memory_promotion.py +0 -0
  637. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_project_memory_promotion_decision.py +0 -0
  638. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_project_memory_runtime.py +0 -0
  639. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_project_memory_store.py +0 -0
  640. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_project_memory_versions.py +0 -0
  641. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_prompting_analysis_instruction.py +0 -0
  642. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_prompting_requirement_intake.py +0 -0
  643. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_prompting_user_template_instruction.py +0 -0
  644. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_provider_audit.py +0 -0
  645. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_provider_audit_export.py +0 -0
  646. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_replay_snapshot.py +0 -0
  647. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_replay_snapshot_validation.py +0 -0
  648. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_request_identity.py +0 -0
  649. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_request_intent_resolution.py +0 -0
  650. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_requirement_intake_canvas_progress.py +0 -0
  651. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_requirement_intake_canvas_visibility.py +0 -0
  652. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_requirement_intake_continuation.py +0 -0
  653. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_requirement_intake_model_question_plan.py +0 -0
  654. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_requirement_intake_summary_route.py +0 -0
  655. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_response_intent_resolution.py +0 -0
  656. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_response_strategy_runtime.py +0 -0
  657. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_retrieval_aliases.py +0 -0
  658. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_retrieval_field_queries.py +0 -0
  659. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_retrieval_projection.py +0 -0
  660. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_retrieval_query_builder.py +0 -0
  661. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_retrieval_search.py +0 -0
  662. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_run_api.py +0 -0
  663. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_run_sql_repository.py +0 -0
  664. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_run_store.py +0 -0
  665. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_api.py +0 -0
  666. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_archive_summary.py +0 -0
  667. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_context_persistence.py +0 -0
  668. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_intent.py +0 -0
  669. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_intent_fields.py +0 -0
  670. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_intent_small_talk.py +0 -0
  671. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_lifecycle_api.py +0 -0
  672. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_replay_api.py +0 -0
  673. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_sql_columns.py +0 -0
  674. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_sql_migration.py +0 -0
  675. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_session_sql_repository.py +0 -0
  676. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_source_ingestion_runtime.py +0 -0
  677. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_source_ingestion_ssot_acceptance.py +0 -0
  678. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_source_library.py +0 -0
  679. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_source_library_persistence_scope.py +0 -0
  680. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_source_text_extractor.py +0 -0
  681. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_additive_search.py +0 -0
  682. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_candidate_explainability.py +0 -0
  683. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_context_reuse.py +0 -0
  684. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_e2e.py +0 -0
  685. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_instance_profile_adapter.py +0 -0
  686. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_parameter_draft.py +0 -0
  687. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_preview_context.py +0 -0
  688. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_provider.py +0 -0
  689. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_provider_adapters.py +0 -0
  690. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_provider_config_loader.py +0 -0
  691. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_provider_health.py +0 -0
  692. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_runtime_additive_search.py +0 -0
  693. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_search_runtime.py +0 -0
  694. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_sourcing_source_priority.py +0 -0
  695. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_stream_collect_completion.py +0 -0
  696. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_draft_completion.py +0 -0
  697. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_draft_intake_canvas_sync.py +0 -0
  698. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_draft_phase.py +0 -0
  699. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_draft_post_completion.py +0 -0
  700. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_event_emitter.py +0 -0
  701. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_intake_phase.py +0 -0
  702. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_mode_event_payload.py +0 -0
  703. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_mode_events.py +0 -0
  704. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_response_bootstrap.py +0 -0
  705. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_response_phases.py +0 -0
  706. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_response_runtime.py +0 -0
  707. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_response_transport.py +0 -0
  708. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_retrieval_phase.py +0 -0
  709. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_runtime_steps.py +0 -0
  710. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_streaming_structured_reasoning_projection.py +0 -0
  711. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_structured_prompt_context.py +0 -0
  712. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_text_safety.py +0 -0
  713. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_track_prompt_context.py +0 -0
  714. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/tests/test_track_runtime.py +0 -0
  715. {flare_kernel-0.2.13 → flare_kernel-0.2.15}/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.13
3
+ Version: 0.2.15
4
4
  Summary: FLARE kernel runtime package
5
5
  License: Proprietary
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "flare-kernel"
7
- version = "0.2.13"
7
+ version = "0.2.15"
8
8
  description = "FLARE kernel runtime package"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -14,6 +14,9 @@ from __future__ import annotations
14
14
  from typing import Any
15
15
 
16
16
  from flare_kernel.runtime.llm.llm_provider import LLMCompletion
17
+ from flare_kernel.runtime.orchestration.mode.canvas_state import (
18
+ build_analysis_canvas_signal_state,
19
+ )
17
20
  from flare_kernel.router.completion.analysis_policy import (
18
21
  apply_analysis_completion_policy,
19
22
  )
@@ -106,6 +109,15 @@ def iter_canonical_finalize_events(
106
109
  )
107
110
  )
108
111
  events.append(emitter.emit_patch("analysis.canvas_payload", analysis_payload))
112
+ events.append(
113
+ emitter.emit_event(
114
+ "canvas_state",
115
+ build_analysis_canvas_signal_state(
116
+ session_id=session_id,
117
+ project_id=str(canonical.get("project_id") or ""),
118
+ ),
119
+ )
120
+ )
109
121
  slot_patches = canonical.get("analysis_slot_patches")
110
122
  if isinstance(slot_patches, list) and slot_patches:
111
123
  events.append(emitter.emit_event("analysis_slot_patch", {"patches": slot_patches}))
@@ -94,7 +94,9 @@ async def iter_draft_generation_events(
94
94
  trace_id=trace_id,
95
95
  session_id=session_id,
96
96
  request_id=request_id,
97
+ project_id=project_id,
97
98
  resolved_mode=resolved_mode,
99
+ effective_command=effective_command,
98
100
  emitter=emitter,
99
101
  build_llm_execution_trace_fn=build_llm_execution_trace_fn,
100
102
  ):
@@ -29,6 +29,7 @@ from flare_kernel.router.streaming.draft.finalize import (
29
29
  from flare_kernel.router.streaming.event_emitter import StreamingEventEmitter
30
30
  from flare_kernel.runtime.context.analysis_application import build_context_patch_from_analysis
31
31
  from flare_kernel.runtime.context.intake_application import build_context_patch_from_intake_commit
32
+ from flare_kernel.runtime.context.reasoning_application import build_context_patch_from_reasoning
32
33
  from flare_kernel.runtime.orchestration.mode.intake_summary_artifact import (
33
34
  build_model_authored_requirement_summary_event,
34
35
  )
@@ -63,6 +64,18 @@ def _resolve_analysis_payload(
63
64
  return {}
64
65
 
65
66
 
67
+ def _resolve_reasoning_result(runtime_snapshot: dict[str, Any]) -> dict[str, Any]:
68
+ payload = runtime_snapshot.get("payload") if isinstance(runtime_snapshot.get("payload"), dict) else {}
69
+ for candidate in (
70
+ payload.get("structured_reasoning"),
71
+ runtime_snapshot.get("structured_reasoning"),
72
+ runtime_snapshot.get("reasoning_result"),
73
+ ):
74
+ if isinstance(candidate, dict):
75
+ return candidate
76
+ return {}
77
+
78
+
66
79
  def _resolve_context_patch(
67
80
  *,
68
81
  runtime_snapshot: dict[str, Any],
@@ -71,6 +84,7 @@ def _resolve_context_patch(
71
84
  ) -> dict[str, Any]:
72
85
  payload = runtime_snapshot.get("payload") if isinstance(runtime_snapshot.get("payload"), dict) else {}
73
86
  context_patch = payload.get("context_patch") if isinstance(payload.get("context_patch"), dict) else {}
87
+ reasoning_patch = build_context_patch_from_reasoning(_resolve_reasoning_result(runtime_snapshot))
74
88
  analysis_patch = build_context_patch_from_analysis(
75
89
  _resolve_analysis_payload(
76
90
  runtime_snapshot=runtime_snapshot,
@@ -82,7 +96,7 @@ def _resolve_context_patch(
82
96
  orchestration_status=orchestration_status,
83
97
  command=command,
84
98
  )
85
- return _merge_context_patches(context_patch, analysis_patch, intake_patch)
99
+ return _merge_context_patches(reasoning_patch, context_patch, analysis_patch, intake_patch)
86
100
 
87
101
 
88
102
  def _is_requirement_summary_submission_turn(
@@ -5,6 +5,9 @@ from __future__ import annotations
5
5
  from typing import Any, Callable
6
6
 
7
7
  from flare_kernel.contracts import KernelRequest
8
+ from flare_kernel.runtime.orchestration.mode.canvas_state import (
9
+ build_analysis_canvas_signal_state,
10
+ )
8
11
  from flare_kernel.router.streaming.event_emitter import StreamingEventEmitter
9
12
 
10
13
 
@@ -15,6 +18,8 @@ def build_draft_prologue_events(
15
18
  session_id: str,
16
19
  request_id: str,
17
20
  resolved_mode: str,
21
+ project_id: str = "",
22
+ effective_command: str = "",
18
23
  emitter: StreamingEventEmitter,
19
24
  build_llm_execution_trace_fn: Callable[..., dict[str, Any]],
20
25
  ) -> list[str]:
@@ -41,6 +46,16 @@ def build_draft_prologue_events(
41
46
  },
42
47
  )
43
48
  )
49
+ if str(effective_command or "").strip() == "generate_analysis":
50
+ events.append(
51
+ emitter.emit_event(
52
+ "canvas_state",
53
+ build_analysis_canvas_signal_state(
54
+ session_id=session_id,
55
+ project_id=project_id,
56
+ ),
57
+ )
58
+ )
44
59
  llm_start_trace = build_llm_execution_trace_fn(
45
60
  trace_id=trace_id,
46
61
  session_id=req.session_id,
@@ -21,6 +21,16 @@ def _as_list(value: Any) -> list[Any]:
21
21
  return value if isinstance(value, list) else []
22
22
 
23
23
 
24
+ def _as_mapping(value: Any) -> dict[str, Any]:
25
+ return value if isinstance(value, dict) else {}
26
+
27
+
28
+ def _coerce_confidence(value: Any) -> float | None:
29
+ if not isinstance(value, (int, float)):
30
+ return None
31
+ return max(0.0, min(1.0, float(value)))
32
+
33
+
24
34
  def _normalize_claims(items: Any) -> list[dict[str, Any]]:
25
35
  claims: list[dict[str, Any]] = []
26
36
  for item in _as_list(items):
@@ -50,6 +60,66 @@ def _normalize_text_list(items: Any) -> list[str]:
50
60
  return [_clean_text(item) for item in _as_list(items) if _clean_text(item)]
51
61
 
52
62
 
63
+ def _normalize_confirmed_field_items(result: dict[str, Any]) -> list[dict[str, Any]]:
64
+ extraction = _as_mapping(result.get("field_extraction"))
65
+ raw_items = extraction.get("confirmed_fields")
66
+ if raw_items is None:
67
+ raw_items = result.get("confirmed_fields")
68
+ if isinstance(raw_items, dict):
69
+ items = [{"field_key": key, "value": value} for key, value in raw_items.items()]
70
+ else:
71
+ items = _as_list(raw_items)
72
+
73
+ fields: list[dict[str, Any]] = []
74
+ seen: set[str] = set()
75
+ for item in items:
76
+ payload = item if isinstance(item, dict) else {}
77
+ field_key = _clean_text(
78
+ payload.get("field_key")
79
+ or payload.get("key")
80
+ or payload.get("field")
81
+ or payload.get("target_field_key")
82
+ )
83
+ value = _clean_text(payload.get("value") or payload.get("field_value"))
84
+ if not field_key or not value or field_key in seen:
85
+ continue
86
+ seen.add(field_key)
87
+ fields.append(
88
+ {
89
+ "field_key": field_key,
90
+ "value": value,
91
+ "source": _clean_text(payload.get("source")),
92
+ "evidence": _clean_text(payload.get("evidence") or payload.get("quote")),
93
+ "confidence": _coerce_confidence(payload.get("confidence")),
94
+ }
95
+ )
96
+ return fields
97
+
98
+
99
+ def _facts_from_confirmed_fields(items: list[dict[str, Any]]) -> list[dict[str, Any]]:
100
+ facts: list[dict[str, Any]] = []
101
+ for item in items:
102
+ field_key = _clean_text(item.get("field_key"))
103
+ value = _clean_text(item.get("value"))
104
+ if not field_key or not value:
105
+ continue
106
+ facts.append(
107
+ {
108
+ "id": f"reasoning_field::{field_key}",
109
+ "text": f"{field_key}: {value}",
110
+ "source_id": _clean_text(item.get("source")),
111
+ "evidence_ids": [],
112
+ "confidence": item.get("confidence"),
113
+ "meta": {
114
+ "field_key": field_key,
115
+ "source": _clean_text(item.get("source")),
116
+ "evidence": _clean_text(item.get("evidence")),
117
+ },
118
+ }
119
+ )
120
+ return facts
121
+
122
+
53
123
  def _normalize_evidence(result: dict[str, Any]) -> list[dict[str, Any]]:
54
124
  metadata = result.get("metadata") if isinstance(result.get("metadata"), dict) else {}
55
125
  raw_evidence = metadata.get("evidence") if isinstance(metadata.get("evidence"), list) else []
@@ -85,6 +155,16 @@ def build_context_patch_from_reasoning(reasoning_result: dict[str, Any] | None)
85
155
  values = _normalize_text_list(result.get(source_key))
86
156
  if values:
87
157
  patch[target_key] = values
158
+ confirmed_field_items = _normalize_confirmed_field_items(result)
159
+ if confirmed_field_items:
160
+ patch["confirmed_fields"] = {
161
+ item["field_key"]: item["value"]
162
+ for item in confirmed_field_items
163
+ }
164
+ patch["facts"] = [
165
+ *(patch.get("facts") if isinstance(patch.get("facts"), list) else []),
166
+ *_facts_from_confirmed_fields(confirmed_field_items),
167
+ ]
88
168
  evidence = _normalize_evidence(result)
89
169
  if evidence:
90
170
  patch["evidence"] = evidence
@@ -155,7 +155,11 @@ def merge_session_context(
155
155
  document_patch = build_context_patch_from_document(document_result)
156
156
  track_patch = build_context_patch_from_track(track_result)
157
157
  for key in _CONTEXT_DICT_KEYS:
158
- base[key] = {**(base.get(key) if isinstance(base.get(key), dict) else {}), **(patch.get(key) if isinstance(patch.get(key), dict) else {})}
158
+ base[key] = {
159
+ **(base.get(key) if isinstance(base.get(key), dict) else {}),
160
+ **(reasoning_patch.get(key) if isinstance(reasoning_patch.get(key), dict) else {}),
161
+ **(patch.get(key) if isinstance(patch.get(key), dict) else {}),
162
+ }
159
163
  for key in _CONTEXT_LIST_KEYS:
160
164
  base[key] = _merge_list(base.get(key), patch.get(key))
161
165
  for key in _CONTEXT_LIST_KEYS:
@@ -110,4 +110,31 @@ def _build_canvas_revision_payload(
110
110
  }
111
111
 
112
112
 
113
- __all__ = ["_build_canvas_revision_payload", "_build_canvas_state_payload"]
113
+ def build_analysis_canvas_signal_state(*, session_id: str, project_id: str = "") -> dict[str, Any]:
114
+ return {
115
+ "mode_key": "analysis_mode",
116
+ "session_id": session_id,
117
+ "project_id": project_id,
118
+ "render_hint": "canvas_state",
119
+ "canvas_state": {
120
+ "version": 1,
121
+ "confirmed": True,
122
+ "progress": 1.0,
123
+ "collected": [],
124
+ "missing": [],
125
+ "revision_suggestions": [],
126
+ "versions": [],
127
+ },
128
+ "ui_signal": {
129
+ "open_canvas_panel": True,
130
+ "active_tab": "analysis",
131
+ "reason": "analysis_payload_ready",
132
+ },
133
+ }
134
+
135
+
136
+ __all__ = [
137
+ "_build_canvas_revision_payload",
138
+ "_build_canvas_state_payload",
139
+ "build_analysis_canvas_signal_state",
140
+ ]
@@ -74,7 +74,7 @@ def enrich_intake_canvas_state(
74
74
  model_plan=model_question_plan if isinstance(model_question_plan, list) else [],
75
75
  )
76
76
  del understanding_summary
77
- canvas_content = build_intake_canvas_content(collected_rows=collected_rows)
77
+ canvas_content = build_intake_canvas_content(collected_rows=collected_rows, missing_rows=missing_rows)
78
78
 
79
79
  versions = _replace_latest_content(canvas_state.get("versions"), canvas_content)
80
80
  toolbar_actions = build_canvas_toolbar_actions(
@@ -1,8 +1,8 @@
1
1
  """Prompt-ready requirement-intake Canvas content projection.
2
2
 
3
- This module only formats canonical collected fields into reviewable prompt
4
- context. It must not ask new questions, decide readiness, or invent missing
5
- business details.
3
+ This module only formats canonical collected/missing fields into reviewable
4
+ prompt context. It must not ask new questions, decide readiness, or invent
5
+ missing business details.
6
6
  """
7
7
 
8
8
  from __future__ import annotations
@@ -12,6 +12,7 @@ from typing import Any
12
12
  _CANVAS_TITLE = "需求梳理草稿"
13
13
  _PROMPT_SECTION_TITLE = "完整提示词:"
14
14
  _CONFIRMED_SECTION_TITLE = "已确认需求信息:"
15
+ _PENDING_SECTION_TITLE = "待确认需求信息:"
15
16
  _RULES_SECTION_TITLE = "处理规则:"
16
17
  _OUTPUT_SECTION_TITLE = "输出格式:"
17
18
 
@@ -33,6 +34,18 @@ def _confirmed_lines(rows: list[dict[str, Any]]) -> list[str]:
33
34
  return [line for line in lines if line] or ["- 暂无已确认字段。"]
34
35
 
35
36
 
37
+ def _pending_lines(rows: list[dict[str, Any]]) -> list[str]:
38
+ lines = [_pending_row_line(row) for row in rows if isinstance(row, dict)]
39
+ return [line for line in lines if line] or ["- 暂无待确认字段。"]
40
+
41
+
42
+ def _pending_row_line(row: dict[str, Any]) -> str:
43
+ label = _clean_text(row.get("label") or row.get("field_key"))
44
+ if not label:
45
+ return ""
46
+ return f"- {label}:待确认"
47
+
48
+
36
49
  def _prompt_preamble() -> list[str]:
37
50
  return [
38
51
  "你是需求执行助手。请基于以下已确认需求信息推进后续任务;未明确的信息不要自行假设,请标记为“待确认”。",
@@ -56,14 +69,19 @@ def _prompt_output_format() -> list[str]:
56
69
  ]
57
70
 
58
71
 
59
- def build_intake_canvas_content(*, collected_rows: list[dict[str, Any]]) -> str:
60
- """Build a stable prompt-ready draft from canonical collected fields.
72
+ def build_intake_canvas_content(
73
+ *,
74
+ collected_rows: list[dict[str, Any]],
75
+ missing_rows: list[dict[str, Any]] | None = None,
76
+ ) -> str:
77
+ """Build a stable prompt-ready draft from canonical collected/missing fields.
61
78
 
62
79
  Field rows are supplied by orchestration after normalization. This function
63
80
  only renders them; no field coverage or workflow decisions belong here.
64
81
  """
65
82
 
66
83
  rows = collected_rows if isinstance(collected_rows, list) else []
84
+ pending_rows = missing_rows if isinstance(missing_rows, list) else []
67
85
  sections = [
68
86
  _CANVAS_TITLE,
69
87
  _PROMPT_SECTION_TITLE,
@@ -72,6 +90,9 @@ def build_intake_canvas_content(*, collected_rows: list[dict[str, Any]]) -> str:
72
90
  _CONFIRMED_SECTION_TITLE,
73
91
  *_confirmed_lines(rows),
74
92
  "",
93
+ _PENDING_SECTION_TITLE,
94
+ *_pending_lines(pending_rows),
95
+ "",
75
96
  _RULES_SECTION_TITLE,
76
97
  *_prompt_rules(),
77
98
  "",
@@ -15,6 +15,9 @@ from flare_kernel.runtime.orchestration.mode.field_definitions import (
15
15
  _derive_field_lists,
16
16
  _normalize_field_definitions,
17
17
  )
18
+ from flare_kernel.runtime.orchestration.mode.intake_field_hydration import (
19
+ hydrate_intake_fields,
20
+ )
18
21
  from flare_kernel.runtime.orchestration.mode.shared import (
19
22
  _coerce_mapping,
20
23
  _coerce_message_excerpt,
@@ -152,6 +155,15 @@ def build_intake_context(
152
155
  **structured_reasoning,
153
156
  "result_text": result_text_from_payload,
154
157
  }
158
+ hydration = hydrate_intake_fields(
159
+ fields=fields,
160
+ sources=sources,
161
+ payload=payload,
162
+ field_definitions=field_definitions,
163
+ structured_reasoning=structured_reasoning,
164
+ )
165
+ fields = hydration["fields"]
166
+ sources = hydration["sources"]
155
167
  question_context = _build_question_context(payload)
156
168
  reasoning_state = {
157
169
  "confirmed_fields": fields,
@@ -0,0 +1,121 @@
1
+ """Requirement-intake canonical field hydration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+
8
+ def _clean_text(value: Any) -> str:
9
+ return " ".join(str(value or "").split()).strip()
10
+
11
+
12
+ def _coerce_mapping(value: Any) -> dict[str, Any]:
13
+ return value if isinstance(value, dict) else {}
14
+
15
+
16
+ def _coerce_list(value: Any) -> list[Any]:
17
+ return value if isinstance(value, list) else []
18
+
19
+
20
+ def _has_value(value: Any) -> bool:
21
+ return value not in (None, "", [], {})
22
+
23
+
24
+ def _allowed_field_keys(field_definitions: list[dict[str, Any]]) -> set[str]:
25
+ return {
26
+ field_key
27
+ for field_key in (
28
+ _clean_text(_coerce_mapping(item).get("key"))
29
+ for item in field_definitions
30
+ )
31
+ if field_key
32
+ }
33
+
34
+
35
+ def _field_candidates_from_mapping(
36
+ values: dict[str, Any],
37
+ *,
38
+ source: str,
39
+ ) -> list[dict[str, Any]]:
40
+ candidates: list[dict[str, Any]] = []
41
+ for key, value in values.items():
42
+ field_key = _clean_text(key)
43
+ if field_key and _has_value(value):
44
+ candidates.append({"field_key": field_key, "value": value, "source": source})
45
+ return candidates
46
+
47
+
48
+ def _session_context_candidates(payload: dict[str, Any]) -> list[dict[str, Any]]:
49
+ context = _coerce_mapping(payload.get("session_context") or payload.get("context"))
50
+ candidates = _field_candidates_from_mapping(
51
+ _coerce_mapping(context.get("confirmed_fields")),
52
+ source="session_context",
53
+ )
54
+ for artifact in _coerce_list(context.get("artifact_context")):
55
+ artifact_fields = _coerce_mapping(_coerce_mapping(artifact).get("fields"))
56
+ candidates.extend(_field_candidates_from_mapping(artifact_fields, source="artifact_context"))
57
+ return candidates
58
+
59
+
60
+ def _structured_reasoning_candidates(structured_reasoning: dict[str, Any]) -> list[dict[str, Any]]:
61
+ extraction = _coerce_mapping(structured_reasoning.get("field_extraction"))
62
+ raw_confirmed = extraction.get("confirmed_fields")
63
+ if isinstance(raw_confirmed, dict):
64
+ return _field_candidates_from_mapping(raw_confirmed, source="structured_reasoning")
65
+ candidates: list[dict[str, Any]] = []
66
+ for item in _coerce_list(raw_confirmed):
67
+ payload = _coerce_mapping(item)
68
+ field_key = _clean_text(payload.get("field_key") or payload.get("key"))
69
+ value = payload.get("value") or payload.get("field_value")
70
+ if field_key and _has_value(value):
71
+ candidates.append(
72
+ {
73
+ "field_key": field_key,
74
+ "value": value,
75
+ "source": _clean_text(payload.get("source")) or "structured_reasoning",
76
+ "evidence": _clean_text(payload.get("evidence")),
77
+ "confidence": payload.get("confidence"),
78
+ }
79
+ )
80
+ return candidates
81
+
82
+
83
+ def hydrate_intake_fields(
84
+ *,
85
+ fields: dict[str, Any],
86
+ sources: dict[str, Any],
87
+ payload: dict[str, Any],
88
+ field_definitions: list[dict[str, Any]],
89
+ structured_reasoning: dict[str, Any],
90
+ ) -> dict[str, Any]:
91
+ """Hydrate missing canonical fields from existing context before scoring."""
92
+
93
+ allowed_keys = _allowed_field_keys(field_definitions)
94
+ hydrated_fields = dict(fields)
95
+ hydrated_sources = dict(sources)
96
+ hydrated_keys: list[str] = []
97
+ for candidate in [
98
+ *_session_context_candidates(payload),
99
+ *_structured_reasoning_candidates(structured_reasoning),
100
+ ]:
101
+ field_key = _clean_text(candidate.get("field_key"))
102
+ value = candidate.get("value")
103
+ if not field_key or field_key not in allowed_keys:
104
+ continue
105
+ if _has_value(hydrated_fields.get(field_key)) or not _has_value(value):
106
+ continue
107
+ hydrated_fields[field_key] = value
108
+ hydrated_sources[field_key] = {
109
+ "source": _clean_text(candidate.get("source")) or "context_hydration",
110
+ "evidence": _clean_text(candidate.get("evidence")),
111
+ "confidence": candidate.get("confidence"),
112
+ }
113
+ hydrated_keys.append(field_key)
114
+ return {
115
+ "fields": hydrated_fields,
116
+ "sources": hydrated_sources,
117
+ "hydrated_fields": hydrated_keys,
118
+ }
119
+
120
+
121
+ __all__ = ["hydrate_intake_fields"]
@@ -0,0 +1,156 @@
1
+ """Structured reasoning generation for kernel orchestration."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from typing import Any, Awaitable, Callable
7
+
8
+ from flare_kernel.runtime.infrastructure.logging import get_logger
9
+ from flare_kernel.runtime.orchestration.structured_prompt_context import build_structured_prompt_context
10
+ from flare_kernel.runtime.orchestration.structured_reasoning_normalization import (
11
+ _clean_text,
12
+ _coerce_mapping,
13
+ _extract_json_object,
14
+ _normalize_structured_output,
15
+ )
16
+
17
+ logger = get_logger("flare_kernel.runtime.orchestration.structured_reasoning")
18
+
19
+
20
+ def build_structured_reasoning_prompt(
21
+ *,
22
+ message: str,
23
+ mode_key: str,
24
+ payload: dict[str, Any],
25
+ retrieved_knowledge: list[dict[str, Any]],
26
+ instance_profile: dict[str, Any] | None,
27
+ ) -> str:
28
+ compact_payload = build_structured_prompt_context(
29
+ message=message,
30
+ mode_key=mode_key,
31
+ payload=payload,
32
+ retrieved_knowledge=retrieved_knowledge,
33
+ instance_profile=instance_profile,
34
+ )
35
+ schema = {
36
+ "result_summary": "short summary of what the user wants",
37
+ "field_extraction": {
38
+ "confirmed_fields": [
39
+ {
40
+ "field_key": "nearest writable field_contract key",
41
+ "value": "grounded value from message/context/retrieved_knowledge",
42
+ "source": "message|known_fields|session_context|retrieved_knowledge",
43
+ "evidence": "short supporting quote or summary",
44
+ "confidence": 0.0,
45
+ }
46
+ ]
47
+ },
48
+ "hypothesis_inference": {"hypotheses": [{"id": "goal hypothesis", "score": 0.0, "rationale": "why"}]},
49
+ "field_activation": {"active_fields": ["question_target_key"]},
50
+ "gap_detection": {"candidate_information_gaps": [{"key": "question_target_key", "importance": 1.0, "reason": "why missing"}]},
51
+ "question_planner": {
52
+ "question_plan": [
53
+ {
54
+ "question_key": "specific information-gap key",
55
+ "target_field_keys": ["nearest writable field_contract key"],
56
+ "question_text": "user-facing follow-up question",
57
+ "rationale": "why this question improves the target artifact",
58
+ "expected_answer_type": "enum_or_text",
59
+ "priority": 1,
60
+ "blocking": False,
61
+ "options": [],
62
+ }
63
+ ],
64
+ "next_question": {
65
+ "question_key": "specific information-gap key",
66
+ "target_field_keys": ["nearest writable field_contract key"],
67
+ "question_text": "one best user-facing follow-up question",
68
+ "rationale": "why this question is next",
69
+ "expected_answer_type": "enum_or_text",
70
+ "priority": 1,
71
+ "blocking": False,
72
+ "options": [],
73
+ }
74
+ },
75
+ }
76
+ return (
77
+ "你是 FLARE 的结构化 reasoning 层,不是最终回答层。\n"
78
+ "你的任务是先理解用户目标,再产出一个可由系统校验和投影的 JSON 中间结果。\n"
79
+ "field_contracts 只定义可写入的字段 key/label/type,不定义用户问题和候选答案。"
80
+ "如果 message、known_fields、context_summary 或 retrieved_knowledge 已明确给出字段答案,"
81
+ "必须写入 field_extraction.confirmed_fields。"
82
+ "field_extraction.confirmed_fields 只允许使用 field_contracts 中存在的 key,"
83
+ "并且必须有 source/evidence;不能基于常识或偏好猜测。"
84
+ "已经能确认的字段不要再作为 question_plan 的问题目标。"
85
+ "你必须基于用户输入、已知字段和上下文生成 question_text。"
86
+ "如果 Input.track_context 存在,必须优先用 goal、workflow_steps、current_step_id、readiness 和 unknowns 判断当前轨道;"
87
+ "question_plan 不是字段清单,而是围绕最终目标和当前轨道的高价值信息缺口;"
88
+ "当中文量词与上下文对象轻微不一致、但上下文能唯一推导对象或动作时,按上下文校准为当前假设,"
89
+ "不要把量词口误升级成阻塞性二选一问题;"
90
+ "当用户已提供足以形成初步假设的信息时,不要把所有 missing_fields 都列为阻塞项,只选一个最能提升后续判断的问题作为 next_question。"
91
+ "question_key 表示更具体的信息缺口,target_field_keys 必须指向最接近的可写字段。"
92
+ "如果你的结果需要提出校准问题,必须放入 question_planner.next_question,不能只写入摘要正文。"
93
+ "优先选择真正提升当前交付质量的下一项信息缺口。"
94
+ "不要把未在 field_contracts、missing_fields 或 instance_profile 中声明的字段当成必填项。"
95
+ "blocking 只能在字段被明确标记为 blocker/required 或 missing_fields 明确列出时为 true。"
96
+ "question_plan 是可选的;只有当输入上下文明确需要批量计划时才输出多项计划。"
97
+ "options 不是必填默认值;只有当用户输入、已知字段、上下文、instance_profile 或检索证据能支撑明确候选答案时才输出。"
98
+ "不得为了填充 UI 候选项而编造选项;没有可靠来源时输出空数组。"
99
+ "不得输出“其他”“暂不确定”等占位选项;自定义输入由 UI 处理。"
100
+ "不要输出 Markdown,不要解释,只输出 JSON。\n"
101
+ f"JSON schema example: {json.dumps(schema, ensure_ascii=False, default=str)}\n"
102
+ f"Input: {json.dumps(compact_payload, ensure_ascii=False, default=str)}"
103
+ )
104
+
105
+
106
+ async def generate_structured_reasoning(
107
+ *,
108
+ trace_id: str,
109
+ session_id: str,
110
+ message: str,
111
+ mode_key: str,
112
+ payload: dict[str, Any],
113
+ retrieved_knowledge: list[dict[str, Any]],
114
+ instance_profile: dict[str, Any] | None,
115
+ generate_llm_completion_fn: Callable[..., Awaitable[Any]] | None,
116
+ ) -> dict[str, Any]:
117
+ if not callable(generate_llm_completion_fn) or not _clean_text(message):
118
+ return {}
119
+ prompt = build_structured_reasoning_prompt(
120
+ message=message,
121
+ mode_key=mode_key,
122
+ payload=payload,
123
+ retrieved_knowledge=retrieved_knowledge,
124
+ instance_profile=instance_profile,
125
+ )
126
+ completion = await generate_llm_completion_fn(
127
+ prompt,
128
+ trace_id=trace_id,
129
+ session_id=session_id,
130
+ intent="structured_reasoning",
131
+ )
132
+ status = _clean_text(getattr(completion, "status", ""))
133
+ content = _clean_text(getattr(completion, "content", ""))
134
+ parsed = _extract_json_object(content)
135
+ normalized = _normalize_structured_output(parsed)
136
+ logger.info(
137
+ "structured_reasoning.generated trace_id=%s session_id=%s mode=%s status=%s has_question=%s",
138
+ trace_id,
139
+ session_id,
140
+ mode_key,
141
+ status,
142
+ bool(_coerce_mapping(_coerce_mapping(normalized.get("question_planner")).get("next_question")).get("question_text")),
143
+ )
144
+ if not normalized:
145
+ return {}
146
+ return {
147
+ **normalized,
148
+ "metadata": {
149
+ **_coerce_mapping(normalized.get("metadata")),
150
+ "provider_status": status,
151
+ "source": "llm_structured_reasoning",
152
+ },
153
+ }
154
+
155
+
156
+ __all__ = ["build_structured_reasoning_prompt", "generate_structured_reasoning"]