abstractcode 0.2.0__tar.gz → 0.3.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.
- abstractcode-0.3.1/PKG-INFO +158 -0
- abstractcode-0.3.1/README.md +119 -0
- {abstractcode-0.2.0 → abstractcode-0.3.1}/abstractcode/__init__.py +1 -1
- abstractcode-0.3.1/abstractcode/cli.py +1012 -0
- abstractcode-0.3.1/abstractcode/file_mentions.py +276 -0
- abstractcode-0.3.1/abstractcode/flow_cli.py +1413 -0
- abstractcode-0.3.1/abstractcode/fullscreen_ui.py +2971 -0
- abstractcode-0.3.1/abstractcode/gateway_cli.py +715 -0
- abstractcode-0.3.1/abstractcode/py.typed +1 -0
- abstractcode-0.3.1/abstractcode/react_shell.py +8798 -0
- abstractcode-0.3.1/abstractcode/recall.py +384 -0
- abstractcode-0.3.1/abstractcode/remember.py +184 -0
- abstractcode-0.3.1/abstractcode/terminal_markdown.py +557 -0
- abstractcode-0.3.1/abstractcode/theme.py +244 -0
- abstractcode-0.3.1/abstractcode/workflow_agent.py +1412 -0
- abstractcode-0.3.1/abstractcode/workflow_cli.py +229 -0
- abstractcode-0.3.1/abstractcode.egg-info/PKG-INFO +158 -0
- abstractcode-0.3.1/abstractcode.egg-info/SOURCES.txt +56 -0
- abstractcode-0.3.1/abstractcode.egg-info/requires.txt +14 -0
- {abstractcode-0.2.0 → abstractcode-0.3.1}/pyproject.toml +12 -7
- abstractcode-0.3.1/tests/test_answer_markdown_newline_unescape.py +68 -0
- abstractcode-0.3.1/tests/test_async_run_controls_and_copy_button.py +264 -0
- abstractcode-0.3.1/tests/test_at_file_mentions_accept_absolute_paths.py +146 -0
- abstractcode-0.3.1/tests/test_cli_prompt_mode.py +255 -0
- abstractcode-0.3.1/tests/test_compact_integration_llm.py +209 -0
- abstractcode-0.3.1/tests/test_executor_command.py +123 -0
- abstractcode-0.3.1/tests/test_executor_real_logic.py +114 -0
- abstractcode-0.3.1/tests/test_file_mentions_parsing_and_search.py +76 -0
- abstractcode-0.3.1/tests/test_file_tool_ui_no_cwd_injection.py +48 -0
- abstractcode-0.3.1/tests/test_flow_cli.py +173 -0
- abstractcode-0.3.1/tests/test_fullscreen_ui_cancel_hotkeys_and_dnd_attachments.py +171 -0
- abstractcode-0.3.1/tests/test_fullscreen_ui_clickable_links.py +28 -0
- abstractcode-0.3.1/tests/test_fullscreen_ui_spinner_shimmer.py +61 -0
- abstractcode-0.3.1/tests/test_gateway_cli_defaults.py +53 -0
- abstractcode-0.3.1/tests/test_gateway_cli_kg_command.py +244 -0
- abstractcode-0.3.1/tests/test_history_copy_full_to_clipboard.py +125 -0
- abstractcode-0.3.1/tests/test_link_extraction.py +10 -0
- abstractcode-0.3.1/tests/test_log_provider_no_tool_defs.py +131 -0
- abstractcode-0.3.1/tests/test_log_provider_tool_calls_anthropic.py +100 -0
- abstractcode-0.3.1/tests/test_mcp_activity_spinner.py +90 -0
- abstractcode-0.3.1/tests/test_provenance_recall.py +53 -0
- abstractcode-0.3.1/tests/test_react_shell_artifact_store_wiring.py +56 -0
- abstractcode-0.3.1/tests/test_react_shell_tool_approval_cancel_mode.py +127 -0
- abstractcode-0.3.1/tests/test_recall_command.py +186 -0
- abstractcode-0.3.1/tests/test_remember_command.py +80 -0
- abstractcode-0.3.1/tests/test_remote_mcp_tool_execution.py +179 -0
- abstractcode-0.3.1/tests/test_remote_mcp_tool_execution_stdio.py +186 -0
- abstractcode-0.3.1/tests/test_repeat_guardrail_write_file_content.py +93 -0
- abstractcode-0.3.1/tests/test_tools_examples_toggle.py +132 -0
- abstractcode-0.3.1/tests/test_tools_include_skim_files.py +70 -0
- abstractcode-0.3.1/tests/test_workflow_agent.py +1031 -0
- abstractcode-0.3.1/tests/test_workflow_registry_install_and_run.py +157 -0
- abstractcode-0.2.0/PKG-INFO +0 -160
- abstractcode-0.2.0/README.md +0 -125
- abstractcode-0.2.0/abstractcode/cli.py +0 -110
- abstractcode-0.2.0/abstractcode/fullscreen_ui.py +0 -656
- abstractcode-0.2.0/abstractcode/react_shell.py +0 -1204
- abstractcode-0.2.0/abstractcode.egg-info/PKG-INFO +0 -160
- abstractcode-0.2.0/abstractcode.egg-info/SOURCES.txt +0 -14
- abstractcode-0.2.0/abstractcode.egg-info/requires.txt +0 -7
- {abstractcode-0.2.0 → abstractcode-0.3.1}/LICENSE +0 -0
- {abstractcode-0.2.0 → abstractcode-0.3.1}/abstractcode/input_handler.py +0 -0
- {abstractcode-0.2.0 → abstractcode-0.3.1}/abstractcode.egg-info/dependency_links.txt +0 -0
- {abstractcode-0.2.0 → abstractcode-0.3.1}/abstractcode.egg-info/entry_points.txt +0 -0
- {abstractcode-0.2.0 → abstractcode-0.3.1}/abstractcode.egg-info/top_level.txt +0 -0
- {abstractcode-0.2.0 → abstractcode-0.3.1}/setup.cfg +0 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: abstractcode
|
|
3
|
+
Version: 0.3.1
|
|
4
|
+
Summary: A clean terminal CLI for multi-agent agentic coding
|
|
5
|
+
Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
|
|
6
|
+
Maintainer-email: Laurent-Philippe Albou <contact@abstractcore.ai>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://abstractcore.ai
|
|
9
|
+
Project-URL: Documentation, https://abstractcore.ai
|
|
10
|
+
Project-URL: Repository, https://github.com/lpalbou/abstractcode
|
|
11
|
+
Project-URL: Bug Tracker, https://github.com/lpalbou/abstractcode/issues
|
|
12
|
+
Keywords: ai,llm,cli,coding,agent,multi-agent,agentic,terminal,abstractcore,abstractruntime,abstractagent
|
|
13
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
23
|
+
Requires-Python: >=3.10
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: abstractagent>=0.2.0
|
|
27
|
+
Requires-Dist: abstractruntime>=0.2.0
|
|
28
|
+
Requires-Dist: abstractcore[tools]>=2.6.8
|
|
29
|
+
Requires-Dist: ddgs<10.0.0,>=9.10.0
|
|
30
|
+
Requires-Dist: prompt_toolkit>=3.0.0
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
35
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
36
|
+
Provides-Extra: flow
|
|
37
|
+
Requires-Dist: abstractflow>=0.1.0; extra == "flow"
|
|
38
|
+
Dynamic: license-file
|
|
39
|
+
|
|
40
|
+
# AbstractCode
|
|
41
|
+
|
|
42
|
+
Durable terminal TUI for agentic coding on the Abstract* stack (**AbstractAgent + AbstractRuntime + AbstractCore**).
|
|
43
|
+
|
|
44
|
+
Status: **pre-alpha** (APIs and UX may change).
|
|
45
|
+
|
|
46
|
+
Next: [`docs/getting-started.md`](docs/getting-started.md).
|
|
47
|
+
|
|
48
|
+
## Features
|
|
49
|
+
|
|
50
|
+
- Interactive TUI (`abstractcode`) with **durable runs** (resume/pause/cancel), snapshots, and logs
|
|
51
|
+
- **Approval-gated tools** by default (with an allowlist you can configure)
|
|
52
|
+
- Built-in agents: `react`, `memact`, `codeact`
|
|
53
|
+
- VisualFlow workflows:
|
|
54
|
+
- run locally: `abstractcode flow ...` (optional extra)
|
|
55
|
+
- run as an agent: `abstractcode --agent <flow_ref>`
|
|
56
|
+
- Remote tool execution via **MCP** (`/mcp`, `/executor`)
|
|
57
|
+
- Optional gateway-first Web UI in `web/`
|
|
58
|
+
|
|
59
|
+
## Install
|
|
60
|
+
|
|
61
|
+
Python: **3.10+**
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pip install abstractcode
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Optional (run VisualFlow locally via `abstractcode flow ...`):
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
pip install "abstractcode[flow]"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
From source (development):
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pip install -e ".[dev]"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Quickstart (TUI)
|
|
80
|
+
|
|
81
|
+
Ollama (default provider):
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
abstractcode --provider ollama --model qwen3:1.7b-q4_K_M
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
OpenAI-compatible server (e.g. LM Studio):
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
abstractcode --provider openai --base-url http://127.0.0.1:1234/v1 --model qwen/qwen3-next-80b
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Inside the app:
|
|
94
|
+
- `/help` shows the authoritative command list
|
|
95
|
+
- type a task (or use `/task ...`)
|
|
96
|
+
- tool approvals: `/auto-accept` (or start with `--auto-approve`)
|
|
97
|
+
- attach files with `@path/to/file` in your prompt
|
|
98
|
+
|
|
99
|
+
## Persistence (durable runs)
|
|
100
|
+
|
|
101
|
+
Default paths:
|
|
102
|
+
- state file: `~/.abstractcode/state.json`
|
|
103
|
+
- durable stores: `~/.abstractcode/state.d/`
|
|
104
|
+
- saved settings: `~/.abstractcode/state.config.json`
|
|
105
|
+
|
|
106
|
+
Disable persistence:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
abstractcode --no-state
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Workflows
|
|
113
|
+
|
|
114
|
+
- Local runs: `abstractcode flow run <flow_id_or_path> ...` (requires `abstractcode[flow]`)
|
|
115
|
+
- Workflow agent: `abstractcode --agent /path/to/workflow.json ...`
|
|
116
|
+
- Remote control-plane: `abstractcode gateway --help`
|
|
117
|
+
- Bundle management on a gateway: `abstractcode workflow --help`
|
|
118
|
+
|
|
119
|
+
Details: [`docs/workflows.md`](docs/workflows.md).
|
|
120
|
+
|
|
121
|
+
## Web UI
|
|
122
|
+
|
|
123
|
+
The web host lives in `web/` and connects to an `abstractgateway` at `/api/gateway/*`.
|
|
124
|
+
|
|
125
|
+
Start here:
|
|
126
|
+
- [`docs/web.md`](docs/web.md)
|
|
127
|
+
- [`docs/deployment-web.md`](docs/deployment-web.md)
|
|
128
|
+
|
|
129
|
+
## Documentation
|
|
130
|
+
|
|
131
|
+
- Start here: [`docs/getting-started.md`](docs/getting-started.md)
|
|
132
|
+
- FAQ: [`docs/faq.md`](docs/faq.md)
|
|
133
|
+
- Docs index: [`docs/README.md`](docs/README.md)
|
|
134
|
+
- [`docs/architecture.md`](docs/architecture.md)
|
|
135
|
+
- [`docs/cli.md`](docs/cli.md)
|
|
136
|
+
- [`docs/api.md`](docs/api.md)
|
|
137
|
+
- [`docs/workflows.md`](docs/workflows.md)
|
|
138
|
+
- [`docs/ui_events.md`](docs/ui_events.md)
|
|
139
|
+
|
|
140
|
+
## Development
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
pip install -e ".[dev]"
|
|
144
|
+
pytest -q
|
|
145
|
+
ruff check .
|
|
146
|
+
black .
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Project
|
|
150
|
+
|
|
151
|
+
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
|
|
152
|
+
- Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
153
|
+
- Security: [`SECURITY.md`](SECURITY.md)
|
|
154
|
+
- Acknowledgments: [`ACKNOWLEDMENTS.md`](ACKNOWLEDMENTS.md)
|
|
155
|
+
|
|
156
|
+
## License
|
|
157
|
+
|
|
158
|
+
MIT. See [`LICENSE`](LICENSE).
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# AbstractCode
|
|
2
|
+
|
|
3
|
+
Durable terminal TUI for agentic coding on the Abstract* stack (**AbstractAgent + AbstractRuntime + AbstractCore**).
|
|
4
|
+
|
|
5
|
+
Status: **pre-alpha** (APIs and UX may change).
|
|
6
|
+
|
|
7
|
+
Next: [`docs/getting-started.md`](docs/getting-started.md).
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- Interactive TUI (`abstractcode`) with **durable runs** (resume/pause/cancel), snapshots, and logs
|
|
12
|
+
- **Approval-gated tools** by default (with an allowlist you can configure)
|
|
13
|
+
- Built-in agents: `react`, `memact`, `codeact`
|
|
14
|
+
- VisualFlow workflows:
|
|
15
|
+
- run locally: `abstractcode flow ...` (optional extra)
|
|
16
|
+
- run as an agent: `abstractcode --agent <flow_ref>`
|
|
17
|
+
- Remote tool execution via **MCP** (`/mcp`, `/executor`)
|
|
18
|
+
- Optional gateway-first Web UI in `web/`
|
|
19
|
+
|
|
20
|
+
## Install
|
|
21
|
+
|
|
22
|
+
Python: **3.10+**
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pip install abstractcode
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Optional (run VisualFlow locally via `abstractcode flow ...`):
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install "abstractcode[flow]"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
From source (development):
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install -e ".[dev]"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Quickstart (TUI)
|
|
41
|
+
|
|
42
|
+
Ollama (default provider):
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
abstractcode --provider ollama --model qwen3:1.7b-q4_K_M
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
OpenAI-compatible server (e.g. LM Studio):
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
abstractcode --provider openai --base-url http://127.0.0.1:1234/v1 --model qwen/qwen3-next-80b
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Inside the app:
|
|
55
|
+
- `/help` shows the authoritative command list
|
|
56
|
+
- type a task (or use `/task ...`)
|
|
57
|
+
- tool approvals: `/auto-accept` (or start with `--auto-approve`)
|
|
58
|
+
- attach files with `@path/to/file` in your prompt
|
|
59
|
+
|
|
60
|
+
## Persistence (durable runs)
|
|
61
|
+
|
|
62
|
+
Default paths:
|
|
63
|
+
- state file: `~/.abstractcode/state.json`
|
|
64
|
+
- durable stores: `~/.abstractcode/state.d/`
|
|
65
|
+
- saved settings: `~/.abstractcode/state.config.json`
|
|
66
|
+
|
|
67
|
+
Disable persistence:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
abstractcode --no-state
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Workflows
|
|
74
|
+
|
|
75
|
+
- Local runs: `abstractcode flow run <flow_id_or_path> ...` (requires `abstractcode[flow]`)
|
|
76
|
+
- Workflow agent: `abstractcode --agent /path/to/workflow.json ...`
|
|
77
|
+
- Remote control-plane: `abstractcode gateway --help`
|
|
78
|
+
- Bundle management on a gateway: `abstractcode workflow --help`
|
|
79
|
+
|
|
80
|
+
Details: [`docs/workflows.md`](docs/workflows.md).
|
|
81
|
+
|
|
82
|
+
## Web UI
|
|
83
|
+
|
|
84
|
+
The web host lives in `web/` and connects to an `abstractgateway` at `/api/gateway/*`.
|
|
85
|
+
|
|
86
|
+
Start here:
|
|
87
|
+
- [`docs/web.md`](docs/web.md)
|
|
88
|
+
- [`docs/deployment-web.md`](docs/deployment-web.md)
|
|
89
|
+
|
|
90
|
+
## Documentation
|
|
91
|
+
|
|
92
|
+
- Start here: [`docs/getting-started.md`](docs/getting-started.md)
|
|
93
|
+
- FAQ: [`docs/faq.md`](docs/faq.md)
|
|
94
|
+
- Docs index: [`docs/README.md`](docs/README.md)
|
|
95
|
+
- [`docs/architecture.md`](docs/architecture.md)
|
|
96
|
+
- [`docs/cli.md`](docs/cli.md)
|
|
97
|
+
- [`docs/api.md`](docs/api.md)
|
|
98
|
+
- [`docs/workflows.md`](docs/workflows.md)
|
|
99
|
+
- [`docs/ui_events.md`](docs/ui_events.md)
|
|
100
|
+
|
|
101
|
+
## Development
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
pip install -e ".[dev]"
|
|
105
|
+
pytest -q
|
|
106
|
+
ruff check .
|
|
107
|
+
black .
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Project
|
|
111
|
+
|
|
112
|
+
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
|
|
113
|
+
- Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md)
|
|
114
|
+
- Security: [`SECURITY.md`](SECURITY.md)
|
|
115
|
+
- Acknowledgments: [`ACKNOWLEDMENTS.md`](ACKNOWLEDMENTS.md)
|
|
116
|
+
|
|
117
|
+
## License
|
|
118
|
+
|
|
119
|
+
MIT. See [`LICENSE`](LICENSE).
|