osscodeiq 0.0.2__tar.gz → 0.1.0__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 (638) hide show
  1. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/.github/workflows/publish.yml +28 -1
  2. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/.gitignore +2 -2
  3. osscodeiq-0.1.0/CLAUDE.md +199 -0
  4. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/PKG-INFO +2 -1
  5. osscodeiq-0.1.0/docs/plans/2026-03-28-explorer-ui-plan.md +1616 -0
  6. osscodeiq-0.1.0/docs/specs/2026-03-28-analyzer-performance-design.md +155 -0
  7. osscodeiq-0.1.0/docs/specs/2026-03-28-explorer-ui-design.md +350 -0
  8. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pyproject.toml +2 -1
  9. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/cli.py +1 -1
  10. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/config.py +4 -4
  11. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/backends/__init__.py +2 -2
  12. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/output/dot.py +1 -1
  13. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/server/app.py +18 -7
  14. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/server/routes.py +27 -2
  15. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/server/service.py +106 -2
  16. osscodeiq-0.1.0/src/osscodeiq/server/ui/__init__.py +51 -0
  17. osscodeiq-0.1.0/src/osscodeiq/server/ui/components.py +116 -0
  18. osscodeiq-0.1.0/src/osscodeiq/server/ui/explorer.py +448 -0
  19. osscodeiq-0.1.0/src/osscodeiq/server/ui/flow_view.py +39 -0
  20. osscodeiq-0.1.0/src/osscodeiq/server/ui/mcp_console.py +212 -0
  21. osscodeiq-0.1.0/src/osscodeiq/server/ui/theme.py +123 -0
  22. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq.egg-info/PKG-INFO +2 -1
  23. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq.egg-info/SOURCES.txt +14 -0
  24. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq.egg-info/requires.txt +1 -0
  25. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/conftest.py +1 -1
  26. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/server/test_app.py +4 -4
  27. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/server/test_routes.py +70 -0
  28. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/server/test_service.py +126 -0
  29. osscodeiq-0.1.0/tests/server/test_ui_components.py +269 -0
  30. osscodeiq-0.1.0/tests/server/test_ui_explorer.py +386 -0
  31. osscodeiq-0.1.0/tests/server/test_ui_init.py +20 -0
  32. osscodeiq-0.1.0/tests/server/test_ui_mcp_console.py +184 -0
  33. osscodeiq-0.1.0/tests/server/test_ui_theme.py +151 -0
  34. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/uv.lock +867 -0
  35. osscodeiq-0.0.2/CLAUDE.md +0 -135
  36. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/.github/workflows/beta.yml +0 -0
  37. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/.github/workflows/ci.yml +0 -0
  38. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/.github/workflows/sbom.yml +0 -0
  39. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/.github/workflows/sonarcloud.yml +0 -0
  40. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/LICENSE +0 -0
  41. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/README.md +0 -0
  42. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_add_edge0/test.kuzu +0 -0
  43. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_add_edge_missing_target0/test.kuzu +0 -0
  44. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_add_node0/test.kuzu +0 -0
  45. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_add_node_duplicate0/test.kuzu +0 -0
  46. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_add_node_with_location0/test.kuzu +0 -0
  47. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_add_node_with_properties0/test.kuzu +0 -0
  48. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_all_edges0/test.kuzu +0 -0
  49. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_all_nodes0/test.kuzu +0 -0
  50. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_bulk_add_edges0/test.kuzu +0 -0
  51. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_bulk_add_nodes0/test.kuzu +0 -0
  52. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_bulk_add_nodes_deduplicat0/test.kuzu +0 -0
  53. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_callers0/src/routes.py +0 -0
  54. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_clear0/test.kuzu +0 -0
  55. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_close0/test.kuzu +0 -0
  56. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_consumers0/src/routes.py +0 -0
  57. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_cypher_4000/src/routes.py +0 -0
  58. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_dependencies0/src/routes.py +0 -0
  59. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_dependents0/src/routes.py +0 -0
  60. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_determinism2/det_0.kuzu +0 -0
  61. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_determinism2/det_1.kuzu +0 -0
  62. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_edge_count0/test.kuzu +0 -0
  63. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_edge_properties0/test.kuzu +0 -0
  64. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_edges_by_kind0/test.kuzu +0 -0
  65. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_empty_backend0/test.kuzu +0 -0
  66. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_file0/src/routes.py +0 -0
  67. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_file_traversal0/src/routes.py +0 -0
  68. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_find_cycles0/src/routes.py +0 -0
  69. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_find_cycles1/test.kuzu +0 -0
  70. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_find_cycles_no_cycles0/test.kuzu +0 -0
  71. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_flow_all0/src/routes.py +0 -0
  72. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_flow_overview0/src/routes.py +0 -0
  73. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_get_edges_between0/test.kuzu +0 -0
  74. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_get_ego0/src/routes.py +0 -0
  75. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_get_neighbors0/src/routes.py +0 -0
  76. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_get_node0/src/routes.py +0 -0
  77. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_get_node1/test.kuzu +0 -0
  78. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_get_node_4040/src/routes.py +0 -0
  79. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_get_node_not_found1/test.kuzu +0 -0
  80. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_has_node0/test.kuzu +0 -0
  81. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_list_edges0/src/routes.py +0 -0
  82. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_list_edges_filter0/src/routes.py +0 -0
  83. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_list_nodes0/src/routes.py +0 -0
  84. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_list_nodes_filter_kind0/src/routes.py +0 -0
  85. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_list_nodes_pagination0/src/routes.py +0 -0
  86. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_neighbors_both0/test.kuzu +0 -0
  87. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_neighbors_in0/test.kuzu +0 -0
  88. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_neighbors_out0/test.kuzu +0 -0
  89. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_neighbors_with_edge_kinds0/test.kuzu +0 -0
  90. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_node_annotations0/test.kuzu +0 -0
  91. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_node_count0/test.kuzu +0 -0
  92. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_node_fqn0/test.kuzu +0 -0
  93. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_node_no_location0/test.kuzu +0 -0
  94. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_nodes_by_kind0/test.kuzu +0 -0
  95. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_persistence0/persist.kuzu +0 -0
  96. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_producers0/src/routes.py +0 -0
  97. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_query_cypher0/test.kuzu +0 -0
  98. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_query_cypher_with_params0/test.kuzu +0 -0
  99. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_read_file0/hello.py +0 -0
  100. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_search0/src/routes.py +0 -0
  101. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_search_no_results0/src/routes.py +0 -0
  102. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_shortest_path0/src/routes.py +0 -0
  103. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_shortest_path2/test.kuzu +0 -0
  104. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_shortest_path_4040/src/routes.py +0 -0
  105. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_shortest_path_no_path0/test.kuzu +0 -0
  106. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_stats0/src/routes.py +0 -0
  107. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_subgraph0/test.kuzu +0 -0
  108. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_triage_component0/src/routes.py +0 -0
  109. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_triage_endpoints0/src/routes.py +0 -0
  110. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_triage_impact0/src/routes.py +0 -0
  111. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_update_node_properties0/test.kuzu +0 -0
  112. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_update_node_properties_no0/test.kuzu +0 -0
  113. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-1/test_welcome0/src/routes.py +0 -0
  114. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_add_edge0/test.kuzu +0 -0
  115. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_add_edge_missing_target0/test.kuzu +0 -0
  116. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_add_node0/test.kuzu +0 -0
  117. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_add_node_duplicate0/test.kuzu +0 -0
  118. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_add_node_with_location0/test.kuzu +0 -0
  119. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_add_node_with_properties0/test.kuzu +0 -0
  120. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_all_edges0/test.kuzu +0 -0
  121. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_all_nodes0/test.kuzu +0 -0
  122. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_bulk_add_edges0/test.kuzu +0 -0
  123. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_bulk_add_nodes0/test.kuzu +0 -0
  124. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_bulk_add_nodes_deduplicat0/test.kuzu +0 -0
  125. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_callers0/src/routes.py +0 -0
  126. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_clear0/test.kuzu +0 -0
  127. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_close0/test.kuzu +0 -0
  128. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_consumers0/src/routes.py +0 -0
  129. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_cypher_4000/src/routes.py +0 -0
  130. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_dependencies0/src/routes.py +0 -0
  131. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_dependents0/src/routes.py +0 -0
  132. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_determinism2/det_0.kuzu +0 -0
  133. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_determinism2/det_1.kuzu +0 -0
  134. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_edge_count0/test.kuzu +0 -0
  135. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_edge_properties0/test.kuzu +0 -0
  136. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_edges_by_kind0/test.kuzu +0 -0
  137. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_empty_backend0/test.kuzu +0 -0
  138. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_file0/src/routes.py +0 -0
  139. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_file_traversal0/src/routes.py +0 -0
  140. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_find_cycles0/src/routes.py +0 -0
  141. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_find_cycles1/test.kuzu +0 -0
  142. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_find_cycles_no_cycles0/test.kuzu +0 -0
  143. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_flow_all0/src/routes.py +0 -0
  144. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_flow_overview0/src/routes.py +0 -0
  145. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_get_edges_between0/test.kuzu +0 -0
  146. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_get_ego0/src/routes.py +0 -0
  147. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_get_neighbors0/src/routes.py +0 -0
  148. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_get_node0/src/routes.py +0 -0
  149. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_get_node1/test.kuzu +0 -0
  150. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_get_node_4040/src/routes.py +0 -0
  151. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_get_node_not_found1/test.kuzu +0 -0
  152. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_has_node0/test.kuzu +0 -0
  153. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_list_edges0/src/routes.py +0 -0
  154. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_list_edges_filter0/src/routes.py +0 -0
  155. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_list_nodes0/src/routes.py +0 -0
  156. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_list_nodes_filter_kind0/src/routes.py +0 -0
  157. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_list_nodes_pagination0/src/routes.py +0 -0
  158. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_neighbors_both0/test.kuzu +0 -0
  159. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_neighbors_in0/test.kuzu +0 -0
  160. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_neighbors_out0/test.kuzu +0 -0
  161. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_neighbors_with_edge_kinds0/test.kuzu +0 -0
  162. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_node_annotations0/test.kuzu +0 -0
  163. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_node_count0/test.kuzu +0 -0
  164. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_node_fqn0/test.kuzu +0 -0
  165. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_node_no_location0/test.kuzu +0 -0
  166. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_nodes_by_kind0/test.kuzu +0 -0
  167. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_persistence0/persist.kuzu +0 -0
  168. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_producers0/src/routes.py +0 -0
  169. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_query_cypher0/test.kuzu +0 -0
  170. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_query_cypher_with_params0/test.kuzu +0 -0
  171. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_read_file0/hello.py +0 -0
  172. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_search0/src/routes.py +0 -0
  173. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_search_no_results0/src/routes.py +0 -0
  174. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_shortest_path0/src/routes.py +0 -0
  175. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_shortest_path2/test.kuzu +0 -0
  176. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_shortest_path_4040/src/routes.py +0 -0
  177. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_shortest_path_no_path0/test.kuzu +0 -0
  178. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_stats0/src/routes.py +0 -0
  179. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_subgraph0/test.kuzu +0 -0
  180. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_triage_component0/src/routes.py +0 -0
  181. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_triage_endpoints0/src/routes.py +0 -0
  182. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_triage_impact0/src/routes.py +0 -0
  183. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_update_node_properties0/test.kuzu +0 -0
  184. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_update_node_properties_no0/test.kuzu +0 -0
  185. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-2/test_welcome0/src/routes.py +0 -0
  186. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_add_edge0/test.kuzu +0 -0
  187. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_add_edge_missing_target0/test.kuzu +0 -0
  188. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_add_node0/test.kuzu +0 -0
  189. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_add_node_duplicate0/test.kuzu +0 -0
  190. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_add_node_with_location0/test.kuzu +0 -0
  191. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_add_node_with_properties0/test.kuzu +0 -0
  192. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_all_edges0/test.kuzu +0 -0
  193. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_all_nodes0/test.kuzu +0 -0
  194. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analysis_determinism0/hello.py +0 -0
  195. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analysis_language_breakdo0/a.py +0 -0
  196. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analysis_language_breakdo0/b.py +0 -0
  197. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analysis_multiple_languag0/app.py +0 -0
  198. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analysis_multiple_languag0/config.yaml +0 -0
  199. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analysis_multiple_languag0/data.json +0 -0
  200. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analysis_unreadable_file0/hello.py +0 -0
  201. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analysis_with_progress0/hello.py +0 -0
  202. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analyze_codebase0/hello.py +0 -0
  203. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_analyze_codebase0/src/api.py +0 -0
  204. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_basic_analysis0/hello.py +0 -0
  205. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_bulk_add_edges0/test.kuzu +0 -0
  206. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_bulk_add_nodes0/test.kuzu +0 -0
  207. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_bulk_add_nodes_deduplicat0/test.kuzu +0 -0
  208. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_callers0/src/routes.py +0 -0
  209. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_clear0/test.kuzu +0 -0
  210. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_close0/test.kuzu +0 -0
  211. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_consumers0/src/routes.py +0 -0
  212. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_create_kuzu_backend0/test.kuzu +0 -0
  213. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_cypher_4000/src/routes.py +0 -0
  214. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_dependencies0/src/routes.py +0 -0
  215. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_dependents0/src/routes.py +0 -0
  216. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_determinism2/det_0.kuzu +0 -0
  217. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_determinism2/det_1.kuzu +0 -0
  218. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_excludes_ignored0/app.py +0 -0
  219. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_excludes_ignored0/node_modules/lib.js +0 -0
  220. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_extensionless_fi0/Dockerfile +0 -0
  221. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_extensionless_fi0/Makefile +0 -0
  222. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_non_git0/app.py +0 -0
  223. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_non_git0/config.yaml +0 -0
  224. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_non_git0/readme.txt +0 -0
  225. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_respects_max_fil0/big.py +0 -0
  226. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_respects_max_fil0/small.py +0 -0
  227. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discover_subdirectories0/src/models/user.py +0 -0
  228. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_discovered_file_has_conte0/app.py +0 -0
  229. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_edge_count0/test.kuzu +0 -0
  230. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_edge_properties0/test.kuzu +0 -0
  231. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_edges_by_kind0/test.kuzu +0 -0
  232. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_empty_backend0/test.kuzu +0 -0
  233. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_file0/src/routes.py +0 -0
  234. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_file_traversal0/src/routes.py +0 -0
  235. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_callers0/src/api.py +0 -0
  236. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_component_by_file0/src/api.py +0 -0
  237. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_consumers0/src/api.py +0 -0
  238. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_cycles0/src/api.py +0 -0
  239. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_cycles1/src/routes.py +0 -0
  240. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_cycles2/test.kuzu +0 -0
  241. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_cycles_no_cycles0/test.kuzu +0 -0
  242. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_dependencies0/src/api.py +0 -0
  243. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_dependents0/src/api.py +0 -0
  244. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_producers0/src/api.py +0 -0
  245. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_related_endpoints0/src/api.py +0 -0
  246. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_shortest_path_exists0/src/api.py +0 -0
  247. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_find_shortest_path_no_pat0/src/api.py +0 -0
  248. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_flow_all0/src/routes.py +0 -0
  249. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_flow_overview0/src/routes.py +0 -0
  250. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_generate_flow0/src/api.py +0 -0
  251. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_generate_flow_mermaid0/src/api.py +0 -0
  252. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_edges_between0/test.kuzu +0 -0
  253. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_ego0/src/routes.py +0 -0
  254. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_ego_graph0/src/api.py +0 -0
  255. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_neighbors0/src/routes.py +0 -0
  256. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_node0/src/routes.py +0 -0
  257. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_node1/test.kuzu +0 -0
  258. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_node_4040/src/routes.py +0 -0
  259. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_node_neighbors0/src/api.py +0 -0
  260. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_node_neighbors_direct0/src/api.py +0 -0
  261. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_node_not_found1/test.kuzu +0 -0
  262. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_get_stats0/src/api.py +0 -0
  263. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_has_node0/test.kuzu +0 -0
  264. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_ignores_comments0/.gitignore +0 -0
  265. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_incremental_analysis0/hello.py +0 -0
  266. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_list_edges0/src/routes.py +0 -0
  267. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_list_edges_filter0/src/routes.py +0 -0
  268. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_list_nodes0/src/routes.py +0 -0
  269. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_list_nodes_filter_kind0/src/routes.py +0 -0
  270. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_list_nodes_pagination0/src/routes.py +0 -0
  271. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_neighbors_both0/test.kuzu +0 -0
  272. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_neighbors_in0/test.kuzu +0 -0
  273. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_neighbors_out0/test.kuzu +0 -0
  274. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_neighbors_with_edge_kinds0/test.kuzu +0 -0
  275. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_node_annotations0/test.kuzu +0 -0
  276. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_node_count0/test.kuzu +0 -0
  277. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_node_fqn0/test.kuzu +0 -0
  278. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_node_no_location0/test.kuzu +0 -0
  279. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_nodes_by_kind0/test.kuzu +0 -0
  280. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_persistence0/persist.kuzu +0 -0
  281. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_producers0/src/routes.py +0 -0
  282. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_query_cypher0/test.kuzu +0 -0
  283. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_query_cypher_with_params0/test.kuzu +0 -0
  284. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_query_edges_all0/src/api.py +0 -0
  285. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_query_edges_filtered0/src/api.py +0 -0
  286. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_query_nodes_all0/src/api.py +0 -0
  287. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_query_nodes_filtered0/src/api.py +0 -0
  288. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_read_file0/src/api.py +0 -0
  289. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_read_file1/hello.py +0 -0
  290. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_read_file_not_found0/src/api.py +0 -0
  291. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_run_cypher_error0/src/api.py +0 -0
  292. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_search0/src/routes.py +0 -0
  293. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_search_graph0/src/api.py +0 -0
  294. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_search_graph_no_match0/src/api.py +0 -0
  295. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_search_no_results0/src/routes.py +0 -0
  296. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_shortest_path0/src/routes.py +0 -0
  297. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_shortest_path2/test.kuzu +0 -0
  298. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_shortest_path_4040/src/routes.py +0 -0
  299. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_shortest_path_no_path0/test.kuzu +0 -0
  300. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_stats0/src/routes.py +0 -0
  301. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_subgraph0/test.kuzu +0 -0
  302. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_trace_impact0/src/api.py +0 -0
  303. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_triage_component0/src/routes.py +0 -0
  304. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_triage_endpoints0/src/routes.py +0 -0
  305. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_triage_impact0/src/routes.py +0 -0
  306. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_update_node_properties0/test.kuzu +0 -0
  307. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_update_node_properties_no0/test.kuzu +0 -0
  308. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_walk_files0/root.py +0 -0
  309. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_walk_files0/sub/test.py +0 -0
  310. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_welcome0/src/routes.py +0 -0
  311. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_with_codeignore0/.codeignore +0 -0
  312. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/pytest-of-dev/pytest-3/test_with_gitignore0/.gitignore +0 -0
  313. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/setup.cfg +0 -0
  314. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/sonar-project.properties +0 -0
  315. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/__init__.py +0 -0
  316. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/analyzer.py +0 -0
  317. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/cache/__init__.py +0 -0
  318. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/cache/hasher.py +0 -0
  319. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/cache/store.py +0 -0
  320. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/classifiers/__init__.py +0 -0
  321. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/classifiers/layer_classifier.py +0 -0
  322. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/__init__.py +0 -0
  323. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/auth/__init__.py +0 -0
  324. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/auth/certificate_auth.py +0 -0
  325. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/auth/ldap_auth.py +0 -0
  326. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/auth/session_header_auth.py +0 -0
  327. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/base.py +0 -0
  328. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/__init__.py +0 -0
  329. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/batch_structure.py +0 -0
  330. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/cloudformation.py +0 -0
  331. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/docker_compose.py +0 -0
  332. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/github_actions.py +0 -0
  333. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/gitlab_ci.py +0 -0
  334. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/helm_chart.py +0 -0
  335. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/ini_structure.py +0 -0
  336. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/json_structure.py +0 -0
  337. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/kubernetes.py +0 -0
  338. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/kubernetes_rbac.py +0 -0
  339. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/openapi.py +0 -0
  340. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/package_json.py +0 -0
  341. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/properties_detector.py +0 -0
  342. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/pyproject_toml.py +0 -0
  343. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/sql_structure.py +0 -0
  344. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/toml_structure.py +0 -0
  345. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/tsconfig_json.py +0 -0
  346. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/config/yaml_structure.py +0 -0
  347. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/cpp/__init__.py +0 -0
  348. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/cpp/cpp_structures.py +0 -0
  349. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/csharp/__init__.py +0 -0
  350. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/csharp/csharp_efcore.py +0 -0
  351. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/csharp/csharp_minimal_apis.py +0 -0
  352. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/csharp/csharp_structures.py +0 -0
  353. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/docs/__init__.py +0 -0
  354. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/docs/markdown_structure.py +0 -0
  355. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/frontend/__init__.py +0 -0
  356. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/frontend/angular_components.py +0 -0
  357. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/frontend/frontend_routes.py +0 -0
  358. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/frontend/react_components.py +0 -0
  359. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/frontend/svelte_components.py +0 -0
  360. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/frontend/vue_components.py +0 -0
  361. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/generic/__init__.py +0 -0
  362. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/generic/imports_detector.py +0 -0
  363. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/go/__init__.py +0 -0
  364. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/go/go_orm.py +0 -0
  365. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/go/go_structures.py +0 -0
  366. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/go/go_web.py +0 -0
  367. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/iac/__init__.py +0 -0
  368. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/iac/bicep.py +0 -0
  369. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/iac/dockerfile.py +0 -0
  370. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/iac/terraform.py +0 -0
  371. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/__init__.py +0 -0
  372. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/azure_functions.py +0 -0
  373. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/azure_messaging.py +0 -0
  374. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/class_hierarchy.py +0 -0
  375. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/config_def.py +0 -0
  376. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/cosmos_db.py +0 -0
  377. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/graphql_resolver.py +0 -0
  378. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/grpc_service.py +0 -0
  379. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/ibm_mq.py +0 -0
  380. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/jaxrs.py +0 -0
  381. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/jdbc.py +0 -0
  382. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/jms.py +0 -0
  383. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/jpa_entity.py +0 -0
  384. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/kafka.py +0 -0
  385. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/kafka_protocol.py +0 -0
  386. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/micronaut.py +0 -0
  387. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/module_deps.py +0 -0
  388. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/public_api.py +0 -0
  389. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/quarkus.py +0 -0
  390. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/rabbitmq.py +0 -0
  391. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/raw_sql.py +0 -0
  392. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/repository.py +0 -0
  393. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/rmi.py +0 -0
  394. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/spring_events.py +0 -0
  395. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/spring_rest.py +0 -0
  396. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/spring_security.py +0 -0
  397. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/tibco_ems.py +0 -0
  398. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/java/websocket.py +0 -0
  399. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/kotlin/__init__.py +0 -0
  400. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/kotlin/kotlin_structures.py +0 -0
  401. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/kotlin/ktor_routes.py +0 -0
  402. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/proto/__init__.py +0 -0
  403. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/proto/proto_structure.py +0 -0
  404. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/__init__.py +0 -0
  405. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/celery_tasks.py +0 -0
  406. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/django_auth.py +0 -0
  407. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/django_models.py +0 -0
  408. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/django_views.py +0 -0
  409. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/fastapi_auth.py +0 -0
  410. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/fastapi_routes.py +0 -0
  411. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/flask_routes.py +0 -0
  412. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/kafka_python.py +0 -0
  413. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/pydantic_models.py +0 -0
  414. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/python_structures.py +0 -0
  415. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/python/sqlalchemy_models.py +0 -0
  416. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/registry.py +0 -0
  417. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/rust/__init__.py +0 -0
  418. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/rust/actix_web.py +0 -0
  419. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/rust/rust_structures.py +0 -0
  420. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/scala/__init__.py +0 -0
  421. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/scala/scala_structures.py +0 -0
  422. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/shell/__init__.py +0 -0
  423. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/shell/bash_detector.py +0 -0
  424. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/shell/powershell_detector.py +0 -0
  425. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/__init__.py +0 -0
  426. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/express_routes.py +0 -0
  427. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/fastify_routes.py +0 -0
  428. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/graphql_resolvers.py +0 -0
  429. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/kafka_js.py +0 -0
  430. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/mongoose_orm.py +0 -0
  431. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/nestjs_controllers.py +0 -0
  432. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/nestjs_guards.py +0 -0
  433. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/passport_jwt.py +0 -0
  434. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/prisma_orm.py +0 -0
  435. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/remix_routes.py +0 -0
  436. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/sequelize_orm.py +0 -0
  437. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/typeorm_entities.py +0 -0
  438. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/typescript/typescript_structures.py +0 -0
  439. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/detectors/utils.py +0 -0
  440. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/discovery/__init__.py +0 -0
  441. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/discovery/change_detector.py +0 -0
  442. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/discovery/file_discovery.py +0 -0
  443. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/__init__.py +0 -0
  444. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/engine.py +0 -0
  445. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/models.py +0 -0
  446. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/renderer.py +0 -0
  447. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/templates/interactive.html +0 -0
  448. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/vendor/cytoscape-dagre.min.js +0 -0
  449. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/vendor/cytoscape.min.js +0 -0
  450. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/vendor/dagre.min.js +0 -0
  451. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/flow/views.py +0 -0
  452. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/__init__.py +0 -0
  453. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/backend.py +0 -0
  454. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/backends/kuzu.py +0 -0
  455. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/backends/networkx.py +0 -0
  456. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/backends/sqlite_backend.py +0 -0
  457. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/builder.py +0 -0
  458. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/query.py +0 -0
  459. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/store.py +0 -0
  460. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/graph/views.py +0 -0
  461. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/models/__init__.py +0 -0
  462. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/models/graph.py +0 -0
  463. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/output/__init__.py +0 -0
  464. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/output/mermaid.py +0 -0
  465. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/output/safety.py +0 -0
  466. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/output/serializers.py +0 -0
  467. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/__init__.py +0 -0
  468. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/languages/__init__.py +0 -0
  469. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/languages/base.py +0 -0
  470. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/languages/java.py +0 -0
  471. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/languages/python.py +0 -0
  472. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/languages/typescript.py +0 -0
  473. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/parser_manager.py +0 -0
  474. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/structured/__init__.py +0 -0
  475. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/structured/gradle_parser.py +0 -0
  476. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/structured/json_parser.py +0 -0
  477. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/structured/properties_parser.py +0 -0
  478. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/structured/sql_parser.py +0 -0
  479. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/structured/xml_parser.py +0 -0
  480. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/parsing/structured/yaml_parser.py +0 -0
  481. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/server/__init__.py +0 -0
  482. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/server/mcp_server.py +0 -0
  483. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/server/middleware.py +0 -0
  484. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq/server/templates/welcome.html +0 -0
  485. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq.egg-info/dependency_links.txt +0 -0
  486. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq.egg-info/entry_points.txt +0 -0
  487. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/src/osscodeiq.egg-info/top_level.txt +0 -0
  488. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/__init__.py +0 -0
  489. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/classifiers/__init__.py +0 -0
  490. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/classifiers/test_layer_classifier.py +0 -0
  491. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/__init__.py +0 -0
  492. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/auth/__init__.py +0 -0
  493. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/auth/test_certificate_auth.py +0 -0
  494. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/auth/test_ldap_auth.py +0 -0
  495. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/auth/test_session_header_auth.py +0 -0
  496. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/__init__.py +0 -0
  497. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_cloudformation.py +0 -0
  498. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_docker_compose.py +0 -0
  499. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_github_actions.py +0 -0
  500. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_gitlab_ci.py +0 -0
  501. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_helm_chart.py +0 -0
  502. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_json_structure.py +0 -0
  503. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_kubernetes.py +0 -0
  504. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_kubernetes_rbac.py +0 -0
  505. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_package_json.py +0 -0
  506. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_pyproject_toml.py +0 -0
  507. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/config/test_yaml_structure.py +0 -0
  508. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/cpp/__init__.py +0 -0
  509. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/cpp/test_cpp_structures.py +0 -0
  510. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/csharp/__init__.py +0 -0
  511. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/csharp/test_csharp_efcore.py +0 -0
  512. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/csharp/test_csharp_minimal_apis.py +0 -0
  513. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/csharp/test_csharp_structures.py +0 -0
  514. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/docs/__init__.py +0 -0
  515. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/docs/test_markdown_structure.py +0 -0
  516. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/frontend/__init__.py +0 -0
  517. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/frontend/test_angular_components.py +0 -0
  518. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/frontend/test_frontend_routes.py +0 -0
  519. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/frontend/test_react_components.py +0 -0
  520. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/frontend/test_svelte_components.py +0 -0
  521. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/frontend/test_vue_components.py +0 -0
  522. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/generic/test_imports_detector.py +0 -0
  523. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/go/__init__.py +0 -0
  524. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/go/test_go_orm.py +0 -0
  525. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/go/test_go_structures.py +0 -0
  526. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/go/test_go_web.py +0 -0
  527. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/iac/__init__.py +0 -0
  528. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/iac/test_dockerfile.py +0 -0
  529. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/iac/test_terraform.py +0 -0
  530. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/__init__.py +0 -0
  531. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_class_hierarchy.py +0 -0
  532. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_grpc_service.py +0 -0
  533. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_jpa_entity.py +0 -0
  534. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_kafka.py +0 -0
  535. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_micronaut.py +0 -0
  536. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_module_deps.py +0 -0
  537. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_more_java.py +0 -0
  538. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_public_api.py +0 -0
  539. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_quarkus.py +0 -0
  540. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_raw_sql.py +0 -0
  541. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_spring_events.py +0 -0
  542. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_spring_rest.py +0 -0
  543. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/java/test_spring_security.py +0 -0
  544. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/kotlin/__init__.py +0 -0
  545. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/kotlin/test_ktor_routes.py +0 -0
  546. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/__init__.py +0 -0
  547. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_celery_tasks.py +0 -0
  548. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_django_auth.py +0 -0
  549. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_django_models.py +0 -0
  550. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_django_views.py +0 -0
  551. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_fastapi_auth.py +0 -0
  552. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_fastapi_routes.py +0 -0
  553. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_flask_routes.py +0 -0
  554. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_kafka_python.py +0 -0
  555. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_pydantic_models.py +0 -0
  556. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_python_structures.py +0 -0
  557. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/python/test_sqlalchemy_models.py +0 -0
  558. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/rust/__init__.py +0 -0
  559. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/rust/test_actix_web.py +0 -0
  560. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/shell/__init__.py +0 -0
  561. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/shell/test_powershell_detector.py +0 -0
  562. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/__init__.py +0 -0
  563. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_express_routes.py +0 -0
  564. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_fastify_routes.py +0 -0
  565. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_graphql_resolvers.py +0 -0
  566. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_kafka_js.py +0 -0
  567. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_mongoose_orm.py +0 -0
  568. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_nestjs_controllers.py +0 -0
  569. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_nestjs_guards.py +0 -0
  570. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_passport_jwt.py +0 -0
  571. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_prisma_orm.py +0 -0
  572. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_remix_routes.py +0 -0
  573. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_sequelize_orm.py +0 -0
  574. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_typeorm_entities.py +0 -0
  575. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/detectors/typescript/test_typescript_structures.py +0 -0
  576. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/ApiKeys.java +0 -0
  577. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/ConnectorsResource.java +0 -0
  578. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/ConsumerConfig.java +0 -0
  579. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/FetchRequest.java +0 -0
  580. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/FetchResponse.java +0 -0
  581. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/Order.java +0 -0
  582. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/OrderController.java +0 -0
  583. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/OrderEventHandler.java +0 -0
  584. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/OrderRepository.java +0 -0
  585. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/Serializer.java +0 -0
  586. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/StringSerializer.java +0 -0
  587. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/java/pom.xml +0 -0
  588. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/python/app.py +0 -0
  589. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/python/models.py +0 -0
  590. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/typescript/user.controller.ts +0 -0
  591. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/fixtures/typescript/user.entity.ts +0 -0
  592. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/flow/__init__.py +0 -0
  593. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/flow/test_engine.py +0 -0
  594. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/flow/test_flow_edge_cases.py +0 -0
  595. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/flow/test_models.py +0 -0
  596. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/flow/test_renderer.py +0 -0
  597. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/flow/test_views.py +0 -0
  598. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/server/__init__.py +0 -0
  599. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/server/test_mcp_tools.py +0 -0
  600. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_analyzer_coverage.py +0 -0
  601. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_backends_init.py +0 -0
  602. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_cache_store.py +0 -0
  603. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_change_detector.py +0 -0
  604. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/__init__.py +0 -0
  605. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_cpp_detectors.py +0 -0
  606. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_csharp_detectors.py +0 -0
  607. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_generic_detectors.py +0 -0
  608. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_go_detectors.py +0 -0
  609. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_iac_detectors.py +0 -0
  610. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_java_detectors.py +0 -0
  611. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_python_detectors.py +0 -0
  612. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_shell_detectors.py +0 -0
  613. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_terraform_detectors.py +0 -0
  614. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_detectors/test_typescript_detectors.py +0 -0
  615. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_discovery/__init__.py +0 -0
  616. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_dot_output.py +0 -0
  617. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_edge_cases.py +0 -0
  618. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_file_discovery_coverage.py +0 -0
  619. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_graph/__init__.py +0 -0
  620. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_graph/test_builder.py +0 -0
  621. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_graph/test_models.py +0 -0
  622. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_graph/test_query.py +0 -0
  623. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_graph/test_store.py +0 -0
  624. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_graph/test_views.py +0 -0
  625. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_graph_edge_cases.py +0 -0
  626. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_graph_views.py +0 -0
  627. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_kuzu_backend.py +0 -0
  628. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_output/__init__.py +0 -0
  629. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_output/test_dot.py +0 -0
  630. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_output/test_mermaid.py +0 -0
  631. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_output/test_safety.py +0 -0
  632. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_output/test_serializers.py +0 -0
  633. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_parsers.py +0 -0
  634. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_parsing/__init__.py +0 -0
  635. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_registry_coverage.py +0 -0
  636. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_sqlite_backend.py +0 -0
  637. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_thread_safety.py +0 -0
  638. {osscodeiq-0.0.2 → osscodeiq-0.1.0}/tests/test_utils.py +0 -0
