redgit 1.3.1__tar.gz → 1.3.2__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.
- {redgit-1.3.1/redgit.egg-info → redgit-1.3.2}/PKG-INFO +2 -2
- {redgit-1.3.1 → redgit-1.3.2}/README.md +1 -1
- {redgit-1.3.1 → redgit-1.3.2}/pyproject.toml +2 -1
- redgit-1.3.2/redgit/__init__.py +1 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/cli.py +9 -7
- redgit-1.3.2/redgit/commands/backup.py +168 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/ci.py +2 -2
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/config.py +6 -6
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/daily.py +4 -4
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/init.py +2 -2
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/integration.py +4 -4
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/notify.py +1 -1
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/plugin.py +2 -2
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/poker.py +1 -1
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/propose.py +1006 -471
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/push.py +465 -28
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/quality.py +21 -13
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/scout.py +385 -2
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/tap.py +7 -7
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/tunnel.py +1 -1
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/webhook.py +4 -4
- redgit-1.3.2/redgit/core/common/__init__.py +52 -0
- redgit-1.3.2/redgit/core/common/backup.py +330 -0
- {redgit-1.3.1/redgit/core → redgit-1.3.2/redgit/core/common}/gitops.py +121 -17
- {redgit-1.3.1/redgit/core → redgit-1.3.2/redgit/core/common}/llm.py +125 -4
- {redgit-1.3.1/redgit/core → redgit-1.3.2/redgit/core/common}/prompt.py +67 -7
- redgit-1.3.2/redgit/core/daily/__init__.py +9 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/core/poker/ai_voter.py +2 -2
- redgit-1.3.2/redgit/core/propose/__init__.py +61 -0
- redgit-1.3.2/redgit/core/propose/analysis.py +500 -0
- redgit-1.3.2/redgit/core/propose/commit.py +169 -0
- redgit-1.3.2/redgit/core/propose/display.py +507 -0
- redgit-1.3.2/redgit/core/quality/__init__.py +29 -0
- {redgit-1.3.1/redgit/core → redgit-1.3.2/redgit/core/quality}/semgrep.py +31 -6
- {redgit-1.3.1 → redgit-1.3.2}/redgit/core/scout/__init__.py +289 -9
- redgit-1.3.2/redgit/core/tap/__init__.py +25 -0
- redgit-1.3.1/redgit/core/tap.py → redgit-1.3.2/redgit/core/tap/manager.py +1 -1
- redgit-1.3.2/redgit/core/webhook/__init__.py +16 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/integrations/base.py +7 -5
- {redgit-1.3.1 → redgit-1.3.2}/redgit/integrations/registry.py +2 -2
- {redgit-1.3.1 → redgit-1.3.2}/redgit/plugins/registry.py +1 -1
- redgit-1.3.2/redgit/prompts/commit/multi_task.md +77 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/utils/formatting.py +1 -1
- {redgit-1.3.1 → redgit-1.3.2}/redgit/utils/notifications.py +1 -1
- {redgit-1.3.1 → redgit-1.3.2/redgit.egg-info}/PKG-INFO +2 -2
- {redgit-1.3.1 → redgit-1.3.2}/redgit.egg-info/SOURCES.txt +23 -11
- redgit-1.3.1/redgit/__init__.py +0 -1
- {redgit-1.3.1 → redgit-1.3.2}/LICENSE +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/commands/__init__.py +0 -0
- {redgit-1.3.1/redgit/core → redgit-1.3.2/redgit/core/common}/config.py +0 -0
- {redgit-1.3.1/redgit/core → redgit-1.3.2/redgit/core/common}/constants.py +0 -0
- {redgit-1.3.1/redgit/core → redgit-1.3.2/redgit/core/common}/llm_providers.json +0 -0
- /redgit-1.3.1/redgit/core/daily_state.py → /redgit-1.3.2/redgit/core/daily/state.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/core/poker/__init__.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/core/poker/client.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/core/poker/server.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/core/poker/session.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/core/poker/ui.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/core/scout/team.py +0 -0
- {redgit-1.3.1/redgit/core → redgit-1.3.2/redgit/core/webhook}/actions.py +0 -0
- /redgit-1.3.1/redgit/core/webhook.py → /redgit-1.3.2/redgit/core/webhook/server.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/integrations/__init__.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/plugins/__init__.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/plugins/base.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/prompts/__init__.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/prompts/commit/default.md +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/prompts/commit/minimal.md +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/prompts/commit/task_filtered.md +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/prompts/daily/default.md +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/prompts/quality/default.md +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/splash.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/utils/__init__.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/utils/console.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/utils/dependency.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/utils/editor.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/utils/logging.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit/utils/security.py +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit.egg-info/dependency_links.txt +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit.egg-info/entry_points.txt +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit.egg-info/requires.txt +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/redgit.egg-info/top_level.txt +0 -0
- {redgit-1.3.1 → redgit-1.3.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: redgit
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: AI-powered Git workflow assistant with task management integration
|
|
5
5
|
Author-email: Your Name <your.email@example.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -40,7 +40,7 @@ Requires-Dist: websockets>=12.0; extra == "poker"
|
|
|
40
40
|
Dynamic: license-file
|
|
41
41
|
|
|
42
42
|
<p align="center">
|
|
43
|
-
<img src="https://raw.githubusercontent.com/ertiz82/redgit/main/assets/logo.svg?v=1.3.
|
|
43
|
+
<img src="https://raw.githubusercontent.com/ertiz82/redgit/main/assets/logo.svg?v=1.3.2" alt="RedGit Logo" width="400"/>
|
|
44
44
|
</p>
|
|
45
45
|
|
|
46
46
|
<p align="center">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="https://raw.githubusercontent.com/ertiz82/redgit/main/assets/logo.svg?v=1.3.
|
|
2
|
+
<img src="https://raw.githubusercontent.com/ertiz82/redgit/main/assets/logo.svg?v=1.3.2" alt="RedGit Logo" width="400"/>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "redgit"
|
|
7
|
-
version = "1.3.
|
|
7
|
+
version = "1.3.2"
|
|
8
8
|
description = "AI-powered Git workflow assistant with task management integration"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -64,6 +64,7 @@ include = ["redgit*"]
|
|
|
64
64
|
[tool.setuptools.package-data]
|
|
65
65
|
redgit = [
|
|
66
66
|
"core/*.json",
|
|
67
|
+
"core/common/*.json",
|
|
67
68
|
"integrations/*.json",
|
|
68
69
|
"prompts/**/*.md"
|
|
69
70
|
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.3.2"
|
|
@@ -21,6 +21,7 @@ from redgit.commands.scout import scout_app
|
|
|
21
21
|
from redgit.commands.webhook import webhook_app
|
|
22
22
|
from redgit.commands.tunnel import tunnel_app
|
|
23
23
|
from redgit.commands.poker import poker_app
|
|
24
|
+
from redgit.commands.backup import app as backup_app
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
def version_callback(value: bool):
|
|
@@ -67,12 +68,13 @@ app.add_typer(scout_app, name="scout")
|
|
|
67
68
|
app.add_typer(webhook_app, name="webhook")
|
|
68
69
|
app.add_typer(tunnel_app, name="tunnel")
|
|
69
70
|
app.add_typer(poker_app, name="poker")
|
|
71
|
+
app.add_typer(backup_app, name="backup")
|
|
70
72
|
|
|
71
73
|
|
|
72
74
|
def _load_plugin_commands():
|
|
73
75
|
"""Dynamically load commands from enabled plugins."""
|
|
74
76
|
try:
|
|
75
|
-
from redgit.core.config import ConfigManager
|
|
77
|
+
from redgit.core.common.config import ConfigManager
|
|
76
78
|
from redgit.plugins.registry import get_enabled_plugin_commands, get_all_plugin_shortcuts
|
|
77
79
|
|
|
78
80
|
config = ConfigManager().load()
|
|
@@ -99,13 +101,13 @@ def _load_plugin_commands():
|
|
|
99
101
|
|
|
100
102
|
|
|
101
103
|
def _load_integration_commands():
|
|
102
|
-
"""Dynamically load commands from
|
|
104
|
+
"""Dynamically load commands from installed integrations."""
|
|
103
105
|
try:
|
|
104
|
-
from redgit.
|
|
105
|
-
from redgit.integrations.registry import get_active_integration_commands
|
|
106
|
+
from redgit.integrations.registry import get_all_integration_commands
|
|
106
107
|
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
# Load commands for ALL installed integrations (not just active ones)
|
|
109
|
+
# This allows `rg jira`, `rg gitlab` etc. to work regardless of activation
|
|
110
|
+
commands = get_all_integration_commands()
|
|
109
111
|
|
|
110
112
|
for name, cmd_app in commands.items():
|
|
111
113
|
app.add_typer(cmd_app, name=name)
|
|
@@ -117,7 +119,7 @@ def _load_integration_commands():
|
|
|
117
119
|
def _setup_logging():
|
|
118
120
|
"""Set up logging based on config."""
|
|
119
121
|
try:
|
|
120
|
-
from redgit.core.config import ConfigManager
|
|
122
|
+
from redgit.core.common.config import ConfigManager
|
|
121
123
|
|
|
122
124
|
config_manager = ConfigManager()
|
|
123
125
|
logging_config = config_manager.get_logging_config()
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Backup command for RedGit.
|
|
3
|
+
|
|
4
|
+
Provides CLI interface for managing working tree backups.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import typer
|
|
8
|
+
from rich.console import Console
|
|
9
|
+
from rich.table import Table
|
|
10
|
+
|
|
11
|
+
from ..core.common.backup import BackupManager
|
|
12
|
+
from ..core.common.gitops import GitOps
|
|
13
|
+
|
|
14
|
+
app = typer.Typer(help="Manage working tree backups")
|
|
15
|
+
console = Console()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@app.command("list")
|
|
19
|
+
def list_cmd():
|
|
20
|
+
"""List all backups."""
|
|
21
|
+
try:
|
|
22
|
+
gitops = GitOps()
|
|
23
|
+
except Exception:
|
|
24
|
+
gitops = None
|
|
25
|
+
|
|
26
|
+
backup_manager = BackupManager(gitops)
|
|
27
|
+
backups = backup_manager.list_backups()
|
|
28
|
+
|
|
29
|
+
if not backups:
|
|
30
|
+
console.print("[yellow]No backups found.[/yellow]")
|
|
31
|
+
return
|
|
32
|
+
|
|
33
|
+
table = Table(title="RG Backups")
|
|
34
|
+
table.add_column("ID", style="cyan")
|
|
35
|
+
table.add_column("Date", style="dim")
|
|
36
|
+
table.add_column("Branch")
|
|
37
|
+
table.add_column("Files")
|
|
38
|
+
table.add_column("Status", style="bold")
|
|
39
|
+
|
|
40
|
+
for backup in backups:
|
|
41
|
+
status = backup.get("status", "unknown")
|
|
42
|
+
status_color = {
|
|
43
|
+
"created": "yellow",
|
|
44
|
+
"completed": "green",
|
|
45
|
+
"failed": "red",
|
|
46
|
+
"restored": "blue"
|
|
47
|
+
}.get(status, "white")
|
|
48
|
+
|
|
49
|
+
table.add_row(
|
|
50
|
+
backup.get("id", "?"),
|
|
51
|
+
backup.get("created_at", "")[:19],
|
|
52
|
+
backup.get("base_branch", "?"),
|
|
53
|
+
str(len(backup.get("files", []))),
|
|
54
|
+
f"[{status_color}]{status}[/{status_color}]"
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
console.print(table)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@app.command("restore")
|
|
61
|
+
def restore_cmd(
|
|
62
|
+
backup_id: str = typer.Argument("latest", help="Backup ID or 'latest'")
|
|
63
|
+
):
|
|
64
|
+
"""Restore working tree from backup."""
|
|
65
|
+
try:
|
|
66
|
+
gitops = GitOps()
|
|
67
|
+
except Exception:
|
|
68
|
+
gitops = None
|
|
69
|
+
|
|
70
|
+
backup_manager = BackupManager(gitops)
|
|
71
|
+
|
|
72
|
+
# Check if backup exists
|
|
73
|
+
backup = backup_manager.get_backup(backup_id)
|
|
74
|
+
if not backup:
|
|
75
|
+
console.print(f"[red]Backup not found: {backup_id}[/red]")
|
|
76
|
+
raise typer.Exit(1)
|
|
77
|
+
|
|
78
|
+
console.print(f"[yellow]Restoring backup: {backup.get('id', backup_id)}...[/yellow]")
|
|
79
|
+
console.print(f" Branch: {backup.get('base_branch', '?')}")
|
|
80
|
+
console.print(f" Files: {len(backup.get('files', []))}")
|
|
81
|
+
|
|
82
|
+
try:
|
|
83
|
+
manifest = backup_manager.restore_backup(backup_id)
|
|
84
|
+
console.print("\n[green]✓ Backup restored successfully![/green]")
|
|
85
|
+
console.print("\n[dim]Run 'git status' to see restored files.[/dim]")
|
|
86
|
+
except Exception as e:
|
|
87
|
+
console.print(f"\n[red]Error restoring backup: {e}[/red]")
|
|
88
|
+
raise typer.Exit(1)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@app.command("show")
|
|
92
|
+
def show_cmd(
|
|
93
|
+
backup_id: str = typer.Argument("latest", help="Backup ID or 'latest'")
|
|
94
|
+
):
|
|
95
|
+
"""Show backup details."""
|
|
96
|
+
try:
|
|
97
|
+
gitops = GitOps()
|
|
98
|
+
except Exception:
|
|
99
|
+
gitops = None
|
|
100
|
+
|
|
101
|
+
backup_manager = BackupManager(gitops)
|
|
102
|
+
manifest = backup_manager.get_backup(backup_id)
|
|
103
|
+
|
|
104
|
+
if not manifest:
|
|
105
|
+
console.print(f"[red]Backup not found: {backup_id}[/red]")
|
|
106
|
+
raise typer.Exit(1)
|
|
107
|
+
|
|
108
|
+
status = manifest.get("status", "unknown")
|
|
109
|
+
status_color = {
|
|
110
|
+
"created": "yellow",
|
|
111
|
+
"completed": "green",
|
|
112
|
+
"failed": "red",
|
|
113
|
+
"restored": "blue"
|
|
114
|
+
}.get(status, "white")
|
|
115
|
+
|
|
116
|
+
console.print(f"\n[bold cyan]Backup: {manifest.get('id', '?')}[/bold cyan]\n")
|
|
117
|
+
console.print(f" Created: {manifest.get('created_at', '?')}")
|
|
118
|
+
console.print(f" Command: {manifest.get('command', '?')}")
|
|
119
|
+
console.print(f" Branch: {manifest.get('base_branch', '?')}")
|
|
120
|
+
console.print(f" Commit: {manifest.get('head_commit', '?')}")
|
|
121
|
+
console.print(f" Status: [{status_color}]{status}[/{status_color}]")
|
|
122
|
+
|
|
123
|
+
if manifest.get("error"):
|
|
124
|
+
console.print(f"\n [red]Error: {manifest['error']}[/red]")
|
|
125
|
+
|
|
126
|
+
files = manifest.get("files", [])
|
|
127
|
+
console.print(f"\n Files ({len(files)}):")
|
|
128
|
+
for f in files[:15]:
|
|
129
|
+
staged = "[S]" if f.get("staged") else " "
|
|
130
|
+
status_char = f.get("status", "M")
|
|
131
|
+
# Support both "file" and "path" keys
|
|
132
|
+
file_path = f.get("file") or f.get("path", "?")
|
|
133
|
+
console.print(f" {staged} {status_char} {file_path}")
|
|
134
|
+
|
|
135
|
+
if len(files) > 15:
|
|
136
|
+
console.print(f" ... and {len(files) - 15} more")
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
@app.command("cleanup")
|
|
140
|
+
def cleanup_cmd(
|
|
141
|
+
keep: int = typer.Option(5, "--keep", "-k", help="Number of backups to keep")
|
|
142
|
+
):
|
|
143
|
+
"""Remove old backups, keep N most recent."""
|
|
144
|
+
try:
|
|
145
|
+
gitops = GitOps()
|
|
146
|
+
except Exception:
|
|
147
|
+
gitops = None
|
|
148
|
+
|
|
149
|
+
backup_manager = BackupManager(gitops)
|
|
150
|
+
|
|
151
|
+
before = len(backup_manager.list_backups())
|
|
152
|
+
backup_manager.cleanup_old_backups(keep=keep)
|
|
153
|
+
after = len(backup_manager.list_backups())
|
|
154
|
+
|
|
155
|
+
removed = before - after
|
|
156
|
+
if removed > 0:
|
|
157
|
+
console.print(f"[green]✓ Removed {removed} old backup(s). Keeping {after}.[/green]")
|
|
158
|
+
else:
|
|
159
|
+
console.print(f"[dim]No backups to remove. Total: {after}[/dim]")
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
# Default command (when just 'rg backup' is called)
|
|
163
|
+
@app.callback(invoke_without_command=True)
|
|
164
|
+
def main(ctx: typer.Context):
|
|
165
|
+
"""Manage working tree backups."""
|
|
166
|
+
if ctx.invoked_subcommand is None:
|
|
167
|
+
# Default to list
|
|
168
|
+
list_cmd()
|
|
@@ -15,8 +15,8 @@ from typing import Optional, List
|
|
|
15
15
|
from rich.console import Console
|
|
16
16
|
from rich.table import Table
|
|
17
17
|
|
|
18
|
-
from ..core.config import ConfigManager
|
|
19
|
-
from ..core.gitops import GitOps
|
|
18
|
+
from ..core.common.config import ConfigManager
|
|
19
|
+
from ..core.common.gitops import GitOps
|
|
20
20
|
from ..integrations.registry import get_cicd, get_integrations_by_type, IntegrationType
|
|
21
21
|
|
|
22
22
|
console = Console()
|
|
@@ -18,7 +18,7 @@ from rich.tree import Tree
|
|
|
18
18
|
import yaml
|
|
19
19
|
import os
|
|
20
20
|
|
|
21
|
-
from ..core.config import ConfigManager, CONFIG_PATH, DEFAULT_NOTIFICATIONS, DEFAULT_QUALITY
|
|
21
|
+
from ..core.common.config import ConfigManager, CONFIG_PATH, DEFAULT_NOTIFICATIONS, DEFAULT_QUALITY
|
|
22
22
|
|
|
23
23
|
console = Console()
|
|
24
24
|
config_app = typer.Typer(help="View and modify configuration")
|
|
@@ -300,7 +300,7 @@ def reset_cmd(
|
|
|
300
300
|
console.print(f"[green]Reset '{section}' to defaults[/green]")
|
|
301
301
|
|
|
302
302
|
elif section == "workflow":
|
|
303
|
-
from ..core.config import DEFAULT_WORKFLOW
|
|
303
|
+
from ..core.common.config import DEFAULT_WORKFLOW
|
|
304
304
|
if not force and not Confirm.ask(f"Reset '{section}' to defaults?", default=True):
|
|
305
305
|
return
|
|
306
306
|
|
|
@@ -580,8 +580,8 @@ def export_prompt_cmd(
|
|
|
580
580
|
rg config export-prompt quality # Export quality analysis prompt
|
|
581
581
|
"""
|
|
582
582
|
from pathlib import Path
|
|
583
|
-
from ..core.prompt import BUILTIN_PROMPTS_DIR
|
|
584
|
-
from ..core.config import RETGIT_DIR
|
|
583
|
+
from ..core.common.prompt import BUILTIN_PROMPTS_DIR
|
|
584
|
+
from ..core.common.config import RETGIT_DIR
|
|
585
585
|
from ..plugins.registry import get_plugin_by_name, get_builtin_plugins
|
|
586
586
|
from ..integrations.registry import get_all_integrations
|
|
587
587
|
|
|
@@ -750,8 +750,8 @@ def export_prompt_cmd(
|
|
|
750
750
|
def list_prompts_cmd():
|
|
751
751
|
"""List available prompt templates."""
|
|
752
752
|
from pathlib import Path
|
|
753
|
-
from ..core.prompt import BUILTIN_PROMPTS_DIR
|
|
754
|
-
from ..core.config import RETGIT_DIR
|
|
753
|
+
from ..core.common.prompt import BUILTIN_PROMPTS_DIR
|
|
754
|
+
from ..core.common.config import RETGIT_DIR
|
|
755
755
|
from ..plugins.registry import get_builtin_plugins
|
|
756
756
|
from ..integrations.registry import get_all_integrations
|
|
757
757
|
|
|
@@ -12,10 +12,10 @@ from rich.console import Console
|
|
|
12
12
|
from rich.panel import Panel
|
|
13
13
|
from rich.table import Table
|
|
14
14
|
|
|
15
|
-
from ..core.config import ConfigManager, RETGIT_DIR
|
|
16
|
-
from ..core.
|
|
17
|
-
from ..core.gitops import GitOps, NotAGitRepoError
|
|
18
|
-
from ..core.llm import LLMClient
|
|
15
|
+
from ..core.common.config import ConfigManager, RETGIT_DIR
|
|
16
|
+
from ..core.daily.state import DailyStateManager
|
|
17
|
+
from ..core.common.gitops import GitOps, NotAGitRepoError
|
|
18
|
+
from ..core.common.llm import LLMClient
|
|
19
19
|
|
|
20
20
|
console = Console()
|
|
21
21
|
|
|
@@ -3,8 +3,8 @@ import subprocess
|
|
|
3
3
|
import typer
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
-
from ..core.config import ConfigManager, RETGIT_DIR
|
|
7
|
-
from ..core.llm import load_providers, check_provider_available
|
|
6
|
+
from ..core.common.config import ConfigManager, RETGIT_DIR
|
|
7
|
+
from ..core.common.llm import load_providers, check_provider_available
|
|
8
8
|
from ..plugins.registry import detect_project_type, get_builtin_plugins
|
|
9
9
|
|
|
10
10
|
# Package source directories
|
|
@@ -2,7 +2,7 @@ import json
|
|
|
2
2
|
import typer
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
|
|
5
|
-
from ..core.config import ConfigManager
|
|
5
|
+
from ..core.common.config import ConfigManager
|
|
6
6
|
from ..integrations.registry import (
|
|
7
7
|
get_builtin_integrations,
|
|
8
8
|
get_all_integrations,
|
|
@@ -46,7 +46,7 @@ def _get_installed_integrations() -> set:
|
|
|
46
46
|
- Global directory: ~/.redgit/integrations/
|
|
47
47
|
- Project directory: .redgit/integrations/
|
|
48
48
|
"""
|
|
49
|
-
from ..core.config import GLOBAL_INTEGRATIONS_DIR
|
|
49
|
+
from ..core.common.config import GLOBAL_INTEGRATIONS_DIR
|
|
50
50
|
|
|
51
51
|
installed = set()
|
|
52
52
|
|
|
@@ -139,7 +139,7 @@ def list_cmd(
|
|
|
139
139
|
|
|
140
140
|
# Show available from taps
|
|
141
141
|
if all_integrations:
|
|
142
|
-
from ..core.tap import TapManager
|
|
142
|
+
from ..core.tap.manager import TapManager
|
|
143
143
|
|
|
144
144
|
tap_mgr = TapManager()
|
|
145
145
|
tap_integrations = tap_mgr.get_all_integrations(include_installed=True)
|
|
@@ -466,7 +466,7 @@ def update_cmd(
|
|
|
466
466
|
force: bool = typer.Option(False, "--force", "-f", help="Force reinstall even if up to date")
|
|
467
467
|
):
|
|
468
468
|
"""Update installed integrations from taps"""
|
|
469
|
-
from ..core.tap import TapManager, find_item_in_taps
|
|
469
|
+
from ..core.tap.manager import TapManager, find_item_in_taps
|
|
470
470
|
from .tap import install_from_tap
|
|
471
471
|
|
|
472
472
|
tap_mgr = TapManager()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import typer
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
|
|
4
|
-
from ..core.config import ConfigManager, GLOBAL_PLUGINS_DIR
|
|
4
|
+
from ..core.common.config import ConfigManager, GLOBAL_PLUGINS_DIR
|
|
5
5
|
from ..plugins.registry import get_all_plugins
|
|
6
6
|
|
|
7
7
|
plugin_app = typer.Typer(help="Plugin management")
|
|
@@ -52,7 +52,7 @@ def list_cmd(
|
|
|
52
52
|
|
|
53
53
|
# Show available from taps
|
|
54
54
|
if all_plugins:
|
|
55
|
-
from ..core.tap import TapManager
|
|
55
|
+
from ..core.tap.manager import TapManager
|
|
56
56
|
|
|
57
57
|
tap_mgr = TapManager()
|
|
58
58
|
tap_plugins = tap_mgr.get_all_plugins(include_installed=True)
|
|
@@ -13,7 +13,7 @@ from rich.panel import Panel
|
|
|
13
13
|
from rich.prompt import Prompt, IntPrompt, Confirm
|
|
14
14
|
from rich.table import Table
|
|
15
15
|
|
|
16
|
-
from ..core.config import ConfigManager
|
|
16
|
+
from ..core.common.config import ConfigManager
|
|
17
17
|
from ..utils.dependency import ensure_websockets, show_websockets_install_help
|
|
18
18
|
from ..integrations.registry import get_task_management, get_tunnel_integration
|
|
19
19
|
|