nimcode 0.4.6__tar.gz → 0.4.8__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 (48) hide show
  1. {nimcode-0.4.6 → nimcode-0.4.8}/PKG-INFO +1 -1
  2. nimcode-0.4.8/src/nimcode/__version__.py +1 -0
  3. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/repl.py +14 -16
  4. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode.egg-info/PKG-INFO +1 -1
  5. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_repl_fixes.py +5 -7
  6. nimcode-0.4.6/src/nimcode/__version__.py +0 -1
  7. {nimcode-0.4.6 → nimcode-0.4.8}/README.md +0 -0
  8. {nimcode-0.4.6 → nimcode-0.4.8}/setup.cfg +0 -0
  9. {nimcode-0.4.6 → nimcode-0.4.8}/setup.py +0 -0
  10. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/__init__.py +0 -0
  11. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/agent.py +0 -0
  12. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/cli.py +0 -0
  13. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/config.py +0 -0
  14. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/lenient_parser.py +0 -0
  15. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/mcp_client.py +0 -0
  16. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/memory.py +0 -0
  17. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/model_registry.py +0 -0
  18. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/nim_client.py +0 -0
  19. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/permissions.py +0 -0
  20. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/plugin_manager.py +0 -0
  21. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/rag.py +0 -0
  22. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/repo_map.py +0 -0
  23. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/tools.py +0 -0
  24. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/updater.py +0 -0
  25. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode/watcher.py +0 -0
  26. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode.egg-info/SOURCES.txt +0 -0
  27. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode.egg-info/dependency_links.txt +0 -0
  28. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode.egg-info/entry_points.txt +0 -0
  29. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode.egg-info/requires.txt +0 -0
  30. {nimcode-0.4.6 → nimcode-0.4.8}/src/nimcode.egg-info/top_level.txt +0 -0
  31. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_agent.py +0 -0
  32. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_cli.py +0 -0
  33. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_config.py +0 -0
  34. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_lenient_parser.py +0 -0
  35. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_mcp_client.py +0 -0
  36. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_memory.py +0 -0
  37. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_model_registry.py +0 -0
  38. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_nim_client.py +0 -0
  39. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_permissions.py +0 -0
  40. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_plan_injection.py +0 -0
  41. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_plugin_manager.py +0 -0
  42. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_repl.py +0 -0
  43. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_repl_extra.py +0 -0
  44. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_repl_trust.py +0 -0
  45. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_repo_map.py +0 -0
  46. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_tools.py +0 -0
  47. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_updater.py +0 -0
  48. {nimcode-0.4.6 → nimcode-0.4.8}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nimcode
3
- Version: 0.4.6
3
+ Version: 0.4.8
4
4
  Summary: A standalone, robust coding agent for NVIDIA NIM models.
5
5
  Home-page: https://github.com/Batunash/nimcode
6
6
  Author: Autonomous Agent
@@ -0,0 +1 @@
1
+ __version__ = "0.4.8"
@@ -439,22 +439,20 @@ class NimcodeREPL:
439
439
  console.print("[bold blue]Entering Plan mode.[/bold blue] Read tools are free; mutating tools (Bash/Edit/Write) are restricted.")