@@ -13,7 +13,7 @@ on:
13
13
  default: false
14
14
 
15
15
  permissions:
16
- contents: read
16
+ contents: write
17
17
  id-token: write
18
18
 
19
19
  jobs:
@@ -170,3 +170,30 @@ jobs:
170
170
  uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # release/v1
171
171
  with:
172
172
  attestations: true
173
+
174
+ github-release:
175
+ name: Create GitHub Release
176
+ needs: publish-pypi
177
+ runs-on: ubuntu-latest
178
+ permissions:
179
+ contents: write
180
+ steps:
181
+ - uses: actions/checkout@v4
182
+ with:
183
+ fetch-depth: 0
184
+
185
+ - name: Download artifacts
186
+ uses: actions/download-artifact@v4
187
+ with:
188
+ name: dist
189
+ path: dist/
190
+
191
+ - name: Create GitHub Release
192
+ env:
193
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
194
+ VERSION: ${{ inputs.version }}
195
+ run: |
196
+ gh release create "v${VERSION}" dist/* \
197
+ --title "v${VERSION}" \
198
+ --generate-notes \
199
+ --latest
@@ -39,9 +39,9 @@ htmlcov/
39
39
  Thumbs.db
40
40
 
41
41
  # Project
42
- .code-intelligence/
42
+ .osscodeiq/
43
+ .superpowers/
43
44
  docs/superpowers/
44
- docs/specs/
45
45
  .code_intelligence_cache*/
