claw-code 0.2.0__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.
Files changed (110) hide show
  1. claw_code-0.2.0.dist-info/METADATA +560 -0
  2. claw_code-0.2.0.dist-info/RECORD +110 -0
  3. claw_code-0.2.0.dist-info/WHEEL +5 -0
  4. claw_code-0.2.0.dist-info/entry_points.txt +2 -0
  5. claw_code-0.2.0.dist-info/licenses/LICENSE +68 -0
  6. claw_code-0.2.0.dist-info/top_level.txt +1 -0
  7. src/QueryEngine.py +19 -0
  8. src/Tool.py +15 -0
  9. src/__init__.py +29 -0
  10. src/assistant/__init__.py +16 -0
  11. src/bootstrap/__init__.py +16 -0
  12. src/bootstrap_graph.py +27 -0
  13. src/bridge/__init__.py +16 -0
  14. src/buddy/__init__.py +16 -0
  15. src/cli/__init__.py +16 -0
  16. src/command_graph.py +34 -0
  17. src/commands.py +90 -0
  18. src/components/__init__.py +16 -0
  19. src/config.py +58 -0
  20. src/constants/__init__.py +16 -0
  21. src/context.py +47 -0
  22. src/coordinator/__init__.py +16 -0
  23. src/costHook.py +8 -0
  24. src/cost_tracker.py +13 -0
  25. src/deferred_init.py +31 -0
  26. src/dialogLaunchers.py +15 -0
  27. src/direct_modes.py +21 -0
  28. src/entrypoints/__init__.py +16 -0
  29. src/execution_registry.py +51 -0
  30. src/history.py +22 -0
  31. src/hooks/__init__.py +16 -0
  32. src/init_wizard.py +238 -0
  33. src/ink.py +6 -0
  34. src/interactiveHelpers.py +5 -0
  35. src/keybindings/__init__.py +16 -0
  36. src/main.py +274 -0
  37. src/memdir/__init__.py +16 -0
  38. src/migrations/__init__.py +16 -0
  39. src/model_detection.py +96 -0
  40. src/models.py +49 -0
  41. src/moreright/__init__.py +16 -0
  42. src/native_ts/__init__.py +16 -0
  43. src/outputStyles/__init__.py +16 -0
  44. src/parity_audit.py +138 -0
  45. src/permissions.py +20 -0
  46. src/plugins/__init__.py +16 -0
  47. src/port_manifest.py +52 -0
  48. src/prefetch.py +23 -0
  49. src/projectOnboardingState.py +10 -0
  50. src/query.py +13 -0
  51. src/query_engine.py +289 -0
  52. src/reference_data/__init__.py +1 -0
  53. src/reference_data/archive_surface_snapshot.json +63 -0
  54. src/reference_data/commands_snapshot.json +1037 -0
  55. src/reference_data/subsystems/assistant.json +8 -0
  56. src/reference_data/subsystems/bootstrap.json +8 -0
  57. src/reference_data/subsystems/bridge.json +32 -0
  58. src/reference_data/subsystems/buddy.json +13 -0
  59. src/reference_data/subsystems/cli.json +26 -0
  60. src/reference_data/subsystems/components.json +32 -0
  61. src/reference_data/subsystems/constants.json +28 -0
  62. src/reference_data/subsystems/coordinator.json +8 -0
  63. src/reference_data/subsystems/entrypoints.json +15 -0
  64. src/reference_data/subsystems/hooks.json +32 -0
  65. src/reference_data/subsystems/keybindings.json +21 -0
  66. src/reference_data/subsystems/memdir.json +15 -0
  67. src/reference_data/subsystems/migrations.json +18 -0
  68. src/reference_data/subsystems/moreright.json +8 -0
  69. src/reference_data/subsystems/native_ts.json +11 -0
  70. src/reference_data/subsystems/outputStyles.json +8 -0
  71. src/reference_data/subsystems/plugins.json +9 -0
  72. src/reference_data/subsystems/remote.json +11 -0
  73. src/reference_data/subsystems/schemas.json +8 -0
  74. src/reference_data/subsystems/screens.json +10 -0
  75. src/reference_data/subsystems/server.json +10 -0
  76. src/reference_data/subsystems/services.json +32 -0
  77. src/reference_data/subsystems/skills.json +27 -0
  78. src/reference_data/subsystems/state.json +13 -0
  79. src/reference_data/subsystems/types.json +18 -0
  80. src/reference_data/subsystems/upstreamproxy.json +9 -0
  81. src/reference_data/subsystems/utils.json +32 -0
  82. src/reference_data/subsystems/vim.json +12 -0
  83. src/reference_data/subsystems/voice.json +8 -0
  84. src/reference_data/tools_snapshot.json +922 -0
  85. src/remote/__init__.py +16 -0
  86. src/remote_runtime.py +25 -0
  87. src/repl.py +577 -0
  88. src/replLauncher.py +5 -0
  89. src/runtime.py +205 -0
  90. src/schemas/__init__.py +16 -0
  91. src/screens/__init__.py +16 -0
  92. src/server/__init__.py +16 -0
  93. src/services/__init__.py +16 -0
  94. src/services/ollama_adapter.py +251 -0
  95. src/services/ollama_setup.py +192 -0
  96. src/session_store.py +79 -0
  97. src/setup.py +77 -0
  98. src/skills/__init__.py +16 -0
  99. src/state/__init__.py +16 -0
  100. src/system_init.py +23 -0
  101. src/task.py +5 -0
  102. src/tasks.py +11 -0
  103. src/tool_pool.py +37 -0
  104. src/tools.py +96 -0
  105. src/transcript.py +23 -0
  106. src/types/__init__.py +16 -0
  107. src/upstreamproxy/__init__.py +16 -0
  108. src/utils/__init__.py +16 -0
  109. src/vim/__init__.py +16 -0
  110. src/voice/__init__.py +16 -0
