infinidev 0.14.3__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 (630) hide show
  1. infinidev-0.14.3/.gitignore +84 -0
  2. infinidev-0.14.3/LICENSE.md +21 -0
  3. infinidev-0.14.3/PKG-INFO +341 -0
  4. infinidev-0.14.3/README.md +257 -0
  5. infinidev-0.14.3/pyproject.toml +126 -0
  6. infinidev-0.14.3/src/infinidev/agents/base.py +107 -0
  7. infinidev-0.14.3/src/infinidev/cli/classic_renderer.py +747 -0
  8. infinidev-0.14.3/src/infinidev/cli/commands.py +461 -0
  9. infinidev-0.14.3/src/infinidev/cli/file_watcher.py +300 -0
  10. infinidev-0.14.3/src/infinidev/cli/index_queue.py +110 -0
  11. infinidev-0.14.3/src/infinidev/cli/initial_index.py +71 -0
  12. infinidev-0.14.3/src/infinidev/cli/main.py +896 -0
  13. infinidev-0.14.3/src/infinidev/cli/profiler.py +142 -0
  14. infinidev-0.14.3/src/infinidev/cli/session_resume.py +126 -0
  15. infinidev-0.14.3/src/infinidev/code_intel/__init__.py +5 -0
  16. infinidev-0.14.3/src/infinidev/code_intel/_db.py +242 -0
  17. infinidev-0.14.3/src/infinidev/code_intel/analysis_report.py +56 -0
  18. infinidev-0.14.3/src/infinidev/code_intel/analyzer.py +530 -0
  19. infinidev-0.14.3/src/infinidev/code_intel/background_indexer.py +97 -0
  20. infinidev-0.14.3/src/infinidev/code_intel/diagnostic.py +57 -0
  21. infinidev-0.14.3/src/infinidev/code_intel/extractors/__init__.py +31 -0
  22. infinidev-0.14.3/src/infinidev/code_intel/extractors/_common.py +20 -0
  23. infinidev-0.14.3/src/infinidev/code_intel/extractors/javascript.py +40 -0
  24. infinidev-0.14.3/src/infinidev/code_intel/extractors/python.py +39 -0
  25. infinidev-0.14.3/src/infinidev/code_intel/file_change_notifications.py +288 -0
  26. infinidev-0.14.3/src/infinidev/code_intel/import_model.py +21 -0
  27. infinidev-0.14.3/src/infinidev/code_intel/import_resolver.py +152 -0
  28. infinidev-0.14.3/src/infinidev/code_intel/index.py +171 -0
  29. infinidev-0.14.3/src/infinidev/code_intel/indexer.py +353 -0
  30. infinidev-0.14.3/src/infinidev/code_intel/interpreter_api.py +695 -0
  31. infinidev-0.14.3/src/infinidev/code_intel/method_index.py +626 -0
  32. infinidev-0.14.3/src/infinidev/code_intel/models.py +12 -0
  33. infinidev-0.14.3/src/infinidev/code_intel/parsers/__init__.py +157 -0
  34. infinidev-0.14.3/src/infinidev/code_intel/parsers/base.py +17 -0
  35. infinidev-0.14.3/src/infinidev/code_intel/parsers/c_parser.py +175 -0
  36. infinidev-0.14.3/src/infinidev/code_intel/parsers/generic_parser.py +600 -0
  37. infinidev-0.14.3/src/infinidev/code_intel/parsers/javascript_parser.py +432 -0
  38. infinidev-0.14.3/src/infinidev/code_intel/parsers/python_parser.py +380 -0
  39. infinidev-0.14.3/src/infinidev/code_intel/parsers/rust_parser.py +219 -0
  40. infinidev-0.14.3/src/infinidev/code_intel/parsers/typescript_parser.py +70 -0
  41. infinidev-0.14.3/src/infinidev/code_intel/query.py +471 -0
  42. infinidev-0.14.3/src/infinidev/code_intel/reference.py +23 -0
  43. infinidev-0.14.3/src/infinidev/code_intel/resolve.py +97 -0
  44. infinidev-0.14.3/src/infinidev/code_intel/smart_index.py +117 -0
  45. infinidev-0.14.3/src/infinidev/code_intel/stdlib_modules.py +53 -0
  46. infinidev-0.14.3/src/infinidev/code_intel/symbol.py +31 -0
  47. infinidev-0.14.3/src/infinidev/code_intel/symbol_embeddings.py +343 -0
  48. infinidev-0.14.3/src/infinidev/code_intel/symbol_kind.py +23 -0
  49. infinidev-0.14.3/src/infinidev/code_intel/syntax_check.py +911 -0
  50. infinidev-0.14.3/src/infinidev/config/codex_catalog.py +213 -0
  51. infinidev-0.14.3/src/infinidev/config/llm.py +831 -0
  52. infinidev-0.14.3/src/infinidev/config/model_capabilities.py +983 -0
  53. infinidev-0.14.3/src/infinidev/config/openai_oauth.py +466 -0
  54. infinidev-0.14.3/src/infinidev/config/prompt_cache.py +180 -0
  55. infinidev-0.14.3/src/infinidev/config/providers.py +490 -0
  56. infinidev-0.14.3/src/infinidev/config/secrets.py +132 -0
  57. infinidev-0.14.3/src/infinidev/config/settings.py +639 -0
  58. infinidev-0.14.3/src/infinidev/config/tech_detection.py +118 -0
  59. infinidev-0.14.3/src/infinidev/config/thinking_budget.py +358 -0
  60. infinidev-0.14.3/src/infinidev/db/schema.sql +655 -0
  61. infinidev-0.14.3/src/infinidev/db/service.py +855 -0
  62. infinidev-0.14.3/src/infinidev/engine/__init__.py +37 -0
  63. infinidev-0.14.3/src/infinidev/engine/_best_effort.py +56 -0
  64. infinidev-0.14.3/src/infinidev/engine/agent_engine.py +41 -0
  65. infinidev-0.14.3/src/infinidev/engine/agent_killed_error.py +20 -0
  66. infinidev-0.14.3/src/infinidev/engine/analysis/__init__.py +9 -0
  67. infinidev-0.14.3/src/infinidev/engine/analysis/adversarial_verifier.py +210 -0
  68. infinidev-0.14.3/src/infinidev/engine/analysis/automated_checks.py +225 -0
  69. infinidev-0.14.3/src/infinidev/engine/analysis/evidence_review.py +306 -0
  70. infinidev-0.14.3/src/infinidev/engine/analysis/grounded_spec.py +213 -0
  71. infinidev-0.14.3/src/infinidev/engine/analysis/objective_verifier.py +332 -0
  72. infinidev-0.14.3/src/infinidev/engine/analysis/plan.py +72 -0
  73. infinidev-0.14.3/src/infinidev/engine/analysis/planner.py +463 -0
  74. infinidev-0.14.3/src/infinidev/engine/analysis/review_engine.py +1481 -0
  75. infinidev-0.14.3/src/infinidev/engine/analysis/review_grounding.py +129 -0
  76. infinidev-0.14.3/src/infinidev/engine/analysis/review_result.py +146 -0
  77. infinidev-0.14.3/src/infinidev/engine/analysis/spec_elaborator.py +818 -0
  78. infinidev-0.14.3/src/infinidev/engine/analysis/stage_planner.py +408 -0
  79. infinidev-0.14.3/src/infinidev/engine/analysis/staged_planning.py +303 -0
  80. infinidev-0.14.3/src/infinidev/engine/analysis/step_verification.py +119 -0
  81. infinidev-0.14.3/src/infinidev/engine/analysis/test_counter.py +153 -0
  82. infinidev-0.14.3/src/infinidev/engine/analysis/verification_engine.py +305 -0
  83. infinidev-0.14.3/src/infinidev/engine/analysis/verification_result.py +63 -0
  84. infinidev-0.14.3/src/infinidev/engine/assets.py +789 -0
  85. infinidev-0.14.3/src/infinidev/engine/authority.py +25 -0
  86. infinidev-0.14.3/src/infinidev/engine/base.py +13 -0
  87. infinidev-0.14.3/src/infinidev/engine/behavior/__init__.py +11 -0
  88. infinidev-0.14.3/src/infinidev/engine/behavior/batched_runner.py +142 -0
  89. infinidev-0.14.3/src/infinidev/engine/behavior/checker_base.py +120 -0
  90. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/__init__.py +0 -0
  91. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/chatty_thinking.py +43 -0
  92. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/fake_completion.py +60 -0
  93. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/good_focus.py +49 -0
  94. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/graceful_recovery.py +67 -0
  95. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/ignores_tool_error.py +58 -0
  96. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/lazy_work.py +75 -0
  97. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/plan_drift.py +299 -0
  98. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/plan_quality.py +64 -0
  99. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/prompt_pollution.py +51 -0
  100. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/repetitive_thinking.py +63 -0
  101. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/shell_when_tool_exists.py +53 -0
  102. infinidev-0.14.3/src/infinidev/engine/behavior/checkers/small_safe_edits.py +50 -0
  103. infinidev-0.14.3/src/infinidev/engine/behavior/eval_context.py +174 -0
  104. infinidev-0.14.3/src/infinidev/engine/behavior/hook.py +79 -0
  105. infinidev-0.14.3/src/infinidev/engine/behavior/llm_checker.py +147 -0
  106. infinidev-0.14.3/src/infinidev/engine/behavior/primitives/__init__.py +77 -0
  107. infinidev-0.14.3/src/infinidev/engine/behavior/primitives/diff_inspect.py +113 -0
  108. infinidev-0.14.3/src/infinidev/engine/behavior/primitives/embeddings.py +79 -0
  109. infinidev-0.14.3/src/infinidev/engine/behavior/primitives/result_inspect.py +130 -0
  110. infinidev-0.14.3/src/infinidev/engine/behavior/primitives/scoring.py +84 -0
  111. infinidev-0.14.3/src/infinidev/engine/behavior/primitives/text.py +71 -0
  112. infinidev-0.14.3/src/infinidev/engine/behavior/primitives/tool_inspect.py +133 -0
  113. infinidev-0.14.3/src/infinidev/engine/behavior/registry.py +96 -0
  114. infinidev-0.14.3/src/infinidev/engine/behavior/scorer.py +498 -0
  115. infinidev-0.14.3/src/infinidev/engine/command_output_store.py +936 -0
  116. infinidev-0.14.3/src/infinidev/engine/context_rank/__init__.py +6 -0
  117. infinidev-0.14.3/src/infinidev/engine/context_rank/hooks.py +153 -0
  118. infinidev-0.14.3/src/infinidev/engine/context_rank/logger.py +405 -0
  119. infinidev-0.14.3/src/infinidev/engine/context_rank/models.py +28 -0
  120. infinidev-0.14.3/src/infinidev/engine/context_rank/ranker.py +2388 -0
  121. infinidev-0.14.3/src/infinidev/engine/council/__init__.py +60 -0
  122. infinidev-0.14.3/src/infinidev/engine/council/agent_loop.py +232 -0
  123. infinidev-0.14.3/src/infinidev/engine/council/brief.py +162 -0
  124. infinidev-0.14.3/src/infinidev/engine/council/channel.py +189 -0
  125. infinidev-0.14.3/src/infinidev/engine/council/member.py +102 -0
  126. infinidev-0.14.3/src/infinidev/engine/council/moderator.py +254 -0
  127. infinidev-0.14.3/src/infinidev/engine/council/observer.py +194 -0
  128. infinidev-0.14.3/src/infinidev/engine/council/personas.py +49 -0
  129. infinidev-0.14.3/src/infinidev/engine/council/prompts.py +212 -0
  130. infinidev-0.14.3/src/infinidev/engine/council/runner.py +666 -0
  131. infinidev-0.14.3/src/infinidev/engine/engine_logging.py +369 -0
  132. infinidev-0.14.3/src/infinidev/engine/engines/__init__.py +29 -0
  133. infinidev-0.14.3/src/infinidev/engine/engines/base.py +102 -0
  134. infinidev-0.14.3/src/infinidev/engine/engines/coordinator.py +410 -0
  135. infinidev-0.14.3/src/infinidev/engine/engines/graph/__init__.py +47 -0
  136. infinidev-0.14.3/src/infinidev/engine/engines/graph/completion.py +182 -0
  137. infinidev-0.14.3/src/infinidev/engine/engines/graph/context.py +312 -0
  138. infinidev-0.14.3/src/infinidev/engine/engines/graph/domain.py +323 -0
  139. infinidev-0.14.3/src/infinidev/engine/engines/graph/engine.py +897 -0
  140. infinidev-0.14.3/src/infinidev/engine/engines/graph/ops.py +151 -0
  141. infinidev-0.14.3/src/infinidev/engine/engines/graph/persistence.py +248 -0
  142. infinidev-0.14.3/src/infinidev/engine/engines/graph/reducer.py +444 -0
  143. infinidev-0.14.3/src/infinidev/engine/engines/graph/scheduler.py +184 -0
  144. infinidev-0.14.3/src/infinidev/engine/engines/react.py +240 -0
  145. infinidev-0.14.3/src/infinidev/engine/engines/routing.py +254 -0
  146. infinidev-0.14.3/src/infinidev/engine/engines/staged_adapter.py +80 -0
  147. infinidev-0.14.3/src/infinidev/engine/engines/task.py +256 -0
  148. infinidev-0.14.3/src/infinidev/engine/file_change_tracker.py +266 -0
  149. infinidev-0.14.3/src/infinidev/engine/flows.py +43 -0
  150. infinidev-0.14.3/src/infinidev/engine/formats/__init__.py +21 -0
  151. infinidev-0.14.3/src/infinidev/engine/formats/_normalize.py +215 -0
  152. infinidev-0.14.3/src/infinidev/engine/formats/attr_function_format.py +36 -0
  153. infinidev-0.14.3/src/infinidev/engine/formats/function_call_format.py +27 -0
  154. infinidev-0.14.3/src/infinidev/engine/formats/gemma4_format.py +71 -0
  155. infinidev-0.14.3/src/infinidev/engine/formats/hermes_xml_format.py +59 -0
  156. infinidev-0.14.3/src/infinidev/engine/formats/llama_format.py +34 -0
  157. infinidev-0.14.3/src/infinidev/engine/formats/manual_json_format.py +84 -0
  158. infinidev-0.14.3/src/infinidev/engine/formats/manual_tool_call.py +25 -0
  159. infinidev-0.14.3/src/infinidev/engine/formats/mistral_format.py +66 -0
  160. infinidev-0.14.3/src/infinidev/engine/formats/qwen_format.py +26 -0
  161. infinidev-0.14.3/src/infinidev/engine/formats/qwen_pipe_format.py +26 -0
  162. infinidev-0.14.3/src/infinidev/engine/formats/search_replace_format.py +44 -0
  163. infinidev-0.14.3/src/infinidev/engine/formats/tool_call_format.py +75 -0
  164. infinidev-0.14.3/src/infinidev/engine/formats/tool_call_parser.py +175 -0
  165. infinidev-0.14.3/src/infinidev/engine/formats/tool_tag_format.py +27 -0
  166. infinidev-0.14.3/src/infinidev/engine/guidance/__init__.py +101 -0
  167. infinidev-0.14.3/src/infinidev/engine/guidance/detectors.py +592 -0
  168. infinidev-0.14.3/src/infinidev/engine/guidance/fingerprint.py +415 -0
  169. infinidev-0.14.3/src/infinidev/engine/guidance/hooks.py +98 -0
  170. infinidev-0.14.3/src/infinidev/engine/guidance/library.py +457 -0
  171. infinidev-0.14.3/src/infinidev/engine/guidance/similarity_detector.py +414 -0
  172. infinidev-0.14.3/src/infinidev/engine/guidance/test_runners.py +325 -0
  173. infinidev-0.14.3/src/infinidev/engine/history/__init__.py +10 -0
  174. infinidev-0.14.3/src/infinidev/engine/history/digest.py +170 -0
  175. infinidev-0.14.3/src/infinidev/engine/history/events.py +149 -0
  176. infinidev-0.14.3/src/infinidev/engine/history/redaction.py +71 -0
  177. infinidev-0.14.3/src/infinidev/engine/history/store.py +484 -0
  178. infinidev-0.14.3/src/infinidev/engine/hooks/__init__.py +9 -0
  179. infinidev-0.14.3/src/infinidev/engine/hooks/hook_context.py +42 -0
  180. infinidev-0.14.3/src/infinidev/engine/hooks/hook_event.py +42 -0
  181. infinidev-0.14.3/src/infinidev/engine/hooks/hook_manager.py +105 -0
  182. infinidev-0.14.3/src/infinidev/engine/hooks/hooks.py +44 -0
  183. infinidev-0.14.3/src/infinidev/engine/hooks/ui_hooks.py +277 -0
  184. infinidev-0.14.3/src/infinidev/engine/image_generation.py +568 -0
  185. infinidev-0.14.3/src/infinidev/engine/image_ledger.py +493 -0
  186. infinidev-0.14.3/src/infinidev/engine/ken_client.py +406 -0
  187. infinidev-0.14.3/src/infinidev/engine/ken_session.py +587 -0
  188. infinidev-0.14.3/src/infinidev/engine/llm_client.py +402 -0
  189. infinidev-0.14.3/src/infinidev/engine/loop/__init__.py +56 -0
  190. infinidev-0.14.3/src/infinidev/engine/loop/action_record.py +34 -0
  191. infinidev-0.14.3/src/infinidev/engine/loop/behavior_rules.py +182 -0
  192. infinidev-0.14.3/src/infinidev/engine/loop/behavior_tracker.py +106 -0
  193. infinidev-0.14.3/src/infinidev/engine/loop/classified_calls.py +49 -0
  194. infinidev-0.14.3/src/infinidev/engine/loop/context.py +1039 -0
  195. infinidev-0.14.3/src/infinidev/engine/loop/context_builder.py +541 -0
  196. infinidev-0.14.3/src/infinidev/engine/loop/context_manager.py +165 -0
  197. infinidev-0.14.3/src/infinidev/engine/loop/critic.py +923 -0
  198. infinidev-0.14.3/src/infinidev/engine/loop/critic_liaison.py +328 -0
  199. infinidev-0.14.3/src/infinidev/engine/loop/engine.py +1871 -0
  200. infinidev-0.14.3/src/infinidev/engine/loop/execution_context.py +130 -0
  201. infinidev-0.14.3/src/infinidev/engine/loop/guardrail_runner.py +159 -0
  202. infinidev-0.14.3/src/infinidev/engine/loop/guidance_handler.py +60 -0
  203. infinidev-0.14.3/src/infinidev/engine/loop/llm_call_result.py +43 -0
  204. infinidev-0.14.3/src/infinidev/engine/loop/llm_caller.py +783 -0
  205. infinidev-0.14.3/src/infinidev/engine/loop/loop_guard.py +482 -0
  206. infinidev-0.14.3/src/infinidev/engine/loop/loop_plan.py +467 -0
  207. infinidev-0.14.3/src/infinidev/engine/loop/loop_state.py +204 -0
  208. infinidev-0.14.3/src/infinidev/engine/loop/model_context.py +283 -0
  209. infinidev-0.14.3/src/infinidev/engine/loop/models.py +22 -0
  210. infinidev-0.14.3/src/infinidev/engine/loop/opened_file.py +33 -0
  211. infinidev-0.14.3/src/infinidev/engine/loop/plan_step.py +54 -0
  212. infinidev-0.14.3/src/infinidev/engine/loop/prompt/__init__.py +11 -0
  213. infinidev-0.14.3/src/infinidev/engine/loop/prompt/text.py +573 -0
  214. infinidev-0.14.3/src/infinidev/engine/loop/prompt/tools_section.py +130 -0
  215. infinidev-0.14.3/src/infinidev/engine/loop/run_report.py +144 -0
  216. infinidev-0.14.3/src/infinidev/engine/loop/semantic_stagnation.py +168 -0
  217. infinidev-0.14.3/src/infinidev/engine/loop/step_complete_gate.py +597 -0
  218. infinidev-0.14.3/src/infinidev/engine/loop/step_manager.py +704 -0
  219. infinidev-0.14.3/src/infinidev/engine/loop/step_operation.py +19 -0
  220. infinidev-0.14.3/src/infinidev/engine/loop/step_result.py +43 -0
  221. infinidev-0.14.3/src/infinidev/engine/loop/step_summarizer.py +217 -0
  222. infinidev-0.14.3/src/infinidev/engine/loop/tool_processor.py +203 -0
  223. infinidev-0.14.3/src/infinidev/engine/loop/tool_runner.py +1542 -0
  224. infinidev-0.14.3/src/infinidev/engine/loop/user_message_injector.py +195 -0
  225. infinidev-0.14.3/src/infinidev/engine/loop/work_summary.py +271 -0
  226. infinidev-0.14.3/src/infinidev/engine/mcp_client.py +931 -0
  227. infinidev-0.14.3/src/infinidev/engine/mcp_runtime_bridge.py +68 -0
  228. infinidev-0.14.3/src/infinidev/engine/model_execution_policy.py +146 -0
  229. infinidev-0.14.3/src/infinidev/engine/multimodal.py +285 -0
  230. infinidev-0.14.3/src/infinidev/engine/orchestration/__init__.py +47 -0
  231. infinidev-0.14.3/src/infinidev/engine/orchestration/chat_agent.py +973 -0
  232. infinidev-0.14.3/src/infinidev/engine/orchestration/chat_agent_result.py +65 -0
  233. infinidev-0.14.3/src/infinidev/engine/orchestration/escalation_packet.py +74 -0
  234. infinidev-0.14.3/src/infinidev/engine/orchestration/hooks.py +238 -0
  235. infinidev-0.14.3/src/infinidev/engine/orchestration/pipeline.py +1363 -0
  236. infinidev-0.14.3/src/infinidev/engine/orchestration/request_signals.py +162 -0
  237. infinidev-0.14.3/src/infinidev/engine/orchestration/staged_pipeline.py +1471 -0
  238. infinidev-0.14.3/src/infinidev/engine/orchestration/task_renderer.py +117 -0
  239. infinidev-0.14.3/src/infinidev/engine/orchestration/task_schema.py +299 -0
  240. infinidev-0.14.3/src/infinidev/engine/oversized_result.py +268 -0
  241. infinidev-0.14.3/src/infinidev/engine/phases/__init__.py +6 -0
  242. infinidev-0.14.3/src/infinidev/engine/phases/investigator.py +275 -0
  243. infinidev-0.14.3/src/infinidev/engine/phases/phase_engine.py +359 -0
  244. infinidev-0.14.3/src/infinidev/engine/phases/phase_prompts.py +11 -0
  245. infinidev-0.14.3/src/infinidev/engine/phases/plan_executor.py +167 -0
  246. infinidev-0.14.3/src/infinidev/engine/phases/plan_generator.py +314 -0
  247. infinidev-0.14.3/src/infinidev/engine/phases/plan_validator.py +215 -0
  248. infinidev-0.14.3/src/infinidev/engine/phases/question_generator.py +358 -0
  249. infinidev-0.14.3/src/infinidev/engine/prompt_composition.py +96 -0
  250. infinidev-0.14.3/src/infinidev/engine/prompt_layers.py +90 -0
  251. infinidev-0.14.3/src/infinidev/engine/prompt_profile.py +124 -0
  252. infinidev-0.14.3/src/infinidev/engine/runtime_events_store.py +138 -0
  253. infinidev-0.14.3/src/infinidev/engine/runtime_state.py +111 -0
  254. infinidev-0.14.3/src/infinidev/engine/schema_sanitizer.py +507 -0
  255. infinidev-0.14.3/src/infinidev/engine/static_analysis_timer.py +175 -0
  256. infinidev-0.14.3/src/infinidev/engine/subprocess_runner.py +110 -0
  257. infinidev-0.14.3/src/infinidev/engine/subscription_safety.py +63 -0
  258. infinidev-0.14.3/src/infinidev/engine/summarizer.py +201 -0
  259. infinidev-0.14.3/src/infinidev/engine/task_runtime.py +170 -0
  260. infinidev-0.14.3/src/infinidev/engine/test_checkpoint.py +192 -0
  261. infinidev-0.14.3/src/infinidev/engine/test_environment.py +76 -0
  262. infinidev-0.14.3/src/infinidev/engine/test_parsers/__init__.py +100 -0
  263. infinidev-0.14.3/src/infinidev/engine/test_parsers/base.py +178 -0
  264. infinidev-0.14.3/src/infinidev/engine/test_parsers/cargo_parser.py +88 -0
  265. infinidev-0.14.3/src/infinidev/engine/test_parsers/go_parser.py +91 -0
  266. infinidev-0.14.3/src/infinidev/engine/test_parsers/jest_parser.py +122 -0
  267. infinidev-0.14.3/src/infinidev/engine/test_parsers/mocha_parser.py +94 -0
  268. infinidev-0.14.3/src/infinidev/engine/test_parsers/node_test_parser.py +120 -0
  269. infinidev-0.14.3/src/infinidev/engine/test_parsers/pytest_parser.py +156 -0
  270. infinidev-0.14.3/src/infinidev/engine/test_parsers/rspec_parser.py +215 -0
  271. infinidev-0.14.3/src/infinidev/engine/token_usage.py +77 -0
  272. infinidev-0.14.3/src/infinidev/engine/tool_dispatch.py +725 -0
  273. infinidev-0.14.3/src/infinidev/engine/tool_executor.py +638 -0
  274. infinidev-0.14.3/src/infinidev/engine/tool_progress.py +83 -0
  275. infinidev-0.14.3/src/infinidev/engine/tool_routing.py +172 -0
  276. infinidev-0.14.3/src/infinidev/engine/trace_log.py +202 -0
  277. infinidev-0.14.3/src/infinidev/engine/tree/__init__.py +5 -0
  278. infinidev-0.14.3/src/infinidev/engine/tree/blocker.py +28 -0
  279. infinidev-0.14.3/src/infinidev/engine/tree/brainstorm.py +351 -0
  280. infinidev-0.14.3/src/infinidev/engine/tree/brainstorm_context.py +645 -0
  281. infinidev-0.14.3/src/infinidev/engine/tree/brainstorming_detector.py +45 -0
  282. infinidev-0.14.3/src/infinidev/engine/tree/context.py +465 -0
  283. infinidev-0.14.3/src/infinidev/engine/tree/engine.py +936 -0
  284. infinidev-0.14.3/src/infinidev/engine/tree/fact.py +30 -0
  285. infinidev-0.14.3/src/infinidev/engine/tree/models.py +135 -0
  286. infinidev-0.14.3/src/infinidev/engine/tree/question.py +30 -0
  287. infinidev-0.14.3/src/infinidev/engine/tree/tree_node.py +69 -0
  288. infinidev-0.14.3/src/infinidev/engine/tree/tree_state.py +110 -0
  289. infinidev-0.14.3/src/infinidev/engine/user_hooks/__init__.py +42 -0
  290. infinidev-0.14.3/src/infinidev/engine/user_hooks/config.py +245 -0
  291. infinidev-0.14.3/src/infinidev/engine/user_hooks/events.py +67 -0
  292. infinidev-0.14.3/src/infinidev/engine/user_hooks/payload.py +75 -0
  293. infinidev-0.14.3/src/infinidev/engine/user_hooks/render.py +55 -0
  294. infinidev-0.14.3/src/infinidev/engine/user_hooks/runner.py +184 -0
  295. infinidev-0.14.3/src/infinidev/engine/user_preferences.py +147 -0
  296. infinidev-0.14.3/src/infinidev/engine/working_memory.py +1162 -0
  297. infinidev-0.14.3/src/infinidev/engine/workspace_baseline.py +239 -0
  298. infinidev-0.14.3/src/infinidev/flows/event_listeners.py +58 -0
  299. infinidev-0.14.3/src/infinidev/gather/__init__.py +10 -0
  300. infinidev-0.14.3/src/infinidev/gather/classification_result.py +23 -0
  301. infinidev-0.14.3/src/infinidev/gather/classifier.py +161 -0
  302. infinidev-0.14.3/src/infinidev/gather/compiler.py +24 -0
  303. infinidev-0.14.3/src/infinidev/gather/depth_config.py +37 -0
  304. infinidev-0.14.3/src/infinidev/gather/depth_level.py +19 -0
  305. infinidev-0.14.3/src/infinidev/gather/gather_brief.py +61 -0
  306. infinidev-0.14.3/src/infinidev/gather/mini_agent.py +179 -0
  307. infinidev-0.14.3/src/infinidev/gather/models.py +67 -0
  308. infinidev-0.14.3/src/infinidev/gather/question.py +22 -0
  309. infinidev-0.14.3/src/infinidev/gather/question_result.py +21 -0
  310. infinidev-0.14.3/src/infinidev/gather/questions.py +20 -0
  311. infinidev-0.14.3/src/infinidev/gather/runner.py +424 -0
  312. infinidev-0.14.3/src/infinidev/gather/templates/__init__.py +1 -0
  313. infinidev-0.14.3/src/infinidev/gather/templates/bug.py +64 -0
  314. infinidev-0.14.3/src/infinidev/gather/templates/feature.py +66 -0
  315. infinidev-0.14.3/src/infinidev/gather/templates/other.py +37 -0
  316. infinidev-0.14.3/src/infinidev/gather/templates/refactor.py +54 -0
  317. infinidev-0.14.3/src/infinidev/gather/templates/sysadmin.py +50 -0
  318. infinidev-0.14.3/src/infinidev/gather/ticket_type.py +19 -0
  319. infinidev-0.14.3/src/infinidev/prompts/analyst/__init__.py +6 -0
  320. infinidev-0.14.3/src/infinidev/prompts/analyst/planner_prompt.py +13 -0
  321. infinidev-0.14.3/src/infinidev/prompts/analyst/planning_vocabulary.py +39 -0
  322. infinidev-0.14.3/src/infinidev/prompts/analyst/stage_planner_prompt.py +156 -0
  323. infinidev-0.14.3/src/infinidev/prompts/analyst/task_planner_prompt.py +139 -0
  324. infinidev-0.14.3/src/infinidev/prompts/chat_agent/__init__.py +131 -0
  325. infinidev-0.14.3/src/infinidev/prompts/chat_agent/system.py +172 -0
  326. infinidev-0.14.3/src/infinidev/prompts/flows/__init__.py +86 -0
  327. infinidev-0.14.3/src/infinidev/prompts/flows/brainstorm.py +51 -0
  328. infinidev-0.14.3/src/infinidev/prompts/flows/develop.py +222 -0
  329. infinidev-0.14.3/src/infinidev/prompts/flows/document.py +106 -0
  330. infinidev-0.14.3/src/infinidev/prompts/flows/explore.py +47 -0
  331. infinidev-0.14.3/src/infinidev/prompts/flows/sysadmin.py +143 -0
  332. infinidev-0.14.3/src/infinidev/prompts/graph/__init__.py +8 -0
  333. infinidev-0.14.3/src/infinidev/prompts/graph/graph_protocol.py +64 -0
  334. infinidev-0.14.3/src/infinidev/prompts/graph/graph_vocabulary.py +71 -0
  335. infinidev-0.14.3/src/infinidev/prompts/init_project.py +92 -0
  336. infinidev-0.14.3/src/infinidev/prompts/phases/__init__.py +176 -0
  337. infinidev-0.14.3/src/infinidev/prompts/phases/execute.py +279 -0
  338. infinidev-0.14.3/src/infinidev/prompts/phases/investigate.py +230 -0
  339. infinidev-0.14.3/src/infinidev/prompts/phases/plan.py +275 -0
  340. infinidev-0.14.3/src/infinidev/prompts/phases/questions.py +135 -0
  341. infinidev-0.14.3/src/infinidev/prompts/project_instructions.py +128 -0
  342. infinidev-0.14.3/src/infinidev/prompts/reviewer/__init__.py +1 -0
  343. infinidev-0.14.3/src/infinidev/prompts/reviewer/evidence_system.py +36 -0
  344. infinidev-0.14.3/src/infinidev/prompts/reviewer/extractor_system.py +99 -0
  345. infinidev-0.14.3/src/infinidev/prompts/reviewer/judge_system.py +188 -0
  346. infinidev-0.14.3/src/infinidev/prompts/reviewer/system.py +192 -0
  347. infinidev-0.14.3/src/infinidev/prompts/shared.py +76 -0
  348. infinidev-0.14.3/src/infinidev/prompts/tech/__init__.py +33 -0
  349. infinidev-0.14.3/src/infinidev/prompts/tech/javascript.py +46 -0
  350. infinidev-0.14.3/src/infinidev/prompts/tech/python.py +45 -0
  351. infinidev-0.14.3/src/infinidev/prompts/tech/rust.py +46 -0
  352. infinidev-0.14.3/src/infinidev/prompts/tech/typescript.py +47 -0
  353. infinidev-0.14.3/src/infinidev/prompts/tool_hints.py +732 -0
  354. infinidev-0.14.3/src/infinidev/prompts/variants/__init__.py +96 -0
  355. infinidev-0.14.3/src/infinidev/prompts/variants/coding.py +962 -0
  356. infinidev-0.14.3/src/infinidev/prompts/variants/extra_simple.py +193 -0
  357. infinidev-0.14.3/src/infinidev/prompts/variants/full.py +88 -0
  358. infinidev-0.14.3/src/infinidev/prompts/variants/generalized.py +413 -0
  359. infinidev-0.14.3/src/infinidev/tools/__init__.py +370 -0
  360. infinidev-0.14.3/src/infinidev/tools/base/__init__.py +15 -0
  361. infinidev-0.14.3/src/infinidev/tools/base/base_tool.py +422 -0
  362. infinidev-0.14.3/src/infinidev/tools/base/command_risk.py +656 -0
  363. infinidev-0.14.3/src/infinidev/tools/base/context.py +297 -0
  364. infinidev-0.14.3/src/infinidev/tools/base/data/README.md +28 -0
  365. infinidev-0.14.3/src/infinidev/tools/base/data/ken__static-qwen3-r512-v2-es-query-adapter.npz +0 -0
  366. infinidev-0.14.3/src/infinidev/tools/base/data/ken__static-qwen3-r512-v2.npz +0 -0
  367. infinidev-0.14.3/src/infinidev/tools/base/db.py +31 -0
  368. infinidev-0.14.3/src/infinidev/tools/base/dedup.py +138 -0
  369. infinidev-0.14.3/src/infinidev/tools/base/embeddings.py +154 -0
  370. infinidev-0.14.3/src/infinidev/tools/base/mnn_embedder.py +327 -0
  371. infinidev-0.14.3/src/infinidev/tools/base/permissions.py +136 -0
  372. infinidev-0.14.3/src/infinidev/tools/base/static_qwen3_embedder.py +335 -0
  373. infinidev-0.14.3/src/infinidev/tools/base/tool_effects.py +313 -0
  374. infinidev-0.14.3/src/infinidev/tools/chat/__init__.py +5 -0
  375. infinidev-0.14.3/src/infinidev/tools/chat/send_message.py +12 -0
  376. infinidev-0.14.3/src/infinidev/tools/chat/send_message_input.py +16 -0
  377. infinidev-0.14.3/src/infinidev/tools/chat/send_message_tool.py +32 -0
  378. infinidev-0.14.3/src/infinidev/tools/chat_agent/__init__.py +14 -0
  379. infinidev-0.14.3/src/infinidev/tools/chat_agent/escalate_tool.py +116 -0
  380. infinidev-0.14.3/src/infinidev/tools/chat_agent/respond_tool.py +51 -0
  381. infinidev-0.14.3/src/infinidev/tools/code_intel/__init__.py +26 -0
  382. infinidev-0.14.3/src/infinidev/tools/code_intel/analyze_code.py +11 -0
  383. infinidev-0.14.3/src/infinidev/tools/code_intel/analyze_code_input.py +20 -0
  384. infinidev-0.14.3/src/infinidev/tools/code_intel/analyze_code_tool.py +84 -0
  385. infinidev-0.14.3/src/infinidev/tools/code_intel/find_references.py +10 -0
  386. infinidev-0.14.3/src/infinidev/tools/code_intel/find_references_input.py +16 -0
  387. infinidev-0.14.3/src/infinidev/tools/code_intel/find_references_tool.py +70 -0
  388. infinidev-0.14.3/src/infinidev/tools/code_intel/find_similar_methods_tool.py +167 -0
  389. infinidev-0.14.3/src/infinidev/tools/code_intel/get_symbol_code.py +11 -0
  390. infinidev-0.14.3/src/infinidev/tools/code_intel/get_symbol_code_input.py +21 -0
  391. infinidev-0.14.3/src/infinidev/tools/code_intel/get_symbol_code_tool.py +83 -0
  392. infinidev-0.14.3/src/infinidev/tools/code_intel/iter_symbols_tool.py +166 -0
  393. infinidev-0.14.3/src/infinidev/tools/code_intel/list_symbols.py +10 -0
  394. infinidev-0.14.3/src/infinidev/tools/code_intel/list_symbols_input.py +26 -0
  395. infinidev-0.14.3/src/infinidev/tools/code_intel/list_symbols_tool.py +62 -0
  396. infinidev-0.14.3/src/infinidev/tools/code_intel/move_symbol.py +13 -0
  397. infinidev-0.14.3/src/infinidev/tools/code_intel/move_symbol_input.py +30 -0
  398. infinidev-0.14.3/src/infinidev/tools/code_intel/move_symbol_tool.py +387 -0
  399. infinidev-0.14.3/src/infinidev/tools/code_intel/project_stats_tool.py +98 -0
  400. infinidev-0.14.3/src/infinidev/tools/code_intel/project_structure.py +11 -0
  401. infinidev-0.14.3/src/infinidev/tools/code_intel/project_structure_input.py +20 -0
  402. infinidev-0.14.3/src/infinidev/tools/code_intel/project_structure_tool.py +126 -0
  403. infinidev-0.14.3/src/infinidev/tools/code_intel/rename_symbol.py +12 -0
  404. infinidev-0.14.3/src/infinidev/tools/code_intel/rename_symbol_input.py +25 -0
  405. infinidev-0.14.3/src/infinidev/tools/code_intel/rename_symbol_tool.py +231 -0
  406. infinidev-0.14.3/src/infinidev/tools/code_intel/search_by_docstring_tool.py +136 -0
  407. infinidev-0.14.3/src/infinidev/tools/code_intel/search_symbols.py +10 -0
  408. infinidev-0.14.3/src/infinidev/tools/code_intel/search_symbols_input.py +23 -0
  409. infinidev-0.14.3/src/infinidev/tools/code_intel/search_symbols_tool.py +61 -0
  410. infinidev-0.14.3/src/infinidev/tools/consult_assistant_tool.py +96 -0
  411. infinidev-0.14.3/src/infinidev/tools/council/__init__.py +35 -0
  412. infinidev-0.14.3/src/infinidev/tools/council/channel_tools.py +125 -0
  413. infinidev-0.14.3/src/infinidev/tools/council/moderator_tools.py +241 -0
  414. infinidev-0.14.3/src/infinidev/tools/docs/__init__.py +7 -0
  415. infinidev-0.14.3/src/infinidev/tools/docs/delete_documentation.py +16 -0
  416. infinidev-0.14.3/src/infinidev/tools/docs/delete_documentation_input.py +24 -0
  417. infinidev-0.14.3/src/infinidev/tools/docs/delete_documentation_tool.py +75 -0
  418. infinidev-0.14.3/src/infinidev/tools/docs/doc_flow.py +412 -0
  419. infinidev-0.14.3/src/infinidev/tools/docs/find_documentation.py +19 -0
  420. infinidev-0.14.3/src/infinidev/tools/docs/find_documentation_input.py +25 -0
  421. infinidev-0.14.3/src/infinidev/tools/docs/find_documentation_tool.py +237 -0
  422. infinidev-0.14.3/src/infinidev/tools/docs/update_documentation.py +14 -0
  423. infinidev-0.14.3/src/infinidev/tools/docs/update_documentation_input.py +18 -0
  424. infinidev-0.14.3/src/infinidev/tools/docs/update_documentation_tool.py +38 -0
  425. infinidev-0.14.3/src/infinidev/tools/file/__init__.py +23 -0
  426. infinidev-0.14.3/src/infinidev/tools/file/_helpers.py +328 -0
  427. infinidev-0.14.3/src/infinidev/tools/file/code_search.py +15 -0
  428. infinidev-0.14.3/src/infinidev/tools/file/code_search_input.py +41 -0
  429. infinidev-0.14.3/src/infinidev/tools/file/code_search_tool.py +350 -0
  430. infinidev-0.14.3/src/infinidev/tools/file/create_file.py +16 -0
  431. infinidev-0.14.3/src/infinidev/tools/file/create_file_input.py +19 -0
  432. infinidev-0.14.3/src/infinidev/tools/file/create_file_tool.py +125 -0
  433. infinidev-0.14.3/src/infinidev/tools/file/edit_file_input.py +29 -0
  434. infinidev-0.14.3/src/infinidev/tools/file/edit_file_tool.py +159 -0
  435. infinidev-0.14.3/src/infinidev/tools/file/glob_input.py +59 -0
  436. infinidev-0.14.3/src/infinidev/tools/file/glob_tool.py +298 -0
  437. infinidev-0.14.3/src/infinidev/tools/file/list_directory.py +15 -0
  438. infinidev-0.14.3/src/infinidev/tools/file/list_directory_input.py +31 -0
  439. infinidev-0.14.3/src/infinidev/tools/file/list_directory_tool.py +354 -0
  440. infinidev-0.14.3/src/infinidev/tools/file/read_file.py +18 -0
  441. infinidev-0.14.3/src/infinidev/tools/file/read_file_input.py +30 -0
  442. infinidev-0.14.3/src/infinidev/tools/file/read_file_tool.py +386 -0
  443. infinidev-0.14.3/src/infinidev/tools/file/safe_file_tools.py +287 -0
  444. infinidev-0.14.3/src/infinidev/tools/file/view_image.py +72 -0
  445. infinidev-0.14.3/src/infinidev/tools/git/__init__.py +13 -0
  446. infinidev-0.14.3/src/infinidev/tools/git/_helpers.py +109 -0
  447. infinidev-0.14.3/src/infinidev/tools/git/branch.py +18 -0
  448. infinidev-0.14.3/src/infinidev/tools/git/commit.py +14 -0
  449. infinidev-0.14.3/src/infinidev/tools/git/diff.py +12 -0
  450. infinidev-0.14.3/src/infinidev/tools/git/git_branch_input.py +22 -0
  451. infinidev-0.14.3/src/infinidev/tools/git/git_branch_tool.py +250 -0
  452. infinidev-0.14.3/src/infinidev/tools/git/git_commit_input.py +26 -0
  453. infinidev-0.14.3/src/infinidev/tools/git/git_commit_tool.py +187 -0
  454. infinidev-0.14.3/src/infinidev/tools/git/git_diff_input.py +24 -0
  455. infinidev-0.14.3/src/infinidev/tools/git/git_diff_tool.py +81 -0
  456. infinidev-0.14.3/src/infinidev/tools/git/git_push_input.py +19 -0
  457. infinidev-0.14.3/src/infinidev/tools/git/git_push_tool.py +182 -0
  458. infinidev-0.14.3/src/infinidev/tools/git/git_status_input.py +15 -0
  459. infinidev-0.14.3/src/infinidev/tools/git/git_status_tool.py +140 -0
  460. infinidev-0.14.3/src/infinidev/tools/git/push.py +14 -0
  461. infinidev-0.14.3/src/infinidev/tools/git/status.py +12 -0
  462. infinidev-0.14.3/src/infinidev/tools/history/__init__.py +12 -0
  463. infinidev-0.14.3/src/infinidev/tools/history/_common.py +54 -0
  464. infinidev-0.14.3/src/infinidev/tools/history/history_read_tool.py +93 -0
  465. infinidev-0.14.3/src/infinidev/tools/history/history_search_tool.py +143 -0
  466. infinidev-0.14.3/src/infinidev/tools/history/history_trace_tool.py +95 -0
  467. infinidev-0.14.3/src/infinidev/tools/image_generation.py +129 -0
  468. infinidev-0.14.3/src/infinidev/tools/knowledge/__init__.py +27 -0
  469. infinidev-0.14.3/src/infinidev/tools/knowledge/delete_finding.py +13 -0
  470. infinidev-0.14.3/src/infinidev/tools/knowledge/delete_finding_input.py +15 -0
  471. infinidev-0.14.3/src/infinidev/tools/knowledge/delete_finding_tool.py +48 -0
  472. infinidev-0.14.3/src/infinidev/tools/knowledge/delete_report.py +14 -0
  473. infinidev-0.14.3/src/infinidev/tools/knowledge/delete_report_input.py +20 -0
  474. infinidev-0.14.3/src/infinidev/tools/knowledge/delete_report_tool.py +86 -0
  475. infinidev-0.14.3/src/infinidev/tools/knowledge/finding_types.py +60 -0
  476. infinidev-0.14.3/src/infinidev/tools/knowledge/read_command_output.py +10 -0
  477. infinidev-0.14.3/src/infinidev/tools/knowledge/read_command_output_input.py +46 -0
  478. infinidev-0.14.3/src/infinidev/tools/knowledge/read_command_output_tool.py +84 -0
  479. infinidev-0.14.3/src/infinidev/tools/knowledge/read_report.py +14 -0
  480. infinidev-0.14.3/src/infinidev/tools/knowledge/read_report_input.py +24 -0
  481. infinidev-0.14.3/src/infinidev/tools/knowledge/read_report_tool.py +122 -0
  482. infinidev-0.14.3/src/infinidev/tools/knowledge/record_finding.py +16 -0
  483. infinidev-0.14.3/src/infinidev/tools/knowledge/record_finding_input.py +78 -0
  484. infinidev-0.14.3/src/infinidev/tools/knowledge/record_finding_tool.py +164 -0
  485. infinidev-0.14.3/src/infinidev/tools/knowledge/reject_finding.py +13 -0
  486. infinidev-0.14.3/src/infinidev/tools/knowledge/reject_finding_input.py +16 -0
  487. infinidev-0.14.3/src/infinidev/tools/knowledge/reject_finding_tool.py +63 -0
  488. infinidev-0.14.3/src/infinidev/tools/knowledge/search_findings.py +14 -0
  489. infinidev-0.14.3/src/infinidev/tools/knowledge/search_findings_input.py +41 -0
  490. infinidev-0.14.3/src/infinidev/tools/knowledge/search_findings_tool.py +41 -0
  491. infinidev-0.14.3/src/infinidev/tools/knowledge/search_knowledge.py +13 -0
  492. infinidev-0.14.3/src/infinidev/tools/knowledge/search_knowledge_input.py +55 -0
  493. infinidev-0.14.3/src/infinidev/tools/knowledge/search_knowledge_tool.py +311 -0
  494. infinidev-0.14.3/src/infinidev/tools/knowledge/summarize_findings.py +13 -0
  495. infinidev-0.14.3/src/infinidev/tools/knowledge/summarize_findings_input.py +22 -0
  496. infinidev-0.14.3/src/infinidev/tools/knowledge/summarize_findings_tool.py +103 -0
  497. infinidev-0.14.3/src/infinidev/tools/knowledge/update_finding.py +16 -0
  498. infinidev-0.14.3/src/infinidev/tools/knowledge/update_finding_input.py +52 -0
  499. infinidev-0.14.3/src/infinidev/tools/knowledge/update_finding_tool.py +191 -0
  500. infinidev-0.14.3/src/infinidev/tools/knowledge/validate_finding.py +13 -0
  501. infinidev-0.14.3/src/infinidev/tools/knowledge/validate_finding_input.py +22 -0
  502. infinidev-0.14.3/src/infinidev/tools/knowledge/validate_finding_tool.py +80 -0
  503. infinidev-0.14.3/src/infinidev/tools/knowledge/write_report.py +14 -0
  504. infinidev-0.14.3/src/infinidev/tools/knowledge/write_report_input.py +20 -0
  505. infinidev-0.14.3/src/infinidev/tools/knowledge/write_report_tool.py +108 -0
  506. infinidev-0.14.3/src/infinidev/tools/mcp_bridge.py +475 -0
  507. infinidev-0.14.3/src/infinidev/tools/meta/__init__.py +9 -0
  508. infinidev-0.14.3/src/infinidev/tools/meta/declare_test_command_tool.py +81 -0
  509. infinidev-0.14.3/src/infinidev/tools/meta/help_content.py +113 -0
  510. infinidev-0.14.3/src/infinidev/tools/meta/help_input.py +16 -0
  511. infinidev-0.14.3/src/infinidev/tools/meta/help_tool.py +264 -0
  512. infinidev-0.14.3/src/infinidev/tools/meta/plan_tools.py +315 -0
  513. infinidev-0.14.3/src/infinidev/tools/meta/recall_context_tool.py +68 -0
  514. infinidev-0.14.3/src/infinidev/tools/meta/request_capability_tool.py +51 -0
  515. infinidev-0.14.3/src/infinidev/tools/meta/tail_test_output_tool.py +189 -0
  516. infinidev-0.14.3/src/infinidev/tools/permission.py +182 -0
  517. infinidev-0.14.3/src/infinidev/tools/planner/__init__.py +14 -0
  518. infinidev-0.14.3/src/infinidev/tools/planner/emit_plan_tool.py +219 -0
  519. infinidev-0.14.3/src/infinidev/tools/planner/stage_decision_tools.py +197 -0
  520. infinidev-0.14.3/src/infinidev/tools/shell/__init__.py +17 -0
  521. infinidev-0.14.3/src/infinidev/tools/shell/background_manager.py +428 -0
  522. infinidev-0.14.3/src/infinidev/tools/shell/background_status.py +6 -0
  523. infinidev-0.14.3/src/infinidev/tools/shell/background_status_input.py +20 -0
  524. infinidev-0.14.3/src/infinidev/tools/shell/background_status_tool.py +79 -0
  525. infinidev-0.14.3/src/infinidev/tools/shell/code_interpreter.py +18 -0
  526. infinidev-0.14.3/src/infinidev/tools/shell/code_interpreter_input.py +33 -0
  527. infinidev-0.14.3/src/infinidev/tools/shell/code_interpreter_tool.py +279 -0
  528. infinidev-0.14.3/src/infinidev/tools/shell/execute_command.py +15 -0
  529. infinidev-0.14.3/src/infinidev/tools/shell/execute_command_input.py +53 -0
  530. infinidev-0.14.3/src/infinidev/tools/shell/execute_command_tool.py +611 -0
  531. infinidev-0.14.3/src/infinidev/tools/shell/run_in_background.py +6 -0
  532. infinidev-0.14.3/src/infinidev/tools/shell/run_in_background_input.py +24 -0
  533. infinidev-0.14.3/src/infinidev/tools/shell/run_in_background_tool.py +78 -0
  534. infinidev-0.14.3/src/infinidev/tools/shell/shell_invocation.py +53 -0
  535. infinidev-0.14.3/src/infinidev/tools/shell/stop_background_task.py +6 -0
  536. infinidev-0.14.3/src/infinidev/tools/shell/stop_background_task_input.py +17 -0
  537. infinidev-0.14.3/src/infinidev/tools/shell/stop_background_task_tool.py +58 -0
  538. infinidev-0.14.3/src/infinidev/tools/shell/wait_for_background_task.py +10 -0
  539. infinidev-0.14.3/src/infinidev/tools/shell/wait_for_background_task_input.py +36 -0
  540. infinidev-0.14.3/src/infinidev/tools/shell/wait_for_background_task_tool.py +121 -0
  541. infinidev-0.14.3/src/infinidev/tools/stdin_prompt.py +78 -0
  542. infinidev-0.14.3/src/infinidev/tools/web/__init__.py +7 -0
  543. infinidev-0.14.3/src/infinidev/tools/web/backends.py +104 -0
  544. infinidev-0.14.3/src/infinidev/tools/web/code_search_web.py +20 -0
  545. infinidev-0.14.3/src/infinidev/tools/web/code_search_web_input.py +39 -0
  546. infinidev-0.14.3/src/infinidev/tools/web/code_search_web_tool.py +86 -0
  547. infinidev-0.14.3/src/infinidev/tools/web/fetch.py +16 -0
  548. infinidev-0.14.3/src/infinidev/tools/web/rate_limiter.py +43 -0
  549. infinidev-0.14.3/src/infinidev/tools/web/robots_checker.py +59 -0
  550. infinidev-0.14.3/src/infinidev/tools/web/search.py +19 -0
  551. infinidev-0.14.3/src/infinidev/tools/web/web_fetch_input.py +25 -0
  552. infinidev-0.14.3/src/infinidev/tools/web/web_fetch_tool.py +175 -0
  553. infinidev-0.14.3/src/infinidev/tools/web/web_search_input.py +24 -0
  554. infinidev-0.14.3/src/infinidev/tools/web/web_search_tool.py +58 -0
  555. infinidev-0.14.3/src/infinidev/ui/app.py +1714 -0
  556. infinidev-0.14.3/src/infinidev/ui/attachments.py +242 -0
  557. infinidev-0.14.3/src/infinidev/ui/clipboard.py +139 -0
  558. infinidev-0.14.3/src/infinidev/ui/context_calculator.py +261 -0
  559. infinidev-0.14.3/src/infinidev/ui/controls/__init__.py +1 -0
  560. infinidev-0.14.3/src/infinidev/ui/controls/_widthutil.py +47 -0
  561. infinidev-0.14.3/src/infinidev/ui/controls/autocomplete.py +138 -0
  562. infinidev-0.14.3/src/infinidev/ui/controls/chat_history.py +690 -0
  563. infinidev-0.14.3/src/infinidev/ui/controls/chat_input.py +164 -0
  564. infinidev-0.14.3/src/infinidev/ui/controls/clickable_scrollbar.py +193 -0
  565. infinidev-0.14.3/src/infinidev/ui/controls/composer.py +169 -0
  566. infinidev-0.14.3/src/infinidev/ui/controls/critic_widget.py +150 -0
  567. infinidev-0.14.3/src/infinidev/ui/controls/directory_tree.py +149 -0
  568. infinidev-0.14.3/src/infinidev/ui/controls/directory_tree_control.py +352 -0
  569. infinidev-0.14.3/src/infinidev/ui/controls/file_diff.py +243 -0
  570. infinidev-0.14.3/src/infinidev/ui/controls/file_editor.py +118 -0
  571. infinidev-0.14.3/src/infinidev/ui/controls/file_picker.py +113 -0
  572. infinidev-0.14.3/src/infinidev/ui/controls/file_picker_results_control.py +165 -0
  573. infinidev-0.14.3/src/infinidev/ui/controls/file_picker_state.py +179 -0
  574. infinidev-0.14.3/src/infinidev/ui/controls/footer_control.py +50 -0
  575. infinidev-0.14.3/src/infinidev/ui/controls/image_viewer.py +286 -0
  576. infinidev-0.14.3/src/infinidev/ui/controls/markdown_render.py +130 -0
  577. infinidev-0.14.3/src/infinidev/ui/controls/message_groups.py +95 -0
  578. infinidev-0.14.3/src/infinidev/ui/controls/message_widgets.py +916 -0
  579. infinidev-0.14.3/src/infinidev/ui/controls/scrollable_text.py +88 -0
  580. infinidev-0.14.3/src/infinidev/ui/controls/search_bar.py +105 -0
  581. infinidev-0.14.3/src/infinidev/ui/controls/status_bar.py +15 -0
  582. infinidev-0.14.3/src/infinidev/ui/controls/status_bar_control.py +79 -0
  583. infinidev-0.14.3/src/infinidev/ui/controls/status_line.py +256 -0
  584. infinidev-0.14.3/src/infinidev/ui/controls/tab_bar.py +75 -0
  585. infinidev-0.14.3/src/infinidev/ui/controls/tool_call_widget.py +1097 -0
  586. infinidev-0.14.3/src/infinidev/ui/dialogs/__init__.py +1 -0
  587. infinidev-0.14.3/src/infinidev/ui/dialogs/agents_browser.py +78 -0
  588. infinidev-0.14.3/src/infinidev/ui/dialogs/background_tasks_browser.py +120 -0
  589. infinidev-0.14.3/src/infinidev/ui/dialogs/base.py +152 -0
  590. infinidev-0.14.3/src/infinidev/ui/dialogs/cancel_task.py +31 -0
  591. infinidev-0.14.3/src/infinidev/ui/dialogs/debug_panel.py +336 -0
  592. infinidev-0.14.3/src/infinidev/ui/dialogs/docs_browser.py +34 -0
  593. infinidev-0.14.3/src/infinidev/ui/dialogs/docs_content_control.py +35 -0
  594. infinidev-0.14.3/src/infinidev/ui/dialogs/docs_list_control.py +47 -0
  595. infinidev-0.14.3/src/infinidev/ui/dialogs/dropdown_control.py +177 -0
  596. infinidev-0.14.3/src/infinidev/ui/dialogs/findings_browser.py +37 -0
  597. infinidev-0.14.3/src/infinidev/ui/dialogs/findings_detail_control.py +128 -0
  598. infinidev-0.14.3/src/infinidev/ui/dialogs/findings_list_control.py +61 -0
  599. infinidev-0.14.3/src/infinidev/ui/dialogs/model_picker.py +84 -0
  600. infinidev-0.14.3/src/infinidev/ui/dialogs/notes_browser.py +83 -0
  601. infinidev-0.14.3/src/infinidev/ui/dialogs/permission_detail.py +153 -0
  602. infinidev-0.14.3/src/infinidev/ui/dialogs/project_search.py +120 -0
  603. infinidev-0.14.3/src/infinidev/ui/dialogs/search_preview_control.py +77 -0
  604. infinidev-0.14.3/src/infinidev/ui/dialogs/search_results_control.py +79 -0
  605. infinidev-0.14.3/src/infinidev/ui/dialogs/sections_control.py +158 -0
  606. infinidev-0.14.3/src/infinidev/ui/dialogs/setting_value_editor.py +66 -0
  607. infinidev-0.14.3/src/infinidev/ui/dialogs/settings_control.py +179 -0
  608. infinidev-0.14.3/src/infinidev/ui/dialogs/settings_editor.py +73 -0
  609. infinidev-0.14.3/src/infinidev/ui/dialogs/settings_editor_state.py +698 -0
  610. infinidev-0.14.3/src/infinidev/ui/dialogs/stdin_prompt.py +172 -0
  611. infinidev-0.14.3/src/infinidev/ui/dialogs/unsaved_changes.py +27 -0
  612. infinidev-0.14.3/src/infinidev/ui/event_handler.py +604 -0
  613. infinidev-0.14.3/src/infinidev/ui/handlers/__init__.py +5 -0
  614. infinidev-0.14.3/src/infinidev/ui/handlers/commands.py +701 -0
  615. infinidev-0.14.3/src/infinidev/ui/handlers/dialogs.py +707 -0
  616. infinidev-0.14.3/src/infinidev/ui/handlers/files.py +394 -0
  617. infinidev-0.14.3/src/infinidev/ui/hooks_tui.py +297 -0
  618. infinidev-0.14.3/src/infinidev/ui/keybindings.py +330 -0
  619. infinidev-0.14.3/src/infinidev/ui/layout.py +332 -0
  620. infinidev-0.14.3/src/infinidev/ui/managers/__init__.py +18 -0
  621. infinidev-0.14.3/src/infinidev/ui/managers/context_render.py +133 -0
  622. infinidev-0.14.3/src/infinidev/ui/theme.py +272 -0
  623. infinidev-0.14.3/src/infinidev/ui/widgets/context_progress_bar.py +134 -0
  624. infinidev-0.14.3/src/infinidev/ui/widgets/context_widgets.py +22 -0
  625. infinidev-0.14.3/src/infinidev/ui/widgets/file_diff_widget.py +109 -0
  626. infinidev-0.14.3/src/infinidev/ui/widgets/image_viewer.py +471 -0
  627. infinidev-0.14.3/src/infinidev/ui/widgets/progress_bar.py +107 -0
  628. infinidev-0.14.3/src/infinidev/ui/widgets/queued_message_status.py +26 -0
  629. infinidev-0.14.3/src/infinidev/ui/widgets/queued_message_widget.py +116 -0
  630. infinidev-0.14.3/src/infinidev/ui/workers.py +388 -0
