smart-spatial-system 0.2.6__tar.gz → 0.2.7__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 (436) hide show
  1. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/PKG-INFO +1 -1
  2. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/llm_spec_generator.py +57 -0
  3. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/pyproject.toml +1 -1
  4. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system.egg-info/PKG-INFO +1 -1
  5. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_llm_spec_generator.py +90 -0
  6. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/LICENSE +0 -0
  7. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/README.md +0 -0
  8. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/__init__.py +0 -0
  9. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/auth.py +0 -0
  10. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/main.py +0 -0
  11. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/__init__.py +0 -0
  12. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/data_source_connectors.py +0 -0
  13. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/data_sources.py +0 -0
  14. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/plugins_settings.py +0 -0
  15. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/projects.py +0 -0
  16. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/query_planner.py +0 -0
  17. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/requests_outputs.py +0 -0
  18. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/system.py +0 -0
  19. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/uploads.py +0 -0
  20. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/routers/weights.py +0 -0
  21. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/api/support.py +0 -0
  22. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/__init__.py +0 -0
  23. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/__init__.py +0 -0
  24. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/area_perimeter_calc.example.yaml +0 -0
  25. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/area_perimeter_calc.yaml +0 -0
  26. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/attribute_statistics.example.yaml +0 -0
  27. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/attribute_statistics.yaml +0 -0
  28. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/band_math.example.yaml +0 -0
  29. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/band_math.yaml +0 -0
  30. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/buffer_analysis.example.yaml +0 -0
  31. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/buffer_analysis.yaml +0 -0
  32. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/centroid_extractor.example.yaml +0 -0
  33. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/centroid_extractor.yaml +0 -0
  34. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/core_vector.example.yaml +0 -0
  35. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/core_vector.yaml +0 -0
  36. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/crs_transformer.example.yaml +0 -0
  37. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/crs_transformer.yaml +0 -0
  38. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/data_writer_exporter.example.yaml +0 -0
  39. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/data_writer_exporter.yaml +0 -0
  40. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/dissolve_aggregator.example.yaml +0 -0
  41. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/dissolve_aggregator.yaml +0 -0
  42. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/distance_calculator.example.yaml +0 -0
  43. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/distance_calculator.yaml +0 -0
  44. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/feature_enrichment.example.yaml +0 -0
  45. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/feature_enrichment.yaml +0 -0
  46. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/feature_scoring.example.yaml +0 -0
  47. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/feature_scoring.yaml +0 -0
  48. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/geocoding_resolver.example.yaml +0 -0
  49. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/geocoding_resolver.yaml +0 -0
  50. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/geometry_validator.example.yaml +0 -0
  51. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/geometry_validator.yaml +0 -0
  52. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/local_raster_loader.example.yaml +0 -0
  53. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/local_raster_loader.yaml +0 -0
  54. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/local_vector_loader.example.yaml +0 -0
  55. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/local_vector_loader.yaml +0 -0
  56. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/ndvi_calculator.example.yaml +0 -0
  57. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/ndvi_calculator.yaml +0 -0
  58. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/nearest_neighbor.example.yaml +0 -0
  59. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/nearest_neighbor.yaml +0 -0
  60. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/postgis_connector.example.yaml +0 -0
  61. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/postgis_connector.yaml +0 -0
  62. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_clip_mask.example.yaml +0 -0
  63. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_clip_mask.yaml +0 -0
  64. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_reclassify.example.yaml +0 -0
  65. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_reclassify.yaml +0 -0
  66. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_statistics.example.yaml +0 -0
  67. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_statistics.yaml +0 -0
  68. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_threshold.example.yaml +0 -0
  69. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_threshold.yaml +0 -0
  70. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_to_vector.example.yaml +0 -0
  71. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/raster_to_vector.yaml +0 -0
  72. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/ring_buffer_analysis.example.yaml +0 -0
  73. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/ring_buffer_analysis.yaml +0 -0
  74. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/risk_enrichment.example.yaml +0 -0
  75. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/risk_enrichment.yaml +0 -0
  76. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/slope_aspect.yaml +0 -0
  77. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spatial_intersection.example.yaml +0 -0
  78. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spatial_intersection.yaml +0 -0
  79. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spatial_join.example.yaml +0 -0
  80. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spatial_join.yaml +0 -0
  81. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spatial_predicate.example.yaml +0 -0
  82. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spatial_predicate.yaml +0 -0
  83. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spatial_query_filter.example.yaml +0 -0
  84. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spatial_query_filter.yaml +0 -0
  85. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spectral_indices.example.yaml +0 -0
  86. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/spectral_indices.yaml +0 -0
  87. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/wms_wfs_fetcher.example.yaml +0 -0
  88. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/wms_wfs_fetcher.yaml +0 -0
  89. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/zonal_statistics.example.yaml +0 -0
  90. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/config/plugins/zonal_statistics.yaml +0 -0
  91. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/__init__.py +0 -0
  92. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/audit.py +0 -0
  93. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/capability_registry.py +0 -0
  94. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/capability_router.py +0 -0
  95. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/capability_scoring.py +0 -0
  96. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/data_source_service.py +0 -0
  97. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/error_contract.py +0 -0
  98. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/feedback.py +0 -0
  99. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/feedback_proposal_service.py +0 -0
  100. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/input_error_mapping.py +0 -0
  101. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/input_reference_resolver.py +0 -0
  102. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/kernel_artifacts.py +0 -0
  103. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/learning_signals.py +0 -0
  104. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/llm_client.py +0 -0
  105. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/llm_gate.py +0 -0
  106. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/llm_intent_planner.py +0 -0
  107. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/loader_plugin_contract.py +0 -0
  108. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/map_layer_service.py +0 -0
  109. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/map_layers.py +0 -0
  110. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/models.py +0 -0
  111. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/natural_query_runner.py +0 -0
  112. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/output_service.py +0 -0
  113. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/output_storage.py +0 -0
  114. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/pipeline_executor.py +0 -0
  115. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/plan_builder.py +0 -0
  116. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/__init__.py +0 -0
  117. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/capability_resolver.py +0 -0
  118. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/dag.py +0 -0
  119. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/dag_executor.py +0 -0
  120. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/error_mapping.py +0 -0
  121. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/kernel_execution_bridge.py +0 -0
  122. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/kernel_plan_adapter.py +0 -0
  123. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/llm_query_spec.py +0 -0
  124. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/op_catalog.py +0 -0
  125. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/output_parity.py +0 -0
  126. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/planner.py +0 -0
  127. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/postgis_semantic_resolver.py +0 -0
  128. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/query_spec_contract.py +0 -0
  129. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/report_spec.py +0 -0
  130. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/runner.py +0 -0
  131. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/semantic_planning_context.py +0 -0
  132. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/planning/spec.py +0 -0
  133. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/plugin_config_store.py +0 -0
  134. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/plugin_error_mapping.py +0 -0
  135. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/plugin_modules.py +0 -0
  136. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/plugin_runtime_service.py +0 -0
  137. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/plugin_state.py +0 -0
  138. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/production_response.py +0 -0
  139. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/project_service.py +0 -0
  140. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/project_store.py +0 -0
  141. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/provider_error_mapping.py +0 -0
  142. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/query_execution_service.py +0 -0
  143. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/query_parser.py +0 -0
  144. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/request_history_service.py +0 -0
  145. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/response_assembler.py +0 -0
  146. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/response_builder.py +0 -0
  147. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/router_decision.py +0 -0
  148. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/routing_aware_natural_query_runner.py +0 -0
  149. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/routing_aware_plan_builder.py +0 -0
  150. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/runtime_paths.py +0 -0
  151. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/service.py +0 -0
  152. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/statistics.py +0 -0
  153. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/upload_service.py +0 -0
  154. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/upload_storage.py +0 -0
  155. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/weight_proposals.py +0 -0
  156. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/weight_store_persistence.py +0 -0
  157. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/orchestrator/weighted_router.py +0 -0
  158. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/__init__.py +0 -0
  159. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/_shared/__init__.py +0 -0
  160. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/_shared/local_path_validation.py +0 -0
  161. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/_shared/numeric_validation.py +0 -0
  162. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/_shared/plugin_config.py +0 -0
  163. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/area_perimeter_calc.py +0 -0
  164. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/attribute_statistics.py +0 -0
  165. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/band_math.py +0 -0
  166. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/buffer_analysis.py +0 -0
  167. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/centroid_extractor.py +0 -0
  168. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/core_vector.py +0 -0
  169. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/crs_transformer.py +0 -0
  170. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/data_writer_exporter.py +0 -0
  171. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/dissolve_aggregator.py +0 -0
  172. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/distance_calculator.py +0 -0
  173. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/feature_enrichment.py +0 -0
  174. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/feature_scoring.py +0 -0
  175. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/geocoding_resolver.py +0 -0
  176. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/geometry_validator.py +0 -0
  177. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/local_raster_loader.py +0 -0
  178. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/local_vector_loader.py +0 -0
  179. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/ndvi_analysis.py +0 -0
  180. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/ndvi_calculator.py +0 -0
  181. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/nearest_neighbor.py +0 -0
  182. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/pdf_renderer.py +0 -0
  183. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/postgis_connector.py +0 -0
  184. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/raster_clip_mask.py +0 -0
  185. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/raster_reclassify.py +0 -0
  186. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/raster_statistics.py +0 -0
  187. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/raster_threshold.py +0 -0
  188. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/raster_to_vector.py +0 -0
  189. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/real_estate_scoring.py +0 -0
  190. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/real_estate_spatial_enrichment.py +0 -0
  191. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/report_builder.py +0 -0
  192. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/ring_buffer_analysis.py +0 -0
  193. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/risk_enrichment.py +0 -0
  194. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/slope_aspect.py +0 -0
  195. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/spatial_intersection.py +0 -0
  196. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/spatial_join.py +0 -0
  197. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/spatial_predicate.py +0 -0
  198. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/spatial_query_filter.py +0 -0
  199. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/spectral_indices.py +0 -0
  200. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/wms_wfs_fetcher.py +0 -0
  201. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/plugins/zonal_statistics.py +0 -0
  202. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/setup.cfg +0 -0
  203. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/__init__.py +0 -0
  204. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/__main__.py +0 -0
  205. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/__init__.py +0 -0
  206. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/__init__.py +0 -0
  207. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/data_source_service.py +0 -0
  208. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/feedback_proposal_service.py +0 -0
  209. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/llm_intent_adapter.py +0 -0
  210. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/map_layer_service.py +0 -0
  211. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/output_service.py +0 -0
  212. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/planning_execution_policy.py +0 -0
  213. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/planning_response_adapter.py +0 -0
  214. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/plugin_runtime_service.py +0 -0
  215. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/project_service.py +0 -0
  216. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/__init__.py +0 -0
  217. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/accessibility_query_spec.py +0 -0
  218. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/direct_query_dispatch.py +0 -0
  219. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/natural_query_context.py +0 -0
  220. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/natural_query_dispatch.py +0 -0
  221. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/natural_query_execution.py +0 -0
  222. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/natural_query_failure.py +0 -0
  223. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/natural_query_persistence.py +0 -0
  224. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/planning_context.py +0 -0
  225. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/planning_execution.py +0 -0
  226. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/planning_persistence.py +0 -0
  227. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/planning_response.py +0 -0
  228. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/postgis_planning_context.py +0 -0
  229. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_analysis_inspector.py +0 -0
  230. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_classifier.py +0 -0
  231. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_context.py +0 -0
  232. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_document_renderer.py +0 -0
  233. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_missing_inputs.py +0 -0
  234. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_ranking_artifacts.py +0 -0
  235. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_ranking_direct_handler.py +0 -0
  236. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_ranking_execution.py +0 -0
  237. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_ranking_query_spec.py +0 -0
  238. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_ranking_response.py +0 -0
  239. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_report_payload.py +0 -0
  240. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution/real_estate_scoring.py +0 -0
  241. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_execution_service.py +0 -0
  242. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/query_spec_enrichment.py +0 -0
  243. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/real_estate_spatial_helpers.py +0 -0
  244. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/request_history_service.py +0 -0
  245. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/system_status_query_handler.py +0 -0
  246. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/upload_service.py +0 -0
  247. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/vector_display_handler.py +0 -0
  248. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/vector_geojson_helpers.py +0 -0
  249. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/application/services/vector_query_classifier.py +0 -0
  250. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/cli.py +0 -0
  251. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/domain/__init__.py +0 -0
  252. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/domain/contracts/__init__.py +0 -0
  253. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/domain/models/__init__.py +0 -0
  254. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/infrastructure/__init__.py +0 -0
  255. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/infrastructure/stores/__init__.py +0 -0
  256. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/interfaces/__init__.py +0 -0
  257. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/interfaces/api/__init__.py +0 -0
  258. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/interfaces/api/routers/__init__.py +0 -0
  259. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/plugins/__init__.py +0 -0
  260. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/runtime/__init__.py +0 -0
  261. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/shared/__init__.py +0 -0
  262. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/workflows/__init__.py +0 -0
  263. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/workflows/ndvi/__init__.py +0 -0
  264. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system/workflows/real_estate/__init__.py +0 -0
  265. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system.egg-info/SOURCES.txt +0 -0
  266. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system.egg-info/dependency_links.txt +0 -0
  267. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system.egg-info/entry_points.txt +0 -0
  268. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system.egg-info/requires.txt +0 -0
  269. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/smart_spatial_system.egg-info/top_level.txt +0 -0
  270. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/templates/__init__.py +0 -0
  271. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/templates/reports/__init__.py +0 -0
  272. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/templates/reports/real_estate_report.html +0 -0
  273. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_accessibility_query_spec.py +0 -0
  274. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_auth.py +0 -0
  275. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_contract_smoke.py +0 -0
  276. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_data_source_connectors_e2e.py +0 -0
  277. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_map_layers.py +0 -0
  278. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_mvp.py +0 -0
  279. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_outputs.py +0 -0
  280. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_projects.py +0 -0
  281. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_structured_error_normalization.py +0 -0
  282. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_upload_plugin_resolver.py +0 -0
  283. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_api_uploads.py +0 -0
  284. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_area_perimeter_calc.py +0 -0
  285. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_attribute_statistics.py +0 -0
  286. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_band_math.py +0 -0
  287. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_buffer_analysis.py +0 -0
  288. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_centroid_extractor.py +0 -0
  289. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_cli.py +0 -0
  290. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_crs_transformer.py +0 -0
  291. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_data_source_service.py +0 -0
  292. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_data_writer_exporter.py +0 -0
  293. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_deterministic_planner.py +0 -0
  294. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_dissolve_aggregator.py +0 -0
  295. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_distance_calculator.py +0 -0
  296. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_document_file_report_contract.py +0 -0
  297. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_end_to_end_natural_query_pipeline.py +0 -0
  298. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_error_contract.py +0 -0
  299. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_feature_enrichment.py +0 -0
  300. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_feature_scoring.py +0 -0
  301. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_frontend_api_surface_contract.py +0 -0
  302. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_geocoding_resolver.py +0 -0
  303. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_geocoding_resolver_error_redaction.py +0 -0
  304. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_geometry_validator.py +0 -0
  305. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_input_error_mapping.py +0 -0
  306. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_input_reference_resolver.py +0 -0
  307. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_input_reference_resolver_contract.py +0 -0
  308. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_kernel_artifacts.py +0 -0
  309. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_kernel_execution_bridge.py +0 -0
  310. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_kernel_plan_adapter.py +0 -0
  311. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_llm_intent_adapter.py +0 -0
  312. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_llm_raster_queryspec_normalization.py +0 -0
  313. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_llm_spec_generator_prenormalize.py +0 -0
  314. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_llm_spec_generator_semantic_context.py +0 -0
  315. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_llm_spec_generator_semantic_query_database_enrich.py +0 -0
  316. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_llm_spec_generator_semantic_queryspec_repair.py +0 -0
  317. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_loader_plugin_contract.py +0 -0
  318. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_local_path_validation.py +0 -0
  319. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_local_raster_loader.py +0 -0
  320. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_local_raster_loader_contract.py +0 -0
  321. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_local_vector_loader.py +0 -0
  322. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_local_vector_loader_contract.py +0 -0
  323. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_map_layer_contract.py +0 -0
  324. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_map_layer_service.py +0 -0
  325. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_ndvi_calculator.py +0 -0
  326. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_nearest_neighbor.py +0 -0
  327. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_numeric_validation.py +0 -0
  328. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_op_catalog_semantic_aliases.py +0 -0
  329. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_audit.py +0 -0
  330. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_audit_integration.py +0 -0
  331. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_data_source_service_integration.py +0 -0
  332. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_feedback.py +0 -0
  333. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_feedback_integration.py +0 -0
  334. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_keyword_scoring_router.py +0 -0
  335. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_learning_signals.py +0 -0
  336. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_learning_signals_integration.py +0 -0
  337. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_llm_gate.py +0 -0
  338. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_llm_gate_integration.py +0 -0
  339. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_map_layer_service_integration.py +0 -0
  340. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_natural_query_pipeline.py +0 -0
  341. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_output_service_integration.py +0 -0
  342. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_production_response.py +0 -0
  343. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_production_response_integration.py +0 -0
  344. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_project_service_integration.py +0 -0
  345. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_query_execution_service_integration.py +0 -0
  346. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_registry_router.py +0 -0
  347. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_router_decision.py +0 -0
  348. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_router_decision_integration.py +0 -0
  349. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_routing_aware_plan_builder.py +0 -0
  350. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_runtime_paths.py +0 -0
  351. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_service.py +0 -0
  352. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_service_domain_boundary_contract.py +0 -0
  353. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_service_integration.py +0 -0
  354. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_service_postgis_dedup_contract.py +0 -0
  355. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_statistics.py +0 -0
  356. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_statistics_integration.py +0 -0
  357. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_upload_service_integration.py +0 -0
  358. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_weight_proposals.py +0 -0
  359. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_weight_proposals_integration.py +0 -0
  360. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_weight_store_persistence.py +0 -0
  361. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_weight_store_persistence_integration.py +0 -0
  362. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_weighted_router.py +0 -0
  363. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_orchestrator_weighted_router_integration.py +0 -0
  364. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_output_service.py +0 -0
  365. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_output_storage.py +0 -0
  366. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_pdf_renderer.py +0 -0
  367. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_phase3_kernel_registry_coverage.py +0 -0
  368. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_phase3_output_parity.py +0 -0
  369. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_phase3_postgis_provider_kernel_execution.py +0 -0
  370. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_dag_executor.py +0 -0
  371. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_dag_executor_async_capability.py +0 -0
  372. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_error_mapping.py +0 -0
  373. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_execution_policy.py +0 -0
  374. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_raster_op_catalog_mapping.py +0 -0
  375. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_raster_queryspec_execution.py +0 -0
  376. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_registry_backed_raster_execution.py +0 -0
  377. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_registry_backed_real_estate_execution.py +0 -0
  378. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_planning_runner.py +0 -0
  379. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_plugin_boundary_contract.py +0 -0
  380. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_plugin_config.py +0 -0
  381. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_plugin_config_store.py +0 -0
  382. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_plugin_error_mapping.py +0 -0
  383. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_plugin_modules.py +0 -0
  384. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_postgis_connector.py +0 -0
  385. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_postgis_connector_percent_escape.py +0 -0
  386. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_postgis_semantic_resolver.py +0 -0
  387. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_project_service.py +0 -0
  388. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_project_store.py +0 -0
  389. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_provider_error_mapping.py +0 -0
  390. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_query_dispatch_domain_boundary_contract.py +0 -0
  391. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_query_execution_postgis_planning_context.py +0 -0
  392. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_query_execution_service.py +0 -0
  393. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_query_execution_service_domain_import_boundary_contract.py +0 -0
  394. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_query_response_shape_golden.py +0 -0
  395. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_query_spec_enrichment.py +0 -0
  396. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_raster_capability_registry_contract.py +0 -0
  397. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_raster_clip_mask.py +0 -0
  398. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_raster_reclassify.py +0 -0
  399. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_raster_statistics.py +0 -0
  400. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_raster_threshold.py +0 -0
  401. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_raster_to_vector.py +0 -0
  402. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_real_estate_ranking_bridge.py +0 -0
  403. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_real_estate_ranking_golden.py +0 -0
  404. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_real_estate_ranking_query_spec_planning.py +0 -0
  405. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_real_estate_scoring_plugin.py +0 -0
  406. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_real_estate_spatial_enrichment_plugin.py +0 -0
  407. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_real_estate_spatial_helpers.py +0 -0
  408. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_report_builder.py +0 -0
  409. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_report_spec.py +0 -0
  410. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_request_document_download_contract.py +0 -0
  411. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_response_assembler.py +0 -0
  412. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_response_output_contract.py +0 -0
  413. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_ring_buffer_analysis.py +0 -0
  414. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_risk_enrichment.py +0 -0
  415. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_runtime_paths.py +0 -0
  416. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_semantic_planning_context.py +0 -0
  417. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_service_auto_postgis_semantic_context.py +0 -0
  418. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_service_planning_artifacts.py +0 -0
  419. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_service_postgis_runtime_connection_injection.py +0 -0
  420. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_service_semantic_planning_context.py +0 -0
  421. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_service_strict_loader_contract.py +0 -0
  422. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_service_structured_error_normalization.py +0 -0
  423. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_slope_aspect.py +0 -0
  424. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_spatial_intersection.py +0 -0
  425. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_spatial_join.py +0 -0
  426. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_spatial_query_filter.py +0 -0
  427. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_spectral_indices.py +0 -0
  428. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_system_status_query_handler.py +0 -0
  429. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_upload_service.py +0 -0
  430. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_upload_storage.py +0 -0
  431. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_vector_display_handler.py +0 -0
  432. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_vector_geojson_helpers.py +0 -0
  433. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_vector_query_classifier.py +0 -0
  434. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_wms_wfs_fetcher.py +0 -0
  435. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_wms_wfs_fetcher_error_redaction.py +0 -0
  436. {smart_spatial_system-0.2.6 → smart_spatial_system-0.2.7}/tests/test_zonal_statistics.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart_spatial_system
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Plugin-based GeoAI backend: natural-language questions become QuerySpecs, DAG plans, and map/table/report outputs.
5
5
  Author: Araz Shah
