alpiecode 8.0.2__tar.gz → 8.0.5__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 (44) hide show
  1. {alpiecode-8.0.2 → alpiecode-8.0.5}/PKG-INFO +1 -1
  2. {alpiecode-8.0.2 → alpiecode-8.0.5}/pyproject.toml +1 -1
  3. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/alpiecode.egg-info/PKG-INFO +1 -1
  4. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/__init__.py +1 -1
  5. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/extension/alpiecode.vsix +0 -0
  6. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/orchestrator.py +22 -2
  7. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/prompt.py +14 -0
  8. {alpiecode-8.0.2 → alpiecode-8.0.5}/README.md +0 -0
  9. {alpiecode-8.0.2 → alpiecode-8.0.5}/setup.cfg +0 -0
  10. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/alpiecode/__init__.py +0 -0
  11. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/alpiecode.egg-info/SOURCES.txt +0 -0
  12. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/alpiecode.egg-info/dependency_links.txt +0 -0
  13. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/alpiecode.egg-info/entry_points.txt +0 -0
  14. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/alpiecode.egg-info/requires.txt +0 -0
  15. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/alpiecode.egg-info/top_level.txt +0 -0
  16. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/agent.py +0 -0
  17. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/backends/__init__.py +0 -0
  18. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/backends/base.py +0 -0
  19. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/backends/local_backend.py +0 -0
  20. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/backends/openai_backend.py +0 -0
  21. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/cache.py +0 -0
  22. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/cli.py +0 -0
  23. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/client.py +0 -0
  24. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/compaction.py +0 -0
  25. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/config.py +0 -0
  26. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/context.py +0 -0
  27. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/discovery.py +0 -0
  28. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/doctor.py +0 -0
  29. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/executor.py +0 -0
  30. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/git_ops.py +0 -0
  31. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/github.py +0 -0
  32. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/guardian.py +0 -0
  33. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/guardrails.py +0 -0
  34. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/ipython_ext.py +0 -0
  35. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/local_model.py +0 -0
  36. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/media.py +0 -0
  37. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/memory.py +0 -0
  38. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/progress.py +0 -0
  39. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/rephraser.py +0 -0
  40. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/server.py +0 -0
  41. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/session.py +0 -0
  42. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/tools.py +0 -0
  43. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/updater.py +0 -0
  44. {alpiecode-8.0.2 → alpiecode-8.0.5}/src/codeagent/vscode_installer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alpiecode
3
- Version: 8.0.2
3
+ Version: 8.0.5
4
4
  Summary: AlpieCode — Autonomous AI Coding Agent CLI powered by local 169Pi GGUF VLM
5
5
  Requires-Python: >=3.9
6
6
  Requires-Dist: huggingface_hub>=0.20.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "alpiecode"
7
- version = "8.0.2"
7
+ version = "8.0.5"
8
8
  description = "AlpieCode — Autonomous AI Coding Agent CLI powered by local 169Pi GGUF VLM"
9
9
  requires-python = ">=3.9"
10
10
  dependencies = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alpiecode
3
- Version: 8.0.2
3
+ Version: 8.0.5
4
4
  Summary: AlpieCode — Autonomous AI Coding Agent CLI powered by local 169Pi GGUF VLM
5
5
  Requires-Python: >=3.9
6
6
  Requires-Dist: huggingface_hub>=0.20.0
@@ -16,7 +16,7 @@ Supports:
16
16
  from pathlib import Path
17
17
  from typing import Optional, Any, Dict
18
18
 
19
- __version__ = "8.0.1"
19
+ __version__ = "8.0.4"
20
20
 
21
21
 
22
22
  def run(task: str, workdir: str = ".", reasoning_level: str = "thinking", **kwargs):
@@ -329,7 +329,17 @@ class AgentOrchestrator:
329
329
  })
330
330
  session.context.add_tool_result(res.tool_call_id, res.content)
331
331
 
