alpiecode 7.0.2__tar.gz → 7.0.4__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 (43) hide show
  1. {alpiecode-7.0.2 → alpiecode-7.0.4}/PKG-INFO +1 -1
  2. {alpiecode-7.0.2 → alpiecode-7.0.4}/README.md +1 -1
  3. {alpiecode-7.0.2 → alpiecode-7.0.4}/pyproject.toml +1 -1
  4. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/alpiecode.egg-info/PKG-INFO +1 -1
  5. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/__init__.py +1 -1
  6. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/backends/openai_backend.py +30 -1
  7. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/config.py +4 -6
  8. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/extension/alpiecode.vsix +0 -0
  9. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/orchestrator.py +8 -5
  10. {alpiecode-7.0.2 → alpiecode-7.0.4}/setup.cfg +0 -0
  11. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/alpiecode/__init__.py +0 -0
  12. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/alpiecode.egg-info/SOURCES.txt +0 -0
  13. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/alpiecode.egg-info/dependency_links.txt +0 -0
  14. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/alpiecode.egg-info/entry_points.txt +0 -0
  15. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/alpiecode.egg-info/requires.txt +0 -0
  16. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/alpiecode.egg-info/top_level.txt +0 -0
  17. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/agent.py +0 -0
  18. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/backends/__init__.py +0 -0
  19. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/backends/base.py +0 -0
  20. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/backends/local_backend.py +0 -0
  21. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/cache.py +0 -0
  22. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/cli.py +0 -0
  23. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/client.py +0 -0
  24. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/compaction.py +0 -0
  25. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/context.py +0 -0
  26. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/discovery.py +0 -0
  27. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/doctor.py +0 -0
  28. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/executor.py +0 -0
  29. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/git_ops.py +0 -0
  30. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/github.py +0 -0
  31. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/guardian.py +0 -0
  32. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/ipython_ext.py +0 -0
  33. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/local_model.py +0 -0
  34. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/media.py +0 -0
  35. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/memory.py +0 -0
  36. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/progress.py +0 -0
  37. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/prompt.py +0 -0
  38. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/rephraser.py +0 -0
  39. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/server.py +0 -0
  40. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/session.py +0 -0
  41. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/tools.py +0 -0
  42. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/updater.py +0 -0
  43. {alpiecode-7.0.2 → alpiecode-7.0.4}/src/codeagent/vscode_installer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alpiecode
3
- Version: 7.0.2
3
+ Version: 7.0.4
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
@@ -329,7 +329,7 @@ The AlpieCode agent autonomously orchestrates **15 specialized tools**:
329
329
  ## ❓ FAQ & Troubleshooting
330
330
 
331
331
  #### Q: The extension shows "Local GGUF" even though I am connected to the internet. Why?
332
- > **A:** AlpieCode checks reachability of the specific remote model API (`http://20.245.200.125:8000/v1`). If port 8000 on the remote VM is not listening, it automatically switches to **Local GGUF** so you can continue coding without interruption. Run `alpiecode doctor` to verify.
332
+ > **A:** AlpieCode checks reachability of the specific remote model API (`https://test.169pi.ai/v1`). If the remote endpoint is unreachable, it automatically switches to **Local GGUF** so you can continue coding without interruption. Run `alpiecode doctor` to verify.
333
333
 
334
334
  #### Q: How do I test the extension after updates?
335
335
  > **A:** In VS Code, press **`Ctrl+Shift+P`** → select **`Developer: Reload Window`**.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "alpiecode"
7
- version = "7.0.2"
7
+ version = "7.0.4"
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: 7.0.2
3
+ Version: 7.0.4
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__ = "7.0.1"
19
+ __version__ = "7.0.2"
20
20
 
21
21
 
22
22
  def run(task: str, workdir: str = ".", reasoning_level: str = "medium", **kwargs):
@@ -111,9 +111,38 @@ class OpenAIBackend:
111
111
  )
112
112
 
113
113
  reasoning = getattr(msg, "reasoning", None) or getattr(msg, "reasoning_content", None)
