stcode 0.0.1a0__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.
- stcode/__init__.py +10 -0
- stcode/cli/__init__.py +9 -0
- stcode/cli/bootstrap.py +70 -0
- stcode/cli/labels.py +621 -0
- stcode/cli/logic/__init__.py +0 -0
- stcode/cli/logic/commands.py +36 -0
- stcode/cli/logic/completion.py +43 -0
- stcode/cli/logic/connection.py +46 -0
- stcode/cli/logic/requests.py +18 -0
- stcode/cli/logic/sessions.py +67 -0
- stcode/cli/logic/settings.py +35 -0
- stcode/cli/logic/state.py +43 -0
- stcode/cli/logic/workspace.py +17 -0
- stcode/cli/main.py +290 -0
- stcode/cli/models.py +61 -0
- stcode/cli/services/__init__.py +0 -0
- stcode/cli/services/client.py +393 -0
- stcode/cli/services/launcher.py +159 -0
- stcode/cli/services/paths.py +18 -0
- stcode/cli/services/preferences.py +107 -0
- stcode/cli/ui/__init__.py +0 -0
- stcode/cli/ui/app.py +136 -0
- stcode/cli/ui/app.tcss +3 -0
- stcode/cli/ui/components/__init__.py +0 -0
- stcode/cli/ui/components/banner.py +78 -0
- stcode/cli/ui/components/cards.py +229 -0
- stcode/cli/ui/components/prompt.py +225 -0
- stcode/cli/ui/components/status.py +95 -0
- stcode/cli/ui/components/transcript/__init__.py +51 -0
- stcode/cli/ui/components/transcript/entries.py +232 -0
- stcode/cli/ui/components/transcript/formatting.py +188 -0
- stcode/cli/ui/components/transcript/view.py +101 -0
- stcode/cli/ui/screens/__init__.py +0 -0
- stcode/cli/ui/screens/chat/__init__.py +0 -0
- stcode/cli/ui/screens/chat/chat.tcss +12 -0
- stcode/cli/ui/screens/chat/presenter.py +187 -0
- stcode/cli/ui/screens/chat/screen.py +682 -0
- stcode/cli/ui/screens/connect.py +126 -0
- stcode/cli/ui/screens/connect.tcss +49 -0
- stcode/cli/ui/screens/dialog.tcss +40 -0
- stcode/cli/ui/screens/sessions.py +105 -0
- stcode/cli/ui/screens/settings.py +137 -0
- stcode/cli/ui/screens/settings.tcss +69 -0
- stcode/cli/ui/screens/trust.py +50 -0
- stcode/cli/ui/theme.py +221 -0
- stcode/core/__main__.py +7 -0
- stcode/core/agent/__init__.py +41 -0
- stcode/core/agent/agent.py +651 -0
- stcode/core/agent/events.py +97 -0
- stcode/core/agent/supervisor.py +226 -0
- stcode/core/agent/task.py +120 -0
- stcode/core/common/__init__.py +21 -0
- stcode/core/common/compat.py +27 -0
- stcode/core/common/ids.py +43 -0
- stcode/core/common/tools.py +50 -0
- stcode/core/common/trace.py +406 -0
- stcode/core/common/truncate.py +76 -0
- stcode/core/configs.py +490 -0
- stcode/core/daemon/__init__.py +32 -0
- stcode/core/daemon/autonomy.py +71 -0
- stcode/core/daemon/main.py +126 -0
- stcode/core/daemon/protocol.py +499 -0
- stcode/core/daemon/runner.py +359 -0
- stcode/core/daemon/server.py +682 -0
- stcode/core/daemon/workspace.py +88 -0
- stcode/core/harness/__init__.py +81 -0
- stcode/core/harness/approvals.py +85 -0
- stcode/core/harness/context.py +260 -0
- stcode/core/harness/errors.py +40 -0
- stcode/core/harness/harness.py +417 -0
- stcode/core/harness/mcp.py +530 -0
- stcode/core/harness/outputs.py +99 -0
- stcode/core/harness/prompts/__init__.py +138 -0
- stcode/core/harness/prompts/execute.py +51 -0
- stcode/core/harness/prompts/plan.py +57 -0
- stcode/core/harness/prompts/sections.py +238 -0
- stcode/core/harness/skills/__init__.py +30 -0
- stcode/core/harness/skills/loader.py +247 -0
- stcode/core/harness/tools/__init__.py +111 -0
- stcode/core/harness/tools/base.py +640 -0
- stcode/core/harness/tools/files.py +276 -0
- stcode/core/harness/tools/interact.py +72 -0
- stcode/core/harness/tools/registry.py +113 -0
- stcode/core/harness/tools/repl.py +97 -0
- stcode/core/harness/tools/schema.py +186 -0
- stcode/core/harness/tools/search.py +356 -0
- stcode/core/harness/tools/shell.py +372 -0
- stcode/core/harness/tools/skill.py +66 -0
- stcode/core/harness/tools/todo.py +62 -0
- stcode/core/harness/tools/web.py +163 -0
- stcode/core/providers/__init__.py +31 -0
- stcode/core/providers/anthropic_claude.py +243 -0
- stcode/core/providers/base.py +73 -0
- stcode/core/providers/gateway.py +267 -0
- stcode/core/providers/google_gemini.py +225 -0
- stcode/core/providers/openai_gpt.py +250 -0
- stcode/core/providers/registry.py +46 -0
- stcode/core/providers/types.py +148 -0
- stcode/core/repl/__init__.py +19 -0
- stcode/core/repl/_worker.py +179 -0
- stcode/core/repl/client.py +374 -0
- stcode/core/session/__init__.py +39 -0
- stcode/core/session/session.py +493 -0
- stcode/core/team/__init__.py +38 -0
- stcode/core/team/mailbox.py +249 -0
- stcode/core/team/tools.py +145 -0
- stcode-0.0.1a0.dist-info/METADATA +229 -0
- stcode-0.0.1a0.dist-info/RECORD +111 -0
- stcode-0.0.1a0.dist-info/WHEEL +4 -0
- stcode-0.0.1a0.dist-info/entry_points.txt +3 -0
- stcode-0.0.1a0.dist-info/licenses/LICENSE +201 -0
stcode/__init__.py
ADDED
stcode/cli/__init__.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"""
|
|
2
|
+
CLI — what the user sees and types: the typer entrypoint, the textual screens, and the
|
|
3
|
+
copy they display.
|
|
4
|
+
|
|
5
|
+
A separate program from `stcode.core`: neither imports the other. The UI reaches the
|
|
6
|
+
engine only through the daemon's socket (`client.py`), and starts one as a subprocess
|
|
7
|
+
when none is listening (`launcher.py`). No re-exports: every screen imports
|
|
8
|
+
`stcode.cli.labels`, and pulling typer in through this `__init__` would be dead weight.
|
|
9
|
+
"""
|
stcode/cli/bootstrap.py
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Construct client dependencies before handing the terminal to Textual."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import contextlib
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from stcode.cli.logic.connection import Connection
|
|
9
|
+
from stcode.cli.logic.state import ClientState
|
|
10
|
+
from stcode.cli.models import ApprovalMode, StartOptions
|
|
11
|
+
from stcode.cli.services.launcher import Launcher
|
|
12
|
+
from stcode.cli.services.preferences import load_prefs, save_prefs, ui_path
|
|
13
|
+
from stcode.cli.ui.app import StcodeApp
|
|
14
|
+
from stcode.cli.ui.theme import TerminalMode, detect_terminal_mode
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def build_app(
|
|
18
|
+
launcher: Launcher,
|
|
19
|
+
*,
|
|
20
|
+
daemonless: bool = False,
|
|
21
|
+
restart: bool = False,
|
|
22
|
+
cwd: Path | None = None,
|
|
23
|
+
resume: str = "",
|
|
24
|
+
mode: ApprovalMode | None = None,
|
|
25
|
+
role: str = "",
|
|
26
|
+
terminal_mode: TerminalMode = "dark",
|
|
27
|
+
prefs_path: Path | None = None,
|
|
28
|
+
) -> StcodeApp:
|
|
29
|
+
path = prefs_path or ui_path()
|
|
30
|
+
prefs = load_prefs(path)
|
|
31
|
+
|
|
32
|
+
def save_preferences() -> None:
|
|
33
|
+
with contextlib.suppress(OSError):
|
|
34
|
+
save_prefs(prefs, path)
|
|
35
|
+
|
|
36
|
+
return StcodeApp(
|
|
37
|
+
Connection(launcher),
|
|
38
|
+
ClientState(),
|
|
39
|
+
StartOptions(
|
|
40
|
+
cwd or Path.cwd(), cwd is not None, daemonless, resume, mode, role
|
|
41
|
+
),
|
|
42
|
+
prefs,
|
|
43
|
+
path,
|
|
44
|
+
save_preferences=save_preferences,
|
|
45
|
+
restart=restart,
|
|
46
|
+
terminal_mode=terminal_mode,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def run(
|
|
51
|
+
launcher: Launcher,
|
|
52
|
+
*,
|
|
53
|
+
daemonless: bool = False,
|
|
54
|
+
restart: bool = False,
|
|
55
|
+
cwd: Path | None = None,
|
|
56
|
+
resume: str = "",
|
|
57
|
+
mode: ApprovalMode | None = None,
|
|
58
|
+
role: str = "",
|
|
59
|
+
) -> None:
|
|
60
|
+
# Detection must precede Textual taking ownership of the tty.
|
|
61
|
+
build_app(
|
|
62
|
+
launcher,
|
|
63
|
+
daemonless=daemonless,
|
|
64
|
+
restart=restart,
|
|
65
|
+
cwd=cwd,
|
|
66
|
+
resume=resume,
|
|
67
|
+
mode=mode,
|
|
68
|
+
role=role,
|
|
69
|
+
terminal_mode=detect_terminal_mode(),
|
|
70
|
+
).run()
|