tilde-agent 0.1.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.
- tilde_agent-0.1.1/LICENSE +21 -0
- tilde_agent-0.1.1/PKG-INFO +375 -0
- tilde_agent-0.1.1/README.md +314 -0
- tilde_agent-0.1.1/pyproject.toml +158 -0
- tilde_agent-0.1.1/pyproject.toml.orig +192 -0
- tilde_agent-0.1.1/src/tilde/__init__.py +32 -0
- tilde_agent-0.1.1/src/tilde/cli.py +283 -0
- tilde_agent-0.1.1/src/tilde/logging.py +74 -0
- tilde_agent-0.1.1/src/tilde/main.py +29 -0
- tilde_agent-0.1.1/src/tilde/runtime/__init__.py +16 -0
- tilde_agent-0.1.1/src/tilde/runtime/_streaming.py +261 -0
- tilde_agent-0.1.1/src/tilde/runtime/agent.py +1806 -0
- tilde_agent-0.1.1/src/tilde/runtime/context.py +194 -0
- tilde_agent-0.1.1/src/tilde/runtime/events.py +327 -0
- tilde_agent-0.1.1/src/tilde/runtime/mcp.py +321 -0
- tilde_agent-0.1.1/src/tilde/runtime/model/__init__.py +53 -0
- tilde_agent-0.1.1/src/tilde/runtime/model/anthropic.py +275 -0
- tilde_agent-0.1.1/src/tilde/runtime/model/base.py +178 -0
- tilde_agent-0.1.1/src/tilde/runtime/model/openai.py +284 -0
- tilde_agent-0.1.1/src/tilde/runtime/model/openrouter.py +306 -0
- tilde_agent-0.1.1/src/tilde/runtime/modes/__init__.py +21 -0
- tilde_agent-0.1.1/src/tilde/runtime/modes/interactive.py +88 -0
- tilde_agent-0.1.1/src/tilde/runtime/modes/json_mode.py +120 -0
- tilde_agent-0.1.1/src/tilde/runtime/modes/print_mode.py +133 -0
- tilde_agent-0.1.1/src/tilde/runtime/modes/rpc_mode.py +234 -0
- tilde_agent-0.1.1/src/tilde/runtime/policy.py +586 -0
- tilde_agent-0.1.1/src/tilde/runtime/queue.py +274 -0
- tilde_agent-0.1.1/src/tilde/runtime/sandbox.py +129 -0
- tilde_agent-0.1.1/src/tilde/runtime/session/__init__.py +11 -0
- tilde_agent-0.1.1/src/tilde/runtime/session/compaction.py +83 -0
- tilde_agent-0.1.1/src/tilde/runtime/session/manager.py +616 -0
- tilde_agent-0.1.1/src/tilde/runtime/skills.py +158 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/__init__.py +112 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/base.py +187 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/bash.py +314 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/browser.py +318 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/edit.py +127 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/find.py +107 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/github.py +160 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/grep.py +150 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/ls.py +96 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/read.py +247 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/skill.py +90 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/subagent.py +115 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/sysinfo.py +99 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/web_search.py +167 -0
- tilde_agent-0.1.1/src/tilde/runtime/tools/write.py +196 -0
- tilde_agent-0.1.1/src/tilde/state/__init__.py +76 -0
- tilde_agent-0.1.1/src/tilde/state/composer.py +47 -0
- tilde_agent-0.1.1/src/tilde/state/context.py +113 -0
- tilde_agent-0.1.1/src/tilde/state/execution.py +55 -0
- tilde_agent-0.1.1/src/tilde/state/inspector.py +124 -0
- tilde_agent-0.1.1/src/tilde/state/transcript.py +52 -0
- tilde_agent-0.1.1/src/tilde/tracing.py +63 -0
- tilde_agent-0.1.1/src/tilde/tui/__init__.py +19 -0
- tilde_agent-0.1.1/src/tilde/tui/app.py +776 -0
- tilde_agent-0.1.1/src/tilde/tui/components/__init__.py +18 -0
- tilde_agent-0.1.1/src/tilde/tui/components/approval.py +51 -0
- tilde_agent-0.1.1/src/tilde/tui/components/composer.py +348 -0
- tilde_agent-0.1.1/src/tilde/tui/components/footer.py +176 -0
- tilde_agent-0.1.1/src/tilde/tui/components/header.py +154 -0
- tilde_agent-0.1.1/src/tilde/tui/components/inspector.py +142 -0
- tilde_agent-0.1.1/src/tilde/tui/components/transcript.py +330 -0
- tilde_agent-0.1.1/src/tilde/tui/display.py +216 -0
- tilde_agent-0.1.1/src/tilde/tui/themes/__init__.py +5 -0
- tilde_agent-0.1.1/src/tilde/tui/themes/tokens.py +26 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 tilde Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: tilde-agent
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: A production-grade, terminal-based AI/Agentic coding harness with enhanced security
|
|
5
|
+
Keywords: ai,agent,coding,terminal,tui,productivity,automation
|
|
6
|
+
Author: tilde Team
|
|
7
|
+
Author-email: tilde Team <tilde@example.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
+
Classifier: Topic :: Terminals
|
|
18
|
+
Classifier: Topic :: Text Editors
|
|
19
|
+
Requires-Dist: rich>=13.7.0
|
|
20
|
+
Requires-Dist: textual>=4.0.0
|
|
21
|
+
Requires-Dist: typer>=0.9.0
|
|
22
|
+
Requires-Dist: openai>=1.0.0
|
|
23
|
+
Requires-Dist: anthropic>=0.40.0
|
|
24
|
+
Requires-Dist: httpx>=0.25.0
|
|
25
|
+
Requires-Dist: pydantic>=2.5.0
|
|
26
|
+
Requires-Dist: pydantic-settings>=2.1.0
|
|
27
|
+
Requires-Dist: structlog>=23.2.0
|
|
28
|
+
Requires-Dist: opentelemetry-api>=1.21.0
|
|
29
|
+
Requires-Dist: opentelemetry-sdk>=1.21.0
|
|
30
|
+
Requires-Dist: sqlmodel>=0.0.14
|
|
31
|
+
Requires-Dist: mcp>=1.0.0
|
|
32
|
+
Requires-Dist: typing-extensions>=4.9.0
|
|
33
|
+
Requires-Dist: tilde-agent[dev] ; extra == 'all'
|
|
34
|
+
Requires-Dist: tilde-agent[security] ; extra == 'all'
|
|
35
|
+
Requires-Dist: tilde-agent[browser] ; extra == 'all'
|
|
36
|
+
Requires-Dist: tilde-agent[github] ; extra == 'all'
|
|
37
|
+
Requires-Dist: playwright>=1.40.0 ; extra == 'browser'
|
|
38
|
+
Requires-Dist: pytest>=7.4.0 ; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest-asyncio>=0.23.0 ; extra == 'dev'
|
|
40
|
+
Requires-Dist: pytest-cov>=4.1.0 ; extra == 'dev'
|
|
41
|
+
Requires-Dist: ruff>=0.1.0 ; extra == 'dev'
|
|
42
|
+
Requires-Dist: mypy>=1.8.0 ; extra == 'dev'
|
|
43
|
+
Requires-Dist: pyright>=1.1.0 ; extra == 'dev'
|
|
44
|
+
Requires-Dist: mkdocs>=1.5.0 ; extra == 'dev'
|
|
45
|
+
Requires-Dist: mkdocs-material>=9.5.0 ; extra == 'dev'
|
|
46
|
+
Requires-Dist: pygithub>=2.1.1 ; extra == 'github'
|
|
47
|
+
Requires-Dist: ghapi>=1.0.0 ; extra == 'github'
|
|
48
|
+
Requires-Dist: bandit>=1.7.0 ; extra == 'security'
|
|
49
|
+
Requires-Dist: safety>=2.3.0 ; extra == 'security'
|
|
50
|
+
Requires-Python: >=3.12, <3.14
|
|
51
|
+
Project-URL: Homepage, https://github.com/Chmgx81/tilde
|
|
52
|
+
Project-URL: Documentation, https://github.com/Chmgx81/tilde#readme
|
|
53
|
+
Project-URL: Repository, https://github.com/Chmgx81/tilde.git
|
|
54
|
+
Project-URL: Issues, https://github.com/Chmgx81/tilde/issues
|
|
55
|
+
Provides-Extra: all
|
|
56
|
+
Provides-Extra: browser
|
|
57
|
+
Provides-Extra: dev
|
|
58
|
+
Provides-Extra: github
|
|
59
|
+
Provides-Extra: security
|
|
60
|
+
Description-Content-Type: text/markdown
|
|
61
|
+
|
|
62
|
+
# tilde (~)
|
|
63
|
+
|
|
64
|
+
> **A production-grade, terminal-based AI/Agentic coding harness with enhanced security**
|
|
65
|
+
|
|
66
|
+
[](https://www.python.org/downloads/)
|
|
67
|
+
[](https://opensource.org/licenses/MIT)
|
|
68
|
+
[](https://github.com/astral-sh/ruff)
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🚀 Quick Start
|
|
73
|
+
|
|
74
|
+
### Installation
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Clone the repository
|
|
78
|
+
git clone https://github.com/Chmgx81/tilde.git
|
|
79
|
+
cd tilde
|
|
80
|
+
|
|
81
|
+
# Install with uv (recommended)
|
|
82
|
+
uv sync
|
|
83
|
+
|
|
84
|
+
# Or install in development mode
|
|
85
|
+
uv pip install -e .
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Usage
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Start interactive mode (default)
|
|
92
|
+
tilde
|
|
93
|
+
|
|
94
|
+
# Continue a session
|
|
95
|
+
tilde --continue
|
|
96
|
+
|
|
97
|
+
# Use a specific model
|
|
98
|
+
tilde --model gpt-4 --provider openai
|
|
99
|
+
|
|
100
|
+
# Run in JSON mode
|
|
101
|
+
tilde --mode json "List all Python files"
|
|
102
|
+
|
|
103
|
+
# Run in print mode (single response)
|
|
104
|
+
tilde --mode print "What's in this directory?"
|
|
105
|
+
|
|
106
|
+
# Attach files (repeatable --file option)
|
|
107
|
+
tilde --file src/main.py "Review this code"
|
|
108
|
+
|
|
109
|
+
# Shell commands run via shell mode: type ! at the start of the
|
|
110
|
+
# composer input line in the interactive TUI (amber border).
|
|
111
|
+
# Example: !ls -la
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## ⚡ Features
|
|
117
|
+
|
|
118
|
+
### ✅ Implemented
|
|
119
|
+
- [x] Project structure and initialization
|
|
120
|
+
- [x] CLI with Typer (interactive, `--mode json|rpc|print`, `--continue`, `--model`, `--provider`)
|
|
121
|
+
- [x] Agent runtime (model providers, tool registry, sessions, compaction, queue)
|
|
122
|
+
- [x] Tool system (read, write, edit, bash, grep, find, ls, web_search, browser, sysinfo, github, subagent, skill)
|
|
123
|
+
- [x] TUI with Rich + Textual (header, transcript, composer, footer, approval modal, inspector modal, NO_COLOR / reduced-motion / ASCII glyphs, output collapsing, `/doctor`, `?` help)
|
|
124
|
+
- [x] MCP support, skills system, subagents, plan mode (`--plan`), accept-edits mode (`--accept-edits`)
|
|
125
|
+
- [x] Policy engine with ASK approval tier + audit trail, session persistence (JSONL)
|
|
126
|
+
- [x] Sandbox execution, logging (structlog), tracing (OpenTelemetry), 200+ unit tests
|
|
127
|
+
|
|
128
|
+
### 🚧 In Development
|
|
129
|
+
- [ ] Extended tool coverage and hardening (secret redaction in sessions, untrusted-output marking — task_0005)
|
|
130
|
+
- [ ] Ruff baseline: format + lint clean (task_0002 in progress)
|
|
131
|
+
|
|
132
|
+
### 📋 Planned
|
|
133
|
+
- [ ] Enhanced security (7-Pillar architecture) — partially done (policy, sandbox, audit); remaining: prompt-injection protection, sensitive-data handling
|
|
134
|
+
- [ ] System monitoring (beyond sysinfo tool)
|
|
135
|
+
- [ ] Security auditing (beyond audit tooling)
|
|
136
|
+
- [ ] Extensions/plugins + package system
|
|
137
|
+
- [ ] Polish: comprehensive docs, packaging, CI/CD
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 🏗️ Architecture
|
|
142
|
+
|
|
143
|
+
tilde follows a **layered architecture** with clear separation of concerns:
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
147
|
+
│ Agent Runtime (Harness) │
|
|
148
|
+
│ model/ - LLM provider integrations (OpenAI, etc.) │
|
|
149
|
+
│ tools/ - Built-in tools (read, write, bash, etc.) │
|
|
150
|
+
│ session/ - Session management and compaction │
|
|
151
|
+
│ queue/ - Message queue (steering, follow-up) │
|
|
152
|
+
│ context/ - Context file loading (AGENTS.md, etc.) │
|
|
153
|
+
│ policy/ - Security policies and permissions │
|
|
154
|
+
└──────────────────────────┬────────────────────────────────────┘
|
|
155
|
+
↓ typed events + snapshots
|
|
156
|
+
┌──────────────────────────▼────────────────────────────────────┐
|
|
157
|
+
│ UI State Store │
|
|
158
|
+
│ transcript/ - Conversation history │
|
|
159
|
+
│ execution/ - Current execution state │
|
|
160
|
+
│ composer/ - Input composer state │
|
|
161
|
+
│ overlay/ - Overlays and modals │
|
|
162
|
+
└──────────────────────────┬────────────────────────────────────┘
|
|
163
|
+
↓ render model
|
|
164
|
+
┌──────────────────────────▼────────────────────────────────────┐
|
|
165
|
+
│ TUI Runtime │
|
|
166
|
+
│ app.py - Main Textual application │
|
|
167
|
+
│ layout.py - Layout system (VStack, HStack, ScrollView) │
|
|
168
|
+
│ rendering/ - Differential rendering │
|
|
169
|
+
│ input.py - Input handling (keyboard, mouse, paste, IME) │
|
|
170
|
+
│ terminal/ - Terminal abstraction │
|
|
171
|
+
│ components/ - UI components (header, transcript, composer) │
|
|
172
|
+
│ themes/ - Color themes and design tokens │
|
|
173
|
+
└──────────────────────────┬────────────────────────────────────┘
|
|
174
|
+
↓ ANSI / synchronized I/O
|
|
175
|
+
┌──────────────────────────▼────────────────────────────────────┐
|
|
176
|
+
│ Terminal │
|
|
177
|
+
└───────────────────────────────────────────────────────────────┘
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 🎯 Design Principles
|
|
183
|
+
|
|
184
|
+
### Core Philosophy
|
|
185
|
+
1. **Plan First**: Always plan before executing code
|
|
186
|
+
2. **Security First**: 7-Pillar security architecture
|
|
187
|
+
3. **Harness > Model**: The scaffolding matters more than the model
|
|
188
|
+
4. **Spec-Driven**: Write specifications before implementation
|
|
189
|
+
5. **Context Engineering**: Manage context window carefully
|
|
190
|
+
|
|
191
|
+
### User Experience
|
|
192
|
+
1. **Safety > Convenience**: Decision surfaces beat decoration
|
|
193
|
+
2. **Minimal Animation**: Only spinner and streaming updates
|
|
194
|
+
3. **Quiet When Idle**: No animation when not working
|
|
195
|
+
4. **History Preservation**: Stable, selectable, copyable, searchable
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 📦 Tech Stack
|
|
200
|
+
|
|
201
|
+
| Category | Technology | Purpose |
|
|
202
|
+
|----------|------------|---------|
|
|
203
|
+
| **Language** | Python 3.12+ | Primary language |
|
|
204
|
+
| **Package Manager** | uv | Fast dependency management |
|
|
205
|
+
| **TUI Framework** | Textual | Event loop, layout, rendering |
|
|
206
|
+
| **Rendering** | Rich | Beautiful text rendering |
|
|
207
|
+
| **CLI** | Typer | Command-line interface |
|
|
208
|
+
| **LLM** | OpenAI SDK | Model interactions |
|
|
209
|
+
| **HTTP** | httpx | Async HTTP requests |
|
|
210
|
+
| **Data Validation** | Pydantic | Data models and validation |
|
|
211
|
+
| **Settings** | pydantic-settings | Configuration management |
|
|
212
|
+
| **Observability** | structlog + OpenTelemetry | Logging and tracing |
|
|
213
|
+
| **Database** | SQLModel + SQLite | Session storage |
|
|
214
|
+
| **MCP** | mcp Python SDK | Model Context Protocol |
|
|
215
|
+
| **Parsing** | tree-sitter, difflib | Code parsing and diffs |
|
|
216
|
+
| **Testing** | pytest + pytest-asyncio | Test framework |
|
|
217
|
+
| **Linting** | Ruff | Fast linting |
|
|
218
|
+
| **Type Checking** | mypy / pyright | Static type checking |
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 📂 Project Structure
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
tilde/
|
|
226
|
+
├── src/tilde/ # Main source code
|
|
227
|
+
│ ├── __init__.py # Package initialization
|
|
228
|
+
│ ├── main.py # Entry point
|
|
229
|
+
│ ├── cli.py # CLI with Typer
|
|
230
|
+
│ ├── logging.py # structlog setup
|
|
231
|
+
│ ├── tracing.py # OpenTelemetry setup
|
|
232
|
+
│ ├── runtime/ # Agent runtime
|
|
233
|
+
│ │ ├── agent.py # Main AgentRuntime class
|
|
234
|
+
│ │ ├── context.py # Context file loading (flat module)
|
|
235
|
+
│ │ ├── policy.py # Policy engine (flat module)
|
|
236
|
+
│ │ ├── queue.py # Message queue (flat module)
|
|
237
|
+
│ │ ├── sandbox.py # Sandbox execution
|
|
238
|
+
│ │ ├── skills.py # Skills discovery
|
|
239
|
+
│ │ ├── mcp.py # MCP integration
|
|
240
|
+
│ │ ├── model/ # Model providers
|
|
241
|
+
│ │ │ ├── __init__.py
|
|
242
|
+
│ │ │ ├── base.py # Base ModelProvider
|
|
243
|
+
│ │ │ ├── openai.py # OpenAI provider
|
|
244
|
+
│ │ │ ├── anthropic.py # Anthropic provider
|
|
245
|
+
│ │ │ └── openrouter.py # OpenRouter provider
|
|
246
|
+
│ │ ├── tools/ # Built-in tools
|
|
247
|
+
│ │ │ ├── __init__.py # Tool registry
|
|
248
|
+
│ │ │ ├── base.py # Base Tool class
|
|
249
|
+
│ │ │ ├── read.py # Read tool
|
|
250
|
+
│ │ │ ├── write.py # Write tool
|
|
251
|
+
│ │ │ ├── edit.py # Edit tool
|
|
252
|
+
│ │ │ ├── bash.py # Bash tool
|
|
253
|
+
│ │ │ ├── grep.py # Grep tool
|
|
254
|
+
│ │ │ ├── find.py # Find tool
|
|
255
|
+
│ │ │ ├── ls.py # Ls tool
|
|
256
|
+
│ │ │ ├── web_search.py # Web search tool
|
|
257
|
+
│ │ │ ├── browser.py # Browser tool
|
|
258
|
+
│ │ │ ├── sysinfo.py # System info tool
|
|
259
|
+
│ │ │ ├── github.py # GitHub tool
|
|
260
|
+
│ │ │ ├── subagent.py # Subagent tool
|
|
261
|
+
│ │ │ └── skill.py # Skill tool
|
|
262
|
+
│ │ ├── session/ # Session management
|
|
263
|
+
│ │ │ ├── __init__.py
|
|
264
|
+
│ │ │ ├── manager.py # Session manager (JSONL)
|
|
265
|
+
│ │ │ └── compaction.py # Compaction engine
|
|
266
|
+
│ │ └── modes/ # Runtime modes
|
|
267
|
+
│ │ ├── __init__.py
|
|
268
|
+
│ │ ├── interactive.py # Interactive TUI mode
|
|
269
|
+
│ │ ├── json_mode.py # JSON event-stream mode
|
|
270
|
+
│ │ ├── rpc_mode.py # JSON-RPC mode
|
|
271
|
+
│ │ └── print_mode.py # Single-response print mode
|
|
272
|
+
│ ├── state/ # UI state management
|
|
273
|
+
│ │ ├── __init__.py # UIState container
|
|
274
|
+
│ │ ├── transcript.py # Transcript state
|
|
275
|
+
│ │ ├── execution.py # Execution state
|
|
276
|
+
│ │ ├── composer.py # Composer state
|
|
277
|
+
│ │ ├── context.py # Context state
|
|
278
|
+
│ │ └── inspector.py # Inspector state
|
|
279
|
+
│ └── tui/ # Terminal UI
|
|
280
|
+
│ ├── __init__.py
|
|
281
|
+
│ ├── app.py # Main Textual app
|
|
282
|
+
│ ├── display.py # NO_COLOR / motion / glyph / collapse / doctor / help
|
|
283
|
+
│ ├── components/ # UI components
|
|
284
|
+
│ │ ├── __init__.py
|
|
285
|
+
│ │ ├── header.py # Header component
|
|
286
|
+
│ │ ├── transcript.py # Transcript component
|
|
287
|
+
│ │ ├── composer.py # Composer component
|
|
288
|
+
│ │ ├── footer.py # Footer component
|
|
289
|
+
│ │ ├── approval.py # Approval modal
|
|
290
|
+
│ │ └── inspector.py # Inspector modal
|
|
291
|
+
│ └── themes/ # Color themes
|
|
292
|
+
│ ├── __init__.py
|
|
293
|
+
│ └── tokens.py # Design tokens (tui-spec.md section 5.1)
|
|
294
|
+
├── tests/ # Tests (36 unit files, 233 green)
|
|
295
|
+
│ ├── unit/ # Unit tests
|
|
296
|
+
│ ├── integration/ # Integration tests (empty, TODO)
|
|
297
|
+
│ └── e2e/ # End-to-end tests (empty, TODO)
|
|
298
|
+
├── docs/ # Documentation
|
|
299
|
+
│ └── INSPIRATION_SUMMARY.md # Key learnings from references
|
|
300
|
+
├── .pi/agent/ # Pi config (skills/, extensions/ - empty, TODO)
|
|
301
|
+
├── .github/workflows/ # GitHub Actions (empty, TODO)
|
|
302
|
+
├── pyproject.toml # Project configuration
|
|
303
|
+
├── progress.md # Project progress tracker
|
|
304
|
+
├── AGENTS.md # Agent instructions and context
|
|
305
|
+
├── Plan.md # Master project plan
|
|
306
|
+
├── tui-spec.md # TUI design specification
|
|
307
|
+
└── README.md # This file
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## 🛡️ Security
|
|
313
|
+
|
|
314
|
+
tilde implements the **7-Pillar Agent Security Architecture**:
|
|
315
|
+
|
|
316
|
+
1. **Infrastructure & Networking**: Sandboxing, network egress governance
|
|
317
|
+
2. **Data**: Encryption, access controls, tenant partitioning
|
|
318
|
+
3. **Model**: Prompt validation, output filtering, instruction security
|
|
319
|
+
4. **Application & Runtime**: LLM firewalls, lifecycle hooks, agent gateways
|
|
320
|
+
5. **IAM**: Agent identities, ABAC, JIT token downscoping
|
|
321
|
+
6. **Observability**: OpenTelemetry, behavioral analytics, audit trails
|
|
322
|
+
7. **Governance**: Compliance, risk assessment, attestation
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## 📖 Documentation
|
|
327
|
+
|
|
328
|
+
- **[Plan.md](./Plan.md)** - Master project plan and vision
|
|
329
|
+
- **[tui-spec.md](./tui-spec.md)** - TUI design specification (contract)
|
|
330
|
+
- **[AGENTS.md](./AGENTS.md)** - Development guidelines and project context
|
|
331
|
+
- **[progress.md](./progress.md)** - Project progress tracker (start here!)
|
|
332
|
+
- **[docs/INSPIRATION_SUMMARY.md](./docs/INSPIRATION_SUMMARY.md)** - Key learnings from reference materials
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## 🤝 Contributing
|
|
337
|
+
|
|
338
|
+
See **[AGENTS.md](./AGENTS.md)** for development guidelines.
|
|
339
|
+
|
|
340
|
+
### Quick Contribution Guide
|
|
341
|
+
|
|
342
|
+
1. **Read progress.md** - Understand current state
|
|
343
|
+
2. **Check open questions** - See if your question is already answered
|
|
344
|
+
3. **Follow the workflow** - Research → Plan → Explain → Implement → Test → Document
|
|
345
|
+
4. **Update progress.md** - Track your changes
|
|
346
|
+
5. **Keep it simple** - Don't over-engineer
|
|
347
|
+
6. **Explain simply** - Use dead-simple English
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## 📜 License
|
|
352
|
+
|
|
353
|
+
MIT License - see [LICENSE](LICENSE) for details.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 🙏 Acknowledgments
|
|
358
|
+
|
|
359
|
+
tilde is inspired by and builds upon the excellent work of:
|
|
360
|
+
- **[Pi Coding Agent](https://github.com/earendil-works/pi-coding-agent)** - Primary inspiration
|
|
361
|
+
- **[Agent Skills Standard](https://agentskills.io)** - Skills system
|
|
362
|
+
- **[Model Context Protocol](https://github.com/modelcontextprotocol/specification)** - Tool interoperability
|
|
363
|
+
- **[Rich](https://github.com/Textualize/rich)** - Beautiful terminal rendering
|
|
364
|
+
- **[Textual](https://github.com/Textualize/textual)** - TUI framework
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 💬 Community
|
|
369
|
+
|
|
370
|
+
- **Issues**: [GitHub Issues](https://github.com/Chmgx81/tilde/issues)
|
|
371
|
+
- **Discussions**: [GitHub Discussions](https://github.com/Chmgx81/tilde/discussions)
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
> **Remember**: tilde is always **plan first** - it always plans before executing any code.
|