114
+ content = msg.content or ""
115
+
116
+ # Extract embedded thinking/reasoning if not provided in separate fields
117
+ if not reasoning and content:
118
+ import re
119
+ if "</think>" in content:
120
+ # Handled when model starts thinking implicitly or with <think>
121
+ parts = content.split("</think>", 1)
122
+ reasoning = parts[0].replace("<think>", "").strip()
123
+ content = parts[1].strip()
124
+ elif "<think>" in content:
125
+ think_match = re.search(r"<think>(.*?)</think>", content, flags=re.DOTALL)
126
+ if think_match:
127
+ reasoning = think_match.group(1).strip()
128
+ content = re.sub(r"<think>.*?</think>", "", content, flags=re.DOTALL).strip()
129
+ elif content.strip().lower().startswith("thinking process:") or "\nthinking process:" in content.lower():
130
+ if tool_calls:
131
+ reasoning = re.sub(r"(?i)^thinking process:\s*", "", content).strip()
132
+ content = ""
133
+ else:
134
+ code_match = re.search(r"\n(?=```|Here is|Below is|I will|The following|DONE:|#!/usr|/\*|package\s|import\s[a-z]|from\s[a-z])", content, flags=re.IGNORECASE)
135
+ if code_match:
136
+ think_part = content[:code_match.start()]
137
+ content_part = content[code_match.start():]
138
+ reasoning = re.sub(r"(?i)^thinking process:\s*", "", think_part).strip()
139
+ content = content_part.strip()
140
+ else:
141
+ reasoning = re.sub(r"(?i)^thinking process:\s*", "", content).strip()
142
+ content = ""
114
143
 
115
144
  return ChatResponse(
116
- content=msg.content,
145
+ content=content,
117
146
  reasoning=reasoning,
118
147
  tool_calls=tool_calls,
119
148
  raw=resp,
@@ -18,10 +18,10 @@ CONFIG_DIR = Path.home() / ".alpiecode"
18
18
  CONFIG_PATH = CONFIG_DIR / "config.json"
19
19
 
20
20
  # Config version — bump this when defaults change to trigger auto-migration
21
- CONFIG_VERSION = 7 # v7: autonomous discovery engine (zero-flag flow)
21
+ CONFIG_VERSION = 8 # v7: autonomous discovery engine (zero-flag flow)
22
22
 
23
23
  DEFAULTS = {
24
- "base_url": "http://20.245.200.125:8000/v1", # Primary endpoint
24
+ "base_url": "https://test.169pi.ai/v1", # Primary endpoint
25
25
  "model": "alpie_9b",
26
26
  "model_repo": "169Pi/Alpie_learn_prototype_GGUF_NEW",
27
27
  "api_key": "not-needed",
@@ -107,12 +107,10 @@ def load_config() -> Config:
107
107
 
108
108
  # ── Auto-migrate stale configs ────────────────────────────
109
109
  saved_version = saved_data.get("config_version", 1)
110
- if saved_version < CONFIG_VERSION:
111
- # v1 → v2: n_ctx was 16384, upgrade to 32768
110
+ if saved_version < CONFIG_VERSION or "20.245.200.125" in str(saved_data.get("base_url", "")):
112
111
  if saved_data.get("n_ctx") == 16384:
113
112
  data["n_ctx"] = 32768
114
- # v5 → v6: smart flow, max_turns 20
115
- data["base_url"] = "http://20.245.200.125:8000/v1"
113
+ data["base_url"] = "https://test.169pi.ai/v1"
116
114
  data["model"] = "alpie_9b"
117
115
  data["enable_thinking"] = False
118
116
  data["temperature"] = 0.1
@@ -61,7 +61,7 @@ class AgentOrchestrator:
61
61
 
62
62
  # ── Phase 0: Discovery — pre-compute task intelligence ──
63
63
  task_context = build_task_context(task, session.workdir)
64
- complexity = task_context.complexity
64
+ complexity = complexity or task_context.complexity
65
65
 
66
66
  yield AgentEvent("discovery", {
67
67
  "intent": task_context.intent,
@@ -159,10 +159,13 @@ class AgentOrchestrator:
159
159
 
160
160
 
161
161
  # ── Adaptive thinking ──
162
- enable_thinking = cfg.enable_thinking or task_context.enable_thinking
163
- if enable_thinking and complexity in ("qa", "low"):
164
- enable_thinking = False
165
- yield AgentEvent("adaptive_mode", {"message": "Simple task detected, skipping deep reasoning."})
162
+ if cfg.enable_thinking:
163
+ enable_thinking = True
164
+ else:
165
+ enable_thinking = task_context.enable_thinking
166
+ if enable_thinking and complexity in ("qa", "low"):
167
+ enable_thinking = False
168
+ yield AgentEvent("adaptive_mode", {"message": "Simple task detected, skipping deep reasoning."})
166
169
 
167
170
  # ── Goal-driven turn loop (no fixed limit) ──
168
171
  progress_monitor = ProgressMonitor()
File without changes