deepparallel 0.7.0__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.
Files changed (101) hide show
  1. {deepparallel-0.7.0 → deepparallel-0.7.1}/PKG-INFO +1 -1
  2. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/__init__.py +1 -1
  3. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cli.py +6 -1
  4. deepparallel-0.7.1/deepparallel/tui/app.css +113 -0
  5. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/app.py +14 -5
  6. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/PKG-INFO +1 -1
  7. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/SOURCES.txt +1 -0
  8. {deepparallel-0.7.0 → deepparallel-0.7.1}/pyproject.toml +2 -2
  9. {deepparallel-0.7.0 → deepparallel-0.7.1}/README.md +0 -0
  10. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/agent.py +0 -0
  11. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/backend.py +0 -0
  12. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/branding.py +0 -0
  13. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cockpit.py +0 -0
  14. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cockpit_observe.py +0 -0
  15. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cockpit_panel.py +0 -0
  16. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cockpit_sim.py +0 -0
  17. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/config.py +0 -0
  18. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/crowe_id.py +0 -0
  19. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/dsml.py +0 -0
  20. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/fusion.py +0 -0
  21. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/licensing.py +0 -0
  22. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/memory.py +0 -0
  23. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/mesh.py +0 -0
  24. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/registry.json +0 -0
  25. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/renderer.py +0 -0
  26. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/research/__init__.py +0 -0
  27. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/research/compound_discovery.py +0 -0
  28. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/research/conduit.py +0 -0
  29. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/research/provider.py +0 -0
  30. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/routing.example.json +0 -0
  31. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/routing.py +0 -0
  32. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/serve.py +0 -0
  33. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/session.py +0 -0
  34. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/supply_chain.py +0 -0
  35. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/system_prompt.txt +0 -0
  36. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/__init__.py +0 -0
  37. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/codeast.py +0 -0
  38. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/edit.py +0 -0
  39. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/files.py +0 -0
  40. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/git_ops.py +0 -0
  41. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/mcp.py +0 -0
  42. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/memory.py +0 -0
  43. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/registry.py +0 -0
  44. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/sandbox.py +0 -0
  45. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/search.py +0 -0
  46. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/shell.py +0 -0
  47. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/vision.py +0 -0
  48. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/web.py +0 -0
  49. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/__init__.py +0 -0
  50. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/renderer.py +0 -0
  51. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/widgets/animations.py +0 -0
  52. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/widgets/confirm.py +0 -0
  53. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/userinput.py +0 -0
  54. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/dependency_links.txt +0 -0
  55. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/entry_points.txt +0 -0
  56. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/requires.txt +0 -0
  57. {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/top_level.txt +0 -0
  58. {deepparallel-0.7.0 → deepparallel-0.7.1}/setup.cfg +0 -0
  59. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_agent.py +0 -0
  60. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_backend.py +0 -0
  61. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_backend_chat.py +0 -0
  62. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_backend_stream.py +0 -0
  63. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_branding.py +0 -0
  64. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cli.py +0 -0
  65. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cli_licensing.py +0 -0
  66. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cockpit.py +0 -0
  67. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cockpit_panel.py +0 -0
  68. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cockpit_sim.py +0 -0
  69. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_config.py +0 -0
  70. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_config_file.py +0 -0
  71. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_crowe_backend.py +0 -0
  72. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_crowe_gateway_backend.py +0 -0
  73. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_crowe_id_auth.py +0 -0
  74. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_crowe_payment_required.py +0 -0
  75. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_dsml.py +0 -0
  76. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_fusion.py +0 -0
  77. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_git_ops.py +0 -0
  78. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_issuer_signer.py +0 -0
  79. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_licensing.py +0 -0
  80. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_licensing_files.py +0 -0
  81. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_memory.py +0 -0
  82. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_renderer.py +0 -0
  83. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_research.py +0 -0
  84. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_research_provider.py +0 -0
  85. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_routing.py +0 -0
  86. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_serve.py +0 -0
  87. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_serve_session.py +0 -0
  88. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_spinner_color.py +0 -0
  89. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_supply_chain.py +0 -0
  90. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tool_registry.py +0 -0
  91. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_codeast.py +0 -0
  92. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_edit.py +0 -0
  93. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_files.py +0 -0
  94. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_mcp.py +0 -0
  95. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_sandbox.py +0 -0
  96. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_search.py +0 -0
  97. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_shell.py +0 -0
  98. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_vision.py +0 -0
  99. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_web.py +0 -0
  100. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_userinput.py +0 -0
  101. {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_userinput_paste.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepparallel
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: DeepParallel - a multi-model agentic coding CLI with cross-model Guardian review, served via Crowe Logic.
5
5
  Author-email: Michael Crowe <michael@crowelogic.com>
6
6
  License: Apache-2.0
@@ -1,3 +1,3 @@
1
1
  """DeepParallel CLI package."""
2
2
 
3
- __version__ = "0.7.0"
3
+ __version__ = "0.7.1"
@@ -499,7 +499,12 @@ def main(ctx: click.Context, temperature: float | None, assume_yes: bool) -> Non
499
499
  if ctx.invoked_subcommand not in _LICENSE_COMMANDS:
500
500
  _maybe_first_run_nudge()
501
501
  if ctx.invoked_subcommand is None:
502
- _chat_loop(settings)
502
+ if _is_interactive():
503
+ from deepparallel.tui.app import run_tui
504
+
505
+ run_tui(settings)
506
+ else:
507
+ _chat_loop(settings)
503
508
 
504
509
 
505
510
  @main.command()
@@ -0,0 +1,113 @@
1
+ /* DeepParallel TUI layout.
2
+ Three-panel: chat (left) | context (right) | status bar (bottom).
3
+ Brand: cyan accent (#3fd0d0), Crowe green (#6fbf73), dim (#808080).
4
+ */
5
+
6
+ Screen {
7
+ layout: vertical;
8
+ }
9
+
10
+ #chat-column {
11
+ width: 1fr;
12
+ min-width: 40;
13
+ }
14
+
15
+ #chat-panel {
16
+ height: 1fr;
17
+ border: solid $primary;
18
+ padding: 0 1;
19
+ overflow-y: auto;
20
+ }
21
+
22
+ #chat-input {
23
+ dock: bottom;
24
+ margin: 0 0 1 0;
25
+ border: solid $primary;
26
+ }
27
+
28
+ #context-panel {
29
+ width: 48;
30
+ border: solid $surface;
31
+ padding: 0 1;
32
+ overflow-y: auto;
33
+ display: block;
34
+ }
35
+
36
+ #context-panel.hidden {
37
+ display: none;
38
+ }
39
+
40
+ #status-bar {
41
+ dock: bottom;
42
+ height: 1;
43
+ background: $surface;
44
+ color: $text-disabled;
45
+ padding: 0 1;
46
+ }
47
+
48
+ /* Skill search inside context panel */
49
+ #skill-search {
50
+ margin: 1 0;
51
+ border: solid $primary;
52
+ }
53
+
54
+ #skill-results {
55
+ margin: 1 0;
56
+ height: 1fr;
57
+ overflow-y: auto;
58
+ }
59
+
60
+ /* Tool result cards */
61
+ .tool-card {
62
+ margin: 1 0;
63
+ padding: 0 1;
64
+ border: solid $surface;
65
+ }
66
+
67
+ .tool-card.running {
68
+ border: solid $warning;
69
+ }
70
+
71
+ .tool-card.ok {
72
+ border: solid $success;
73
+ }
74
+
75
+ .tool-card.fail {
76
+ border: solid $error;
77
+ }
78
+
79
+ /* Confirmation modal */
80
+ ConfirmScreen {
81
+ align: center middle;
82
+ }
83
+
84
+ #confirm-dialog {
85
+ width: 70;
86
+ max-height: 90%;
87
+ padding: 1 2;
88
+ border: thick $warning;
89
+ background: $surface;
90
+ overflow-y: auto;
91
+ }
92
+
93
+ #confirm-dialog .title {
94
+ color: $warning;
95
+ text-style: bold;
96
+ }
97
+
98
+ #confirm-dialog .detail {
99
+ margin: 1 0;
100
+ color: $text;
101
+ max-height: 30;
102
+ overflow-y: auto;
103
+ }
104
+
105
+ #confirm-actions {
106
+ margin: 1 0;
107
+ align: center middle;
108
+ }
109
+
110
+ #confirm-actions .action {
111
+ padding: 0 1;
112
+ color: $text-muted;
113
+ }
@@ -19,7 +19,7 @@ from textual.containers import Horizontal, Vertical
19
19
  from textual.widgets import Footer, Header, Input, RichLog, Static