332
- yield AgentEvent("message", {"content": resp.content})
332
+ if resp.content:
333
+ # Clean duplicate DONE: if repeated
334
+ if resp.content.upper().count("DONE:") > 1:
335
+ parts = re.split(r"(?i)\bDONE:\s*", resp.content)
336
+ if len(parts) >= 3 and parts[1].strip() == parts[2].strip():
337
+ resp.content = parts[0] + "DONE: " + parts[1].strip()
338
+
339
+ # Only yield 'message' if tokens were NOT already streamed chunk-by-chunk
340
+ if not (hasattr(self.backend, "chat_completion_stream") and not is_offline):
341
+ yield AgentEvent("message", {"content": resp.content})
342
+
333
343
  extract_and_save_memories(session.workdir, session.context.messages)
334
344
 
335
345
  # Generate and write real walkthrough.md file to the project workspace
@@ -423,7 +433,17 @@ class AgentOrchestrator:
423
433
  except Exception:
424
434
  pass
425
435
 
426
- yield AgentEvent("message", {"content": resp.content})
436
+ if resp.content:
437
+ # Clean duplicate DONE: if repeated
438
+ if resp.content.upper().count("DONE:") > 1:
439
+ parts = re.split(r"(?i)\bDONE:\s*", resp.content)
440
+ if len(parts) >= 3 and parts[1].strip() == parts[2].strip():
441
+ resp.content = parts[0] + "DONE: " + parts[1].strip()
442
+
443
+ # Only yield 'message' if tokens were NOT already streamed chunk-by-chunk
444
+ if not (hasattr(self.backend, "chat_completion_stream") and not is_offline):
445
+ yield AgentEvent("message", {"content": resp.content})
446
+
427
447
  extract_and_save_memories(session.workdir, session.context.messages)
428
448
  yield AgentEvent("done", {"summary": resp.content})
429
449
  return
@@ -101,6 +101,13 @@ You are AlpieCode, an autonomous software-engineering agent built by 169Pi. \
101
101
  You write complete, working code in a single pass and verify it by running it.
102
102
 
103
103
  # CRITICAL RULE: WRITE CODE FIRST
104
+
105
+ # CRITICAL: FAST TESTING & EXECUTION (NO REAL SLEEP)
106
+ - NEVER use real `time.sleep()` in unit tests for timers, rate limiters, token buckets, or delays.
107
+ - Real sleep blocks the test suite for seconds and degrades agent speed.
108
+ - ALWAYS use virtual clocks or mock time: `unittest.mock.patch('time.monotonic')`, `unittest.mock.patch('time.time')`, or pass a custom `time_func` to advance time instantaneously.
109
+ - All unit tests MUST finish in under 0.05 seconds.
110
+
104
111
  Your #1 priority is to PRODUCE CODE on Turn 1. Do NOT explore, list files, \
105
112
  or read project structure before writing code unless you are modifying an \
106
113
  existing file. For new projects, WRITE THE COMPLETE CODE IMMEDIATELY.
@@ -248,6 +255,13 @@ You are AlpieCode, an autonomous software engineering AI agent built by 169Pi.
248
255
  You are running in OFFLINE mode — there is NO internet access.
249
256
 
250
257
  # CRITICAL RULE: WRITE CODE FIRST
258
+
259
+ # CRITICAL: FAST TESTING & EXECUTION (NO REAL SLEEP)
260
+ - NEVER use real `time.sleep()` in unit tests for timers, rate limiters, token buckets, or delays.
261
+ - Real sleep blocks the test suite for seconds and degrades agent speed.
262
+ - ALWAYS use virtual clocks or mock time: `unittest.mock.patch('time.monotonic')`, `unittest.mock.patch('time.time')`, or pass a custom `time_func` to advance time instantaneously.
263
+ - All unit tests MUST finish in under 0.05 seconds.
264
+
251
265
  Write the complete code on Turn 1. Verify by running it. Fix if needed.
252
266
 
253
267
  Rules:
File without changes
File without changes