titan-cli 0.1.4__py3-none-any.whl → 0.1.6__py3-none-any.whl
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.
- titan_cli/core/config.py +3 -1
- titan_cli/core/workflows/__init__.py +2 -1
- titan_cli/core/workflows/project_step_source.py +95 -32
- titan_cli/core/workflows/workflow_filter_service.py +16 -8
- titan_cli/core/workflows/workflow_registry.py +12 -1
- titan_cli/core/workflows/workflow_sources.py +1 -1
- titan_cli/engine/__init__.py +5 -1
- titan_cli/engine/results.py +31 -1
- titan_cli/engine/steps/ai_assistant_step.py +47 -12
- titan_cli/engine/workflow_executor.py +13 -3
- titan_cli/ui/tui/screens/plugin_config_wizard.py +16 -0
- titan_cli/ui/tui/screens/workflow_execution.py +28 -50
- titan_cli/ui/tui/screens/workflows.py +8 -4
- titan_cli/ui/tui/textual_components.py +342 -185
- titan_cli/ui/tui/textual_workflow_executor.py +39 -3
- titan_cli/ui/tui/theme.py +34 -5
- titan_cli/ui/tui/widgets/__init__.py +17 -0
- titan_cli/ui/tui/widgets/multiline_input.py +32 -0
- titan_cli/ui/tui/widgets/prompt_choice.py +138 -0
- titan_cli/ui/tui/widgets/prompt_input.py +74 -0
- titan_cli/ui/tui/widgets/prompt_selection_list.py +150 -0
- titan_cli/ui/tui/widgets/prompt_textarea.py +87 -0
- titan_cli/ui/tui/widgets/step_container.py +70 -0
- titan_cli/ui/tui/widgets/styled_option_list.py +107 -0
- titan_cli/ui/tui/widgets/text.py +51 -130
- {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/METADATA +3 -5
- {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/RECORD +61 -46
- titan_plugin_git/clients/git_client.py +140 -5
- titan_plugin_git/plugin.py +13 -0
- titan_plugin_git/steps/ai_commit_message_step.py +39 -34
- titan_plugin_git/steps/branch_steps.py +18 -37
- titan_plugin_git/steps/checkout_step.py +66 -0
- titan_plugin_git/steps/commit_step.py +18 -22
- titan_plugin_git/steps/create_branch_step.py +131 -0
- titan_plugin_git/steps/diff_summary_step.py +180 -0
- titan_plugin_git/steps/pull_step.py +70 -0
- titan_plugin_git/steps/push_step.py +27 -11
- titan_plugin_git/steps/restore_original_branch_step.py +97 -0
- titan_plugin_git/steps/save_current_branch_step.py +82 -0
- titan_plugin_git/steps/status_step.py +32 -25
- titan_plugin_git/workflows/commit-ai.yaml +9 -3
- titan_plugin_github/agents/pr_agent.py +15 -2
- titan_plugin_github/steps/ai_pr_step.py +99 -40
- titan_plugin_github/steps/create_pr_step.py +18 -8
- titan_plugin_github/steps/github_prompt_steps.py +53 -1
- titan_plugin_github/steps/issue_steps.py +31 -18
- titan_plugin_github/steps/preview_step.py +15 -4
- titan_plugin_github/utils.py +5 -4
- titan_plugin_github/workflows/create-pr-ai.yaml +6 -11
- titan_plugin_jira/messages.py +12 -0
- titan_plugin_jira/plugin.py +4 -0
- titan_plugin_jira/steps/ai_analyze_issue_step.py +12 -7
- titan_plugin_jira/steps/get_issue_step.py +17 -13
- titan_plugin_jira/steps/list_versions_step.py +133 -0
- titan_plugin_jira/steps/prompt_select_issue_step.py +20 -8
- titan_plugin_jira/steps/search_jql_step.py +191 -0
- titan_plugin_jira/steps/search_saved_query_step.py +26 -24
- titan_plugin_jira/utils/__init__.py +1 -1
- {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/LICENSE +0 -0
- {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/WHEEL +0 -0
- {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""
|
|
2
|
+
StyledOptionList Widget
|
|
3
|
+
|
|
4
|
+
Custom OptionList that renders options with bold titles and dim descriptions.
|
|
5
|
+
Uses the same styling as BoldText and DimText components.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import List
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
from textual.widgets import OptionList
|
|
11
|
+
from textual.widgets.option_list import Option
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class StyledOption:
|
|
16
|
+
"""
|
|
17
|
+
Option with styled title and description.
|
|
18
|
+
|
|
19
|
+
Attributes:
|
|
20
|
+
id: Unique identifier for the option
|
|
21
|
+
title: Title text (rendered with bold styling)
|
|
22
|
+
description: Description text (rendered with dim styling)
|
|
23
|
+
disabled: Whether the option is disabled
|
|
24
|
+
"""
|
|
25
|
+
id: str
|
|
26
|
+
title: str
|
|
27
|
+
description: str = ""
|
|
28
|
+
disabled: bool = False
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class StyledOptionList(OptionList):
|
|
32
|
+
"""
|
|
33
|
+
OptionList that renders options with bold titles and dim descriptions.
|
|
34
|
+
|
|
35
|
+
This widget provides a consistent way to display lists of options across
|
|
36
|
+
the application, using BoldText and DimText styling patterns.
|
|
37
|
+
|
|
38
|
+
Usage:
|
|
39
|
+
from titan_cli.ui.tui.widgets import StyledOptionList, StyledOption
|
|
40
|
+
|
|
41
|
+
options = [
|
|
42
|
+
StyledOption(
|
|
43
|
+
id="workflow1",
|
|
44
|
+
title="Release Notes",
|
|
45
|
+
description="Generate multi-brand weekly release notes"
|
|
46
|
+
),
|
|
47
|
+
StyledOption(
|
|
48
|
+
id="workflow2",
|
|
49
|
+
title="Create PR",
|
|
50
|
+
description="Create a pull request with AI-generated description"
|
|
51
|
+
),
|
|
52
|
+
]
|
|
53
|
+
|
|
54
|
+
option_list = StyledOptionList(*options)
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
def __init__(self, *options: StyledOption, **kwargs):
|
|
58
|
+
"""
|
|
59
|
+
Initialize StyledOptionList with styled options.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
*options: StyledOption instances to display
|
|
63
|
+
**kwargs: Additional arguments passed to OptionList
|
|
64
|
+
"""
|
|
65
|
+
# Convert StyledOptions to Option objects with markup
|
|
66
|
+
option_objects = []
|
|
67
|
+
for opt in options:
|
|
68
|
+
if opt.description:
|
|
69
|
+
# Title in bold, description in dim, separated by newline
|
|
70
|
+
prompt = f"[bold]{opt.title}[/bold]\n[dim]{opt.description}[/dim]"
|
|
71
|
+
else:
|
|
72
|
+
# Just title in bold
|
|
73
|
+
prompt = f"[bold]{opt.title}[/bold]"
|
|
74
|
+
|
|
75
|
+
option_objects.append(
|
|
76
|
+
Option(prompt, id=opt.id, disabled=opt.disabled)
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
super().__init__(*option_objects, **kwargs)
|
|
80
|
+
|
|
81
|
+
def add_styled_option(self, option: StyledOption) -> None:
|
|
82
|
+
"""
|
|
83
|
+
Add a new styled option to the list.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
option: StyledOption to add
|
|
87
|
+
"""
|
|
88
|
+
if option.description:
|
|
89
|
+
prompt = f"[bold]{option.title}[/bold]\n[dim]{option.description}[/dim]"
|
|
90
|
+
else:
|
|
91
|
+
prompt = f"[bold]{option.title}[/bold]"
|
|
92
|
+
|
|
93
|
+
self.add_option(Option(prompt, id=option.id, disabled=option.disabled))
|
|
94
|
+
|
|
95
|
+
def set_styled_options(self, options: List[StyledOption]) -> None:
|
|
96
|
+
"""
|
|
97
|
+
Replace all options with new styled options.
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
options: List of StyledOption instances
|
|
101
|
+
"""
|
|
102
|
+
# Clear existing options
|
|
103
|
+
self.clear_options()
|
|
104
|
+
|
|
105
|
+
# Add new options
|
|
106
|
+
for opt in options:
|
|
107
|
+
self.add_styled_option(opt)
|
titan_cli/ui/tui/widgets/text.py
CHANGED
|
@@ -1,177 +1,98 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Text Widgets
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
Canonical text widgets with theme-based styling for use across the entire application.
|
|
5
|
+
|
|
6
|
+
All screens, steps, and core components should use these widgets to ensure consistent
|
|
7
|
+
styling that automatically adapts to the active theme.
|
|
8
|
+
|
|
9
|
+
Widgets:
|
|
10
|
+
- Text: Plain text without styling
|
|
11
|
+
- DimText: Muted/dimmed text
|
|
12
|
+
- BoldText: Bold text
|
|
13
|
+
- SuccessText: Success/green color (uses $success theme variable)
|
|
14
|
+
- ErrorText: Error/red color (uses $error theme variable)
|
|
15
|
+
- WarningText: Warning/yellow color (uses $warning theme variable)
|
|
16
|
+
- PrimaryText: Primary theme color (uses $primary theme variable)
|
|
17
|
+
- BoldPrimaryText: Bold text with primary color
|
|
18
|
+
- ItalicText: Italic text
|
|
19
|
+
- DimItalicText: Dim italic text
|
|
20
|
+
|
|
21
|
+
Usage in screens/core:
|
|
22
|
+
from titan_cli.ui.tui.widgets import DimText, SuccessText
|
|
23
|
+
self.mount(DimText("Loading..."))
|
|
24
|
+
self.mount(SuccessText("Completed!"))
|
|
25
|
+
|
|
26
|
+
Usage in workflow steps via TextualComponents:
|
|
27
|
+
ctx.textual.dim_text("Loading...")
|
|
28
|
+
ctx.textual.success_text("Completed!")
|
|
29
|
+
|
|
30
|
+
Note: All styling is defined globally in theme.py (TITAN_THEME_CSS).
|
|
31
|
+
Widget classes are used to apply the correct CSS selectors.
|
|
5
32
|
"""
|
|
6
33
|
from textual.widgets import Static
|
|
7
34
|
|
|
8
35
|
|
|
9
|
-
# Shared CSS for all text styling - DRY principle
|
|
10
|
-
SHARED_TEXT_CSS = """
|
|
11
|
-
.dim, DimText, DimItalicText {
|
|
12
|
-
color: $text-muted;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.bold, BoldText, BoldPrimaryText {
|
|
16
|
-
text-style: bold;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.italic, ItalicText, DimItalicText {
|
|
20
|
-
text-style: italic;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.primary, PrimaryText, BoldPrimaryText {
|
|
24
|
-
color: $primary;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.success, SuccessText {
|
|
28
|
-
color: $success;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.error, ErrorText {
|
|
32
|
-
color: $error;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.warning, WarningText {
|
|
36
|
-
color: $warning;
|
|
37
|
-
}
|
|
38
|
-
"""
|
|
39
|
-
|
|
40
|
-
|
|
41
36
|
class Text(Static):
|
|
42
37
|
"""
|
|
43
|
-
|
|
38
|
+
Plain text widget without styling.
|
|
39
|
+
|
|
40
|
+
For styled text, use specialized widgets:
|
|
41
|
+
- DimText: Muted/dimmed text
|
|
42
|
+
- BoldText: Bold text
|
|
43
|
+
- SuccessText: Success/green color
|
|
44
|
+
- ErrorText: Error/red color
|
|
45
|
+
- WarningText: Warning/yellow color
|
|
46
|
+
- PrimaryText: Primary theme color
|
|
47
|
+
- ItalicText: Italic text
|
|
44
48
|
|
|
45
49
|
Usage:
|
|
46
|
-
|
|
47
|
-
text = Text("Hello", style="bold")
|
|
48
|
-
|
|
49
|
-
# Change style dynamically
|
|
50
|
-
text.set_style("error")
|
|
51
|
-
|
|
52
|
-
# Combine multiple styles
|
|
53
|
-
text = Text("Hello", style="bold primary")
|
|
54
|
-
|
|
55
|
-
Available styles:
|
|
56
|
-
- dim: Muted/dimmed text
|
|
57
|
-
- bold: Bold text
|
|
58
|
-
- italic: Italic text
|
|
59
|
-
- primary: Primary color
|
|
60
|
-
- success: Success/green color
|
|
61
|
-
- error: Error/red color
|
|
62
|
-
- warning: Warning/yellow color
|
|
50
|
+
text = Text("Hello, world!")
|
|
63
51
|
"""
|
|
52
|
+
pass
|
|
53
|
+
|
|
64
54
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def __init__(self, renderable="", *, style: str = "", **kwargs):
|
|
68
|
-
"""
|
|
69
|
-
Initialize text widget.
|
|
70
|
-
|
|
71
|
-
Args:
|
|
72
|
-
renderable: Text content
|
|
73
|
-
style: Space-separated style classes (e.g., "bold primary")
|
|
74
|
-
**kwargs: Additional Static arguments
|
|
75
|
-
"""
|
|
76
|
-
# Add style classes to existing classes
|
|
77
|
-
if style:
|
|
78
|
-
existing_classes = kwargs.get("classes", "")
|
|
79
|
-
if existing_classes:
|
|
80
|
-
kwargs["classes"] = f"{existing_classes} {style}"
|
|
81
|
-
else:
|
|
82
|
-
kwargs["classes"] = style
|
|
83
|
-
|
|
84
|
-
super().__init__(renderable, **kwargs)
|
|
85
|
-
|
|
86
|
-
def set_style(self, *styles: str) -> None:
|
|
87
|
-
"""
|
|
88
|
-
Set the text style(s), removing previous styles.
|
|
89
|
-
|
|
90
|
-
Args:
|
|
91
|
-
*styles: One or more style names to apply
|
|
92
|
-
|
|
93
|
-
Example:
|
|
94
|
-
text.set_style("bold", "error")
|
|
95
|
-
"""
|
|
96
|
-
# Remove all style classes
|
|
97
|
-
for cls in ["dim", "bold", "italic", "primary", "success", "error", "warning"]:
|
|
98
|
-
self.remove_class(cls)
|
|
99
|
-
|
|
100
|
-
# Add new styles
|
|
101
|
-
for style in styles:
|
|
102
|
-
if style:
|
|
103
|
-
self.add_class(style)
|
|
104
|
-
|
|
105
|
-
def add_style(self, *styles: str) -> None:
|
|
106
|
-
"""
|
|
107
|
-
Add style(s) to the text without removing existing ones.
|
|
108
|
-
|
|
109
|
-
Args:
|
|
110
|
-
*styles: One or more style names to add
|
|
111
|
-
|
|
112
|
-
Example:
|
|
113
|
-
text.add_style("italic")
|
|
114
|
-
"""
|
|
115
|
-
for style in styles:
|
|
116
|
-
if style:
|
|
117
|
-
self.add_class(style)
|
|
118
|
-
|
|
119
|
-
def remove_style(self, *styles: str) -> None:
|
|
120
|
-
"""
|
|
121
|
-
Remove style(s) from the text.
|
|
122
|
-
|
|
123
|
-
Args:
|
|
124
|
-
*styles: One or more style names to remove
|
|
125
|
-
|
|
126
|
-
Example:
|
|
127
|
-
text.remove_style("bold")
|
|
128
|
-
"""
|
|
129
|
-
for style in styles:
|
|
130
|
-
if style:
|
|
131
|
-
self.remove_class(style)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
# Convenience widgets - use shared CSS
|
|
55
|
+
# Styled text widgets - styling defined globally in theme.py
|
|
135
56
|
class DimText(Static):
|
|
136
57
|
"""Text widget with dim/muted styling."""
|
|
137
|
-
|
|
58
|
+
pass
|
|
138
59
|
|
|
139
60
|
|
|
140
61
|
class BoldText(Static):
|
|
141
62
|
"""Text widget with bold styling."""
|
|
142
|
-
|
|
63
|
+
pass
|
|
143
64
|
|
|
144
65
|
|
|
145
66
|
class PrimaryText(Static):
|
|
146
67
|
"""Text widget with primary color."""
|
|
147
|
-
|
|
68
|
+
pass
|
|
148
69
|
|
|
149
70
|
|
|
150
71
|
class BoldPrimaryText(Static):
|
|
151
72
|
"""Text widget with bold primary color."""
|
|
152
|
-
|
|
73
|
+
pass
|
|
153
74
|
|
|
154
75
|
|
|
155
76
|
class SuccessText(Static):
|
|
156
77
|
"""Text widget with success/green color."""
|
|
157
|
-
|
|
78
|
+
pass
|
|
158
79
|
|
|
159
80
|
|
|
160
81
|
class ErrorText(Static):
|
|
161
82
|
"""Text widget with error/red color."""
|
|
162
|
-
|
|
83
|
+
pass
|
|
163
84
|
|
|
164
85
|
|
|
165
86
|
class WarningText(Static):
|
|
166
87
|
"""Text widget with warning/yellow color."""
|
|
167
|
-
|
|
88
|
+
pass
|
|
168
89
|
|
|
169
90
|
|
|
170
91
|
class ItalicText(Static):
|
|
171
92
|
"""Text widget with italic styling."""
|
|
172
|
-
|
|
93
|
+
pass
|
|
173
94
|
|
|
174
95
|
|
|
175
96
|
class DimItalicText(Static):
|
|
176
97
|
"""Text widget with dim italic styling."""
|
|
177
|
-
|
|
98
|
+
pass
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: titan-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.6
|
|
4
4
|
Summary: Modular development tools orchestrator - Streamline your workflows with AI integration and intuitive terminal UI
|
|
5
5
|
Home-page: https://github.com/masmovil/titan-cli
|
|
6
6
|
License: MIT
|
|
7
7
|
Keywords: cli,workflow,orchestrator,automation,devtools,ai
|
|
8
|
-
Author:
|
|
9
|
-
Author-email:
|
|
10
|
-
Maintainer: r-pedraza
|
|
11
|
-
Maintainer-email: raulpedrazaleon@gmail.com
|
|
8
|
+
Author: MasOrange Apps Team
|
|
9
|
+
Author-email: apps-management-stores@masorange.es
|
|
12
10
|
Requires-Python: >=3.10,<4.0.0
|
|
13
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
14
12
|
Classifier: Environment :: Console
|
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
titan_plugin_git/__init__.py,sha256=msIvkIXf4msXC3-q9NS2Ln556Zt9QQl-lQ688RYJnjA,50
|
|
2
2
|
titan_plugin_git/clients/__init__.py,sha256=WNAZ_kqzD_GC9NpxSjZQvkQEkcvB-tZTZPcETAK7UkE,184
|
|
3
|
-
titan_plugin_git/clients/git_client.py,sha256=
|
|
3
|
+
titan_plugin_git/clients/git_client.py,sha256=s2AY9gpuqI9sBqiCy-9drsc0IpXc2U7W8nnI6Mt4CSw,27417
|
|
4
4
|
titan_plugin_git/exceptions.py,sha256=540oqBBvyoAcO0Kh_seuBVY-Au9jEam88rif11XA-GY,657
|
|
5
5
|
titan_plugin_git/messages.py,sha256=esQJEYOC8-IaA-TkhCwtQ0ur0RWjMF_VdfGT_CX3eqs,5940
|
|
6
6
|
titan_plugin_git/models.py,sha256=z1tUi8bh-EzAOsLRkuqWbYMJAIzZmYP_m7AhH53z254,665
|
|
7
|
-
titan_plugin_git/plugin.py,sha256=
|
|
7
|
+
titan_plugin_git/plugin.py,sha256=5yZ_lniz8uQeGt3XQLOuUTHSm0hvy9nnVUp_Ilb90Ys,4705
|
|
8
8
|
titan_plugin_git/steps/__init__.py,sha256=msIvkIXf4msXC3-q9NS2Ln556Zt9QQl-lQ688RYJnjA,50
|
|
9
|
-
titan_plugin_git/steps/ai_commit_message_step.py,sha256=
|
|
10
|
-
titan_plugin_git/steps/branch_steps.py,sha256=
|
|
11
|
-
titan_plugin_git/steps/
|
|
12
|
-
titan_plugin_git/steps/
|
|
13
|
-
titan_plugin_git/steps/
|
|
9
|
+
titan_plugin_git/steps/ai_commit_message_step.py,sha256=ZUh8lMrENjXCP1OzH_oXFGX_SdJGl23fSGQzzUgMUnw,6991
|
|
10
|
+
titan_plugin_git/steps/branch_steps.py,sha256=zEeWxTqoKXfyaGra3p8AKYeT1ZvmMZvGh6wK0l-9esA,3087
|
|
11
|
+
titan_plugin_git/steps/checkout_step.py,sha256=y39h2G4sxDMQRDDGVxGMqwma5O4YgHosiNiKV5JJRHk,1993
|
|
12
|
+
titan_plugin_git/steps/commit_step.py,sha256=mZyAu44O6JHHbzliBFWqWW1fKK7WwG-9wGVudbTSzvI,3126
|
|
13
|
+
titan_plugin_git/steps/create_branch_step.py,sha256=t_mQ-sPN6RiP7NJ-jAaNs_6GZltQEaOBy3SuZSqd3Sw,5207
|
|
14
|
+
titan_plugin_git/steps/diff_summary_step.py,sha256=b_OspWvJT2Hgu-FU2Se38DM36eaCbaJ3PD5inhhwvW0,6307
|
|
15
|
+
titan_plugin_git/steps/pull_step.py,sha256=aqjspoy5Ejh0t03NCelG5FmdhOSCH0X0qL7Rp9uvOj0,2187
|
|
16
|
+
titan_plugin_git/steps/push_step.py,sha256=oERpSZOUWe7-tNg-ir6jhgYKrmHE1CiZgiGMbUyxfBY,2939
|
|
17
|
+
titan_plugin_git/steps/restore_original_branch_step.py,sha256=QL5H66o5c0lsZmlOcslKw9tQYtwEHU0XebHuVGb6cNw,3473
|
|
18
|
+
titan_plugin_git/steps/save_current_branch_step.py,sha256=XxjS_-ODVdY2A7z9WbE_2lrjCsTqU09ubor4a0Z-HDk,2725
|
|
19
|
+
titan_plugin_git/steps/status_step.py,sha256=DQcBobH9n9lQCjN1uYiGZPAov4pMWCuDfZPwBtwz838,2379
|
|
14
20
|
titan_plugin_git/workflows/__previews__/__init__.py,sha256=MXi4U95Tyi2Ku1ODkMtzMyvfQhkmrBiFxEi9IzoDVdg,40
|
|
15
21
|
titan_plugin_git/workflows/__previews__/commit_ai_preview.py,sha256=lMQt9dzVQMAZe1mFSSxAUBaSxYSLB4XMThGCO92mHVM,3744
|
|
16
|
-
titan_plugin_git/workflows/commit-ai.yaml,sha256=
|
|
22
|
+
titan_plugin_git/workflows/commit-ai.yaml,sha256=QYaYRvxb_Z7e6B8moKM-Puovd4xNRY15Coo-jxPUaqI,748
|
|
17
23
|
titan_plugin_github/__init__.py,sha256=Isw61E7k0RKHHx3eyC7m5x8JBFSY0iR6tS24Pil6oEI,240
|
|
18
24
|
titan_plugin_github/agents/__init__.py,sha256=jTGWPeICit5UBN_UhIhwPPq_Z6TLOyl1hRXiQTq0I8s,184
|
|
19
25
|
titan_plugin_github/agents/config_loader.py,sha256=3zHseeCMabK7QfWmHQuviCL7gsVUEfM8WkuXrNhBtu8,5241
|
|
20
26
|
titan_plugin_github/agents/issue_generator.py,sha256=JC6ZjR-huBb4QBfbY4eGA-7G9NLYNuGNhPmQXsqAP2I,14360
|
|
21
|
-
titan_plugin_github/agents/pr_agent.py,sha256=
|
|
27
|
+
titan_plugin_github/agents/pr_agent.py,sha256=c4q_n-oAlJzM6kaj3qLd8hsA3qMdXiw7Ip8mhsceLss,18405
|
|
22
28
|
titan_plugin_github/clients/__init__.py,sha256=n5ovE3nzbHhSiB39Jrf0_E8rfRdcGYs8tpYw7qfglnI,166
|
|
23
29
|
titan_plugin_github/clients/github_client.py,sha256=UTSncdhkNINhE01gEYYZLssouk9Dc20qEhuraphrPXo,33981
|
|
24
30
|
titan_plugin_github/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -28,16 +34,16 @@ titan_plugin_github/messages.py,sha256=OFLgetbcsvlrI8x2zvoU3yGl1Cv7FO-WyOQFYdSrq
|
|
|
28
34
|
titan_plugin_github/models.py,sha256=Oauvp-jxMl35UJio1P0zEp4liZD-EDtCNxqSRc03UcU,9400
|
|
29
35
|
titan_plugin_github/plugin.py,sha256=kJPMvRiL5l_Ax4bbHZSzVKHvTAv3uuEvxQY50APNb70,5190
|
|
30
36
|
titan_plugin_github/steps/__init__.py,sha256=3HQgbDBbWluKTm7LN6gxkE4gMYpBcaSMDkZpIFHek2c,287
|
|
31
|
-
titan_plugin_github/steps/ai_pr_step.py,sha256=
|
|
32
|
-
titan_plugin_github/steps/create_pr_step.py,sha256=
|
|
33
|
-
titan_plugin_github/steps/github_prompt_steps.py,sha256=
|
|
34
|
-
titan_plugin_github/steps/issue_steps.py,sha256=
|
|
35
|
-
titan_plugin_github/steps/preview_step.py,sha256=
|
|
36
|
-
titan_plugin_github/utils.py,sha256=
|
|
37
|
+
titan_plugin_github/steps/ai_pr_step.py,sha256=4QO-nUc55TJRsU7Yb7tSf1PeQPkgbmJNGSu11i-kVPY,8092
|
|
38
|
+
titan_plugin_github/steps/create_pr_step.py,sha256=vAjBJq36FgV0mKX30q8XN7zmeYENUkS0-m9obt3rVZ8,4079
|
|
39
|
+
titan_plugin_github/steps/github_prompt_steps.py,sha256=BsqeIksF1nEiIAcK0bw0fyC4-XSlNOGb-OZ9O-gZxOk,8343
|
|
40
|
+
titan_plugin_github/steps/issue_steps.py,sha256=RIZ5PG5jmMzeJgHievRKdldew2JcD_qlNQJsKYlN9ak,5608
|
|
41
|
+
titan_plugin_github/steps/preview_step.py,sha256=2NGPg3XuQbMWhrueufW3eIgKMs3FO1TvnSlhleI0cMU,1883
|
|
42
|
+
titan_plugin_github/utils.py,sha256=P22O_OoJOLKA1BowwpdsDV_ZlE_8hhRLa6SxCgfiekE,2394
|
|
37
43
|
titan_plugin_github/workflows/__previews__/__init__.py,sha256=t3X_YXZCc4XvlfCW37gdE5z_z0b8y_XCl15UjXA3dl8,38
|
|
38
44
|
titan_plugin_github/workflows/__previews__/create_pr_ai_preview.py,sha256=Q6e6KJqj9UvtNK-D5xfESlUDoFMaaMhCOuFpWCQVNkw,4515
|
|
39
45
|
titan_plugin_github/workflows/create-issue-ai.yaml,sha256=GDrZhLDNc8_DaPI3BKG4O5A4qJMP20Kkb5VeowIjSpM,818
|
|
40
|
-
titan_plugin_github/workflows/create-pr-ai.yaml,sha256=
|
|
46
|
+
titan_plugin_github/workflows/create-pr-ai.yaml,sha256=l2uP3esOFma3Or-REpdm4TX4xRoU5pX70S1gdw85Fe4,977
|
|
41
47
|
titan_plugin_jira/__init__.py,sha256=b2-ut3LZmbu9lOjOL-9X8P27AC454XbxbrpoVSR6jgk,159
|
|
42
48
|
titan_plugin_jira/agents/__init__.py,sha256=pbooB15t2HT38JUQX0zuNu4EeXhTd0G8gTdL9bNZpRQ,194
|
|
43
49
|
titan_plugin_jira/agents/config_loader.py,sha256=SfRCW5xEW7ztFziJERcjsexp6Qup_8cuNiaXgC7As_k,7024
|
|
@@ -52,14 +58,16 @@ titan_plugin_jira/config/templates/issue_analysis.md.j2,sha256=xPznSjW3U8GXFtumR
|
|
|
52
58
|
titan_plugin_jira/exceptions.py,sha256=NCOVDhynbVmyNFvi_zihl2JPTMr4twIsIb2Bk-v7ZJU,902
|
|
53
59
|
titan_plugin_jira/formatters/__init__.py,sha256=W0OL5zwdagAbnQoYzEhf47xVtveZ1thC1IgTXbLjIsc,222
|
|
54
60
|
titan_plugin_jira/formatters/markdown_formatter.py,sha256=JG-u4rslaA1PH9UQ8LEs7wwkC6GcoeyONU-mbNc_OXw,8174
|
|
55
|
-
titan_plugin_jira/messages.py,sha256=
|
|
61
|
+
titan_plugin_jira/messages.py,sha256=P9MapggiAwQV7Vh68kCXghwCRyh4glmLFIMypXpx-9g,6572
|
|
56
62
|
titan_plugin_jira/models.py,sha256=jjW-Rw7BOYzlmfwjAuVSk2Gzyozw2gyZX4LFFPtUqD4,1664
|
|
57
|
-
titan_plugin_jira/plugin.py,sha256=
|
|
58
|
-
titan_plugin_jira/steps/ai_analyze_issue_step.py,sha256=
|
|
59
|
-
titan_plugin_jira/steps/get_issue_step.py,sha256=
|
|
60
|
-
titan_plugin_jira/steps/
|
|
61
|
-
titan_plugin_jira/steps/
|
|
62
|
-
titan_plugin_jira/
|
|
63
|
+
titan_plugin_jira/plugin.py,sha256=mZNalmxobFb1eVFRa24fz5rYdFprQHdY6UxqtZMWcgo,9775
|
|
64
|
+
titan_plugin_jira/steps/ai_analyze_issue_step.py,sha256=lv8dgYUlzIPfliqH5ry0ApoKUPhbLhFu_qfF4A4yGVY,3977
|
|
65
|
+
titan_plugin_jira/steps/get_issue_step.py,sha256=NRp2CPztzrjZrsWp5xf2cnQcAEGgXMUUWDqvFm83vXs,2890
|
|
66
|
+
titan_plugin_jira/steps/list_versions_step.py,sha256=4AuvU-ldUdYWg--xLKWPywAruesTEYWvs9BhFyMJKGA,4800
|
|
67
|
+
titan_plugin_jira/steps/prompt_select_issue_step.py,sha256=NvbJDbDoe4xRIUwx7iAA4XBIfLk6DFKypsVo14xCH-U,3306
|
|
68
|
+
titan_plugin_jira/steps/search_jql_step.py,sha256=X_Q7ePG6CgzKRyfjoW37-yjMTxUKpJ9X2OGVy2wv0Nc,6588
|
|
69
|
+
titan_plugin_jira/steps/search_saved_query_step.py,sha256=_Z_UVJ7t7EVNUGcsw06vtwI150V2lyWaUoXUQ5ZhA7A,8661
|
|
70
|
+
titan_plugin_jira/utils/__init__.py,sha256=qEoY1dMk7rsx2pB8VRTrdPPXlZrjpCh30zWRJ3Cg3KI,239
|
|
63
71
|
titan_plugin_jira/utils/issue_sorter.py,sha256=5l5K20ppb1zfhuEOyXXkmfV_zh1wTio1IUWMU2IBaRE,4012
|
|
64
72
|
titan_plugin_jira/utils/saved_queries.py,sha256=bWFI1LSs8ydCRprcJTHk6DMrq1wXN27pb5zoYYVJpRw,5111
|
|
65
73
|
titan_plugin_jira/workflows/analyze-jira-issues.yaml,sha256=VQ-_trGZGxvQUFsbXmrc8r2q9TIi5bfO-T4l6r-JyMw,802
|
|
@@ -81,7 +89,7 @@ titan_cli/cli.py,sha256=K4ZeF_PysMtfJM7K6IReQTjwFJlrDuheR05YIIhxf_4,3156
|
|
|
81
89
|
titan_cli/clients/__init__.py,sha256=gI2mQ8JeuqFa8u7XAbYlyjOph1Z5VR42NnLOjq65iD4,22
|
|
82
90
|
titan_cli/clients/gcloud_client.py,sha256=BXc7PWqcWIjF4-l2GV3w__r11MmfPtl8OW5TFw4hgr4,1902
|
|
83
91
|
titan_cli/core/__init__.py,sha256=Z5dxtLlHbAQu79NUqjlA7Ovh9toDM2B9PiVv0J-kWGQ,71
|
|
84
|
-
titan_cli/core/config.py,sha256=
|
|
92
|
+
titan_cli/core/config.py,sha256=zMgmioJKYNIUOtB0iGXMORgsT_C_NeTOmRSb4D6UI1M,11603
|
|
85
93
|
titan_cli/core/discovery.py,sha256=SPU5OcCg7mJTiA8cIR_6gHw8AdZmDVGi-nK80138HRU,1816
|
|
86
94
|
titan_cli/core/errors.py,sha256=I-xX6CCIFhno0ZUK8IRPX6RhXfj3Q7mckiCj-xintdY,2419
|
|
87
95
|
titan_cli/core/models.py,sha256=468qjAXv6KBK3ZSEg4oV3wVOfNKDFzXIkqugBfMiisI,2373
|
|
@@ -90,23 +98,23 @@ titan_cli/core/plugins/models.py,sha256=CdaktVAEcq4t41X4IfXrBgjFxly6FxdJikqqkyJt
|
|
|
90
98
|
titan_cli/core/plugins/plugin_base.py,sha256=TtHjO-g1PBS0W0vfAM-5z-0xwL0IT2Ohi3BJ0TIfTEU,2597
|
|
91
99
|
titan_cli/core/plugins/plugin_registry.py,sha256=cuoarcNnsvLv30-01uGnjWwrqy2Jaf_eJGJelzcv_k0,7753
|
|
92
100
|
titan_cli/core/secrets.py,sha256=4A4rszaie1wJh7xccetOO9rM_0jwYiIQIZVgCM0tCT4,4642
|
|
93
|
-
titan_cli/core/workflows/__init__.py,sha256=
|
|
101
|
+
titan_cli/core/workflows/__init__.py,sha256=b2jT3_wIwZtSNn0Qfc2nDXdPJyUb0Ovno5wqONuu-bU,691
|
|
94
102
|
titan_cli/core/workflows/models.py,sha256=xMXmZKMTYRawUeuAO0hG5dF6QMRCM-TWFNfoveBxJpQ,4746
|
|
95
|
-
titan_cli/core/workflows/project_step_source.py,sha256=
|
|
103
|
+
titan_cli/core/workflows/project_step_source.py,sha256=YzEIrF9THHD6GZHvGkOCAhU8TOhI3WrfKeqrl0_dg2Y,5523
|
|
96
104
|
titan_cli/core/workflows/workflow_exceptions.py,sha256=vgbMHtLMbksyALLEtUL8r9Vp9G-AqLja6ZARs8JyRAo,493
|
|
97
|
-
titan_cli/core/workflows/workflow_filter_service.py,sha256=
|
|
98
|
-
titan_cli/core/workflows/workflow_registry.py,sha256=
|
|
99
|
-
titan_cli/core/workflows/workflow_sources.py,sha256=
|
|
100
|
-
titan_cli/engine/__init__.py,sha256=
|
|
105
|
+
titan_cli/core/workflows/workflow_filter_service.py,sha256=GXX0cxD-s5TvZO5hfUx7rrw326C6lYI-dXy14soq4so,4704
|
|
106
|
+
titan_cli/core/workflows/workflow_registry.py,sha256=tmNeyDpy-qADz6JbvZtWHMjjlp5hi397wMMb-Ej6Z8g,17829
|
|
107
|
+
titan_cli/core/workflows/workflow_sources.py,sha256=bPrTLMN4BPcPIHdklLmKB0_5fA2pq_u7oYnhdGcH5-c,11465
|
|
108
|
+
titan_cli/engine/__init__.py,sha256=YghcgJLqehQCXNK9CcQUk8s1BW4JeEykR4EUc20Caa4,872
|
|
101
109
|
titan_cli/engine/builder.py,sha256=yjJnqanJJtr4hq0qLPRYYr_Hc28i9svnHPoyq2QUSiU,5265
|
|
102
110
|
titan_cli/engine/context.py,sha256=6oY0RTnhBwnoDDC7dX1daE2E5__AG8WM8LvX-Ca55OM,2356
|
|
103
111
|
titan_cli/engine/mock_context.py,sha256=ZcWnPJFffyLK2ghrVRcZz8hRFYE0Hpr5noh49yIqLes,4987
|
|
104
|
-
titan_cli/engine/results.py,sha256=
|
|
105
|
-
titan_cli/engine/steps/ai_assistant_step.py,sha256=
|
|
112
|
+
titan_cli/engine/results.py,sha256=2lNqUxpQIYOIvSVtyGgGxEogzkI4TSUcZvZB4rl5yWY,3201
|
|
113
|
+
titan_cli/engine/steps/ai_assistant_step.py,sha256=lz07oYDt8OWIn-rk0485vmb8NJhXbbeSHZzIpGkK8g8,9128
|
|
106
114
|
titan_cli/engine/steps/command_step.py,sha256=FH3mTzSqS9VuZPanmnmabBUJuYB6J1frIfkqwXlcrPE,3199
|
|
107
115
|
titan_cli/engine/utils/__init__.py,sha256=fkj1-rKdKRQRktUhmYKw6VMDAmnMsILjxZGTRMMcWPY,73
|
|
108
116
|
titan_cli/engine/utils/venv.py,sha256=drsu00VuQjiaS19Bq-WT3_IcrS3utj5T16840oSHE54,1063
|
|
109
|
-
titan_cli/engine/workflow_executor.py,sha256=
|
|
117
|
+
titan_cli/engine/workflow_executor.py,sha256=inhT94lDhdzC-9vc-lT74MysBWM1mo2pp0LBgROd5FU,9608
|
|
110
118
|
titan_cli/external_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
119
|
titan_cli/external_cli/configs.py,sha256=thW7_8sRYC3t76Wsjvw20vovNOSz1MhVukzabfdFCOo,417
|
|
112
120
|
titan_cli/external_cli/launcher.py,sha256=2t8UJmGwjGsrPk4PRSba_ZnYgEpZNrCvKUENvHxwaSw,2450
|
|
@@ -122,25 +130,32 @@ titan_cli/ui/tui/screens/base.py,sha256=ufVYBkVzetQxsPQTobN0HgUGdSB0ARfRtvo-02DS
|
|
|
122
130
|
titan_cli/ui/tui/screens/cli_launcher.py,sha256=C9XWe1jUr0-Q_PGwchL6bVu9N2g-QLa83jJZGl7ucHI,4385
|
|
123
131
|
titan_cli/ui/tui/screens/global_setup_wizard.py,sha256=gbkGMGXWJdfrIWvRvT5DDFZKKRWmf7nlGUuUkTtDiKI,12115
|
|
124
132
|
titan_cli/ui/tui/screens/main_menu.py,sha256=5Z27Ny69PPJF0q6_H5zcNPOh8vrRDr_xgYFSmUbn244,4493
|
|
125
|
-
titan_cli/ui/tui/screens/plugin_config_wizard.py,sha256=
|
|
133
|
+
titan_cli/ui/tui/screens/plugin_config_wizard.py,sha256=xKxgYwLJ6sNtdRSpx1JabSCaYTTNd4aFUFhLJb2KHoE,21296
|
|
126
134
|
titan_cli/ui/tui/screens/plugin_management.py,sha256=2UvdxISzaiQBpm1OW1cpDrQS4ghTSC_87nlpx5Nrjhw,12356
|
|
127
135
|
titan_cli/ui/tui/screens/project_setup_wizard.py,sha256=Q2cCHlzWpiLdtGUTHnkHnXapkxZahRAVTx5MI78sszU,24210
|
|
128
|
-
titan_cli/ui/tui/screens/workflow_execution.py,sha256=
|
|
129
|
-
titan_cli/ui/tui/screens/workflows.py,sha256=
|
|
130
|
-
titan_cli/ui/tui/textual_components.py,sha256=
|
|
131
|
-
titan_cli/ui/tui/textual_workflow_executor.py,sha256=
|
|
132
|
-
titan_cli/ui/tui/theme.py,sha256=
|
|
133
|
-
titan_cli/ui/tui/widgets/__init__.py,sha256=
|
|
136
|
+
titan_cli/ui/tui/screens/workflow_execution.py,sha256=up8jEvPe67ovsR5idplHOc8YVTvGiTnHQgxg6pGWGPA,22574
|
|
137
|
+
titan_cli/ui/tui/screens/workflows.py,sha256=6ZdQGpuiwvp3oQJq1UEAFK0FBkNOfHmcbq-uHVGLO40,9050
|
|
138
|
+
titan_cli/ui/tui/textual_components.py,sha256=LWfsOha5lOTlNuQ17Y8CMytmlwz5trtYb4gvtNQZTR0,22305
|
|
139
|
+
titan_cli/ui/tui/textual_workflow_executor.py,sha256=Z1DDhqBlwobRf-DBLGL3oKt_5mOF2dBrj_YwFz1nqWk,18704
|
|
140
|
+
titan_cli/ui/tui/theme.py,sha256=W0QBwGisnOv8qNkUARDB_xSV4w-f4J-pbs35xYe7SB0,2470
|
|
141
|
+
titan_cli/ui/tui/widgets/__init__.py,sha256=HhrmX2v30eLFZd5WTqN-BZzMjQA7Q0Oq-kPPZDxPRe4,1254
|
|
134
142
|
titan_cli/ui/tui/widgets/button.py,sha256=Z7aRve1PSKpcQOsPo1db2GlKfwKddAVsU2KfhSRarKw,2143
|
|
135
143
|
titan_cli/ui/tui/widgets/header.py,sha256=ZGZuhY4B15q56DcZItXjarOrDX0ASCPdDczIOrYXwJI,3043
|
|
144
|
+
titan_cli/ui/tui/widgets/multiline_input.py,sha256=kaxBXXuHoYzy_C6Lifl38k0AF_M8461QIgrjhV3d5M4,1043
|
|
136
145
|
titan_cli/ui/tui/widgets/panel.py,sha256=jcLKZQXVqMGsvi7mVoTyKWijjrmXOgtC2ZuAkk2Ulgc,1818
|
|
146
|
+
titan_cli/ui/tui/widgets/prompt_choice.py,sha256=IjWAJxoJlME2TCzahgPN1dxTh5wHvQB6YNZ1GxNXesg,3746
|
|
147
|
+
titan_cli/ui/tui/widgets/prompt_input.py,sha256=T1ME84lQVYWtVbmzErniyEDbZr-WrhNYOAPFHX7q3kQ,2065
|
|
148
|
+
titan_cli/ui/tui/widgets/prompt_selection_list.py,sha256=Y-0ShaeaRcYfSAAPl5-E8rvykZ_RkJjcZXslZecgmE8,4517
|
|
149
|
+
titan_cli/ui/tui/widgets/prompt_textarea.py,sha256=drOyWUnj5gU4XjJwJcCbanwFfT2OrMjPlajkyCI3M04,2664
|
|
137
150
|
titan_cli/ui/tui/widgets/status_bar.py,sha256=XiRFpoOb9DPHStaMddNIAaYmHIzg8ZkmyBzvWy4CrZg,3361
|
|
151
|
+
titan_cli/ui/tui/widgets/step_container.py,sha256=yY9bMgc2Yyr3BFnpZrSbCixAAzt4gdTQYdAKnsDnQ3s,1612
|
|
152
|
+
titan_cli/ui/tui/widgets/styled_option_list.py,sha256=GPKaP2z0jcIJI7Xo3sY58b8AdTEU4OoLPDRyA1AQ6_0,3219
|
|
138
153
|
titan_cli/ui/tui/widgets/table.py,sha256=uWXyUda6mvflBybrrUSZh5Nvf794ege8SUe_0D24y3c,1668
|
|
139
|
-
titan_cli/ui/tui/widgets/text.py,sha256=
|
|
154
|
+
titan_cli/ui/tui/widgets/text.py,sha256=ewN7zZjsa5RzGKQh6tD3Q-b5a6pYMakC5IT_AXj7014,2400
|
|
140
155
|
titan_cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
156
|
titan_cli/utils/autoupdate.py,sha256=Tq3SJp3iOMNONQZOw-48G6AmpKrPOyWV9RxuCA03q4M,4151
|
|
142
|
-
titan_cli-0.1.
|
|
143
|
-
titan_cli-0.1.
|
|
144
|
-
titan_cli-0.1.
|
|
145
|
-
titan_cli-0.1.
|
|
146
|
-
titan_cli-0.1.
|
|
157
|
+
titan_cli-0.1.6.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
158
|
+
titan_cli-0.1.6.dist-info/METADATA,sha256=Dogx4PpCjUAvCYZFAVQBQgfwguJ9IUxxBTtaMh07v4Q,4492
|
|
159
|
+
titan_cli-0.1.6.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
160
|
+
titan_cli-0.1.6.dist-info/entry_points.txt,sha256=i_Zucivhsx6FcrkKDQS00MJ_Nwse-nAEkuksCcs_Ym8,186
|
|
161
|
+
titan_cli-0.1.6.dist-info/RECORD,,
|