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.
- infinidev-0.14.3/.gitignore +84 -0
- infinidev-0.14.3/LICENSE.md +21 -0
- infinidev-0.14.3/PKG-INFO +341 -0
- infinidev-0.14.3/README.md +257 -0
- infinidev-0.14.3/pyproject.toml +126 -0
- infinidev-0.14.3/src/infinidev/agents/base.py +107 -0
- infinidev-0.14.3/src/infinidev/cli/classic_renderer.py +747 -0
- infinidev-0.14.3/src/infinidev/cli/commands.py +461 -0
- infinidev-0.14.3/src/infinidev/cli/file_watcher.py +300 -0
- infinidev-0.14.3/src/infinidev/cli/index_queue.py +110 -0
- infinidev-0.14.3/src/infinidev/cli/initial_index.py +71 -0
- infinidev-0.14.3/src/infinidev/cli/main.py +896 -0
- infinidev-0.14.3/src/infinidev/cli/profiler.py +142 -0
- infinidev-0.14.3/src/infinidev/cli/session_resume.py +126 -0
- infinidev-0.14.3/src/infinidev/code_intel/__init__.py +5 -0
- infinidev-0.14.3/src/infinidev/code_intel/_db.py +242 -0
- infinidev-0.14.3/src/infinidev/code_intel/analysis_report.py +56 -0
- infinidev-0.14.3/src/infinidev/code_intel/analyzer.py +530 -0
- infinidev-0.14.3/src/infinidev/code_intel/background_indexer.py +97 -0
- infinidev-0.14.3/src/infinidev/code_intel/diagnostic.py +57 -0
- infinidev-0.14.3/src/infinidev/code_intel/extractors/__init__.py +31 -0
- infinidev-0.14.3/src/infinidev/code_intel/extractors/_common.py +20 -0
- infinidev-0.14.3/src/infinidev/code_intel/extractors/javascript.py +40 -0
- infinidev-0.14.3/src/infinidev/code_intel/extractors/python.py +39 -0
- infinidev-0.14.3/src/infinidev/code_intel/file_change_notifications.py +288 -0
- infinidev-0.14.3/src/infinidev/code_intel/import_model.py +21 -0
- infinidev-0.14.3/src/infinidev/code_intel/import_resolver.py +152 -0
- infinidev-0.14.3/src/infinidev/code_intel/index.py +171 -0
- infinidev-0.14.3/src/infinidev/code_intel/indexer.py +353 -0
- infinidev-0.14.3/src/infinidev/code_intel/interpreter_api.py +695 -0
- infinidev-0.14.3/src/infinidev/code_intel/method_index.py +626 -0
- infinidev-0.14.3/src/infinidev/code_intel/models.py +12 -0
- infinidev-0.14.3/src/infinidev/code_intel/parsers/__init__.py +157 -0
- infinidev-0.14.3/src/infinidev/code_intel/parsers/base.py +17 -0
- infinidev-0.14.3/src/infinidev/code_intel/parsers/c_parser.py +175 -0
- infinidev-0.14.3/src/infinidev/code_intel/parsers/generic_parser.py +600 -0
- infinidev-0.14.3/src/infinidev/code_intel/parsers/javascript_parser.py +432 -0
- infinidev-0.14.3/src/infinidev/code_intel/parsers/python_parser.py +380 -0
- infinidev-0.14.3/src/infinidev/code_intel/parsers/rust_parser.py +219 -0
- infinidev-0.14.3/src/infinidev/code_intel/parsers/typescript_parser.py +70 -0
- infinidev-0.14.3/src/infinidev/code_intel/query.py +471 -0
- infinidev-0.14.3/src/infinidev/code_intel/reference.py +23 -0
- infinidev-0.14.3/src/infinidev/code_intel/resolve.py +97 -0
- infinidev-0.14.3/src/infinidev/code_intel/smart_index.py +117 -0
- infinidev-0.14.3/src/infinidev/code_intel/stdlib_modules.py +53 -0
- infinidev-0.14.3/src/infinidev/code_intel/symbol.py +31 -0
- infinidev-0.14.3/src/infinidev/code_intel/symbol_embeddings.py +343 -0
- infinidev-0.14.3/src/infinidev/code_intel/symbol_kind.py +23 -0
- infinidev-0.14.3/src/infinidev/code_intel/syntax_check.py +911 -0
- infinidev-0.14.3/src/infinidev/config/codex_catalog.py +213 -0
- infinidev-0.14.3/src/infinidev/config/llm.py +831 -0
- infinidev-0.14.3/src/infinidev/config/model_capabilities.py +983 -0
- infinidev-0.14.3/src/infinidev/config/openai_oauth.py +466 -0
- infinidev-0.14.3/src/infinidev/config/prompt_cache.py +180 -0
- infinidev-0.14.3/src/infinidev/config/providers.py +490 -0
- infinidev-0.14.3/src/infinidev/config/secrets.py +132 -0
- infinidev-0.14.3/src/infinidev/config/settings.py +639 -0
- infinidev-0.14.3/src/infinidev/config/tech_detection.py +118 -0
- infinidev-0.14.3/src/infinidev/config/thinking_budget.py +358 -0
- infinidev-0.14.3/src/infinidev/db/schema.sql +655 -0
- infinidev-0.14.3/src/infinidev/db/service.py +855 -0
- infinidev-0.14.3/src/infinidev/engine/__init__.py +37 -0
- infinidev-0.14.3/src/infinidev/engine/_best_effort.py +56 -0
- infinidev-0.14.3/src/infinidev/engine/agent_engine.py +41 -0
- infinidev-0.14.3/src/infinidev/engine/agent_killed_error.py +20 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/__init__.py +9 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/adversarial_verifier.py +210 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/automated_checks.py +225 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/evidence_review.py +306 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/grounded_spec.py +213 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/objective_verifier.py +332 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/plan.py +72 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/planner.py +463 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/review_engine.py +1481 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/review_grounding.py +129 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/review_result.py +146 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/spec_elaborator.py +818 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/stage_planner.py +408 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/staged_planning.py +303 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/step_verification.py +119 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/test_counter.py +153 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/verification_engine.py +305 -0
- infinidev-0.14.3/src/infinidev/engine/analysis/verification_result.py +63 -0
- infinidev-0.14.3/src/infinidev/engine/assets.py +789 -0
- infinidev-0.14.3/src/infinidev/engine/authority.py +25 -0
- infinidev-0.14.3/src/infinidev/engine/base.py +13 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/__init__.py +11 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/batched_runner.py +142 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checker_base.py +120 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/__init__.py +0 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/chatty_thinking.py +43 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/fake_completion.py +60 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/good_focus.py +49 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/graceful_recovery.py +67 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/ignores_tool_error.py +58 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/lazy_work.py +75 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/plan_drift.py +299 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/plan_quality.py +64 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/prompt_pollution.py +51 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/repetitive_thinking.py +63 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/shell_when_tool_exists.py +53 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/checkers/small_safe_edits.py +50 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/eval_context.py +174 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/hook.py +79 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/llm_checker.py +147 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/primitives/__init__.py +77 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/primitives/diff_inspect.py +113 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/primitives/embeddings.py +79 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/primitives/result_inspect.py +130 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/primitives/scoring.py +84 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/primitives/text.py +71 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/primitives/tool_inspect.py +133 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/registry.py +96 -0
- infinidev-0.14.3/src/infinidev/engine/behavior/scorer.py +498 -0
- infinidev-0.14.3/src/infinidev/engine/command_output_store.py +936 -0
- infinidev-0.14.3/src/infinidev/engine/context_rank/__init__.py +6 -0
- infinidev-0.14.3/src/infinidev/engine/context_rank/hooks.py +153 -0
- infinidev-0.14.3/src/infinidev/engine/context_rank/logger.py +405 -0
- infinidev-0.14.3/src/infinidev/engine/context_rank/models.py +28 -0
- infinidev-0.14.3/src/infinidev/engine/context_rank/ranker.py +2388 -0
- infinidev-0.14.3/src/infinidev/engine/council/__init__.py +60 -0
- infinidev-0.14.3/src/infinidev/engine/council/agent_loop.py +232 -0
- infinidev-0.14.3/src/infinidev/engine/council/brief.py +162 -0
- infinidev-0.14.3/src/infinidev/engine/council/channel.py +189 -0
- infinidev-0.14.3/src/infinidev/engine/council/member.py +102 -0
- infinidev-0.14.3/src/infinidev/engine/council/moderator.py +254 -0
- infinidev-0.14.3/src/infinidev/engine/council/observer.py +194 -0
- infinidev-0.14.3/src/infinidev/engine/council/personas.py +49 -0
- infinidev-0.14.3/src/infinidev/engine/council/prompts.py +212 -0
- infinidev-0.14.3/src/infinidev/engine/council/runner.py +666 -0
- infinidev-0.14.3/src/infinidev/engine/engine_logging.py +369 -0
- infinidev-0.14.3/src/infinidev/engine/engines/__init__.py +29 -0
- infinidev-0.14.3/src/infinidev/engine/engines/base.py +102 -0
- infinidev-0.14.3/src/infinidev/engine/engines/coordinator.py +410 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/__init__.py +47 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/completion.py +182 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/context.py +312 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/domain.py +323 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/engine.py +897 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/ops.py +151 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/persistence.py +248 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/reducer.py +444 -0
- infinidev-0.14.3/src/infinidev/engine/engines/graph/scheduler.py +184 -0
- infinidev-0.14.3/src/infinidev/engine/engines/react.py +240 -0
- infinidev-0.14.3/src/infinidev/engine/engines/routing.py +254 -0
- infinidev-0.14.3/src/infinidev/engine/engines/staged_adapter.py +80 -0
- infinidev-0.14.3/src/infinidev/engine/engines/task.py +256 -0
- infinidev-0.14.3/src/infinidev/engine/file_change_tracker.py +266 -0
- infinidev-0.14.3/src/infinidev/engine/flows.py +43 -0
- infinidev-0.14.3/src/infinidev/engine/formats/__init__.py +21 -0
- infinidev-0.14.3/src/infinidev/engine/formats/_normalize.py +215 -0
- infinidev-0.14.3/src/infinidev/engine/formats/attr_function_format.py +36 -0
- infinidev-0.14.3/src/infinidev/engine/formats/function_call_format.py +27 -0
- infinidev-0.14.3/src/infinidev/engine/formats/gemma4_format.py +71 -0
- infinidev-0.14.3/src/infinidev/engine/formats/hermes_xml_format.py +59 -0
- infinidev-0.14.3/src/infinidev/engine/formats/llama_format.py +34 -0
- infinidev-0.14.3/src/infinidev/engine/formats/manual_json_format.py +84 -0
- infinidev-0.14.3/src/infinidev/engine/formats/manual_tool_call.py +25 -0
- infinidev-0.14.3/src/infinidev/engine/formats/mistral_format.py +66 -0
- infinidev-0.14.3/src/infinidev/engine/formats/qwen_format.py +26 -0
- infinidev-0.14.3/src/infinidev/engine/formats/qwen_pipe_format.py +26 -0
- infinidev-0.14.3/src/infinidev/engine/formats/search_replace_format.py +44 -0
- infinidev-0.14.3/src/infinidev/engine/formats/tool_call_format.py +75 -0
- infinidev-0.14.3/src/infinidev/engine/formats/tool_call_parser.py +175 -0
- infinidev-0.14.3/src/infinidev/engine/formats/tool_tag_format.py +27 -0
- infinidev-0.14.3/src/infinidev/engine/guidance/__init__.py +101 -0
- infinidev-0.14.3/src/infinidev/engine/guidance/detectors.py +592 -0
- infinidev-0.14.3/src/infinidev/engine/guidance/fingerprint.py +415 -0
- infinidev-0.14.3/src/infinidev/engine/guidance/hooks.py +98 -0
- infinidev-0.14.3/src/infinidev/engine/guidance/library.py +457 -0
- infinidev-0.14.3/src/infinidev/engine/guidance/similarity_detector.py +414 -0
- infinidev-0.14.3/src/infinidev/engine/guidance/test_runners.py +325 -0
- infinidev-0.14.3/src/infinidev/engine/history/__init__.py +10 -0
- infinidev-0.14.3/src/infinidev/engine/history/digest.py +170 -0
- infinidev-0.14.3/src/infinidev/engine/history/events.py +149 -0
- infinidev-0.14.3/src/infinidev/engine/history/redaction.py +71 -0
- infinidev-0.14.3/src/infinidev/engine/history/store.py +484 -0
- infinidev-0.14.3/src/infinidev/engine/hooks/__init__.py +9 -0
- infinidev-0.14.3/src/infinidev/engine/hooks/hook_context.py +42 -0
- infinidev-0.14.3/src/infinidev/engine/hooks/hook_event.py +42 -0
- infinidev-0.14.3/src/infinidev/engine/hooks/hook_manager.py +105 -0
- infinidev-0.14.3/src/infinidev/engine/hooks/hooks.py +44 -0
- infinidev-0.14.3/src/infinidev/engine/hooks/ui_hooks.py +277 -0
- infinidev-0.14.3/src/infinidev/engine/image_generation.py +568 -0
- infinidev-0.14.3/src/infinidev/engine/image_ledger.py +493 -0
- infinidev-0.14.3/src/infinidev/engine/ken_client.py +406 -0
- infinidev-0.14.3/src/infinidev/engine/ken_session.py +587 -0
- infinidev-0.14.3/src/infinidev/engine/llm_client.py +402 -0
- infinidev-0.14.3/src/infinidev/engine/loop/__init__.py +56 -0
- infinidev-0.14.3/src/infinidev/engine/loop/action_record.py +34 -0
- infinidev-0.14.3/src/infinidev/engine/loop/behavior_rules.py +182 -0
- infinidev-0.14.3/src/infinidev/engine/loop/behavior_tracker.py +106 -0
- infinidev-0.14.3/src/infinidev/engine/loop/classified_calls.py +49 -0
- infinidev-0.14.3/src/infinidev/engine/loop/context.py +1039 -0
- infinidev-0.14.3/src/infinidev/engine/loop/context_builder.py +541 -0
- infinidev-0.14.3/src/infinidev/engine/loop/context_manager.py +165 -0
- infinidev-0.14.3/src/infinidev/engine/loop/critic.py +923 -0
- infinidev-0.14.3/src/infinidev/engine/loop/critic_liaison.py +328 -0
- infinidev-0.14.3/src/infinidev/engine/loop/engine.py +1871 -0
- infinidev-0.14.3/src/infinidev/engine/loop/execution_context.py +130 -0
- infinidev-0.14.3/src/infinidev/engine/loop/guardrail_runner.py +159 -0
- infinidev-0.14.3/src/infinidev/engine/loop/guidance_handler.py +60 -0
- infinidev-0.14.3/src/infinidev/engine/loop/llm_call_result.py +43 -0
- infinidev-0.14.3/src/infinidev/engine/loop/llm_caller.py +783 -0
- infinidev-0.14.3/src/infinidev/engine/loop/loop_guard.py +482 -0
- infinidev-0.14.3/src/infinidev/engine/loop/loop_plan.py +467 -0
- infinidev-0.14.3/src/infinidev/engine/loop/loop_state.py +204 -0
- infinidev-0.14.3/src/infinidev/engine/loop/model_context.py +283 -0
- infinidev-0.14.3/src/infinidev/engine/loop/models.py +22 -0
- infinidev-0.14.3/src/infinidev/engine/loop/opened_file.py +33 -0
- infinidev-0.14.3/src/infinidev/engine/loop/plan_step.py +54 -0
- infinidev-0.14.3/src/infinidev/engine/loop/prompt/__init__.py +11 -0
- infinidev-0.14.3/src/infinidev/engine/loop/prompt/text.py +573 -0
- infinidev-0.14.3/src/infinidev/engine/loop/prompt/tools_section.py +130 -0
- infinidev-0.14.3/src/infinidev/engine/loop/run_report.py +144 -0
- infinidev-0.14.3/src/infinidev/engine/loop/semantic_stagnation.py +168 -0
- infinidev-0.14.3/src/infinidev/engine/loop/step_complete_gate.py +597 -0
- infinidev-0.14.3/src/infinidev/engine/loop/step_manager.py +704 -0
- infinidev-0.14.3/src/infinidev/engine/loop/step_operation.py +19 -0
- infinidev-0.14.3/src/infinidev/engine/loop/step_result.py +43 -0
- infinidev-0.14.3/src/infinidev/engine/loop/step_summarizer.py +217 -0
- infinidev-0.14.3/src/infinidev/engine/loop/tool_processor.py +203 -0
- infinidev-0.14.3/src/infinidev/engine/loop/tool_runner.py +1542 -0
- infinidev-0.14.3/src/infinidev/engine/loop/user_message_injector.py +195 -0
- infinidev-0.14.3/src/infinidev/engine/loop/work_summary.py +271 -0
- infinidev-0.14.3/src/infinidev/engine/mcp_client.py +931 -0
- infinidev-0.14.3/src/infinidev/engine/mcp_runtime_bridge.py +68 -0
- infinidev-0.14.3/src/infinidev/engine/model_execution_policy.py +146 -0
- infinidev-0.14.3/src/infinidev/engine/multimodal.py +285 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/__init__.py +47 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/chat_agent.py +973 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/chat_agent_result.py +65 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/escalation_packet.py +74 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/hooks.py +238 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/pipeline.py +1363 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/request_signals.py +162 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/staged_pipeline.py +1471 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/task_renderer.py +117 -0
- infinidev-0.14.3/src/infinidev/engine/orchestration/task_schema.py +299 -0
- infinidev-0.14.3/src/infinidev/engine/oversized_result.py +268 -0
- infinidev-0.14.3/src/infinidev/engine/phases/__init__.py +6 -0
- infinidev-0.14.3/src/infinidev/engine/phases/investigator.py +275 -0
- infinidev-0.14.3/src/infinidev/engine/phases/phase_engine.py +359 -0
- infinidev-0.14.3/src/infinidev/engine/phases/phase_prompts.py +11 -0
- infinidev-0.14.3/src/infinidev/engine/phases/plan_executor.py +167 -0
- infinidev-0.14.3/src/infinidev/engine/phases/plan_generator.py +314 -0
- infinidev-0.14.3/src/infinidev/engine/phases/plan_validator.py +215 -0
- infinidev-0.14.3/src/infinidev/engine/phases/question_generator.py +358 -0
- infinidev-0.14.3/src/infinidev/engine/prompt_composition.py +96 -0
- infinidev-0.14.3/src/infinidev/engine/prompt_layers.py +90 -0
- infinidev-0.14.3/src/infinidev/engine/prompt_profile.py +124 -0
- infinidev-0.14.3/src/infinidev/engine/runtime_events_store.py +138 -0
- infinidev-0.14.3/src/infinidev/engine/runtime_state.py +111 -0
- infinidev-0.14.3/src/infinidev/engine/schema_sanitizer.py +507 -0
- infinidev-0.14.3/src/infinidev/engine/static_analysis_timer.py +175 -0
- infinidev-0.14.3/src/infinidev/engine/subprocess_runner.py +110 -0
- infinidev-0.14.3/src/infinidev/engine/subscription_safety.py +63 -0
- infinidev-0.14.3/src/infinidev/engine/summarizer.py +201 -0
- infinidev-0.14.3/src/infinidev/engine/task_runtime.py +170 -0
- infinidev-0.14.3/src/infinidev/engine/test_checkpoint.py +192 -0
- infinidev-0.14.3/src/infinidev/engine/test_environment.py +76 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/__init__.py +100 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/base.py +178 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/cargo_parser.py +88 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/go_parser.py +91 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/jest_parser.py +122 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/mocha_parser.py +94 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/node_test_parser.py +120 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/pytest_parser.py +156 -0
- infinidev-0.14.3/src/infinidev/engine/test_parsers/rspec_parser.py +215 -0
- infinidev-0.14.3/src/infinidev/engine/token_usage.py +77 -0
- infinidev-0.14.3/src/infinidev/engine/tool_dispatch.py +725 -0
- infinidev-0.14.3/src/infinidev/engine/tool_executor.py +638 -0
- infinidev-0.14.3/src/infinidev/engine/tool_progress.py +83 -0
- infinidev-0.14.3/src/infinidev/engine/tool_routing.py +172 -0
- infinidev-0.14.3/src/infinidev/engine/trace_log.py +202 -0
- infinidev-0.14.3/src/infinidev/engine/tree/__init__.py +5 -0
- infinidev-0.14.3/src/infinidev/engine/tree/blocker.py +28 -0
- infinidev-0.14.3/src/infinidev/engine/tree/brainstorm.py +351 -0
- infinidev-0.14.3/src/infinidev/engine/tree/brainstorm_context.py +645 -0
- infinidev-0.14.3/src/infinidev/engine/tree/brainstorming_detector.py +45 -0
- infinidev-0.14.3/src/infinidev/engine/tree/context.py +465 -0
- infinidev-0.14.3/src/infinidev/engine/tree/engine.py +936 -0
- infinidev-0.14.3/src/infinidev/engine/tree/fact.py +30 -0
- infinidev-0.14.3/src/infinidev/engine/tree/models.py +135 -0
- infinidev-0.14.3/src/infinidev/engine/tree/question.py +30 -0
- infinidev-0.14.3/src/infinidev/engine/tree/tree_node.py +69 -0
- infinidev-0.14.3/src/infinidev/engine/tree/tree_state.py +110 -0
- infinidev-0.14.3/src/infinidev/engine/user_hooks/__init__.py +42 -0
- infinidev-0.14.3/src/infinidev/engine/user_hooks/config.py +245 -0
- infinidev-0.14.3/src/infinidev/engine/user_hooks/events.py +67 -0
- infinidev-0.14.3/src/infinidev/engine/user_hooks/payload.py +75 -0
- infinidev-0.14.3/src/infinidev/engine/user_hooks/render.py +55 -0
- infinidev-0.14.3/src/infinidev/engine/user_hooks/runner.py +184 -0
- infinidev-0.14.3/src/infinidev/engine/user_preferences.py +147 -0
- infinidev-0.14.3/src/infinidev/engine/working_memory.py +1162 -0
- infinidev-0.14.3/src/infinidev/engine/workspace_baseline.py +239 -0
- infinidev-0.14.3/src/infinidev/flows/event_listeners.py +58 -0
- infinidev-0.14.3/src/infinidev/gather/__init__.py +10 -0
- infinidev-0.14.3/src/infinidev/gather/classification_result.py +23 -0
- infinidev-0.14.3/src/infinidev/gather/classifier.py +161 -0
- infinidev-0.14.3/src/infinidev/gather/compiler.py +24 -0
- infinidev-0.14.3/src/infinidev/gather/depth_config.py +37 -0
- infinidev-0.14.3/src/infinidev/gather/depth_level.py +19 -0
- infinidev-0.14.3/src/infinidev/gather/gather_brief.py +61 -0
- infinidev-0.14.3/src/infinidev/gather/mini_agent.py +179 -0
- infinidev-0.14.3/src/infinidev/gather/models.py +67 -0
- infinidev-0.14.3/src/infinidev/gather/question.py +22 -0
- infinidev-0.14.3/src/infinidev/gather/question_result.py +21 -0
- infinidev-0.14.3/src/infinidev/gather/questions.py +20 -0
- infinidev-0.14.3/src/infinidev/gather/runner.py +424 -0
- infinidev-0.14.3/src/infinidev/gather/templates/__init__.py +1 -0
- infinidev-0.14.3/src/infinidev/gather/templates/bug.py +64 -0
- infinidev-0.14.3/src/infinidev/gather/templates/feature.py +66 -0
- infinidev-0.14.3/src/infinidev/gather/templates/other.py +37 -0
- infinidev-0.14.3/src/infinidev/gather/templates/refactor.py +54 -0
- infinidev-0.14.3/src/infinidev/gather/templates/sysadmin.py +50 -0
- infinidev-0.14.3/src/infinidev/gather/ticket_type.py +19 -0
- infinidev-0.14.3/src/infinidev/prompts/analyst/__init__.py +6 -0
- infinidev-0.14.3/src/infinidev/prompts/analyst/planner_prompt.py +13 -0
- infinidev-0.14.3/src/infinidev/prompts/analyst/planning_vocabulary.py +39 -0
- infinidev-0.14.3/src/infinidev/prompts/analyst/stage_planner_prompt.py +156 -0
- infinidev-0.14.3/src/infinidev/prompts/analyst/task_planner_prompt.py +139 -0
- infinidev-0.14.3/src/infinidev/prompts/chat_agent/__init__.py +131 -0
- infinidev-0.14.3/src/infinidev/prompts/chat_agent/system.py +172 -0
- infinidev-0.14.3/src/infinidev/prompts/flows/__init__.py +86 -0
- infinidev-0.14.3/src/infinidev/prompts/flows/brainstorm.py +51 -0
- infinidev-0.14.3/src/infinidev/prompts/flows/develop.py +222 -0
- infinidev-0.14.3/src/infinidev/prompts/flows/document.py +106 -0
- infinidev-0.14.3/src/infinidev/prompts/flows/explore.py +47 -0
- infinidev-0.14.3/src/infinidev/prompts/flows/sysadmin.py +143 -0
- infinidev-0.14.3/src/infinidev/prompts/graph/__init__.py +8 -0
- infinidev-0.14.3/src/infinidev/prompts/graph/graph_protocol.py +64 -0
- infinidev-0.14.3/src/infinidev/prompts/graph/graph_vocabulary.py +71 -0
- infinidev-0.14.3/src/infinidev/prompts/init_project.py +92 -0
- infinidev-0.14.3/src/infinidev/prompts/phases/__init__.py +176 -0
- infinidev-0.14.3/src/infinidev/prompts/phases/execute.py +279 -0
- infinidev-0.14.3/src/infinidev/prompts/phases/investigate.py +230 -0
- infinidev-0.14.3/src/infinidev/prompts/phases/plan.py +275 -0
- infinidev-0.14.3/src/infinidev/prompts/phases/questions.py +135 -0
- infinidev-0.14.3/src/infinidev/prompts/project_instructions.py +128 -0
- infinidev-0.14.3/src/infinidev/prompts/reviewer/__init__.py +1 -0
- infinidev-0.14.3/src/infinidev/prompts/reviewer/evidence_system.py +36 -0
- infinidev-0.14.3/src/infinidev/prompts/reviewer/extractor_system.py +99 -0
- infinidev-0.14.3/src/infinidev/prompts/reviewer/judge_system.py +188 -0
- infinidev-0.14.3/src/infinidev/prompts/reviewer/system.py +192 -0
- infinidev-0.14.3/src/infinidev/prompts/shared.py +76 -0
- infinidev-0.14.3/src/infinidev/prompts/tech/__init__.py +33 -0
- infinidev-0.14.3/src/infinidev/prompts/tech/javascript.py +46 -0
- infinidev-0.14.3/src/infinidev/prompts/tech/python.py +45 -0
- infinidev-0.14.3/src/infinidev/prompts/tech/rust.py +46 -0
- infinidev-0.14.3/src/infinidev/prompts/tech/typescript.py +47 -0
- infinidev-0.14.3/src/infinidev/prompts/tool_hints.py +732 -0
- infinidev-0.14.3/src/infinidev/prompts/variants/__init__.py +96 -0
- infinidev-0.14.3/src/infinidev/prompts/variants/coding.py +962 -0
- infinidev-0.14.3/src/infinidev/prompts/variants/extra_simple.py +193 -0
- infinidev-0.14.3/src/infinidev/prompts/variants/full.py +88 -0
- infinidev-0.14.3/src/infinidev/prompts/variants/generalized.py +413 -0
- infinidev-0.14.3/src/infinidev/tools/__init__.py +370 -0
- infinidev-0.14.3/src/infinidev/tools/base/__init__.py +15 -0
- infinidev-0.14.3/src/infinidev/tools/base/base_tool.py +422 -0
- infinidev-0.14.3/src/infinidev/tools/base/command_risk.py +656 -0
- infinidev-0.14.3/src/infinidev/tools/base/context.py +297 -0
- infinidev-0.14.3/src/infinidev/tools/base/data/README.md +28 -0
- infinidev-0.14.3/src/infinidev/tools/base/data/ken__static-qwen3-r512-v2-es-query-adapter.npz +0 -0
- infinidev-0.14.3/src/infinidev/tools/base/data/ken__static-qwen3-r512-v2.npz +0 -0
- infinidev-0.14.3/src/infinidev/tools/base/db.py +31 -0
- infinidev-0.14.3/src/infinidev/tools/base/dedup.py +138 -0
- infinidev-0.14.3/src/infinidev/tools/base/embeddings.py +154 -0
- infinidev-0.14.3/src/infinidev/tools/base/mnn_embedder.py +327 -0
- infinidev-0.14.3/src/infinidev/tools/base/permissions.py +136 -0
- infinidev-0.14.3/src/infinidev/tools/base/static_qwen3_embedder.py +335 -0
- infinidev-0.14.3/src/infinidev/tools/base/tool_effects.py +313 -0
- infinidev-0.14.3/src/infinidev/tools/chat/__init__.py +5 -0
- infinidev-0.14.3/src/infinidev/tools/chat/send_message.py +12 -0
- infinidev-0.14.3/src/infinidev/tools/chat/send_message_input.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/chat/send_message_tool.py +32 -0
- infinidev-0.14.3/src/infinidev/tools/chat_agent/__init__.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/chat_agent/escalate_tool.py +116 -0
- infinidev-0.14.3/src/infinidev/tools/chat_agent/respond_tool.py +51 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/__init__.py +26 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/analyze_code.py +11 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/analyze_code_input.py +20 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/analyze_code_tool.py +84 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/find_references.py +10 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/find_references_input.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/find_references_tool.py +70 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/find_similar_methods_tool.py +167 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/get_symbol_code.py +11 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/get_symbol_code_input.py +21 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/get_symbol_code_tool.py +83 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/iter_symbols_tool.py +166 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/list_symbols.py +10 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/list_symbols_input.py +26 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/list_symbols_tool.py +62 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/move_symbol.py +13 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/move_symbol_input.py +30 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/move_symbol_tool.py +387 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/project_stats_tool.py +98 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/project_structure.py +11 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/project_structure_input.py +20 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/project_structure_tool.py +126 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/rename_symbol.py +12 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/rename_symbol_input.py +25 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/rename_symbol_tool.py +231 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/search_by_docstring_tool.py +136 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/search_symbols.py +10 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/search_symbols_input.py +23 -0
- infinidev-0.14.3/src/infinidev/tools/code_intel/search_symbols_tool.py +61 -0
- infinidev-0.14.3/src/infinidev/tools/consult_assistant_tool.py +96 -0
- infinidev-0.14.3/src/infinidev/tools/council/__init__.py +35 -0
- infinidev-0.14.3/src/infinidev/tools/council/channel_tools.py +125 -0
- infinidev-0.14.3/src/infinidev/tools/council/moderator_tools.py +241 -0
- infinidev-0.14.3/src/infinidev/tools/docs/__init__.py +7 -0
- infinidev-0.14.3/src/infinidev/tools/docs/delete_documentation.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/docs/delete_documentation_input.py +24 -0
- infinidev-0.14.3/src/infinidev/tools/docs/delete_documentation_tool.py +75 -0
- infinidev-0.14.3/src/infinidev/tools/docs/doc_flow.py +412 -0
- infinidev-0.14.3/src/infinidev/tools/docs/find_documentation.py +19 -0
- infinidev-0.14.3/src/infinidev/tools/docs/find_documentation_input.py +25 -0
- infinidev-0.14.3/src/infinidev/tools/docs/find_documentation_tool.py +237 -0
- infinidev-0.14.3/src/infinidev/tools/docs/update_documentation.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/docs/update_documentation_input.py +18 -0
- infinidev-0.14.3/src/infinidev/tools/docs/update_documentation_tool.py +38 -0
- infinidev-0.14.3/src/infinidev/tools/file/__init__.py +23 -0
- infinidev-0.14.3/src/infinidev/tools/file/_helpers.py +328 -0
- infinidev-0.14.3/src/infinidev/tools/file/code_search.py +15 -0
- infinidev-0.14.3/src/infinidev/tools/file/code_search_input.py +41 -0
- infinidev-0.14.3/src/infinidev/tools/file/code_search_tool.py +350 -0
- infinidev-0.14.3/src/infinidev/tools/file/create_file.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/file/create_file_input.py +19 -0
- infinidev-0.14.3/src/infinidev/tools/file/create_file_tool.py +125 -0
- infinidev-0.14.3/src/infinidev/tools/file/edit_file_input.py +29 -0
- infinidev-0.14.3/src/infinidev/tools/file/edit_file_tool.py +159 -0
- infinidev-0.14.3/src/infinidev/tools/file/glob_input.py +59 -0
- infinidev-0.14.3/src/infinidev/tools/file/glob_tool.py +298 -0
- infinidev-0.14.3/src/infinidev/tools/file/list_directory.py +15 -0
- infinidev-0.14.3/src/infinidev/tools/file/list_directory_input.py +31 -0
- infinidev-0.14.3/src/infinidev/tools/file/list_directory_tool.py +354 -0
- infinidev-0.14.3/src/infinidev/tools/file/read_file.py +18 -0
- infinidev-0.14.3/src/infinidev/tools/file/read_file_input.py +30 -0
- infinidev-0.14.3/src/infinidev/tools/file/read_file_tool.py +386 -0
- infinidev-0.14.3/src/infinidev/tools/file/safe_file_tools.py +287 -0
- infinidev-0.14.3/src/infinidev/tools/file/view_image.py +72 -0
- infinidev-0.14.3/src/infinidev/tools/git/__init__.py +13 -0
- infinidev-0.14.3/src/infinidev/tools/git/_helpers.py +109 -0
- infinidev-0.14.3/src/infinidev/tools/git/branch.py +18 -0
- infinidev-0.14.3/src/infinidev/tools/git/commit.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/git/diff.py +12 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_branch_input.py +22 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_branch_tool.py +250 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_commit_input.py +26 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_commit_tool.py +187 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_diff_input.py +24 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_diff_tool.py +81 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_push_input.py +19 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_push_tool.py +182 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_status_input.py +15 -0
- infinidev-0.14.3/src/infinidev/tools/git/git_status_tool.py +140 -0
- infinidev-0.14.3/src/infinidev/tools/git/push.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/git/status.py +12 -0
- infinidev-0.14.3/src/infinidev/tools/history/__init__.py +12 -0
- infinidev-0.14.3/src/infinidev/tools/history/_common.py +54 -0
- infinidev-0.14.3/src/infinidev/tools/history/history_read_tool.py +93 -0
- infinidev-0.14.3/src/infinidev/tools/history/history_search_tool.py +143 -0
- infinidev-0.14.3/src/infinidev/tools/history/history_trace_tool.py +95 -0
- infinidev-0.14.3/src/infinidev/tools/image_generation.py +129 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/__init__.py +27 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/delete_finding.py +13 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/delete_finding_input.py +15 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/delete_finding_tool.py +48 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/delete_report.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/delete_report_input.py +20 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/delete_report_tool.py +86 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/finding_types.py +60 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/read_command_output.py +10 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/read_command_output_input.py +46 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/read_command_output_tool.py +84 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/read_report.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/read_report_input.py +24 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/read_report_tool.py +122 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/record_finding.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/record_finding_input.py +78 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/record_finding_tool.py +164 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/reject_finding.py +13 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/reject_finding_input.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/reject_finding_tool.py +63 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/search_findings.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/search_findings_input.py +41 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/search_findings_tool.py +41 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/search_knowledge.py +13 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/search_knowledge_input.py +55 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/search_knowledge_tool.py +311 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/summarize_findings.py +13 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/summarize_findings_input.py +22 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/summarize_findings_tool.py +103 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/update_finding.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/update_finding_input.py +52 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/update_finding_tool.py +191 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/validate_finding.py +13 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/validate_finding_input.py +22 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/validate_finding_tool.py +80 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/write_report.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/write_report_input.py +20 -0
- infinidev-0.14.3/src/infinidev/tools/knowledge/write_report_tool.py +108 -0
- infinidev-0.14.3/src/infinidev/tools/mcp_bridge.py +475 -0
- infinidev-0.14.3/src/infinidev/tools/meta/__init__.py +9 -0
- infinidev-0.14.3/src/infinidev/tools/meta/declare_test_command_tool.py +81 -0
- infinidev-0.14.3/src/infinidev/tools/meta/help_content.py +113 -0
- infinidev-0.14.3/src/infinidev/tools/meta/help_input.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/meta/help_tool.py +264 -0
- infinidev-0.14.3/src/infinidev/tools/meta/plan_tools.py +315 -0
- infinidev-0.14.3/src/infinidev/tools/meta/recall_context_tool.py +68 -0
- infinidev-0.14.3/src/infinidev/tools/meta/request_capability_tool.py +51 -0
- infinidev-0.14.3/src/infinidev/tools/meta/tail_test_output_tool.py +189 -0
- infinidev-0.14.3/src/infinidev/tools/permission.py +182 -0
- infinidev-0.14.3/src/infinidev/tools/planner/__init__.py +14 -0
- infinidev-0.14.3/src/infinidev/tools/planner/emit_plan_tool.py +219 -0
- infinidev-0.14.3/src/infinidev/tools/planner/stage_decision_tools.py +197 -0
- infinidev-0.14.3/src/infinidev/tools/shell/__init__.py +17 -0
- infinidev-0.14.3/src/infinidev/tools/shell/background_manager.py +428 -0
- infinidev-0.14.3/src/infinidev/tools/shell/background_status.py +6 -0
- infinidev-0.14.3/src/infinidev/tools/shell/background_status_input.py +20 -0
- infinidev-0.14.3/src/infinidev/tools/shell/background_status_tool.py +79 -0
- infinidev-0.14.3/src/infinidev/tools/shell/code_interpreter.py +18 -0
- infinidev-0.14.3/src/infinidev/tools/shell/code_interpreter_input.py +33 -0
- infinidev-0.14.3/src/infinidev/tools/shell/code_interpreter_tool.py +279 -0
- infinidev-0.14.3/src/infinidev/tools/shell/execute_command.py +15 -0
- infinidev-0.14.3/src/infinidev/tools/shell/execute_command_input.py +53 -0
- infinidev-0.14.3/src/infinidev/tools/shell/execute_command_tool.py +611 -0
- infinidev-0.14.3/src/infinidev/tools/shell/run_in_background.py +6 -0
- infinidev-0.14.3/src/infinidev/tools/shell/run_in_background_input.py +24 -0
- infinidev-0.14.3/src/infinidev/tools/shell/run_in_background_tool.py +78 -0
- infinidev-0.14.3/src/infinidev/tools/shell/shell_invocation.py +53 -0
- infinidev-0.14.3/src/infinidev/tools/shell/stop_background_task.py +6 -0
- infinidev-0.14.3/src/infinidev/tools/shell/stop_background_task_input.py +17 -0
- infinidev-0.14.3/src/infinidev/tools/shell/stop_background_task_tool.py +58 -0
- infinidev-0.14.3/src/infinidev/tools/shell/wait_for_background_task.py +10 -0
- infinidev-0.14.3/src/infinidev/tools/shell/wait_for_background_task_input.py +36 -0
- infinidev-0.14.3/src/infinidev/tools/shell/wait_for_background_task_tool.py +121 -0
- infinidev-0.14.3/src/infinidev/tools/stdin_prompt.py +78 -0
- infinidev-0.14.3/src/infinidev/tools/web/__init__.py +7 -0
- infinidev-0.14.3/src/infinidev/tools/web/backends.py +104 -0
- infinidev-0.14.3/src/infinidev/tools/web/code_search_web.py +20 -0
- infinidev-0.14.3/src/infinidev/tools/web/code_search_web_input.py +39 -0
- infinidev-0.14.3/src/infinidev/tools/web/code_search_web_tool.py +86 -0
- infinidev-0.14.3/src/infinidev/tools/web/fetch.py +16 -0
- infinidev-0.14.3/src/infinidev/tools/web/rate_limiter.py +43 -0
- infinidev-0.14.3/src/infinidev/tools/web/robots_checker.py +59 -0
- infinidev-0.14.3/src/infinidev/tools/web/search.py +19 -0
- infinidev-0.14.3/src/infinidev/tools/web/web_fetch_input.py +25 -0
- infinidev-0.14.3/src/infinidev/tools/web/web_fetch_tool.py +175 -0
- infinidev-0.14.3/src/infinidev/tools/web/web_search_input.py +24 -0
- infinidev-0.14.3/src/infinidev/tools/web/web_search_tool.py +58 -0
- infinidev-0.14.3/src/infinidev/ui/app.py +1714 -0
- infinidev-0.14.3/src/infinidev/ui/attachments.py +242 -0
- infinidev-0.14.3/src/infinidev/ui/clipboard.py +139 -0
- infinidev-0.14.3/src/infinidev/ui/context_calculator.py +261 -0
- infinidev-0.14.3/src/infinidev/ui/controls/__init__.py +1 -0
- infinidev-0.14.3/src/infinidev/ui/controls/_widthutil.py +47 -0
- infinidev-0.14.3/src/infinidev/ui/controls/autocomplete.py +138 -0
- infinidev-0.14.3/src/infinidev/ui/controls/chat_history.py +690 -0
- infinidev-0.14.3/src/infinidev/ui/controls/chat_input.py +164 -0
- infinidev-0.14.3/src/infinidev/ui/controls/clickable_scrollbar.py +193 -0
- infinidev-0.14.3/src/infinidev/ui/controls/composer.py +169 -0
- infinidev-0.14.3/src/infinidev/ui/controls/critic_widget.py +150 -0
- infinidev-0.14.3/src/infinidev/ui/controls/directory_tree.py +149 -0
- infinidev-0.14.3/src/infinidev/ui/controls/directory_tree_control.py +352 -0
- infinidev-0.14.3/src/infinidev/ui/controls/file_diff.py +243 -0
- infinidev-0.14.3/src/infinidev/ui/controls/file_editor.py +118 -0
- infinidev-0.14.3/src/infinidev/ui/controls/file_picker.py +113 -0
- infinidev-0.14.3/src/infinidev/ui/controls/file_picker_results_control.py +165 -0
- infinidev-0.14.3/src/infinidev/ui/controls/file_picker_state.py +179 -0
- infinidev-0.14.3/src/infinidev/ui/controls/footer_control.py +50 -0
- infinidev-0.14.3/src/infinidev/ui/controls/image_viewer.py +286 -0
- infinidev-0.14.3/src/infinidev/ui/controls/markdown_render.py +130 -0
- infinidev-0.14.3/src/infinidev/ui/controls/message_groups.py +95 -0
- infinidev-0.14.3/src/infinidev/ui/controls/message_widgets.py +916 -0
- infinidev-0.14.3/src/infinidev/ui/controls/scrollable_text.py +88 -0
- infinidev-0.14.3/src/infinidev/ui/controls/search_bar.py +105 -0
- infinidev-0.14.3/src/infinidev/ui/controls/status_bar.py +15 -0
- infinidev-0.14.3/src/infinidev/ui/controls/status_bar_control.py +79 -0
- infinidev-0.14.3/src/infinidev/ui/controls/status_line.py +256 -0
- infinidev-0.14.3/src/infinidev/ui/controls/tab_bar.py +75 -0
- infinidev-0.14.3/src/infinidev/ui/controls/tool_call_widget.py +1097 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/__init__.py +1 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/agents_browser.py +78 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/background_tasks_browser.py +120 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/base.py +152 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/cancel_task.py +31 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/debug_panel.py +336 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/docs_browser.py +34 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/docs_content_control.py +35 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/docs_list_control.py +47 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/dropdown_control.py +177 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/findings_browser.py +37 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/findings_detail_control.py +128 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/findings_list_control.py +61 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/model_picker.py +84 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/notes_browser.py +83 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/permission_detail.py +153 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/project_search.py +120 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/search_preview_control.py +77 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/search_results_control.py +79 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/sections_control.py +158 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/setting_value_editor.py +66 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/settings_control.py +179 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/settings_editor.py +73 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/settings_editor_state.py +698 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/stdin_prompt.py +172 -0
- infinidev-0.14.3/src/infinidev/ui/dialogs/unsaved_changes.py +27 -0
- infinidev-0.14.3/src/infinidev/ui/event_handler.py +604 -0
- infinidev-0.14.3/src/infinidev/ui/handlers/__init__.py +5 -0
- infinidev-0.14.3/src/infinidev/ui/handlers/commands.py +701 -0
- infinidev-0.14.3/src/infinidev/ui/handlers/dialogs.py +707 -0
- infinidev-0.14.3/src/infinidev/ui/handlers/files.py +394 -0
- infinidev-0.14.3/src/infinidev/ui/hooks_tui.py +297 -0
- infinidev-0.14.3/src/infinidev/ui/keybindings.py +330 -0
- infinidev-0.14.3/src/infinidev/ui/layout.py +332 -0
- infinidev-0.14.3/src/infinidev/ui/managers/__init__.py +18 -0
- infinidev-0.14.3/src/infinidev/ui/managers/context_render.py +133 -0
- infinidev-0.14.3/src/infinidev/ui/theme.py +272 -0
- infinidev-0.14.3/src/infinidev/ui/widgets/context_progress_bar.py +134 -0
- infinidev-0.14.3/src/infinidev/ui/widgets/context_widgets.py +22 -0
- infinidev-0.14.3/src/infinidev/ui/widgets/file_diff_widget.py +109 -0
- infinidev-0.14.3/src/infinidev/ui/widgets/image_viewer.py +471 -0
- infinidev-0.14.3/src/infinidev/ui/widgets/progress_bar.py +107 -0
- infinidev-0.14.3/src/infinidev/ui/widgets/queued_message_status.py +26 -0
- infinidev-0.14.3/src/infinidev/ui/widgets/queued_message_widget.py +116 -0
- 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
|
+

|
|
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).
|