46
46
  *.db
47
47
  *.db-wal
@@ -0,0 +1,199 @@
1
+ # OSSCodeIQ — Project Instructions
2
+
3
+ ## What This Project Is
4
+
5
+ **OSSCodeIQ** (`osscodeiq` on PyPI) — a CLI tool + server that scans codebases to build a deterministic code knowledge graph. No AI, no external APIs — pure pattern matching. 97 detectors, 35 languages, 3 storage backends (NetworkX, SQLite, KuzuDB), REST API + MCP server, interactive flow diagrams.
6
+
7
+ - **PyPI package:** `osscodeiq`
8
+ - **CLI command:** `osscodeiq`
9
+ - **Python package:** `osscodeiq` (under `src/osscodeiq/`)
10
+ - **GitHub repo:** `RandomCodeSpace/code-iq` (repo name differs from package name)
11
+ - **Cache directory on disk:** `.osscodeiq`
12
+
13
+ ## Architecture
14
+
15
+ ```
16
+ FileDiscovery → Parsers → Detectors → GraphBuilder (buffered) → Linkers → LayerClassifier → GraphStore (backend)
17
+
18
+ CodeIQService (shared facade)
19
+ ↙ ↘
20
+ FastAPI REST (/api) FastMCP MCP (/mcp)
21
+ ```
22
+
23
+ - **Detectors** follow the `Detector` Protocol in `detectors/base.py` — implement `name`, `supported_languages`, `detect(ctx) -> DetectorResult`
24
+ - **Backends** follow the `GraphBackend` Protocol in `graph/backend.py` — implement 16 methods. `CypherBackend` is optional for Cypher-capable backends.
25
+ - **GraphStore** is a facade delegating to a backend — never access backends directly
26
+ - **GraphBuilder** buffers all nodes and edges, flushes nodes first then edges (ensures cross-backend parity)
27
+ - **Linkers** run after all detectors, produce cross-file relationship edges
28
+ - **LayerClassifier** runs after linkers, sets `layer` property on every node
29
+ - **CodeIQService** wraps GraphStore + FlowEngine + GraphQuery + Analyzer — shared by REST and MCP
30
+ - **Server** is a single FastAPI app: `/api` (REST), `/mcp` (MCP via fastmcp streamable HTTP), `/` (welcome UI), `/docs` (OpenAPI)
31
+
32
+ ## Critical Rules
33
+
34
+ ### Determinism is Non-Negotiable
35
+ - Same input MUST produce same output, every time, on every backend
36
+ - No set iteration without `sorted()` first
37
+ - No dependency on thread completion order (builder uses indexed result slots)
38
+ - All detectors must be stateless pure functions — no class-level mutable state
39
+
40
+ ### Cross-Backend Data Parity
41
+ - All 3 backends (NetworkX, SQLite, KuzuDB) must produce identical node and edge counts
42
+ - Edges are only added if both source and target nodes exist
43
+ - Test parity after any change to builder, store, or backends
44
+
45
+ ### Windows Compatibility
46
+ - Always use `encoding="utf-8"` when reading/writing files (Windows defaults to cp1252)
47
+ - This applies to templates, vendor JS, HTML output, and any file I/O in the server
48
+
49
+ ### pyproject.toml is the Single Source of Truth
50
+ - All dependencies, scripts, metadata, and package config live in `pyproject.toml`
51
+ - After ANY change to pyproject.toml, run `uv lock` and commit both files together
52
+ - Version in pyproject.toml is `0.0.0` (placeholder) — publish/beta workflows patch it at build time
53
+ - Server deps (fastapi, uvicorn, fastmcp) are core dependencies, not optional
54
+ - Only `dev` (pytest) and `kuzu` remain as optional deps
55
+
56
+ ### GitHub References
57
+ - Repo URL is `RandomCodeSpace/code-iq` — do NOT change this even though package is `osscodeiq`
58
+ - SonarCloud project key: `RandomCodeSpace_code-iq`
59
+ - Badge URLs, workflow URLs, and clone URLs all use `code-iq`
60
+
61
+ ## Code Conventions
62
+
63
+ - Python 3.11+, `from __future__ import annotations`
64
+ - Pydantic for data models, typer for CLI, rich for output
65
+ - FastAPI for REST API, fastmcp for MCP server (streamable HTTP, NOT SSE)
66
+ - Regex-based detection (no tree-sitter dependency for new detectors unless needed)
67
+ - `NodeKind` and `EdgeKind` enums in `models/graph.py` — add new values there
68
+ - ID format: `"{prefix}:{filepath}:{type}:{identifier}"` for cross-file uniqueness
69
+ - Properties dict for detector-specific metadata (`auth_type`, `framework`, `roles`, etc.)
70
+ - `layer` property on every node: `frontend | backend | infra | shared | unknown`
71
+ - Suppress websockets deprecation warnings in serve command (upstream uvicorn issue)
72
+
73
+ ## CLI Commands
74
+
75
+ | Command | Purpose |
76
+ |---------|---------|
77
+ | `osscodeiq analyze [path]` | Scan codebase, build graph |
78
+ | `osscodeiq graph [path]` | Export graph (json, yaml, mermaid, dot) |
79
+ | `osscodeiq query [path]` | Semantic graph queries |
80
+ | `osscodeiq find [what] [path]` | Preset queries (endpoints, guards, entities, etc.) |
81
+ | `osscodeiq cypher [query]` | Raw Cypher (KuzuDB only) |
82
+ | `osscodeiq flow [path]` | Architecture flow diagrams (mermaid, json, html) |
83
+ | `osscodeiq serve [path]` | Start unified server (API + MCP) |
84
+ | `osscodeiq bundle [path]` | Create distributable package |
85
+ | `osscodeiq cache [action]` | Manage analysis cache |
86
+ | `osscodeiq plugins [action]` | List/inspect detectors |
87
+ | `osscodeiq version` | Show version info |
88
+
89
+ ## Server Architecture
90
+
91
+ ### Endpoints
92
+ - `GET /` — Welcome page (self-contained HTML, fetches `/api/stats`)
93
+ - `GET /api/stats` — Graph statistics
94
+ - `GET /api/nodes`, `GET /api/edges` — Paginated queries with `?kind=&limit=&offset=`
95
+ - `GET /api/nodes/{id}/neighbors` — Neighbor traversal
96
+ - `GET /api/ego/{id}` — Ego subgraph
97
+ - `GET /api/query/cycles`, `/shortest-path`, `/consumers/{id}`, `/producers/{id}`, `/callers/{id}`, `/dependencies/{id}`, `/dependents/{id}`
98
+ - `GET /api/flow/{view}` — Flow diagrams (overview, ci, deploy, runtime, auth)
99
+ - `POST /api/analyze` — Trigger analysis
100
+ - `POST /api/cypher` — Raw Cypher (400 if not KuzuDB)
101
+ - `GET /api/triage/component`, `/impact/{id}`, `/endpoints` — Agentic triage tools
102
+ - `GET /api/search?q=` — Free-text graph search
103
+ - `GET /api/file?path=` — Serve source files (path traversal protected)
104
+ - `POST /mcp` — MCP endpoint (20 tools via streamable HTTP)
105
+
106
+ ### MCP Tools (20)
107
+ 15 core tools (get_stats, query_nodes, query_edges, get_node_neighbors, get_ego_graph, find_cycles, find_shortest_path, find_consumers, find_producers, find_callers, find_dependencies, find_dependents, generate_flow, analyze_codebase, run_cypher) + 5 agentic triage tools (find_component_by_file, trace_impact, find_related_endpoints, search_graph, read_file).
108
+
109
+ ### Key Server Files
110
+ | File | Purpose |
111
+ |------|---------|
112
+ | `server/app.py` | FastAPI app assembly, mounts /api, /mcp, / |
113
+ | `server/service.py` | CodeIQService — shared facade over GraphStore + FlowEngine + GraphQuery |
114
+ | `server/routes.py` | REST API endpoints (uses Annotated type hints) |
115
+ | `server/mcp_server.py` | FastMCP tool definitions |
116
+ | `server/middleware.py` | Auth middleware stub (no-op, ready for future auth) |
117
+ | `server/templates/welcome.html` | Self-contained welcome page |
118
+
119
+ ## Testing
120
+
121
+ - `pytest tests/ -x -q` — must always pass (currently 2,074 tests, 86% coverage)
122
+ - Every detector needs: positive match test, negative match test, determinism test
123
+ - Server tests use FastAPI TestClient
124
+ - MCP tools tested by calling functions directly after `set_service()`
125
+ - All detectors use shared `detectors/utils.py` — decode_text, find_line_number, etc.
126
+ - KuzuDB tests require `kuzu` package (installed in CI via `pip install -e ".[dev,kuzu]"`)
127
+
128
+ ## Key Files
129
+
130
+ | File | Purpose |
131
+ |------|---------|
132
+ | `detectors/base.py` | Detector protocol |
133
+ | `graph/backend.py` | GraphBackend + CypherBackend protocols |
134
+ | `graph/store.py` | GraphStore facade |
135
+ | `graph/builder.py` | GraphBuilder with buffered flush + linkers |
136
+ | `graph/backends/networkx.py` | Default in-memory backend |
137
+ | `graph/backends/kuzu.py` | KuzuDB embedded graph DB with Cypher |
138
+ | `graph/backends/sqlite_backend.py` | SQLite file-based backend |
139
+ | `classifiers/layer_classifier.py` | Deterministic layer classification |
140
+ | `models/graph.py` | NodeKind (31 types), EdgeKind (26 types), GraphNode, GraphEdge |
141
+ | `config.py` | Config with GraphConfig for backend selection |
142
+ | `analyzer.py` | Pipeline orchestrator |
143
+ | `cli.py` | CLI commands — constants `_GRAPH_DIR_NAME`, `_KUZU_DB_NAME`, `_SQLITE_DB_NAME` |
144
+ | `flow/engine.py` | FlowEngine — generate/render flow diagrams |
145
+ | `flow/renderer.py` | Mermaid, JSON, HTML renderers (vendor JS inlined for offline use) |
146
+ | `flow/views.py` | 5 view builders (overview, ci, deploy, runtime, auth) |
147
+ | `flow/vendor/` | Bundled Cytoscape.js + Dagre.js (no CDN — works behind firewalls) |
148
+
149
+ ## Adding a New Detector
150
+
151
+ 1. Create file in `detectors/<category>/my_detector.py`
152
+ 2. Implement `Detector` protocol (name, supported_languages, detect method)
153
+ 3. **No registry changes needed** — auto-discovered by `pkgutil.walk_packages()`
154
+ 4. Create test in `tests/detectors/<category>/test_my_detector.py`
155
+ 5. Include a determinism test (run twice, assert identical output)
156
+ 6. Run `pytest tests/ -x -q` — all tests must pass
157
+
158
+ ## CI/CD Workflows
159
+
160
+ | Workflow | File | Purpose |
161
+ |----------|------|---------|
162
+ | CI | `ci.yml` | Run tests on Python 3.11-3.12, installs `[dev,kuzu]` |
163
+ | Beta | `beta.yml` | Auto-publish beta on push to src/tests. Version: latest stable tag + incremental counter (PEP 440: `v0.1.0b0`) |
164
+ | Publish | `publish.yml` | Manual trigger. Patches version from input, builds, tests on 11 OS combos + 9 containers, publishes to PyPI, creates GitHub release |
165
+ | SonarCloud | `sonarcloud.yml` | Code quality + coverage analysis |
166
+ | SBOM | `sbom.yml` | Dependency audit |
167
+
168
+ ### Beta Versioning
169
+ - Derives base version from latest stable git tag (e.g. `v0.1.0` → `0.1.0`)
170
+ - Increments beta number from existing beta tags (not commit count)
171
+ - Tags: PEP 440 format (`v0.1.0b0`, `v0.1.0b1`, ...)
172
+ - Falls back to pyproject.toml version if no stable tags exist
173
+
174
+ ### PyPI Publishing
175
+ - Trusted publisher configured (environment: `pypi`)
176
+ - Version patched from workflow_dispatch input (pyproject.toml stays at `0.0.0`)
177
+ - Creates GitHub release with auto-generated changelog after successful publish
178
+
179
+ ## SonarCloud
180
+
181
+ - Project key: `RandomCodeSpace_code-iq`
182
+ - Config: `sonar-project.properties` — sources at `src/osscodeiq`
183
+ - Coverage report: `coverage.xml` generated by pytest-cov
184
+ - Keep 0 bugs, 0 vulnerabilities. Cognitive complexity issues are tracked but not blocking.
185
+
186
+ ## Gotchas & Lessons Learned
187
+
188
+ - **Package name ≠ repo name**: Package is `osscodeiq`, repo is `code-iq`. Never change GitHub URLs.
189
+ - **pyproject.toml section ordering matters**: `[project.urls]` must come AFTER `dependencies = [...]`, not before. TOML will silently parse dependencies as a URL key otherwise.
190
+ - **Windows encoding**: All file reads/writes must specify `encoding="utf-8"`. Minified JS vendor files contain bytes invalid in cp1252.
191
+ - **FastAPI path params with colons**: Node IDs contain colons (e.g. `gha:workflow:build`). Use `{node_id:path}` in route definitions. Route ordering matters — `/nodes/{id}/neighbors` must be registered BEFORE `/nodes/{id}`.
192
+ - **MCP transport**: Use streamable HTTP (`mcp.http_app(transport="streamable-http")`), NOT SSE.
193
+ - **Loop bounds from user input**: Cap `radius` and `depth` params (max 10) to prevent DoS. SonarCloud flags this as a vulnerability.
194
+ - **Vendor JS for offline use**: Cytoscape.js and Dagre.js are bundled in `flow/vendor/` and inlined into HTML at render time. No CDN dependencies.
195
+ - **uv.lock**: Always regenerate with `uv lock` after pyproject.toml changes.
196
+
197
+ ## Updating This File
198
+
199
+ After significant changes (new detectors, new backends, architectural decisions, conventions learned), update this CLAUDE.md to reflect the current state. Keep it concise and actionable.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osscodeiq
3
- Version: 0.0.2
3
+ Version: 0.1.0
4
4
  Summary: CLI tool for intelligent code graph discovery and analysis
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/RandomCodeSpace/code-iq
@@ -36,6 +36,7 @@ Requires-Dist: pathspec>=0.11
36
36
  Requires-Dist: fastapi>=0.115
37
37
  Requires-Dist: uvicorn[standard]>=0.34
38
38
  Requires-Dist: fastmcp>=2.0
39
+ Requires-Dist: nicegui>=3.9
39
40
  Provides-Extra: dev
40
41
  Requires-Dist: pytest>=8.0; extra == "dev"
41
42
  Requires-Dist: pytest-cov>=5.0; extra == "dev"