20
20
 
21
21
  from deepparallel import __version__
22
- from deepparallel.config import resolve_settings, missing_required
22
+ from deepparallel.config import Settings, resolve_settings, missing_required
23
23
  from deepparallel.backend import resolve_backend
24
24
  from deepparallel.tools import get_registry
25
25
  from deepparallel.tui.renderer import TuiRenderer
@@ -37,6 +37,10 @@ class DeepParallelApp(App):
37
37
  Binding("escape", "focus_input", "Chat", show=False),
38
38
  ]
39
39
 
40
+ def __init__(self, settings: Settings | None = None):
41
+ super().__init__()
42
+ self._settings = settings or resolve_settings()
43
+
40
44
  def compose(self) -> ComposeResult:
41
45
  yield Header(show_clock=True)
42
46
  with Horizontal():
@@ -58,7 +62,6 @@ class DeepParallelApp(App):
58
62
  chat.write("")
59
63
 
60
64
  # Init agent harness
61
- self._settings = resolve_settings()
62
65
  self._tool_registry = get_registry()
63
66
  self._mode = self._settings.fusion_mode or "off"
64
67
  self._auto = self._settings.auto_approve
@@ -151,6 +154,12 @@ class DeepParallelApp(App):
151
154
  ctx.add_class("hidden")
