vibecode 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 67b457d6b47865f6c66f355bb323d6540ec2a7610629cbc930e8633fdb08a262
4
+ data.tar.gz: bada201bbd50182d4f047e66e6421a96f189907b51d2116545325793237414cc
5
+ SHA512:
6
+ metadata.gz: 7e0903ba7b4ba6498469de22a6bdbe95caa0449f1fa7fc1169a8a71ef0e011bd848fcf53c3ff8583dffb4f30ff40fdb286e3759f90b34c91736cdba616465754
7
+ data.tar.gz: 50d556a5e712d67f1279057cca0e79d889b20f0ca508b73e4f82b8cbab992d73f1e9b77889d1761e5a429a1954cb618a86a77a7338e87b52dec7251dd1ae9bce
data/.gitignore ADDED
@@ -0,0 +1,33 @@
1
+ # Bundler
2
+ /.bundle/
3
+
4
+ # Yard docs
5
+ /.yardoc
6
+ /_yardoc/
7
+ /doc/
8
+
9
+ # Coverage
10
+ /coverage/
11
+
12
+ # Build artifacts
13
+ /pkg/
14
+
15
+ # Test reports
16
+ /spec/reports/
17
+
18
+ # Temp files
19
+ /tmp/
20
+
21
+ # macOS
22
+ .DS_Store
23
+
24
+ # Vim / editors
25
+ *.swp
26
+ *.swo
27
+
28
+ # Logs
29
+ *.log
30
+
31
+ .vibecode/
32
+ config.json
33
+
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## [Unreleased]
2
+
3
+ ## [0.1.0] - 2026-02-01
4
+
5
+ - Initial release
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in vibecode.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 13.0"
9
+
10
+ gem "minitest", "~> 5.16"
data/Gemfile.lock ADDED
@@ -0,0 +1,56 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ vibecode (0.1.0)
5
+ diffy
6
+ httparty
7
+ json
8
+ open3
9
+ pastel
10
+ tty-prompt
11
+ tty-spinner
12
+
13
+ GEM
14
+ remote: https://rubygems.org/
15
+ specs:
16
+ bigdecimal (4.0.1)
17
+ csv (3.3.5)
18
+ diffy (3.4.4)
19
+ httparty (0.24.2)
20
+ csv
21
+ mini_mime (>= 1.0.0)
22
+ multi_xml (>= 0.5.2)
23
+ json (2.18.0)
24
+ mini_mime (1.1.5)
25
+ minitest (5.27.0)
26
+ multi_xml (0.8.1)
27
+ bigdecimal (>= 3.1, < 5)
28
+ open3 (0.2.1)
29
+ pastel (0.8.0)
30
+ tty-color (~> 0.5)
31
+ rake (13.3.1)
32
+ tty-color (0.6.0)
33
+ tty-cursor (0.7.1)
34
+ tty-prompt (0.23.1)
35
+ pastel (~> 0.8)
36
+ tty-reader (~> 0.8)
37
+ tty-reader (0.9.0)
38
+ tty-cursor (~> 0.7)
39
+ tty-screen (~> 0.8)
40
+ wisper (~> 2.0)
41
+ tty-screen (0.8.2)
42
+ tty-spinner (0.9.3)
43
+ tty-cursor (~> 0.7)
44
+ wisper (2.0.1)
45
+
46
+ PLATFORMS
47
+ arm64-darwin-25
48
+ ruby
49
+
50
+ DEPENDENCIES
51
+ minitest (~> 5.16)
52
+ rake (~> 13.0)
53
+ vibecode!
54
+
55
+ BUNDLED WITH
56
+ 2.5.23
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2026 Kurt Tamulonis
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
13
+ all 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
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,245 @@
1
+ # Vibecode
2
+
3
+ **Vibecode** is a terminal-based AI coding agent powered by local LLMs through [Ollama](https://ollama.com). It can read your project files, propose edits with diffs, and run Git commands โ€” all with your approval.
4
+
5
+ Think of it as a **local, open-source Codex-style coding assistant** that runs directly in your terminal.
6
+
7
+ ---
8
+
9
+ ## โœจ Features
10
+
11
+ * ๐Ÿง  Uses local coding models via Ollama
12
+ * ๐Ÿ“‚ Reads and understands your current project directory
13
+ * โœ๏ธ Proposes file edits with colorized diffs
14
+ * ๐Ÿ”’ Asks before modifying files or running Git commands
15
+ * ๐ŸŒฟ Git-aware (status, branches, commits, push, etc.)
16
+ * ๐Ÿ”„ Switch models anytime
17
+
18
+ ---
19
+
20
+ ## ๐Ÿงฐ Requirements
21
+
22
+ Before installing Vibecode, make sure you have:
23
+
24
+ * **Ruby 3.0+**
25
+ * **Bundler**
26
+ * **Git**
27
+ * **Ollama** installed and working
28
+
29
+ Install Ollama from:
30
+
31
+ ๐Ÿ‘‰ [https://ollama.com/download](https://ollama.com/download)
32
+
33
+ Start the Ollama server:
34
+
35
+ ```bash
36
+ ollama serve
37
+ ```
38
+
39
+ ---
40
+
41
+ ## ๐Ÿš€ Local Installation (Development Mode)
42
+
43
+ From the Vibecode project directory:
44
+
45
+ ```bash
46
+ bundle install
47
+ chmod +x exe/vibecode
48
+ ```
49
+
50
+ Run directly without installing the gem:
51
+
52
+ ```bash
53
+ bundle exec exe/vibecode
54
+ ```
55
+
56
+ ---
57
+
58
+ ## ๐Ÿ“ฆ Install as a Local Gem
59
+
60
+ From the project root:
61
+
62
+ ```bash
63
+ gem build vibecode.gemspec
64
+ gem install ./vibecode-*.gem
65
+ ```
66
+
67
+ Then you can run from anywhere:
68
+
69
+ ```bash
70
+ vibecode
71
+ ```
72
+
73
+ ---
74
+
75
+ ## ๐Ÿฉบ System Check
76
+
77
+ Verify everything is connected properly:
78
+
79
+ ```bash
80
+ vibecode -doctor
81
+ ```
82
+
83
+ You should see:
84
+
85
+ ```
86
+ Ollama installed OK
87
+ Ollama server running OK
88
+ Git installed OK
89
+ ```
90
+
91
+ ---
92
+
93
+ ## ๐Ÿค– Managing Models
94
+
95
+ ### List installed models
96
+
97
+ ```bash
98
+ vibecode -list
99
+ ```
100
+
101
+ ### Use a model (auto-pulls if missing)
102
+
103
+ ```bash
104
+ vibecode -use qwen2.5-coder:7b
105
+ ```
106
+
107
+ ### Manually pull a model
108
+
109
+ ```bash
110
+ vibecode -pull deepseek-coder:6.7b
111
+ ```
112
+
113
+ Your active model is stored in:
114
+
115
+ ```
116
+ ~/.vibecode/config.json
117
+ ```
118
+
119
+ ---
120
+
121
+ ## ๐Ÿ’ฌ Starting an AI Coding Session
122
+
123
+ From any project directory:
124
+
125
+ ```bash
126
+ vibecode
127
+ ```
128
+
129
+ You will see:
130
+
131
+ ```
132
+ Vibecode Agent using model: qwen2.5-coder:7b
133
+ vibecode>
134
+ ```
135
+
136
+ Now you can give natural language coding instructions.
137
+
138
+ Example:
139
+
140
+ ```
141
+ vibecode> create a ruby method called greet that prints hello world
142
+ ```
143
+
144
+ ---
145
+
146
+ ## ๐Ÿง  How Vibecode Works
147
+
148
+ The AI responds using structured instructions that Vibecode turns into real actions.
149
+
150
+ ### AI Can Request to Read Files
151
+
152
+ Vibecode will load the file and send contents back to the AI.
153
+
154
+ ### AI Can Propose File Changes
155
+
156
+ You will see a **diff preview** before any file is modified.
157
+
158
+ You must approve changes before they are applied.
159
+
160
+ ### AI Can Suggest Git Commands
161
+
162
+ Examples:
163
+
164
+ * `git status`
165
+ * `git checkout -b feature/login`
166
+ * `git add .`
167
+ * `git commit -m "Add login feature"`
168
+ * `git push origin feature/login`
169
+
170
+ You must approve each command before it runs.
171
+
172
+ ---
173
+
174
+ ## ๐Ÿ”’ Safety Model
175
+
176
+ Vibecode is **human-in-the-loop by default**.
177
+
178
+ | Action | Requires Approval |
179
+ | -------------------- | ----------------- |
180
+ | Reading files | โŒ |
181
+ | Editing files | โœ… |
182
+ | Running Git commands | โœ… |
183
+ | Pushing to remote | โœ… |
184
+
185
+ Vibecode **cannot access files outside your current directory**.
186
+
187
+ ---
188
+
189
+ ## ๐Ÿ—‚ Project Awareness
190
+
191
+ Each time you prompt Vibecode, it automatically sends the AI:
192
+
193
+ * Your project file tree
194
+ * Relevant file contents (when needed)
195
+ * Conversation history
196
+
197
+ This allows the AI to reason about your codebase like a real assistant.
198
+
199
+ ---
200
+
201
+ ## ๐Ÿ›  Internal Architecture (For Contributors)
202
+
203
+ | Component | Responsibility |
204
+ | -------------- | ---------------------------------------- |
205
+ | `CLI` | Handles commands and interactive session |
206
+ | `OllamaClient` | Talks to Ollama HTTP API |
207
+ | `Agent` | AI reasoning loop + instruction parsing |
208
+ | `Workspace` | Safe file reading/writing with diffs |
209
+ | `Git` | Safe Git command execution |
210
+
211
+ ---
212
+
213
+ ## ๐Ÿงช Example Workflow
214
+
215
+ 1. Start Vibecode in your repo
216
+ 2. Ask for a feature
217
+ 3. Vibecode proposes edits
218
+ 4. You approve
219
+ 5. Vibecode runs Git commands
220
+ 6. You review and push
221
+
222
+ ---
223
+
224
+ ## ๐Ÿงญ Roadmap Ideas
225
+
226
+ * Streaming model responses
227
+ * Auto-approve mode
228
+ * Test runner integration
229
+ * Linter auto-fix mode
230
+ * Pull request description generator
231
+
232
+ ---
233
+
234
+ ## โค๏ธ Philosophy
235
+
236
+ Vibecode keeps your code and AI **local, private, and developer-controlled**.
237
+
238
+ No cloud. No tracking. Just you and your AI pair programmer in the terminal.
239
+
240
+ ---
241
+
242
+ ## ๐Ÿ“„ License
243
+
244
+ MIT License
245
+
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "minitest/test_task"
5
+
6
+ Minitest::TestTask.create
7
+
8
+ task default: :test
data/bin/console ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ require "vibecode"
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ require "irb"
11
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/exe/vibecode ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require "vibecode/cli"
3
+ Vibecode::CLI.start(ARGV)
4
+