6
6
  License-Expression: MIT
@@ -1951,6 +1951,62 @@ def _validate_score_features_field_chaining(spec: QuerySpec) -> None:
1951
1951
  )
1952
1952
 
1953
1953
 
1954
+ _FILTER_POINTS_IN_POLYGON_IDENTITY_SIGNALS = [
1955
+ "which zone", "which polygon", "which ring", "which band",
1956
+ "which distance band", "belongs to", "falls into",
1957
+ "group by", "group points", "label each", "keep, for every",
1958
+ "for each point", "for every matched",
1959
+ ]
1960
+
1961
+
1962
+ def _validate_filter_points_in_polygon_usage(spec: QuerySpec) -> None:
1963
+ """
1964
+ Catch filter_points_in_polygon used for a query that actually needs to
1965
+ know WHICH polygon/zone/ring matched.
1966
+
1967
+ filter_points_in_polygon returns nothing but a boolean __in_polygon__
1968
+ membership flag - it has no way to carry the matched polygon's
1969
+ identity. A plan built from a query like "for each point, tell me
1970
+ which zone it falls into" plans and executes without error using this
1971
+ op, but the output carries no zone information at all - a silent
1972
+ failure indistinguishable from success anywhere in the pipeline.
1973
+
1974
+ The _domain_guidance() prompt text alone was not enough to prevent
1975
+ this (confirmed against gpt-4o-mini repeating the exact reported
1976
+ scenario even with the guidance in place), so this is enforced the
1977
+ same way score_features field-chaining and CRS symmetry are: as a
1978
+ hard generation-time check that rejects the plan outright rather than
1979
+ only hoping the model reads the prompt correctly.
1980
+
1981
+ Deliberately keyword-based and conservative on raw_query, mirroring
1982
+ the conservative posture of the other _validate_* checks in this
1983
+ module: a query that doesn't match any identity signal is left
1984
+ unvalidated rather than guessed at, so this can only ever reject a
1985
+ plan for a query that explicitly asked "which zone" (or a synonym)
1986
+ and got a boolean-only op in response.
1987
+ """
1988
+ query_lower = spec.raw_query.lower()
1989
+
1990
+ needs_zone_identity = any(
1991
+ signal in query_lower for signal in _FILTER_POINTS_IN_POLYGON_IDENTITY_SIGNALS
1992
+ )
1993
+
1994
+ if not needs_zone_identity:
1995
+ return
1996
+
1997
+ uses_filter = any(op.op == "filter_points_in_polygon" for op in spec.operations)
1998
+ uses_spatial_join = any(op.op == "spatial_join" for op in spec.operations)
1999
+
2000
+ if uses_filter and not uses_spatial_join:
2001
+ raise LLMSpecGenerationError(
2002
+ "Plan uses filter_points_in_polygon, but the query asks to know "
2003
+ "WHICH specific zone/polygon/ring each point belongs to - "
2004
+ "filter_points_in_polygon only returns a boolean membership flag "
2005
+ "and cannot provide this. Use spatial_join with "
2006
+ "include_target_properties=true instead."
2007
+ )
2008
+
2009
+
1954
2010
  # The two vector-bearing input roles for each distance/nearest-neighbor