152
155
 
153
156
 
154
- def run_tui() -> None:
155
- """Entry point: launch the DeepParallel TUI."""
156
- DeepParallelApp().run()
157
+ def run_tui(settings: Settings | None = None) -> None:
158
+ """Entry point: launch the DeepParallel TUI.
159
+
160
+ Args:
161
+ settings: Pre-resolved settings from the CLI. When None, settings are
162
+ resolved inside the app (used by the `dp tui` subcommand for
163
+ backward compatibility).
164
+ """
165
+ DeepParallelApp(settings=settings).run()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepparallel
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: DeepParallel - a multi-model agentic coding CLI with cross-model Guardian review, served via Crowe Logic.
5
5
  Author-email: Michael Crowe <michael@crowelogic.com>
6
6
  License: Apache-2.0
@@ -49,6 +49,7 @@ deepparallel/tools/shell.py
49
49
  deepparallel/tools/vision.py
50
50
  deepparallel/tools/web.py
51
51
  deepparallel/tui/__init__.py
52
+ deepparallel/tui/app.css
52
53
  deepparallel/tui/app.py
53
54
  deepparallel/tui/renderer.py
54
55
  deepparallel/tui/widgets/animations.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "deepparallel"
7
- version = "0.7.0"
7
+ version = "0.7.1"
8
8
  description = "DeepParallel - a multi-model agentic coding CLI with cross-model Guardian review, served via Crowe Logic."
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -40,7 +40,7 @@ dp = "deepparallel.cli:main"
40
40
  include = ["deepparallel*"]
41
41
 
42
42
  [tool.setuptools.package-data]
43
- deepparallel = ["registry.json", "system_prompt.txt", "routing.example.json"]
43
+ deepparallel = ["registry.json", "system_prompt.txt", "routing.example.json", "tui/app.css"]
44
44
 
45
45
  [tool.ruff]
46
46
  line-length = 100
File without changes
File without changes