@@ -0,0 +1,560 @@
1
+ Metadata-Version: 2.4
2
+ Name: claw-code
3
+ Version: 0.2.0
4
+ Summary: Local Claude Code alternative powered by Ollama - zero API costs
5
+ Author-email: Claw Code Contributors <instructkr@github.com>
6
+ License: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/instructkr/claw-code
8
+ Project-URL: Documentation, https://github.com/instructkr/claw-code#readme
9
+ Project-URL: Repository, https://github.com/instructkr/claw-code.git
10
+ Project-URL: Issues, https://github.com/instructkr/claw-code/issues
11
+ Keywords: ai,claude,ollama,code-generation,local-llm
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Software Development :: Code Generators
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Requires-Python: >=3.9
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: requests<3.0,>=2.28.0
28
+ Requires-Dist: psutil<6.0,>=5.9.0
29
+ Requires-Dist: prompt-toolkit<4.0,>=3.0.0
30
+ Requires-Dist: rich<14.0,>=12.0.0
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest>=7.0; extra == "dev"
33
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
34
+ Requires-Dist: black>=23.0; extra == "dev"
35
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
36
+ Requires-Dist: mypy>=1.0; extra == "dev"
37
+ Dynamic: license-file
38
+
39
+ # 🚀 Claw Code — Local Claude Code Powered by Ollama
40
+
41
+ **Free. Offline. No API Keys. Works on Your Laptop.**
42
+
43
+ Experience Claude Code locally and offline, powered by open models like Qwen and Phi through Ollama. Zero API costs, zero data leakage, pure local execution.
44
+
45
+ <p align="center">
46
+ <strong>⭐ The fastest repo in history to surpass 50K stars, reaching the milestone in just 2 hours after publication ⭐</strong>
47
+ </p>
48
+
49
+ <p align="center">
50
+ <a href="https://star-history.com/#instructkr/claw-code&Date">
51
+ <picture>
52
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date&theme=dark" />
53
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date" />
54
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=instructkr/claw-code&type=Date" width="600" />
55
+ </picture>
56
+ </a>
57
+ </p>
58
+
59
+ ---
60
+
61
+ ## Quick Start (3 Minutes)
62
+
63
+ ### Install
64
+
65
+ ```bash
66
+ pip install claw-code
67
+ ```
68
+
69
+ ### Setup (Auto-Detects Your Hardware)
70
+
71
+ ```bash
72
+ claw-code init
73
+ # ✓ Detects your PC RAM
74
+ # ✓ Downloads perfect model for your system
75
+ # ✓ Creates ~/.claude.json
76
+ ```
77
+
78
+ ### Start Coding
79
+
80
+ ```bash
81
+ claw-code
82
+
83
+ claw> Write a Python function to merge sorted arrays
84
+ # Streams response real-time from local model...
85
+
86
+ claw> Refactor it to use less memory
87
+ # Continues the conversation locally
88
+
89
+ claw> /exit
90
+ # ✓ Session auto-saved to resume later
91
+ ```
92
+
93
+ ---
94
+
95
+ ## Why Claw Code?
96
+
97
+ | Feature | Claw Code | Claude API | ChatGPT |
98
+ |---------|-----------|-----------|---------|
99
+ | **Cost** | ✅ Free | ❌ $0.003/1K tokens | ❌ $20/month |
100
+ | **Runs Offline** | ✅ 100% local | ❌ Requires internet | ❌ Cloud only |
101
+ | **Data Privacy** | ✅ On your machine | ⚠️ Anthropic stores | ❌ OpenAI stores |
102
+ | **Works on Laptop** | ✅ 8GB+ RAM | ❌ Requires account | ❌ Requires account |
103
+ | **Commands/Tools** | ✅ Full support | ✅ Full support | ❌ Limited |
104
+ | **Multi-Turn** | ✅ Stateful sessions | ✅ Stateful sessions | ✅ Stateful sessions |
105
+
106
+ ---
107
+
108
+ ## Hardware Requirements
109
+
110
+ Choose your model based on available RAM:
111
+
112
+ ```
113
+ ≤ 8GB VRAM → phi4-mini (3.8B) [M1 MacBook Air, budget laptops]
114
+ 8-16GB VRAM → qwen2.5-coder:7b ⭐ [Most users, recommended]
115
+ 16GB+ VRAM → qwen2.5-coder:14b [Complex tasks, power users]
116
+ ```
117
+
118
+ All models run locally with zero internet after download.
119
+
120
+ ---
121
+
122
+ ## Features
123
+
124
+ ✅ **Interactive REPL** — Slash commands for control
125
+ ✅ **Code Generation** — Write, refactor, optimize, debug code
126
+ ✅ **Multi-Turn Conversations** — Full context awareness
127
+ ✅ **Session Persistence** — Resume conversations later
128
+ ✅ **Local Execution** — No API, no costs, no tracking
129
+ ✅ **Streaming Output** — Real-time token responses
130
+ ✅ **Hardware Auto-Detection** — Picks best model for you
131
+ ✅ **Command Routing** — Smart matching to operations
132
+ ✅ **Tool System** — Permission-aware integrations
133
+
134
+ ---
135
+
136
+ ## Available Commands (in REPL)
137
+
138
+ ```
139
+ /help — Show all commands
140
+ /model — Display current model and settings
141
+ /session — Show token usage and conversation stats
142
+ /resume — Resume a previous session
143
+ /clear — Clear conversation history
144
+ /exit — Exit (optionally save session)
145
+ ```
146
+
147
+ ---
148
+
149
+ ## Architecture
150
+
151
+ ```
152
+ ┌─────────────────────────────────────────────┐
153
+ │ Claw Code REPL │
154
+ │ (Your terminal, your machine) │
155
+ └────────────────┬────────────────────────────┘
156
+
157
+ ┌────────────────▼────────────────────────────┐
158
+ │ Query Engine + Session Management │
159
+ │ (Multi-turn conversation, permissions) │
160
+ └────────────────┬────────────────────────────┘
161
+
162
+ ┌────────────────▼────────────────────────────┐
163
+ │ Ollama Adapter │
164
+ │ (Local HTTP to Ollama server) │
165
+ └────────────────┬────────────────────────────┘
166
+
167
+ ┌────────────────▼────────────────────────────┐
168
+ │ Local Ollama Server + Model │
169
+ │ (qwen2.5-coder:7b or similar) │
170
+ │ (Runs on localhost:11434) │
171
+ └─────────────────────────────────────────────┘
172
+ ```
173
+
174
+ **All processing happens locally. No data leaves your machine.**
175
+
176
+ ---
177
+
178
+ ## Getting Started
179
+
180
+ ### Prerequisites
181
+
182
+ - **Python 3.9+**
183
+ - **Ollama** ([download here](https://ollama.ai))
184
+ - **5-10 GB** free disk space (for model download)
185
+
186
+ ### Step 1: Install Python Package
187
+
188
+ ```bash
189
+ pip install claw-code
190
+ ```
191
+
192
+ ### Step 2: Run Setup Wizard
193
+
194
+ ```bash
195
+ claw-code init
196
+ ```
197
+
198
+ The wizard will:
199
+ 1. ✅ Check Ollama installed
200
+ 2. ✅ Detect your system RAM
201
+ 3. ✅ Recommend best model
202
+ 4. ✅ Pull model (first time: ~2-5 min)
203
+ 5. ✅ Verify everything works
204
+ 6. ✅ Create config (~/.claude.json)
205
+
206
+ ### Step 3: Start Coding
207
+
208
+ ```bash
209
+ claw-code
210
+
211
+ claw> your first prompt here
212
+ ```
213
+
214
+ ---
215
+
216
+ ## Usage Examples
217
+
218
+ ### Write Code
219
+
220
+ ```
221
+ claw> Write a async Python function to fetch data from an API
222
+
223
+ [Receives well-structured async code with error handling]
224
+
225
+ claw> Add retry logic with exponential backoff
226
+
227
+ [Gets updated code with retry mechanism]
228
+ ```
229
+
230
+ ### Debug Code
231
+
232
+ ```
233
+ claw> This function is slow. Why?
234
+ def find_duplicates(items):
235
+ result = []
236
+ for i in range(len(items)):
237
+ for j in range(i+1, len(items)):
238
+ if items[i] == items[j]:
239
+ result.append(items[i])
240
+ return result
241
+
242
+ [Gets analysis + optimized version]
243
+ ```
244
+
245
+ ### Learn Concepts
246
+
247
+ ```
248
+ claw> Explain what a closure is in JavaScript
249
+
250
+ [Gets clear explanation with examples]
251
+
252
+ claw> Show me 3 practical uses in modern code
253
+
254
+ [Gets real-world examples]
255
+ ```
256
+
257
+ ---
258
+
259
+ ## Configuration
260
+
261
+ Claw Code creates `~/.claude.json` with sensible defaults:
262
+
263
+ ```json
264
+ {
265
+ "provider": "ollama",
266
+ "ollama_base_url": "http://localhost:11434",
267
+ "model": "qwen2.5-coder:7b",
268
+ "max_tokens": 4000,
269
+ "temperature": 0.7
270
+ }
271
+ ```
272
+
273
+ **Edit manually to:**
274
+ - Change models: `"model": "phi4-mini"` or `"qwen2.5-coder:14b"`
275
+ - Point to remote Ollama: Edit `ollama_base_url`
276
+ - Adjust creativity: `"temperature": 0.5` (lower = more focused)
277
+
278
+ ---
279
+
280
+ ## Troubleshooting
281
+
282
+ ### "ollama: command not found"
283
+ Download Ollama from https://ollama.ai
284
+
285
+ ### "Connection refused" when initializing
286
+ Make sure Ollama is running:
287
+ ```bash
288
+ ollama serve # In another terminal
289
+ ```
290
+
291
+ ### "Not enough disk space"
292
+ Models are 3-14GB. Free up disk space or use smaller model:
293
+ ```bash
294
+ claw-code config
295
+ # Edit ~/.claude.json to use "phi4-mini"
296
+ ```
297
+
298
+ ### Slow responses
299
+ - First response warms up model (1-2 min)
300
+ - Subsequent responses faster
301
+ - Smaller models (phi4-mini) are faster than larger ones
302
+
303
+ ---
304
+
305
+ ## Advanced: Extend Claw Code
306
+
307
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for:
308
+ - Adding new commands
309
+ - Integrating custom tools
310
+ - Building plugins
311
+ - Custom routing logic
312
+ - Local model integration
313
+
314
+ ---
315
+
316
+ ## Architecture & Technical Details
317
+
318
+ See [ARCHITECTURE.md](ARCHITECTURE.md) for deep dive on:
319
+ - System design
320
+ - Command/tool registry
321
+ - Permission model
322
+ - Session persistence
323
+ - Ollama integration
324
+ - Extension points
325
+
326
+ ---
327
+
328
+ ## Roadmap
329
+
330
+ ### Phase 3: Tool Execution (Coming Soon)
331
+ Run actual shell/Python commands from the CLI
332
+
333
+ ### Phase 4: GUI & VSCode Integration
334
+ Web UI and VSCode extension
335
+
336
+ ### Phase 5: Advanced Features
337
+ Memory, file operations, plugins, custom models
338
+
339
+ ---
340
+
341
+ ## Contributing
342
+
343
+ Want to help? See [CONTRIBUTING.md](CONTRIBUTING.md) for:
344
+ - How to set up dev environment
345
+ - Extension points (commands, tools, routing)
346
+ - PR process
347
+ - Code guidelines
348
+
349
+ **We welcome contributors!** All skill levels okay.
350
+
351
+ ---
352
+
353
+ ## Community
354
+
355
+ Join our community to share ideas, ask questions, and collaborate:
356
+
357
+ [![Discord](https://img.shields.io/badge/Join%20Discord-instruct.kr-5865F2?logo=discord&style=for-the-badge)](https://instruct.kr/)
358
+
359
+ [GitHub Discussions](https://github.com/instructkr/claw-code/discussions) for Q&A and feature requests
360
+
361
+ ---
362
+
363
+ ## License
364
+
365
+ Apache License 2.0 — See [LICENSE](LICENSE)
366
+
367
+ **Summary:** You can use, modify, and distribute Claw Code freely. Great for commercial use. Attribution appreciated but not required.
368
+
369
+ ---
370
+
371
+ ## Performance Comparison
372
+
373
+ | Metric | Claw Code | Claude Code (API) |
374
+ |--------|-----------|-------------------|
375
+ | Setup time | 3 min | 5 min (account + API key) |
376
+ | Cost | FREE | $$$$ |
377
+ | Privacy | 100% local | Sent to Anthropic |
378
+ | Offline | ✅ Yes | ❌ No |
379
+ | Speed (first response) | 1-2 min* | <1 sec |
380
+ | Speed (subsequent) | 15-40 tok/s | 50-100 tok/s |
381
+ | Model choice | 3 options | Latest Claude |
382
+
383
+ *First response includes model loading. Subsequent responses are much faster.
384
+
385
+ ---
386
+
387
+ ## FAQ
388
+
389
+ **Q: Is this affiliated with Anthropic?**
390
+ A: No. This is an independent open-source project. We rebuild Claude Code's architecture using local Ollama models.
391
+
392
+ **Q: Can I use this commercially?**
393
+ A: Yes! Apache 2.0 license allows commercial use. See [LICENSE](LICENSE).
394
+
395
+ **Q: Will my code be tracked?**
396
+ A: No. Everything runs locally. Your code never leaves your computer.
397
+
398
+ **Q: How much does it cost?**
399
+ A: Free. One-time model download ($0). No subscriptions.
400
+
401
+ **Q: Can I use a different model?**
402
+ A: Yes! Edit `~/.claude.json` and use any Ollama model.
403
+
404
+ **Q: How do I update?**
405
+ A: `pip install --upgrade claw-code`
406
+
407
+ ---
408
+
409
+ ## Backstory
410
+
411
+ At 4 AM on March 31, 2026, the Claude Code source leaked. Rather than panic, I spent the morning clean-room porting the essential architecture to Python, then integrated it with Ollama for zero-cost local execution. The entire effort was orchestrated using [oh-my-codex (OmX)](https://github.com/Yeachan-Heo/oh-my-codex).
412
+
413
+ **Result:** A functional Claude Code alternative that costs nothing and runs offline.
414
+
415
+ ---
416
+
417
+ ## Star History
418
+
419
+ See the chart at the top of this README.
420
+
421
+ > AI startup worker Sigrid Jin, who attended the Seoul dinner, single-handedly used 25 billion of Claude Code tokens last year. At the time, usage limits were looser, allowing early enthusiasts to reach tens of billions of tokens at a very low cost.
422
+ >
423
+ > Despite his countless hours with Claude Code, Jin isn't faithful to any one AI lab. The tools available have different strengths and weaknesses, he said. Codex is better at reasoning, while Claude Code generates cleaner, more shareable code.
424
+ >
425
+ > Jin flew to San Francisco in February for Claude Code's first birthday party, where attendees waited in line to compare notes with Cherny. The crowd included a practicing cardiologist from Belgium who had built an app to help patients navigate care, and a California lawyer who made a tool for automating building permit approvals using Claude Code.
426
+ >
427
+ > "It was basically like a sharing party," Jin said. "There were lawyers, there were doctors, there were dentists. They did not have software engineering backgrounds."
428
+ >
429
+ > — *The Wall Street Journal*, March 21, 2026, [*"The Trillion Dollar Race to Automate Our Entire Lives"*](https://lnkd.in/gs9td3qd)
430
+
431
+ ![WSJ Feature](assets/wsj-feature.png)
432
+
433
+ ---
434
+
435
+ ## Porting Status
436
+
437
+ The main source tree is now Python-first.
438
+
439
+ - `src/` contains the active Python porting workspace
440
+ - `tests/` verifies the current Python workspace
441
+ - the exposed snapshot is no longer part of the tracked repository state
442
+
443
+ The current Python workspace is not yet a complete one-to-one replacement for the original system, but the primary implementation surface is now Python.
444
+
445
+ ## Why this rewrite exists
446
+
447
+ I originally studied the exposed codebase to understand its harness, tool wiring, and agent workflow. After spending more time with the legal and ethical questions—and after reading the essay linked below—I did not want the exposed snapshot itself to remain the main tracked source tree.
448
+
449
+ This repository now focuses on Python porting work instead.
450
+
451
+ ## Repository Layout
452
+
453
+ ```text
454
+ .
455
+ ├── src/ # Python porting workspace
456
+ │ ├── __init__.py
457
+ │ ├── commands.py
458
+ │ ├── main.py
459
+ │ ├── models.py
460
+ │ ├── port_manifest.py
461
+ │ ├── query_engine.py
462
+ │ ├── task.py
463
+ │ └── tools.py
464
+ ├── tests/ # Python verification
465
+ ├── assets/omx/ # OmX workflow screenshots
466
+ ├── 2026-03-09-is-legal-the-same-as-legitimate-ai-reimplementation-and-the-erosion-of-copyleft.md
467
+ └── README.md
468
+ ```
469
+
470
+ ## Python Workspace Overview
471
+
472
+ The new Python `src/` tree currently provides:
473
+
474
+ - **`port_manifest.py`** — summarizes the current Python workspace structure
475
+ - **`models.py`** — dataclasses for subsystems, modules, and backlog state
476
+ - **`commands.py`** — Python-side command port metadata
477
+ - **`tools.py`** — Python-side tool port metadata
478
+ - **`query_engine.py`** — renders a Python porting summary from the active workspace
479
+ - **`main.py`** — a CLI entrypoint for manifest and summary output
480
+
481
+ ## Quickstart
482
+
483
+ Render the Python porting summary:
484
+
485
+ ```bash
486
+ python3 -m src.main summary
487
+ ```
488
+
489
+ Print the current Python workspace manifest:
490
+
491
+ ```bash
492
+ python3 -m src.main manifest
493
+ ```
494
+
495
+ List the current Python modules:
496
+
497
+ ```bash
498
+ python3 -m src.main subsystems --limit 16
499
+ ```
500
+
501
+ Run verification:
502
+
503
+ ```bash
504
+ python3 -m unittest discover -s tests -v
505
+ ```
506
+
507
+ Run the parity audit against the local ignored archive (when present):
508
+
509
+ ```bash
510
+ python3 -m src.main parity-audit
511
+ ```
512
+
513
+ Inspect mirrored command/tool inventories:
514
+
515
+ ```bash
516
+ python3 -m src.main commands --limit 10
517
+ python3 -m src.main tools --limit 10
518
+ ```
519
+
520
+ ## Current Parity Checkpoint
521
+
522
+ The port now mirrors the archived root-entry file surface, top-level subsystem names, and command/tool inventories much more closely than before. However, it is **not yet** a full runtime-equivalent replacement for the original TypeScript system; the Python tree still contains fewer executable runtime slices than the archived source.
523
+
524
+
525
+ ## Built with `oh-my-codex`
526
+
527
+ The restructuring and documentation work on this repository was AI-assisted and orchestrated with Yeachan Heo's [oh-my-codex (OmX)](https://github.com/Yeachan-Heo/oh-my-codex), layered on top of Codex.
528
+
529
+ - **`$team` mode:** used for coordinated parallel review and architectural feedback
530
+ - **`$ralph` mode:** used for persistent execution, verification, and completion discipline
531
+ - **Codex-driven workflow:** used to turn the main `src/` tree into a Python-first porting workspace
532
+
533
+ ### OmX workflow screenshots
534
+
535
+ ![OmX workflow screenshot 1](assets/omx/omx-readme-review-1.png)
536
+
537
+ *Ralph/team orchestration view while the README and essay context were being reviewed in terminal panes.*
538
+
539
+ ![OmX workflow screenshot 2](assets/omx/omx-readme-review-2.png)
540
+
541
+ *Split-pane review and verification flow during the final README wording pass.*
542
+
543
+ ## Community
544
+
545
+ <p align="center">
546
+ <a href="https://instruct.kr/"><img src="assets/instructkr.png" alt="instructkr" width="400" /></a>
547
+ </p>
548
+
549
+ Join the [**instructkr Discord**](https://instruct.kr/) — the best Korean language model community. Come chat about LLMs, harness engineering, agent workflows, and everything in between.
550
+
551
+ [![Discord](https://img.shields.io/badge/Join%20Discord-instruct.kr-5865F2?logo=discord&style=for-the-badge)](https://instruct.kr/)
552
+
553
+ ## Star History
554
+
555
+ See the chart at the top of this README.
556
+
557
+ ## Ownership / Affiliation Disclaimer
558
+
559
+ - This repository does **not** claim ownership of the original Claude Code source material.
560
+ - This repository is **not affiliated with, endorsed by, or maintained by Anthropic**.
@@ -0,0 +1,110 @@
1
+ claw_code-0.2.0.dist-info/licenses/LICENSE,sha256=Ekaa6dSfc_aG9AARWH-y6pTSusKn4W7ET4-j6NrCp1s,7104
2
+ src/QueryEngine.py,sha256=P_UGP55VZV3bZd1TNZ4UNaOSud6dZzpZcwXMGIwwz14,712
3
+ src/Tool.py,sha256=mIZfDRJAFoisrgivd61zI5FoUpLyvzRAISIcvOAak3E,326
4
+ src/__init__.py,sha256=gTyqefy5B_XSFJMqQnunlsazKHUr5uYIX1oDcz2o7aM,912
5
+ src/bootstrap_graph.py,sha256=Fu3uiUULIz7zfslc9xOTi7XqtNyzwjnfZWrHF7XGiP0,803
6
+ src/command_graph.py,sha256=soVoqq7pwt6rXRaw--AiMyS5IUGdRUlKwg_f7QrEQes,1247
7
+ src/commands.py,sha256=fD2HgVlJ8ddnklv33b-G84p2oF-oiu81WMrjd2r-piI,3053
8
+ src/config.py,sha256=J1yJmgxwPKYuyY-Il-DrkwHOvl1KD2Fcjz0fHd61Xq8,1773
9
+ src/context.py,sha256=5nccLvjTPNaim4oGaRFrW3dWs-5Ap5Ub9RDVY0TxZJA,1580
10
+ src/costHook.py,sha256=A2-X8O4Y5A_1C_rHiE9fW5toYVH8zTQ8Nt241miAf3I,210
11
+ src/cost_tracker.py,sha256=j29IQr_a_z4PuDMCopgB5iyLv9x9HpUk85sQtO0gQK4,322
12
+ src/deferred_init.py,sha256=kFhpYGjE-HzWR4H19tes6TQo_6hrYzFtHMZsLpJnghU,771
13
+ src/dialogLaunchers.py,sha256=KHXWxgDRyZdQpSd2tV9zk_kN9NVkcABaTkqrKOiWiSE,312
14
+ src/direct_modes.py,sha256=gHVAdMa3yDb3ofPH6kYicd24u7FSZs9D44uJTsd_ijY,543
15
+ src/execution_registry.py,sha256=OrFrMPde-mCJOpDlxFJu4TvnSKoI3yECb1jvzK23-AA,1399
16
+ src/history.py,sha256=lmZdWyM2hKVFE3tdGQLnzQTSQppyH3nCyDEIIlMj6Y0,559
17
+ src/init_wizard.py,sha256=kR_GiHUEjLnfL_7zXenmmz0ETcfcUiF9G3cfi1JXilo,7163
18
+ src/ink.py,sha256=wMBHx1-GWAN3QPJmHSdw_exUvxuGFLg8avjO1aGUDv0,145
19
+ src/interactiveHelpers.py,sha256=Hy6lu9AA4QO3QrJrKErWoLltLj5q3kBzzjTxbeLUxtU,129
20
+ src/main.py,sha256=PpEt6O7_fmUEx8Oj3XTRmgUCrK4dyLZSq_q1U5DOkUw,12710
21
+ src/model_detection.py,sha256=iskkqdb5NdU4UUP3lpK9SLchtj09aToIEr9E-jkxlE0,2715
22
+ src/models.py,sha256=IevUkCTy8l8nTBetM3cv5f6mDXgiaFtz6qWMBMN-_yE,1070
23
+ src/parity_audit.py,sha256=086g6Z6sx1NadLTnshjhTKhEqyfn4FvE8Xo_ersuOHM,5268
24
+ src/permissions.py,sha256=h9_cLFeaGpP73m0p2F70_GVE2OnNrfQXj3WdNGoeUT0,776
25
+ src/port_manifest.py,sha256=lHWziF_kD98-1Yx3E8JwYvH5Zoh8XegufGmrH7tVF9o,1836
26
+ src/prefetch.py,sha256=ix2VcBmJ7FjHKjJluW9GMXkMYL5eKAqFQC3J1AsS4OY,640
27
+ src/projectOnboardingState.py,sha256=Dd_7HBC_19PfTa6oCWtz9thw9bkseW4huAaioGla1uU,184
28
+ src/query.py,sha256=DA2rFECs58TxFz6PUloVyy3bVqvXRIGKNrRAaEPhf0U,193
29
+ src/query_engine.py,sha256=Xz9CogrZiC1CXdTTiigfNu7U6esLnMbcRbXBYGdLyuc,11510
30
+ src/remote_runtime.py,sha256=hhtir9M-5-t0oEJnu6yA3jbW3sbhbnBajQ-hgJcXYFY,753
31
+ src/repl.py,sha256=VTI74by65f_LZpqKmrzo3EfzvDHdQAZG9DLmpea7lS4,23496
32
+ src/replLauncher.py,sha256=jU-MmUPPuvDAwOmPN5WsdiY2GIdarry_o5WMpyDitm4,169
33
+ src/runtime.py,sha256=-J-0F8rSM6XGigsOSXPQ_5AuPVFRogsWIrYSxKhhOV4,9049
34
+ src/session_store.py,sha256=L113gDhfqOX14D4ofLm_YDJT8QDlbJD_uq5JjjFAq1k,2406
35
+ src/setup.py,sha256=BdX-swJl82Wl_RR4Y1cPOFWcAQ88MD3R5kxvOs2_RRA,2315
36
+ src/system_init.py,sha256=nbztZ7yt8int8uusl_sN95oRBuA9poDawouGH3Da7t8,698
37
+ src/task.py,sha256=T5oUEsxpBPM2-xkqRtfO7e9DpPrLNv1zITnUPaq5ODo,93
38
+ src/tasks.py,sha256=tDYKjHzMj-Py_fF2S7rUXjjCgIjNXoiVZPPrmNVubt0,421
39
+ src/tool_pool.py,sha256=D_HtOWRXlQ8nM6WQ3pR3Z3-sYSZQtWkh2jG1lia_7RM,1044
40
+ src/tools.py,sha256=kYnjEEifIWAQs-n07RWhLazAqutIginOvPJptkizhSg,3285
41
+ src/transcript.py,sha256=_4F2iHkH4AvNZ3_EASq-WVWPXhleRq6JbYx-PF-RXAE,585
42
+ src/assistant/__init__.py,sha256=Gdr578WDcoloBohR49m_BKZ21nYN8GH8l7oLBQUYrKo,627
43
+ src/bootstrap/__init__.py,sha256=3_HXEzntGLm-PFRt4H1Vr-BOy9mpHGijsX07GnVWUHE,627
44
+ src/bridge/__init__.py,sha256=4NVAdTJ-05GpMQL6ZMRG6cVHPMqIPQrhpHGGrosUOUo,621
45
+ src/buddy/__init__.py,sha256=sghu94p5dDrNI9wwoGUag-Ewowt-vPvUqGvSZbmApJU,619
46
+ src/cli/__init__.py,sha256=_I_-FjWMMn53wSaqE2wBp_-bbxN5e1Pi4vg7OP_wlxA,615
47
+ src/components/__init__.py,sha256=hknmb1jBjpn6G9bvPbIraDdTvjqMEQLDnLGw9Tme9FY,629
48
+ src/constants/__init__.py,sha256=r05wXxO7jkrgrqOBskSt8_qWBsp9b86eW4I3vH43KGc,627
49
+ src/coordinator/__init__.py,sha256=lFZiJWkJXk3fUHffL813iyEgAxHK4UahDyy-XD5e6CM,631
50
+ src/entrypoints/__init__.py,sha256=Cdnubzk065n_-x19uEMkAHmBDX9K3rJM0UM7-U8f19o,631
51
+ src/hooks/__init__.py,sha256=9bxa9ZuT8FH7lXRHWOBXjnmjAsRCFMsh_NXWHpe9fek,619
52
+ src/keybindings/__init__.py,sha256=AXJokuC19jwp3OjyBffuceuyS3p7Iin76SrjVh3hLdE,631
53
+ src/memdir/__init__.py,sha256=2uY_sie2W5DicZDWpzZZ0B7_yPAoOOWZ6Tz8C7yTtfw,621
54
+ src/migrations/__init__.py,sha256=TnMxJEtYh9ByhXpndZf6mdo6pjBxD-VlTFVt09Q2V14,629
55
+ src/moreright/__init__.py,sha256=XWpCe_M_Jvjc_k2ofsP_rwEMi5tBSIUWLe2_tey0jsM,627
56
+ src/native_ts/__init__.py,sha256=zfCuzRYh0mpmPwrkvZzajwl4mxnxGvxSo4veV7qkFBM,627
57
+ src/outputStyles/__init__.py,sha256=mlTdjDNkI2dXzPbMi4MRaWvMYP3CsCd2PLQmWxsV1PM,633
58
+ src/plugins/__init__.py,sha256=MyS5BqUs0qaYioxZGWeiVEEpdzpjBEYYN1qz1g4Vj9Q,623
59
+ src/reference_data/__init__.py,sha256=hj7Ezkvg8RgbPp_W2k7Q-VKY-ENs495hyi4igA0bCAc,77
60
+ src/reference_data/archive_surface_snapshot.json,sha256=lAFW6H6AMPJfrvGBblzHsxzlqgLR51fxMe5mEsew04Y,1078
61
+ src/reference_data/commands_snapshot.json,sha256=iu8JI7Hv99zGVgtUjSonMv-pUUVAm02248Yzamn7Hh4,40169
62
+ src/reference_data/tools_snapshot.json,sha256=pyjZXQjLKh_Uwhfvk8pUkmpm2pkZuNckGsMTiLtwwx4,36444
63
+ src/reference_data/subsystems/assistant.json,sha256=bv3rr8LZoZBXHjjilmE3h6QptQ0pX3IkCMvhiwDFNLQ,144
64
+ src/reference_data/subsystems/bootstrap.json,sha256=79m7XHRxCpwWbJMvlz0b2CyESmyxXc9jmEJuA2O7vNA,135
65
+ src/reference_data/subsystems/bridge.json,sha256=nYQVi3oim4sud7KJl2VivJVneAXfCmWWVTPOx6m_LGg,888
66
+ src/reference_data/subsystems/buddy.json,sha256=4_T4rtXMVNEG6JPhSUBkuXpRcmg5d4aLVMrx0b48RzU,267
67
+ src/reference_data/subsystems/cli.json,sha256=LwPeQrqq24qqDD8e2JZAiw1YYKHtwH7CO4XZSrttGcU,713
68
+ src/reference_data/subsystems/components.json,sha256=hbMgVROwY3YjBhVH4A-s3e7Wgea5tPu18Qi5BQgTgB8,1145
69
+ src/reference_data/subsystems/constants.json,sha256=jCeI_gaPcgfpdt1bYDaBLLaSgOyNtyDsVFZew71Ox-E,739
70
+ src/reference_data/subsystems/coordinator.json,sha256=dcM9ZD2Ht44nXECEJLNl75aOkSLmPsISVuWGrHWIoD0,151
71
+ src/reference_data/subsystems/entrypoints.json,sha256=TWUM7MW8HSJj15LDx3tSDUQny-TwXldXqdfFE2Mqs68,379
72
+ src/reference_data/subsystems/hooks.json,sha256=mmmlGnpTdHfEcu_Dbg3S1wraoFZXJpzvPcSB3eVKCWs,1349
73
+ src/reference_data/subsystems/keybindings.json,sha256=n3pbq9q8PNrFBfqWuXws7KToF16J_r64OaLbSkKzqKk,612
74
+ src/reference_data/subsystems/memdir.json,sha256=UQNF8ZyYeu6prKMAaWkLmj6hvm2HkVWb8DAzzAIBp-I,334
75
+ src/reference_data/subsystems/migrations.json,sha256=Okb7hcD8kqsH9kgDAZETQWCT5zmG28Bksjy9WxbWnGo,683
76
+ src/reference_data/subsystems/moreright.json,sha256=f7BbXsAhVOgFfs-XHRLw98mgYJoZfZGa8dXWKrW4SLc,143
77
+ src/reference_data/subsystems/native_ts.json,sha256=in26d4JN3aklDeZvntxKY_irW-InElPnZxBCI5uAuY4,259
78
+ src/reference_data/subsystems/outputStyles.json,sha256=7XusNmxKHQLgK5eJ-4qfNaaWzGsy0IPL66X4WEaRqls,158
79
+ src/reference_data/subsystems/plugins.json,sha256=alWyQ457WQWkPUlPM9EVQ_mEr_tx6Y-oYxOH7N7OhUw,170
80
+ src/reference_data/subsystems/remote.json,sha256=O1L8Y0Tmi7V2nRB1IrpSLIXyvWPO3P3EX6sLEnCP2TU,251
81
+ src/reference_data/subsystems/schemas.json,sha256=3tQg6q66cWHh8ZmLgkkTSpaMg9uQKL9KiuB40VuNgR4,129
82
+ src/reference_data/subsystems/screens.json,sha256=AHFUFdZma_psUPnuMTdJlj6s-Tc9DesuK0ZUXe6wb3g,193
83
+ src/reference_data/subsystems/server.json,sha256=BkCS2U1JqGOAswzRynuVjVBrQUEdnmZhNqChLYuUP2I,208
84
+ src/reference_data/subsystems/services.json,sha256=AgM_0D6M7NcpEq6aq9LE3TEqJSKEaKhg7ypG7Yn0Pps,1109
85
+ src/reference_data/subsystems/skills.json,sha256=iYpdIfTulBgv7thdjYs0Thhb4PmHYlWv_e0zMinHlW8,801
86
+ src/reference_data/subsystems/state.json,sha256=zVXqStnF9Xb773o3RVhJNeWF3mlPryyU4o6Vby6rz9E,274
87
+ src/reference_data/subsystems/types.json,sha256=XvSFZ9-xWIEqW5ilK3OwDeOtJX_oVgGZ1IPTz5_Ws9k,536
88
+ src/reference_data/subsystems/upstreamproxy.json,sha256=v5GnkOQ7CWO03q1Ll4GtaVhWXHhjJLBd3GEaLrfOCaU,185
89
+ src/reference_data/subsystems/utils.json,sha256=w-jw9e466fo21Hh2J8ZbyUbZfKF7Gvilydv37PA5x4E,814
90
+ src/reference_data/subsystems/vim.json,sha256=xFeEXltYNUdSGO3-oJ-lmzjyHPwXBQRmpQjIKN6D41Q,215
91
+ src/reference_data/subsystems/voice.json,sha256=ijlbqeBqWq2-RAQGtMYuJ_eikTI8huFZXvRVSX_SGrc,134
92
+ src/remote/__init__.py,sha256=lWOKG0aUDCd63zdkRVJEFo61NCAdK14wVWzUiS3bjTE,621
93
+ src/schemas/__init__.py,sha256=w19Ji6ehEgUKSRJudVh6Xg3sORyV8XxBI34SVb7RzMA,623
94
+ src/screens/__init__.py,sha256=tbK2H-pJVQCZK2TUISuFL2fi1uOPdiGdpd7DMLuOo10,623
95
+ src/server/__init__.py,sha256=bN1ZHP_ttuBs-dkuTdTdP3Bj1lho3ZGGJ-fhY1I-kPw,621
96
+ src/services/__init__.py,sha256=JgNIPH1azoXRyoVc5TTNhUi8krHNe-u8YTjNi_e4nJ4,625
97
+ src/services/ollama_adapter.py,sha256=-MD9TBjAVW9LJnzoz0eSVMUSJvNOcYvFS-VyrcR9MKc,8181
98
+ src/services/ollama_setup.py,sha256=YGDHe6ZCh-9KLF3HAv5fKTisXRTS56n8sPUCX-JvTKY,5682
99
+ src/skills/__init__.py,sha256=gAKL2RKFoasSBp7Bfo_dbV_Umu-ItuJdxCu5DjWm7HI,621
100
+ src/state/__init__.py,sha256=iU4zhSPJB47iP4Ld6aiv5_V0UV409DxW3OnD5k3I464,619
101
+ src/types/__init__.py,sha256=YIBQRlIHoCv8RfMq_16pxtpgDdZAVh0tapKpGb-EgWY,619
102
+ src/upstreamproxy/__init__.py,sha256=nx9OnPAS2FDAvrrPfTlq3YaAc3IqsHV2PP9Gxvg6UTM,635
103
+ src/utils/__init__.py,sha256=Jz9eos_ZImkCJA5lRzI5fQxEdgOOSwdolgQqJbouWlI,619
104
+ src/vim/__init__.py,sha256=9leH3xBruk4hBOboUQS5Y2otefqDPJJ5xv1HvQGIVAw,615
105
+ src/voice/__init__.py,sha256=aSAQ4N3CiHKkJcRjB9L3wql30gGlssk9BGPx8uShaSg,619
106
+ claw_code-0.2.0.dist-info/METADATA,sha256=Nz6pGlz4kngegxeGn9MGutpLeuTfsVti7pUzcIQFJyk,18302
107
+ claw_code-0.2.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
108
+ claw_code-0.2.0.dist-info/entry_points.txt,sha256=UGrNg4nJTiH80Z3hfXKRHzye7AWuG1Rk41v7bNG6nSc,49
109
+ claw_code-0.2.0.dist-info/top_level.txt,sha256=74rtVfumQlgAPzR5_2CgYN24MB0XARCg0t-gzk6gTrM,4
110
+ claw_code-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ claw-code = src.main:cli_entry