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.
- {deepparallel-0.7.0 → deepparallel-0.7.1}/PKG-INFO +1 -1
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/__init__.py +1 -1
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cli.py +6 -1
- deepparallel-0.7.1/deepparallel/tui/app.css +113 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/app.py +14 -5
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/PKG-INFO +1 -1
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/SOURCES.txt +1 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/pyproject.toml +2 -2
- {deepparallel-0.7.0 → deepparallel-0.7.1}/README.md +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/agent.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/backend.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/branding.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cockpit.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cockpit_observe.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cockpit_panel.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/cockpit_sim.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/config.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/crowe_id.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/dsml.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/fusion.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/licensing.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/memory.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/mesh.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/registry.json +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/renderer.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/research/__init__.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/research/compound_discovery.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/research/conduit.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/research/provider.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/routing.example.json +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/routing.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/serve.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/session.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/supply_chain.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/system_prompt.txt +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/__init__.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/codeast.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/edit.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/files.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/git_ops.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/mcp.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/memory.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/registry.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/sandbox.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/search.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/shell.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/vision.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tools/web.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/__init__.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/renderer.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/widgets/animations.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/tui/widgets/confirm.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel/userinput.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/dependency_links.txt +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/entry_points.txt +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/requires.txt +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/deepparallel.egg-info/top_level.txt +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/setup.cfg +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_agent.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_backend.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_backend_chat.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_backend_stream.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_branding.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cli.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cli_licensing.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cockpit.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cockpit_panel.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_cockpit_sim.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_config.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_config_file.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_crowe_backend.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_crowe_gateway_backend.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_crowe_id_auth.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_crowe_payment_required.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_dsml.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_fusion.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_git_ops.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_issuer_signer.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_licensing.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_licensing_files.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_memory.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_renderer.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_research.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_research_provider.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_routing.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_serve.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_serve_session.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_spinner_color.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_supply_chain.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tool_registry.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_codeast.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_edit.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_files.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_mcp.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_sandbox.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_search.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_shell.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_vision.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_tools_web.py +0 -0
- {deepparallel-0.7.0 → deepparallel-0.7.1}/tests/test_userinput.py +0 -0
- {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.
|
|
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
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "deepparallel"
|
|
7
|
-
version = "0.7.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|