1955
2011
  # operation, in (this-layer, other-layer) order - used to check that both
1956
2012
  # were reprojected to the same CRS, not just one of them.
@@ -2120,6 +2176,7 @@ class LLMQuerySpecGenerator:
2120
2176
  _validate_score_features_factor_types(spec)
2121
2177
  _validate_score_features_field_chaining(spec)
2122
2178
  _validate_distance_op_crs_symmetry(spec)
2179
+ _validate_filter_points_in_polygon_usage(spec)
2123
2180
  return spec
2124
2181
 
2125
2182
 
@@ -12,7 +12,7 @@ build-backend = "setuptools.build_meta"
12
12
  # "Open design questions" for why a namespace migration was deliberately
13
13
  # not done here.
14
14
  name = "smart_spatial_system"
15
- version = "0.2.6"
15
+ version = "0.2.7"
16
16
  description = "Plugin-based GeoAI backend: natural-language questions become QuerySpecs, DAG plans, and map/table/report outputs."
17
17
  readme = "README.md"
18
18
  requires-python = ">=3.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart_spatial_system
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Plugin-based GeoAI backend: natural-language questions become QuerySpecs, DAG plans, and map/table/report outputs.
5
5
  Author: Araz Shah
6
6
  License-Expression: MIT
@@ -1459,3 +1459,93 @@ def test_domain_guidance_documents_filter_vs_join_for_zone_identity():
1459
1459
  assert "which zone" in system_prompt.lower()