440
440
  self.messages.append({"role": "system", "content": (
441
441
  "You are now in PLANNING MODE.\n"
442
- "1. Use Glob/Grep/Read to explore the user's project OR the documents they named (e.g. 'sdd.md').\n"
443
- "2. BASE your plan on the ACTUAL content of those documents/files. Quote real names, real modules, "
444
- "real requirements found during exploration. Do NOT invent a generic project.\n"
445
- "3. Write the plan to a file inside '.nimcode/plans/'. CHOOSE a descriptive name derived from the task "
446
- "or document AND append a timestamp to prevent naming collisions (e.g. 'imagease_pro_plan_20260730_1430.md').\n"
447
- "4. The plan MUST follow this strict technical structure:\n"
448
- " - # [Descriptive Plan Title]\n"
449
- " - ## Context: Brief summary of the current state based on actual files.\n"
450
- " - ## Analysis / Root Cause: Detailed technical analysis of the problem or feature.\n"
451
- " - ## Execution Plan (dosya-bazlı, sıralı): Step-by-step file modifications. MUST include specific files to create/modify (with full paths), and actual code snippets or pseudocode for each change. Format as: '### Task #1 - Update auth.py line 45'.\n"
452
- " - ## Verification: Terminal commands to run to test the changes.\n"
453
- "5. NEVER output a generic software-lifecycle template (Phase1: MVP / Design / Development / "
454
- "Testing / Scale / Deployment). NEVER use placeholders like [Insert Date]. Focus strictly on code and files.\n"
455
- "6. A good plan is one that another developer could follow to implement the feature without asking questions.\n"
456
- "7. After writing the plan, you MUST overwrite the file '.nimcode/active_plan.txt' to contain exactly the path "
457
- "of the plan you just created. This ensures the system tracks the current active plan."
442
+ "1. Identify the task type: Is it a 'Bug Fix / Minor Feature' OR a 'From-Scratch / Major Architecture' task?\n"
443
+ "2. IF it is a 'Bug Fix / Minor Feature':\n"
444
+ " - Write the plan directly to '.nimcode/plans/<name_timestamp>.md'.\n"
445
+ " - Use this strict technical structure: # Title, ## Context, ## Root Cause Analysis, ## Execution Plan (file-by-file with line numbers/snippets), ## Verification.\n"
446
+ "3. IF it is a 'From-Scratch / Major Architecture' task:\n"
447
+ " - DO NOT write the final plan file immediately. This must be an ITERATIVE process.\n"
448
+ " - Step A: Explore the project/SDDs.\n"
449
+ " - Step B: Propose an architectural outline to the user in chat (Tech Stack, Repo Structure, DB Schema, Phased Implementation). Ask the user for their approval or feedback on this outline.\n"
450
+ " - Step C: ONLY after the user explicitly approves the outline, write the detailed execution plan to '.nimcode/plans/<name_timestamp>.md'.\n"
451
+ " - The final plan must be extremely detailed, phased (Phase 0, Phase 1, etc.), and file-based, similar to the approved outline.\n"
452
+ "4. General Rules:\n"
453
+ " - Quote real names, modules, and requirements. Do not invent generic projects.\n"
454
+ " - NEVER output a generic software-lifecycle template (Phase1: MVP / Design / Development) unless instructed. Focus on code, DB schemas, and technical choices.\n"
455
+ " - After writing any plan file, overwrite '.nimcode/active_plan.txt' with the file's path."
458
456
  )})
459
457
  continue
460
458
  elif user_input.strip().startswith("/teleport"):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nimcode
3
- Version: 0.4.6
3
+ Version: 0.4.8
4
4
  Summary: A standalone, robust coding agent for NVIDIA NIM models.
5
5
  Home-page: https://github.com/Batunash/nimcode
6
6
  Author: Autonomous Agent
@@ -80,13 +80,11 @@ async def test_plan_message_does_not_hardcode_feature_x(agent):
80
80
  plan_msgs = [m for m in agent.messages if "PLANNING MODE" in m.get("content", "")]
81
81
  assert plan_msgs, "/plan did not append a planning system message"
82
82
  content = plan_msgs[-1]["content"]
83
- # The fix PRESCRIBES a document-derived example name...
84
- assert "imagease_pro_implementation_plan" in content or "derived from the task" in content
85
- # ...and only mentions feature_x_plan as an explicit anti-example, never as the one to follow.
86
- if "feature_x_plan" in content:
87
- assert "NOT 'feature_x_plan.md'" in content or "not 'feature_x_plan" in content
88
- # The fixed message must instruct grounding in real document content.
89
- assert "ACTUAL content" in content or "BASE your plan" in content
83
+ # The prompt now dynamically differentiates between Bug Fix and From-Scratch tasks
84
+ assert "Identify the task type" in content or "Bug Fix / Minor Feature" in content
85
+ assert "<name_timestamp>.md" in content
86
+ # It must enforce iterativity for major tasks
87
+ assert "ITERATIVE process" in content
90
88
 
91
89
 
92
90
  @pytest.mark.asyncio
@@ -1 +0,0 @@
1
- __version__ = "0.4.6"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes