copex 0.2.1__tar.gz → 0.7.1__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.
- {copex-0.2.1 → copex-0.7.1}/PKG-INFO +10 -1
- {copex-0.2.1 → copex-0.7.1}/README.md +9 -0
- {copex-0.2.1 → copex-0.7.1}/pyproject.toml +2 -3
- {copex-0.2.1 → copex-0.7.1}/src/copex/__init__.py +13 -14
- {copex-0.2.1 → copex-0.7.1}/src/copex/checkpoint.py +4 -7
- {copex-0.2.1 → copex-0.7.1}/src/copex/cli.py +399 -52
- {copex-0.2.1 → copex-0.7.1}/src/copex/client.py +217 -29
- {copex-0.2.1 → copex-0.7.1}/src/copex/config.py +97 -23
- {copex-0.2.1 → copex-0.7.1}/src/copex/mcp.py +5 -6
- {copex-0.2.1 → copex-0.7.1}/src/copex/metrics.py +6 -6
- {copex-0.2.1 → copex-0.7.1}/src/copex/models.py +6 -0
- {copex-0.2.1 → copex-0.7.1}/src/copex/persistence.py +6 -6
- {copex-0.2.1 → copex-0.7.1}/src/copex/ralph.py +2 -6
- {copex-0.2.1 → copex-0.7.1}/src/copex/tools.py +48 -21
- copex-0.7.1/src/copex/ui.py +961 -0
- copex-0.2.1/src/copex/ui.py +0 -554
- {copex-0.2.1 → copex-0.7.1}/.gitignore +0 -0
- {copex-0.2.1 → copex-0.7.1}/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: copex
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.1
|
|
4
4
|
Summary: Copilot Extended - Resilient wrapper for GitHub Copilot SDK with auto-retry, Ralph Wiggum loops, and more
|
|
5
5
|
Project-URL: Homepage, https://github.com/Arthur742Ramos/copex
|
|
6
6
|
Project-URL: Repository, https://github.com/Arthur742Ramos/copex
|
|
@@ -233,6 +233,15 @@ copex interactive
|
|
|
233
233
|
copex interactive --model claude-sonnet-4.5 --reasoning high
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
+
Interactive slash commands:
|
|
237
|
+
- `/model <name>` - Change model
|
|
238
|
+
- `/reasoning <level>` - Change reasoning effort
|
|
239
|
+
- `/models` - List available models
|
|
240
|
+
- `/new` - Start a new session
|
|
241
|
+
- `/status` - Show current settings
|
|
242
|
+
- `/tools` - Toggle full tool call list
|
|
243
|
+
- `/help` - Show commands
|
|
244
|
+
|
|
236
245
|
### Other commands
|
|
237
246
|
|
|
238
247
|
```bash
|
|
@@ -202,6 +202,15 @@ copex interactive
|
|
|
202
202
|
copex interactive --model claude-sonnet-4.5 --reasoning high
|
|
203
203
|
```
|
|
204
204
|
|
|
205
|
+
Interactive slash commands:
|
|
206
|
+
- `/model <name>` - Change model
|
|
207
|
+
- `/reasoning <level>` - Change reasoning effort
|
|
208
|
+
- `/models` - List available models
|
|
209
|
+
- `/new` - Start a new session
|
|
210
|
+
- `/status` - Show current settings
|
|
211
|
+
- `/tools` - Toggle full tool call list
|
|
212
|
+
- `/help` - Show commands
|
|
213
|
+
|
|
205
214
|
### Other commands
|
|
206
215
|
|
|
207
216
|
```bash
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "copex"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.7.1"
|
|
8
8
|
description = "Copilot Extended - Resilient wrapper for GitHub Copilot SDK with auto-retry, Ralph Wiggum loops, and more"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -52,6 +52,5 @@ target-version = "py310"
|
|
|
52
52
|
|
|
53
53
|
[tool.ruff.lint]
|
|
54
54
|
select = ["E", "F", "I", "W"]
|
|
55
|
+
ignore = ["E501"]
|
|
55
56
|
|
|
56
|
-
[tool.pytest.ini_options]
|
|
57
|
-
asyncio_mode = "auto"
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
"""Copex - Copilot Extended: A resilient wrapper for GitHub Copilot SDK."""
|
|
2
2
|
|
|
3
|
+
# Checkpointing
|
|
4
|
+
from copex.checkpoint import Checkpoint, CheckpointedRalph, CheckpointStore
|
|
3
5
|
from copex.client import Copex
|
|
4
6
|
from copex.config import CopexConfig, find_copilot_cli
|
|
5
|
-
from copex.models import Model, ReasoningEffort
|
|
6
7
|
|
|
7
|
-
#
|
|
8
|
-
from copex.
|
|
9
|
-
|
|
10
|
-
# Persistence
|
|
11
|
-
from copex.persistence import SessionStore, PersistentSession, Message, SessionData
|
|
12
|
-
|
|
13
|
-
# Checkpointing
|
|
14
|
-
from copex.checkpoint import CheckpointStore, Checkpoint, CheckpointedRalph
|
|
8
|
+
# MCP integration
|
|
9
|
+
from copex.mcp import MCPClient, MCPManager, MCPServerConfig, MCPTool, load_mcp_config
|
|
15
10
|
|
|
16
11
|
# Metrics
|
|
17
12
|
from copex.metrics import MetricsCollector, RequestMetrics, SessionMetrics, get_collector
|
|
13
|
+
from copex.models import Model, ReasoningEffort
|
|
18
14
|
|
|
19
|
-
#
|
|
20
|
-
from copex.
|
|
15
|
+
# Persistence
|
|
16
|
+
from copex.persistence import Message, PersistentSession, SessionData, SessionStore
|
|
21
17
|
|
|
22
|
-
#
|
|
23
|
-
from copex.
|
|
18
|
+
# Ralph Wiggum loops
|
|
19
|
+
from copex.ralph import RalphConfig, RalphState, RalphWiggum, ralph_loop
|
|
20
|
+
|
|
21
|
+
# Parallel tools
|
|
22
|
+
from copex.tools import ParallelToolExecutor, ToolRegistry, ToolResult
|
|
24
23
|
|
|
25
24
|
__all__ = [
|
|
26
25
|
# Core
|
|
@@ -59,4 +58,4 @@ __all__ = [
|
|
|
59
58
|
"MCPTool",
|
|
60
59
|
"load_mcp_config",
|
|
61
60
|
]
|
|
62
|
-
__version__ = "0.
|
|
61
|
+
__version__ = "0.4.2"
|
|
@@ -63,13 +63,13 @@ class CheckpointStore:
|
|
|
63
63
|
|
|
64
64
|
Usage:
|
|
65
65
|
store = CheckpointStore()
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
# Create checkpoint
|
|
68
68
|
cp = store.create("my-loop", prompt, iteration, ...)
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
# Update on each iteration
|
|
71
71
|
store.update(cp.checkpoint_id, iteration=5, history=[...])
|
|
72
|
-
|
|
72
|
+
|
|
73
73
|
# Resume after crash
|
|
74
74
|
cp = store.get_latest("my-loop")
|
|
75
75
|
"""
|
|
@@ -374,21 +374,18 @@ class CheckpointedRalph:
|
|
|
374
374
|
Returns:
|
|
375
375
|
Final checkpoint state
|
|
376
376
|
"""
|
|
377
|
-
from copex.ralph import
|
|
377
|
+
from copex.ralph import RalphConfig, RalphWiggum
|
|
378
378
|
|
|
379
379
|
# Check for existing checkpoint to resume
|
|
380
380
|
if resume:
|
|
381
381
|
existing = self.store.get_latest(self.loop_id)
|
|
382
382
|
if existing and not existing.completed:
|
|
383
383
|
self._checkpoint = existing
|
|
384
|
-
start_iteration = existing.iteration
|
|
385
384
|
history = existing.history
|
|
386
385
|
else:
|
|
387
386
|
self._checkpoint = None
|
|
388
|
-
start_iteration = 0
|
|
389
387
|
history = []
|
|
390
388
|
else:
|
|
391
|
-
start_iteration = 0
|
|
392
389
|
history = []
|
|
393
390
|
|
|
394
391
|
# Create new checkpoint if needed
|