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.
Files changed (61) hide show
  1. titan_cli/core/config.py +3 -1
  2. titan_cli/core/workflows/__init__.py +2 -1
  3. titan_cli/core/workflows/project_step_source.py +95 -32
  4. titan_cli/core/workflows/workflow_filter_service.py +16 -8
  5. titan_cli/core/workflows/workflow_registry.py +12 -1
  6. titan_cli/core/workflows/workflow_sources.py +1 -1
  7. titan_cli/engine/__init__.py +5 -1
  8. titan_cli/engine/results.py +31 -1
  9. titan_cli/engine/steps/ai_assistant_step.py +47 -12
  10. titan_cli/engine/workflow_executor.py +13 -3
  11. titan_cli/ui/tui/screens/plugin_config_wizard.py +16 -0
  12. titan_cli/ui/tui/screens/workflow_execution.py +28 -50
  13. titan_cli/ui/tui/screens/workflows.py +8 -4
  14. titan_cli/ui/tui/textual_components.py +342 -185
  15. titan_cli/ui/tui/textual_workflow_executor.py +39 -3
  16. titan_cli/ui/tui/theme.py +34 -5
  17. titan_cli/ui/tui/widgets/__init__.py +17 -0
  18. titan_cli/ui/tui/widgets/multiline_input.py +32 -0
  19. titan_cli/ui/tui/widgets/prompt_choice.py +138 -0
  20. titan_cli/ui/tui/widgets/prompt_input.py +74 -0
  21. titan_cli/ui/tui/widgets/prompt_selection_list.py +150 -0
  22. titan_cli/ui/tui/widgets/prompt_textarea.py +87 -0
  23. titan_cli/ui/tui/widgets/step_container.py +70 -0
  24. titan_cli/ui/tui/widgets/styled_option_list.py +107 -0
  25. titan_cli/ui/tui/widgets/text.py +51 -130
  26. {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/METADATA +3 -5
  27. {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/RECORD +61 -46
  28. titan_plugin_git/clients/git_client.py +140 -5
  29. titan_plugin_git/plugin.py +13 -0
  30. titan_plugin_git/steps/ai_commit_message_step.py +39 -34
  31. titan_plugin_git/steps/branch_steps.py +18 -37
  32. titan_plugin_git/steps/checkout_step.py +66 -0
  33. titan_plugin_git/steps/commit_step.py +18 -22
  34. titan_plugin_git/steps/create_branch_step.py +131 -0
  35. titan_plugin_git/steps/diff_summary_step.py +180 -0
  36. titan_plugin_git/steps/pull_step.py +70 -0
  37. titan_plugin_git/steps/push_step.py +27 -11
  38. titan_plugin_git/steps/restore_original_branch_step.py +97 -0
  39. titan_plugin_git/steps/save_current_branch_step.py +82 -0
  40. titan_plugin_git/steps/status_step.py +32 -25
  41. titan_plugin_git/workflows/commit-ai.yaml +9 -3
  42. titan_plugin_github/agents/pr_agent.py +15 -2
  43. titan_plugin_github/steps/ai_pr_step.py +99 -40
  44. titan_plugin_github/steps/create_pr_step.py +18 -8
  45. titan_plugin_github/steps/github_prompt_steps.py +53 -1
  46. titan_plugin_github/steps/issue_steps.py +31 -18
  47. titan_plugin_github/steps/preview_step.py +15 -4
  48. titan_plugin_github/utils.py +5 -4
  49. titan_plugin_github/workflows/create-pr-ai.yaml +6 -11
  50. titan_plugin_jira/messages.py +12 -0
  51. titan_plugin_jira/plugin.py +4 -0
  52. titan_plugin_jira/steps/ai_analyze_issue_step.py +12 -7
  53. titan_plugin_jira/steps/get_issue_step.py +17 -13
  54. titan_plugin_jira/steps/list_versions_step.py +133 -0
  55. titan_plugin_jira/steps/prompt_select_issue_step.py +20 -8
  56. titan_plugin_jira/steps/search_jql_step.py +191 -0
  57. titan_plugin_jira/steps/search_saved_query_step.py +26 -24
  58. titan_plugin_jira/utils/__init__.py +1 -1
  59. {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/LICENSE +0 -0
  60. {titan_cli-0.1.4.dist-info → titan_cli-0.1.6.dist-info}/WHEEL +0 -0
  61. {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)
@@ -1,177 +1,98 @@
1
1
  """
2
2
  Text Widgets
3
3
 
4
- Reusable text widgets with theme-based styling.
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
- Reusable text widget with dynamic styling via CSS classes.
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
- # Create with initial style
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
- DEFAULT_CSS = SHARED_TEXT_CSS
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
- DEFAULT_CSS = SHARED_TEXT_CSS
58
+ pass
138
59
 
139
60
 
140
61
  class BoldText(Static):
141
62
  """Text widget with bold styling."""
142
- DEFAULT_CSS = SHARED_TEXT_CSS
63
+ pass
143
64
 
144
65
 
145
66
  class PrimaryText(Static):
146
67
  """Text widget with primary color."""
147
- DEFAULT_CSS = SHARED_TEXT_CSS
68
+ pass
148
69
 
149
70
 
150
71
  class BoldPrimaryText(Static):
151
72
  """Text widget with bold primary color."""
152
- DEFAULT_CSS = SHARED_TEXT_CSS
73
+ pass
153
74
 
154
75
 
155
76
  class SuccessText(Static):
156
77
  """Text widget with success/green color."""
157
- DEFAULT_CSS = SHARED_TEXT_CSS
78
+ pass
158
79
 
159
80
 
160
81
  class ErrorText(Static):
161
82
  """Text widget with error/red color."""
162
- DEFAULT_CSS = SHARED_TEXT_CSS
83
+ pass
163
84
 
164
85
 
165
86
  class WarningText(Static):
166
87
  """Text widget with warning/yellow color."""
167
- DEFAULT_CSS = SHARED_TEXT_CSS
88
+ pass
168
89
 
169
90
 
170
91
  class ItalicText(Static):
171
92
  """Text widget with italic styling."""
172
- DEFAULT_CSS = SHARED_TEXT_CSS
93
+ pass
173
94
 
174
95
 
175
96
  class DimItalicText(Static):
176
97
  """Text widget with dim italic styling."""
177
- DEFAULT_CSS = SHARED_TEXT_CSS
98
+ pass
@@ -1,14 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: titan-cli
3
- Version: 0.1.4
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: finxo
9
- Author-email: finxeto@gmail.com
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=Z1vBcKEfvdah9FyMyUqkg3_4zCTI2VSpbKps50t_EjM,23425
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=cYQO9HkSXF4qEuOiD4YEmWgRXjxZsL12ocLHS8EO1hg,3870
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=gC7AYZNvFc1ZiMYOMSJ3UoT_jwFFhSWxTYF2db9sOFk,6395
10
- titan_plugin_git/steps/branch_steps.py,sha256=TwZ7OyrQhy4kfInjSnXWFK9NlHFCh9laxtHT070Bg_E,3320
11
- titan_plugin_git/steps/commit_step.py,sha256=nHHXdpfuWgYhJqFEKkGFRRszEQnv40dzMoHwKr3ceK0,2966
12
- titan_plugin_git/steps/push_step.py,sha256=3GRHF0Y8EjDva5EB6l9AA_VwRtOu8XXI0hZRDo7LwsM,2372
13
- titan_plugin_git/steps/status_step.py,sha256=z_M_MBpkYnc9-X2U_EbDZtrKGeoEM_tmrhyJzYIU8aY,1920
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=ZVhB9CHtzJEa13e8twNDB_b9tzDJDlflpYqoz2v6E7g,573
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=Zp13p29F9r-DYlqSFrEVp6W66jaG6pJ0JyDexPK7oY4,17787
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=v2-GM3u9xcWAREiMXWKVh3pRL1fDurIpAN_A0Vjmuiw,5752
32
- titan_plugin_github/steps/create_pr_step.py,sha256=W5HTYhdZ-HCcUyCINS2moUpgdIwJwBKrHObYoK8oMEo,3326
33
- titan_plugin_github/steps/github_prompt_steps.py,sha256=JOPR9f43oKI1r-8mLBvjT7mwcIEEb7rg60LwpqJM-Kg,6154
34
- titan_plugin_github/steps/issue_steps.py,sha256=HrXo_RGCalys4FBO5i90RGkgGPuN_jt7iMOtqmVimSE,4786
35
- titan_plugin_github/steps/preview_step.py,sha256=TT7giO6H1hMcWxvTqJVEJiXBiZ7vNxzeekt1CErg8Ik,1403
36
- titan_plugin_github/utils.py,sha256=ZMaYLABD6rvHRkoyDz72WGE-aIKRnyKaZgpw2FHxLK0,2325
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=VW08CxgmPZfvgfWE9-6RFcGDjnJwUUpOHVWv4wg4mVU,1066
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=WRy6zwBoXzhsZXF1sLnRWGSrjnOhKxvk6BStBRh94DU,5760
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=q1yeK5iaqwo-jdCIVq3f6cwgYGDOsMkX0hoanaJChb0,9559
58
- titan_plugin_jira/steps/ai_analyze_issue_step.py,sha256=VDYwHQno_bheKjBeXfF4p6C-o_d0ThOsLmCR1Lj9s5Q,3916
59
- titan_plugin_jira/steps/get_issue_step.py,sha256=Q5KUlU7b7QqPBRjdZha3szUNlnJcrHuwVqNEeyXY11g,2790
60
- titan_plugin_jira/steps/prompt_select_issue_step.py,sha256=fwCSAy8JChHHRHiKb8U-ilVtpL2phOsm3UftGtArZnI,2588
61
- titan_plugin_jira/steps/search_saved_query_step.py,sha256=o6uM1fqY9-o4vZdXxopmOFgz_RoW933E91VjtKPZU3M,8623
62
- titan_plugin_jira/utils/__init__.py,sha256=CW540Bjbw33xaoiPlawEtNE7ncr4K3Pg_sFgZO_aIwM,238
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=gI_32djLbKSV2QJ4FbRx3yXEgoaACbT_FTE3SFOd7HI,11496
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=CvpDKR4Co5Vzbb5aFTt5r6vyoqjGexj6Mt1_x0Z4iwg,653
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=K03MSe-417e2gIL8ygdE3TCPMWBCBA-mL4W57RZG1-Y,3009
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=HucZSXka15_2Ns2fJdm85NRT-rJwISuyYcyJQq-Sf9s,4346
98
- titan_cli/core/workflows/workflow_registry.py,sha256=HZeP5tR5_r9smjC2e5xzEr_3Vr6nMq054ctUsgO0z8I,17324
99
- titan_cli/core/workflows/workflow_sources.py,sha256=aD0xuBKvACmyFSu7x6_ZJ2u_FbVZQ8mBFKGVihAHW1w,11457
100
- titan_cli/engine/__init__.py,sha256=mtTPvwswXRgV-BtBc8zJUy0qNUocagstbsXKCT_DRPk,816
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=UKYYHPngRrzPoMPeGuTZLT689_WLNDrlopcrRxiM72s,2403
105
- titan_cli/engine/steps/ai_assistant_step.py,sha256=513hG1zD6kzOJQg6AG_IXE0d_iURO9tBkIxZhoelOVI,7281
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=A-TSz60HO121J2JfYBE8J0JuJEdRpJCsuh1R2UowRQk,8918
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=a8QIsVLGNNCLebJ7bWlRpftZU7yPhTRcf06XOLzFB4w,20416
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=JHZlKtqpYRosVP4TVSGzT1L8UxlCoCNorBFVXYPyzik,23526
129
- titan_cli/ui/tui/screens/workflows.py,sha256=lhpUzktq_60jEtT30OOEUnWR-NYuTIJIzi8fysP_IQc,8828
130
- titan_cli/ui/tui/textual_components.py,sha256=5OplwbSuSdS5Q6Zwfs-wxp-rETvmpLt5IlVCYdoCYqg,17215
131
- titan_cli/ui/tui/textual_workflow_executor.py,sha256=bVQx2TLkVlXfNZZgb9mmH4EZx5WPj3Djr0bMWx1lW68,17020
132
- titan_cli/ui/tui/theme.py,sha256=FixTClXu7uEsqQWd_6Lc7pi7Rw7GccdK9j3YpUNY8K4,2068
133
- titan_cli/ui/tui/widgets/__init__.py,sha256=NLJMQOyI0IPFLNZ62wrJBulKgOG8bK0J2utehgSQIxs,679
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=p5h2V9w-JmPigwUFn-ky_D7gyYiix_93FJNqNmCYNHY,4057
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.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
143
- titan_cli-0.1.4.dist-info/METADATA,sha256=v_-VyxKvwr3BZJD5jtjp4yDiBLUOAKFLntIJMdVEso4,4526
144
- titan_cli-0.1.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
145
- titan_cli-0.1.4.dist-info/entry_points.txt,sha256=i_Zucivhsx6FcrkKDQS00MJ_Nwse-nAEkuksCcs_Ym8,186
146
- titan_cli-0.1.4.dist-info/RECORD,,
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,,