@@ -0,0 +1,84 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ *.egg
8
+ *.whl
9
+ *.spec
10
+
11
+ # Logs
12
+ *.log
13
+ logs/
14
+
15
+ # Virtual environments
16
+ .venv/
17
+ venv/
18
+ .env
19
+ .env.*
20
+ !.env.example
21
+
22
+ # Infinidev local data
23
+ .infinidev/
24
+
25
+ # Local-only working notes (kept untracked on purpose)
26
+ TODO.md
27
+
28
+ # IDE
29
+ .vscode/
30
+ .idea/
31
+ *.swp
32
+ *.swo
33
+ *~
34
+
35
+ # OS
36
+ .DS_Store
37
+ Thumbs.db
38
+
39
+ # Testing / coverage
40
+ .pytest_cache/
41
+ .hypothesis/
42
+ .mypy_cache/
43
+ .ruff_cache/
44
+ .tox/
45
+ .nox/
46
+ htmlcov/
47
+ .coverage
48
+ .coverage.*
49
+ coverage.xml
50
+
51
+ # Local package/build caches
52
+ .hatch/
53
+ .uv-cache/
54
+ .uv-tmp/
55
+
56
+ # Claude code
57
+ .claude/
58
+
59
+ # Fine-tuning data (large repos + model weights)
60
+ finetune/repos/
61
+ finetune/output/
62
+ finetune/validation_report.txt
63
+ finetune/__pycache__/
64
+ unsloth_compiled_cache/
65
+
66
+ # Benchmark and example output
67
+ bench/runs/*
68
+ !bench/runs/prompt-comprehension-closure/
69
+ bench/runs/prompt-comprehension-closure/*
70
+ !bench/runs/prompt-comprehension-closure/closure.json
71
+ !bench/runs/prompt-comprehension-closure/terminal-tuples.jsonl
72
+ bench/predictions*.jsonl
73
+ examples/**/build.log
74
+ examples/**/*.db
75
+
76
+
77
+ # ken — local index, daemon socket, logs
78
+ .ken/
79
+
80
+ # SWE-bench evaluation output, regenerated per run
81
+ .infinidev_eval.json
82
+ # Downloaded embedding calibration datasets retain their upstream licenses.
83
+ bench/data/*.json
84
+ bench/data/*.jsonl
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Infinibay LLC <andres@infinibay.net>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,341 @@
1
+ Metadata-Version: 2.4
2
+ Name: infinidev
3
+ Version: 0.14.3
4
+ Summary: A terminal-based AI programming tool using agent loops.
5
+ Project-URL: Homepage, https://github.com/Infinibay/infinidev
6
+ Project-URL: Repository, https://github.com/Infinibay/infinidev.git
7
+ Project-URL: Issues, https://github.com/Infinibay/infinidev/issues
8
+ Author-email: Andres Borek <andres@infinibay.net>
9
+ License-Expression: MIT
10
+ License-File: LICENSE.md
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: POSIX :: Linux
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Software Development
20
+ Requires-Python: >=3.11
21
+ Requires-Dist: chromadb>=1.1.0
22
+ Requires-Dist: click>=8.1.7
23
+ Requires-Dist: duckduckgo-search>=8.1.0
24
+ Requires-Dist: httpx>=0.28.0
25
+ Requires-Dist: langdetect>=1.0.9
26
+ Requires-Dist: litellm!=1.82.7,!=1.82.8,>=1.81.0
27
+ Requires-Dist: numpy>=2.0.0
28
+ Requires-Dist: ollama>=0.6.0
29
+ Requires-Dist: pillow>=10.0.0
30
+ Requires-Dist: prompt-toolkit>=3.0.43
31
+ Requires-Dist: pydantic-settings>=2.10.0
32
+ Requires-Dist: pydantic>=2.11.0
33
+ Requires-Dist: python-dotenv>=1.0.0
34
+ Requires-Dist: textual>=8.1.1
35
+ Requires-Dist: tokenizers>=0.22.0
36
+ Requires-Dist: trafilatura>=2.0.0
37
+ Requires-Dist: tree-sitter-bash>=0.23.0
38
+ Requires-Dist: tree-sitter-c-sharp>=0.23.1
39
+ Requires-Dist: tree-sitter-c>=0.24.1
40
+ Requires-Dist: tree-sitter-css>=0.23.0
41
+ Requires-Dist: tree-sitter-go>=0.23.0
42
+ Requires-Dist: tree-sitter-html>=0.23.0
43
+ Requires-Dist: tree-sitter-java>=0.23.0
44
+ Requires-Dist: tree-sitter-javascript>=0.23.0
45
+ Requires-Dist: tree-sitter-json>=0.24.0
46
+ Requires-Dist: tree-sitter-kotlin>=1.1.0
47
+ Requires-Dist: tree-sitter-markdown>=0.3.0
48
+ Requires-Dist: tree-sitter-php>=0.24.1
49
+ Requires-Dist: tree-sitter-python>=0.23.0
50
+ Requires-Dist: tree-sitter-regex>=0.24.0
51
+ Requires-Dist: tree-sitter-ruby>=0.23.1
52
+ Requires-Dist: tree-sitter-rust>=0.23.0
53
+ Requires-Dist: tree-sitter-toml>=0.6.0
54
+ Requires-Dist: tree-sitter-typescript>=0.23.2
55
+ Requires-Dist: tree-sitter-xml>=0.7.0
56
+ Requires-Dist: tree-sitter-yaml>=0.6.0
57
+ Requires-Dist: tree-sitter>=0.23.0
58
+ Requires-Dist: watchfiles>=0.24.0
59
+ Requires-Dist: wordfreq>=3.1.1
60
+ Requires-Dist: yappi>=1.6.0
61
+ Provides-Extra: cuda
62
+ Requires-Dist: cupy-cuda12x>=13.0.0; extra == 'cuda'
63
+ Provides-Extra: finetune
64
+ Requires-Dist: accelerate<2,>=1.10; extra == 'finetune'
65
+ Requires-Dist: bitsandbytes<1,>=0.46; (platform_system == 'Linux' and platform_machine == 'x86_64') and extra == 'finetune'
66
+ Requires-Dist: ctranslate2<5,>=4.6; extra == 'finetune'
67
+ Requires-Dist: datasets<4.4,>4.1; extra == 'finetune'
68
+ Requires-Dist: deepspeed<1,>=0.17; (platform_system == 'Linux') and extra == 'finetune'
69
+ Requires-Dist: peft<1,>=0.17; extra == 'finetune'
70
+ Requires-Dist: sacremoses<1,>=0.1; extra == 'finetune'
71
+ Requires-Dist: sentencepiece<1,>=0.2; extra == 'finetune'
72
+ Requires-Dist: torch<3,>=2.7; extra == 'finetune'
73
+ Requires-Dist: transformers<5,>=4.57.1; extra == 'finetune'
74
+ Provides-Extra: finetune-unsloth
75
+ Requires-Dist: datasets<4.4,>4.1; extra == 'finetune-unsloth'
76
+ Requires-Dist: torch<3,>=2.7; extra == 'finetune-unsloth'
77
+ Requires-Dist: transformers<5,>=4.57.1; extra == 'finetune-unsloth'
78
+ Requires-Dist: trl<2,>=0.24; extra == 'finetune-unsloth'
79
+ Requires-Dist: unsloth<2027,>=2026.3.17; (platform_system == 'Linux' and platform_machine == 'x86_64') and extra == 'finetune-unsloth'
80
+ Provides-Extra: mnn
81
+ Requires-Dist: mnn>=3.5.0; extra == 'mnn'
82
+ Requires-Dist: transformers<5,>=4.40; extra == 'mnn'
83
+ Description-Content-Type: text/markdown
84
+
85
+ # Infinidev
86
+
87
+ A terminal-based AI programming assistant for modern coding models. It runs an autonomous agent loop that can read, write, and edit code, execute commands, manage git, search the web, and maintain a persistent knowledge base — all from your terminal.
88
+
89
+ The primary target is a single configured SOTA reasoning or coding model with a long context window, including models around 1M tokens where the provider supports them. LiteLLM keeps the backend provider-agnostic; local open-weight models through [Ollama](https://ollama.com) remain a supported compatibility path.
90
+
91
+ ![Infinidev TUI](https://raw.githubusercontent.com/Infinibay/infinidev/main/public/screenshot.png)
92
+
93
+ ## Features
94
+
95
+ - **Plan-execute-summarize loop** — the agent keeps context relevant through step summaries, evidence pointers, and on-demand recall instead of filling even a large window indiscriminately.
96
+ - **Full-featured TUI** — tabbed interface with chat, file explorer, syntax-highlighted editor, sidebar with live progress, and autocomplete for commands.
97
+ - **Live file change diffs** — collapsible widgets showing colorized unified diffs with line numbers for every file the agent modifies, updated in real time during task execution.
98
+ - **Context window tracking** — dual progress bars showing Chat Usage (your input + session history) and Task Usage (actual prompt tokens from the LLM), with automatic budget warnings when context runs low.
99
+ - **Settings editor** — modal settings browser with section grouping, inline editing, and save/cancel buttons. Accessible via `/settings`.
100
+ - **Persistent knowledge base** — the agent records what it learns about your project (classes, patterns, APIs) and recalls it across steps and future sessions.
101
+ - **Dual tool-calling modes** — auto-detects whether the LLM supports native function calling or falls back to JSON-in-text parsing.
102
+ - **30+ built-in tools** — file operations, git, shell, web search/fetch, knowledge management with semantic dedup.
103
+ - **Project-local state** — settings, DB, and logs live in `.infinidev/` inside your project directory.
104
+ - **Model management** — list, switch, and interactively pick Ollama models from the TUI.
105
+ - **Documentation management** — browse and manage cached library documentation.
106
+
107
+
108
+ ## Requirements
109
+
110
+ - Python 3.11+
111
+ - A LiteLLM-compatible model provider
112
+ - [Ollama](https://ollama.com) when using a local open-weight model
113
+ - [uv](https://docs.astral.sh/uv/) (recommended) or pip
114
+
115
+ ## Quickstart
116
+
117
+ ```bash
118
+ # Clone and install
119
+ git clone https://github.com/Infinibay/infinidev.git
120
+ cd infinidev
121
+ uv sync
122
+
123
+ # Local-model option: make sure Ollama is running with a model
124
+ ollama pull qwen3-coder:30b
125
+
126
+ # Launch
127
+ uv run infinidev
128
+ ```
129
+
130
+ Or install system-wide:
131
+
132
+ ```bash
133
+ ./install.sh
134
+ infinidev
135
+ ```
136
+
137
+ ## Usage
138
+
139
+ ### TUI Mode (default)
140
+
141
+ ```bash
142
+ uv run infinidev
143
+ ```
144
+
145
+ The TUI has three panels:
146
+ - **Left** — File explorer (toggle with `Ctrl+E`)
147
+ - **Center** — Tabbed area with Chat + file editor tabs
148
+ - **Right** — Sidebar showing plan progress, active tools, and logs
149
+
150
+ ### Classic Mode
151
+
152
+ ```bash
153
+ uv run infinidev --classic
154
+ ```
155
+
156
+ Text-only mode for minimal terminals or piping.
157
+
158
+ ### Commands
159
+
160
+ | Command | Description |
161
+ |---------|-------------|
162
+ | `/help` | Show all commands and keybindings |
163
+ | `/models` | Show current model configuration |
164
+ | `/models list` | List available Ollama models |
165
+ | `/models set <name>` | Change the active model |
166
+ | `/models manage` | Interactive model picker |
167
+ | `/settings` | Show or edit settings configuration |
168
+ | `/settings browse` | Open settings editor modal |
169
+ | `/findings` | Browse all knowledge base findings |
170
+ | `/knowledge` | Browse project context knowledge |
171
+ | `/documentation` | Browse cached library documentation |
172
+ | `/docs` | Browse cached library documentation (alias) |
173
+ | `/clear` | Clear chat history and panels |
174
+ | `/exit` | Quit |
175
+
176
+ ### Keybindings
177
+
178
+ | Key | Action |
179
+ |-----|--------|
180
+ | `Ctrl+S` | Save current file |
181
+ | `Ctrl+F` | Find in current file |
182
+ | `Ctrl+Shift+F` | Search across project |
183
+ | `Ctrl+E` | Toggle file explorer |
184
+ | `Ctrl+W` | Close active file tab |
185
+ | `F2` / `F3` / `F4` | Focus: Chat / Explorer / Sidebar |
186
+
187
+ ### File Editor
188
+
189
+ The built-in editor tracks unsaved changes with a visual indicator (`●`) on the tab and in the file explorer (highlighted in yellow). Closing a modified file prompts a Save/Discard/Cancel dialog.
190
+
191
+ ### Image Viewer
192
+
193
+ Opening an image file (PNG, JPG, GIF, BMP, WebP, etc.) from the explorer renders it directly in the terminal using Unicode half-block characters (`▀`). Each character cell represents 2 vertical pixels with 24-bit color.
194
+
195
+ Controls when viewing an image:
196
+
197
+ | Key | Action |
198
+ |-----|--------|
199
+ | `+` / `-` | Zoom in / out |
200
+ | `0` | Reset zoom to 100% |
201
+ | `F` | Fit image to viewport |
202
+
203
+ The info bar shows filename, dimensions, format, file size, current zoom level, and the active rendering backend (`numpy` or `cuda`).
204
+
205
+ #### GPU-accelerated rendering
206
+
207
+ By default, images are processed with NumPy on CPU. If you have an NVIDIA GPU, you can enable CUDA acceleration for faster rendering of large images:
208
+
209
+ ```bash
210
+ # Install with CUDA support
211
+ uv sync --extra cuda
212
+
213
+ # Or add cupy manually
214
+ uv pip install cupy-cuda12x
215
+ ```
216
+
217
+ The backend is auto-detected at startup — no configuration needed. The info bar in the image viewer shows `[cuda]` or `[numpy]` so you know which one is active.
218
+
219
+ ### Project Search
220
+
221
+ `Ctrl+Shift+F` opens a project-wide search modal with:
222
+ - Real-time results with highlighted matches
223
+ - Preview pane with context (2 lines before/after)
224
+ - **Skip junk** toggle (on by default) — excludes `node_modules`, `.git`, `__pycache__`, `.venv`, binary files, lock files, and other common non-source files
225
+ - Click a result to open the file at the matching line
226
+
227
+ ## Configuration
228
+
229
+ Settings are stored in `.infinidev/settings.json` in your project directory. They can also be set via environment variables with the `INFINIDEV_` prefix.
230
+
231
+ | Setting | Default | Description |
232
+ |--|---------|--|
233
+ | `LLM_MODEL` | `ollama_chat/qwen3-coder:30b` | LiteLLM model identifier |
234
+ | `LLM_BASE_URL` | `http://localhost:11434` | Ollama / LLM API base URL |
235
+ | `LOOP_MAX_ITERATIONS` | `50` | Max planning iterations per task |
236
+ | `LOOP_MAX_TOTAL_TOOL_CALLS` | `200` | Global tool call limit per task |
237
+ | `LOOP_HISTORY_WINDOW` | `0` | Summaries to keep (0 = all) |
238
+ | `COMMAND_OUTPUT_CAPTURE_ENABLED` | `false` | Opt in to private, bounded capture of command streams that exceed the normal truncation limit. See [`docs/COMMAND_OUTPUT_CAPTURE.md`](docs/COMMAND_OUTPUT_CAPTURE.md). |
239
+ | `COMMAND_OUTPUT_AUTO_NOTES_ENABLED` | `false` | Independently create traceable closure notes for captured-output handles. |
240
+ | `COMMAND_OUTPUT_NOTE_COMPACTION_ENABLED` | `false` | Independently compact newly created closure notes without replacing their sources. |
241
+ | `FORGEJO_API_URL` | `""` | Forgejo API URL |
242
+ | `FORGEJO_OWNER` | `""` | Forgejo owner |
243
+ | `INFINIDEV_MNN_MODEL_PATH` | unset | Override for the MNN model path. Only needed to point at a custom location; leave unset to use the auto-managed default under `~/.infinidev/models/`. |
244
+
245
+ ## Optional: MNN-accelerated embeddings
246
+
247
+ ContextRank, finding dedup, and symbol search all rely on the same
248
+ `all-MiniLM-L6-v2` embedding model. By default this runs through
249
+ ChromaDB's bundled ONNX Runtime on CPU, which costs ~115 ms per query
250
+ on consumer hardware. For sessions backed by a remote LLM provider, that
251
+ latency is visible on every pivot of the loop.
252
+
253
+ Routing the same model through [MNN](https://github.com/alibaba/MNN)
254
+ (Alibaba's inference runtime) cuts this to ~11 ms per query — roughly
255
+ 10× faster — while producing bit-compatible vectors (cosine 1.0000
256
+ against the ONNX baseline), so embeddings already stored in the DB
257
+ remain valid without re-indexing.
258
+
259
+ ### Enable
260
+
261
+ ```bash
262
+ uv sync --extra mnn # or: pip install 'infinidev[mnn]'
263
+ uv run infinidev
264
+ ```
265
+
266
+ That's it. On the first session after installing the extra, infinidev
267
+ detects the MNN runtime, converts ChromaDB's cached ONNX model to MNN
268
+ format (one-time, ~30 s, logged on stderr), caches it under
269
+ `~/.infinidev/models/minilm.mnn`, and switches to the faster path for
270
+ every subsequent session. If the extra isn't installed, nothing changes
271
+ — infinidev keeps using the ChromaDB default embedder.
272
+
273
+ The `scripts/convert_minilm_to_mnn.py` script is still available for
274
+ pre-warming (useful in CI images or read-only deployments where the
275
+ first-run conversion is inconvenient), but it's not required.
276
+
277
+ ### Notes
278
+
279
+ - **CPU only today.** The MNN pip wheel does not ship with the Vulkan
280
+ backend compiled in, so inference runs on CPU regardless of the
281
+ requested backend. CPU alone is already the ~10× speedup documented
282
+ above; GPU would be additional.
283
+ - **Hardened kernels.** MNN's wheel ships with an executable-stack ELF
284
+ flag that Arch/CachyOS/Ubuntu hardened kernels reject. The embedder
285
+ auto-patches the affected `.so` files on first use; no manual step
286
+ needed.
287
+ - **Same model, same vectors.** The embedder produces the same 384-dim
288
+ output as before. Stored finding, symbol, and context embeddings
289
+ remain correct — no migration required.
290
+
291
+ ## Architecture
292
+
293
+ ```
294
+ src/infinidev/
295
+ cli/ # TUI (Textual) and classic CLI entry points
296
+ engine/ # Plan-execute-summarize loop engine
297
+ agents/ # Agent role definitions and tool binding
298
+ tools/ # 30+ tools: file, git, shell, web, knowledge, documentation
299
+ config/ # Settings, LLM params, model capability probing
300
+ db/ # SQLite with FTS5, findings, artifacts, conversations
301
+ prompts/ # System prompts, tech-specific guidelines
302
+ ```
303
+
304
+ The core loop:
305
+ 1. **Plan** — LLM produces 2-3 initial steps
306
+ 2. **Execute** — one step at a time, calling tools as needed
307
+ 3. **Summarize and archive** — the step conclusion stays on the plan while raw tool evidence moves into searchable working memory
308
+ 4. **Repeat** — the next prompt is rebuilt from the plan, durable summaries, and recalled evidence when needed
309
+
310
+ This keeps context focused, attributable, and recoverable. A long context window provides headroom; it does not make every old tool result equally relevant.
311
+
312
+ ## Knowledge Base
313
+
314
+ The agent maintains a persistent knowledge base of findings across sessions. It automatically records:
315
+ - Project structure, key classes, and public APIs
316
+ - Patterns, conventions, and dependencies
317
+ - Research results and bug findings
318
+ - Things you ask it to remember
319
+
320
+ Findings are auto-injected into the prompt at the start of each task, so the agent starts every session already knowing your project.
321
+
322
+ Browse the knowledge base anytime with `/findings` or `/knowledge`.
323
+
324
+ ## Development
325
+
326
+ ```bash
327
+ # Run tests
328
+ uv run pytest tests/
329
+
330
+ # Run a specific test
331
+ uv run pytest tests/test_tui.py::test_space_inserts_space_character -v
332
+ ```
333
+
334
+ Prompt changes must follow [`docs/PROMPTING.md`](docs/PROMPTING.md). The current
335
+ specification-elaboration design is documented in
336
+ [`docs/SPEC_ELABORATION.md`](docs/SPEC_ELABORATION.md).
337
+
338
+ ## License
339
+
340
+ Infinidev is distributed under the MIT License. Copyright (c) 2026 Infinibay LLC
341
+ <andres@infinibay.net>. See [`LICENSE.md`](LICENSE.md).