1460
1460
  assert "spatial_join" in system_prompt
1461
1461
  assert "include_target_properties" in system_prompt
1462
+
1463
+
1464
+ # ------------------------------------------------------------------ #
1465
+ # Bug 7 (hardened): the prompt guidance alone was not enough - a real
1466
+ # second run against gpt-4o-mini repeated the exact reported scenario
1467
+ # even with the "0.2.6" guidance text in place. Enforced as a hard
1468
+ # generation-time check instead, same as score_features field-chaining
1469
+ # and CRS symmetry.
1470
+ # ------------------------------------------------------------------ #
1471
+
1472
+ def _filter_points_spec_json() -> dict:
1473
+ return {
1474
+ "raw_query": "for each point, tell me which zone it falls into",
1475
+ "goal": "label_points_by_zone",
1476
+ "entities": [
1477
+ {"ref": "points", "kind": "vector"},
1478
+ {"ref": "zones", "kind": "vector"},
1479
+ ],
1480
+ "operations": [
1481
+ {
1482
+ "op": "filter_points_in_polygon",
1483
+ "inputs": {"vector": "points", "polygon": "zones"},
1484
+ "params": {"predicate": "within"},
1485
+ "output": "points_in_zones",
1486
+ }
1487
+ ],
1488
+ "outputs": [
1489
+ {"kind": "vector_layer", "source": "points_in_zones", "config": {}}
1490
+ ],
1491
+ }
1492
+
1493
+
1494
+ def _spatial_join_spec_json() -> dict:
1495
+ return {
1496
+ "raw_query": "for each point, tell me which zone it falls into",
1497
+ "goal": "label_points_by_zone",
1498
+ "entities": [
1499
+ {"ref": "points", "kind": "vector"},
1500
+ {"ref": "zones", "kind": "vector"},
1501
+ ],
1502
+ "operations": [
1503
+ {
1504
+ "op": "spatial_join",
1505
+ "inputs": {"source": "points", "target": "zones"},
1506
+ "params": {"predicate": "within", "include_target_properties": True},
1507
+ "output": "points_with_zone",
1508
+ }
1509
+ ],
1510
+ "outputs": [
1511
+ {"kind": "vector_layer", "source": "points_with_zone", "config": {}}
1512
+ ],
1513
+ }
1514
+
1515
+
1516
+ def test_generate_raises_when_filter_points_in_polygon_used_for_zone_identity_query():
1517
+ llm_json = _filter_points_spec_json()
1518
+
1519
+ client = StaticLLMClient(json.dumps(llm_json, ensure_ascii=False))
1520
+ generator = LLMQuerySpecGenerator(client)
1521
+
1522
+ with pytest.raises(LLMSpecGenerationError, match="filter_points_in_polygon"):
1523
+ generator.generate("for each point, tell me which zone it falls into")
1524
+
1525
+
1526
+ def test_generate_accepts_spatial_join_for_zone_identity_query():
1527
+ llm_json = _spatial_join_spec_json()
1528
+
1529
+ client = StaticLLMClient(json.dumps(llm_json, ensure_ascii=False))
1530
+ generator = LLMQuerySpecGenerator(client)
1531
+
1532
+ spec = generator.generate("for each point, tell me which zone it falls into")
1533
+
1534
+ assert [op.op for op in spec.operations] == ["spatial_join"]
1535
+
1536
+
1537
+ def test_generate_does_not_flag_filter_points_in_polygon_for_a_plain_boolean_filter_query():
1538
+ """
1539
+ A query that genuinely only wants a boolean keep/drop filter (no
1540
+ "which zone" signal) must not be rejected just because it happens to
1541
+ use filter_points_in_polygon - that op is exactly correct here.
1542
+ """
1543
+ llm_json = _filter_points_spec_json()
1544
+ llm_json["raw_query"] = "keep only points inside the permitted area"
1545
+
1546
+ client = StaticLLMClient(json.dumps(llm_json, ensure_ascii=False))
1547
+ generator = LLMQuerySpecGenerator(client)
1548
+
1549
+ spec = generator.generate("keep only points inside the permitted area")
1550
+
1551
+ assert [op.op for op in spec.operations] == ["filter_points_in_polygon"]