alpiecode 8.0.2__tar.gz → 8.0.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 (44) hide show
  1. {alpiecode-8.0.2 → alpiecode-8.0.3}/PKG-INFO +1 -1
  2. {alpiecode-8.0.2 → alpiecode-8.0.3}/pyproject.toml +1 -1
  3. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/alpiecode.egg-info/PKG-INFO +1 -1
  4. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/__init__.py +1 -1
  5. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/extension/alpiecode.vsix +0 -0
  6. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/orchestrator.py +22 -2
  7. {alpiecode-8.0.2 → alpiecode-8.0.3}/README.md +0 -0
  8. {alpiecode-8.0.2 → alpiecode-8.0.3}/setup.cfg +0 -0
  9. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/alpiecode/__init__.py +0 -0
  10. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/alpiecode.egg-info/SOURCES.txt +0 -0
  11. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/alpiecode.egg-info/dependency_links.txt +0 -0
  12. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/alpiecode.egg-info/entry_points.txt +0 -0
  13. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/alpiecode.egg-info/requires.txt +0 -0
  14. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/alpiecode.egg-info/top_level.txt +0 -0
  15. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/agent.py +0 -0
  16. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/backends/__init__.py +0 -0
  17. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/backends/base.py +0 -0
  18. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/backends/local_backend.py +0 -0
  19. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/backends/openai_backend.py +0 -0
  20. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/cache.py +0 -0
  21. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/cli.py +0 -0
  22. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/client.py +0 -0
  23. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/compaction.py +0 -0
  24. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/config.py +0 -0
  25. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/context.py +0 -0
  26. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/discovery.py +0 -0
  27. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/doctor.py +0 -0
  28. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/executor.py +0 -0
  29. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/git_ops.py +0 -0
  30. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/github.py +0 -0
  31. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/guardian.py +0 -0
  32. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/guardrails.py +0 -0
  33. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/ipython_ext.py +0 -0
  34. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/local_model.py +0 -0
  35. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/media.py +0 -0
  36. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/memory.py +0 -0
  37. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/progress.py +0 -0
  38. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/prompt.py +0 -0
  39. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/rephraser.py +0 -0
  40. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/server.py +0 -0
  41. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/session.py +0 -0
  42. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/tools.py +0 -0
  43. {alpiecode-8.0.2 → alpiecode-8.0.3}/src/codeagent/updater.py +0 -0
  44. {alpiecode-8.0.2 → alpiecode-8.0.3}/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.3
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.3"
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.3
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.2"
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
File without changes
File without changes