sharkbait 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +572 -0
- package/dist/cli.js +130415 -0
- package/package.json +96 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Shyam Sridhar
|
|
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.
|
package/README.md
ADDED
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
# Sharkbait
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="public/gifs/sharkbait-ooh-ha-ha.gif" alt="Sharkbait OOH HA HA!" width="400">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>"Sharkbait, ooh ha ha!"</strong><br>
|
|
9
|
+
<em>An AI coding assistant that won't leave you swimming in circles</em>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="#features">Features</a> •
|
|
14
|
+
<a href="#installation">Installation</a> •
|
|
15
|
+
<a href="#skills--plugins">Skills & Plugins</a> •
|
|
16
|
+
<a href="#usage">Usage</a> •
|
|
17
|
+
<a href="#architecture">Architecture</a> •
|
|
18
|
+
<a href="#license">License</a>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<p align="center">
|
|
22
|
+
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License">
|
|
23
|
+
<img src="https://img.shields.io/badge/runtime-Bun-orange.svg" alt="Bun">
|
|
24
|
+
<img src="https://img.shields.io/badge/language-TypeScript-blue.svg" alt="TypeScript">
|
|
25
|
+
<img src="https://img.shields.io/badge/status-experimental-red.svg" alt="Experimental">
|
|
26
|
+
<img src="https://img.shields.io/badge/fish_are_friends-not_food-brightgreen.svg" alt="Fish are friends">
|
|
27
|
+
<img src="https://img.shields.io/badge/tools-36-blueviolet.svg" alt="36 Tools">
|
|
28
|
+
<img src="https://img.shields.io/badge/agents-7-teal.svg" alt="7 Agents">
|
|
29
|
+
</p>
|
|
30
|
+
|
|
31
|
+
<p align="center">
|
|
32
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
33
|
+
</p>
|
|
34
|
+
|
|
35
|
+
> **Experimental**: This project is under active development. APIs may change, features may break, and Dory might forget what she was doing. Use at your own risk!
|
|
36
|
+
|
|
37
|
+
> *"Just keep coding, just keep coding..."* — Dory, probably
|
|
38
|
+
|
|
39
|
+
Sharkbait is a CLI-based AI coding assistant built with Bun and TypeScript. It uses the **OpenAI Responses API** (not Chat Completions) for enhanced tool calling and streaming. Like Nemo escaping the dentist's fish tank, it helps you break free from tedious coding tasks.
|
|
40
|
+
|
|
41
|
+
The development environment is powered by **Anthropic skills** and **Claude Code plugins** that provide specialized workflows across design, engineering, research, and operations.
|
|
42
|
+
|
|
43
|
+
<p align="center">
|
|
44
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
## The ASCII Shark
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
+.+++.
|
|
51
|
+
## ....-### -
|
|
52
|
+
+ ###++++-#++-
|
|
53
|
+
- ##+-++--+-+--.
|
|
54
|
+
#++++-+-------..
|
|
55
|
+
- -#+-----++-.....
|
|
56
|
+
##-.----+-. ###########
|
|
57
|
+
#..-++--. +#####+. .. .
|
|
58
|
+
####..--+--..##. ...-+####++-.
|
|
59
|
+
# . .-.--+-. ## .+++++++++++-++..
|
|
60
|
+
# ##+### -+--.## .--+++++++++++++-+
|
|
61
|
+
+ .#+-###.--+.-# -+--------+++++-...
|
|
62
|
+
-#.-###.--- #+.+---... ...-+++-.###
|
|
63
|
+
###.--+##-.++.## ---...####...-+++- .###
|
|
64
|
+
# .. ##- --## -#.-#.-+...## ###.-++++ ##+
|
|
65
|
+
#- ###+--+#---#- # +++-..#-.+# +-.-##. ##-.-+++#####.
|
|
66
|
+
## ##---+##+--++#+.+-+-+--+-.+#.+-.####--.###+.-+++.###+.
|
|
67
|
+
# .#+++----++-+-++.#..+-.---.#+---..########..-++++-....-+##-.
|
|
68
|
+
#. #++##++--+----+--#.#-----.#+-----........-+++++++++++-----+#.
|
|
69
|
+
#- #++-+++++++--+++.# -#..--.+#.--------....--+++++--.--.#++++#+
|
|
70
|
+
+# ##---+++++++---+.+#.-#+---.#+..-------++--.....--++-.++--++#.
|
|
71
|
+
# .##+++--++-++-+-....++- ....+#...----++--++####++..-##++++##
|
|
72
|
+
# ###+++-++-++.. . +##..+.+#-......------....+#+++++##-
|
|
73
|
+
# #####+++. ## ++--+. .. .-###########-
|
|
74
|
+
#. .+. ..- +. .###-
|
|
75
|
+
#-. + #
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
<p align="center">
|
|
79
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
80
|
+
</p>
|
|
81
|
+
|
|
82
|
+
## Features
|
|
83
|
+
|
|
84
|
+
<p align="center">
|
|
85
|
+
<img src="public/gifs/nemo-swimming.gif" alt="Nemo Swimming" width="350">
|
|
86
|
+
</p>
|
|
87
|
+
|
|
88
|
+
- **Fast** — Built on Bun. Swims through code faster than Marlin crossing the EAC
|
|
89
|
+
- **Responses API** — Uses OpenAI's Responses API for better streaming and tool calling
|
|
90
|
+
- **Tool-equipped** — File ops, shell commands, Git, GitHub. Everything but the Ring of Fire
|
|
91
|
+
- **Persistent Memory** — Beads give your AI long-term memory that survives sessions (unlike Dory)
|
|
92
|
+
- **Git-backed Context** — Your AI's memory lives in your repo. Clone it, branch it, merge it
|
|
93
|
+
- **Beautiful UI** — Ink-based terminal interface. P. Sherman would approve
|
|
94
|
+
- **Safe** — Confirms dangerous operations before executing. No surprise `rm -rf` moments
|
|
95
|
+
|
|
96
|
+
### The Memory Problem
|
|
97
|
+
|
|
98
|
+
Most AI coding assistants have the memory of... well, Dory. They forget context between sessions, lose track of what you were working on, and make you repeat yourself constantly.
|
|
99
|
+
|
|
100
|
+
**Sharkbait is different.** Built-in **Beads** provide persistent, git-backed memory that survives across sessions:
|
|
101
|
+
|
|
102
|
+
- **Task Memory**: Create a bead for a feature, and Sharkbait remembers the context, decisions, and progress — even after you close the terminal
|
|
103
|
+
- **Git-Native**: Beads are stored alongside your code in git, so your AI's memory travels with your repo
|
|
104
|
+
- **No External Services**: Your context stays local. No cloud sync, no API calls for memory — just git
|
|
105
|
+
|
|
106
|
+
<p align="center">
|
|
107
|
+
<picture>
|
|
108
|
+
<source media="(prefers-color-scheme: dark)" srcset="public/images/terminal-welcome.png">
|
|
109
|
+
<source media="(prefers-color-scheme: light)" srcset="public/images/terminal-welcome.png">
|
|
110
|
+
<img src="public/images/terminal-welcome.png" alt="Sharkbait Terminal" width="700" style="border-radius: 8px;">
|
|
111
|
+
</picture>
|
|
112
|
+
</p>
|
|
113
|
+
|
|
114
|
+
<p align="center">
|
|
115
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
116
|
+
</p>
|
|
117
|
+
|
|
118
|
+
## Skills & Plugins
|
|
119
|
+
|
|
120
|
+
<p align="center">
|
|
121
|
+
<img src="public/gifs/just-keep-swimming.gif" alt="Just Keep Swimming" width="350">
|
|
122
|
+
</p>
|
|
123
|
+
|
|
124
|
+
Sharkbait's development environment ships with the full [Anthropic Skills](https://github.com/anthropics/skills) catalog and a curated set of Claude Code plugins. These are used during development with Claude Code — they are not runtime features of the Sharkbait application itself.
|
|
125
|
+
|
|
126
|
+
### Installed Anthropic Skills
|
|
127
|
+
|
|
128
|
+
| Category | Skills | What They Do |
|
|
129
|
+
|----------|--------|--------------|
|
|
130
|
+
| **Design** | `canvas-design`, `frontend-design`, `brand-guidelines`, `theme-factory` | Visual art, production-grade UI, brand colors, themed styling |
|
|
131
|
+
| **Art & Media** | `algorithmic-art`, `slack-gif-creator` | Generative art with p5.js, animated GIF creation |
|
|
132
|
+
| **Documents** | `docx`, `pdf`, `pptx`, `xlsx`, `doc-coauthoring` | Create/edit Office docs, PDFs, spreadsheets, co-author documents |
|
|
133
|
+
| **Engineering** | `web-artifacts-builder`, `mcp-builder`, `webapp-testing` | Multi-component web apps, MCP servers, browser testing |
|
|
134
|
+
| **Meta** | `skill-creator`, `internal-comms` | Create new skills, write internal communications |
|
|
135
|
+
|
|
136
|
+
### Active Plugins
|
|
137
|
+
|
|
138
|
+
<details>
|
|
139
|
+
<summary><strong>Core Engineering (14 plugins)</strong></summary>
|
|
140
|
+
|
|
141
|
+
| Plugin | Purpose |
|
|
142
|
+
|--------|---------|
|
|
143
|
+
| `compound-engineering` | Multi-agent workflows: plan, brainstorm, review, work |
|
|
144
|
+
| `feature-dev` | Guided feature development with codebase understanding |
|
|
145
|
+
| `code-review` | PR review with specialized analysis agents |
|
|
146
|
+
| `pr-review-toolkit` | Silent failure hunting, type design, test coverage |
|
|
147
|
+
| `code-simplifier` | Post-implementation code clarity pass |
|
|
148
|
+
| `coderabbit` | AI code review on changes |
|
|
149
|
+
| `hookify` | Create hooks to prevent unwanted behaviors |
|
|
150
|
+
| `plugin-dev` | Build and validate Claude Code plugins |
|
|
151
|
+
| `agent-sdk-dev` | Verify Agent SDK applications |
|
|
152
|
+
| `claude-code-setup` | Automation recommendations |
|
|
153
|
+
| `claude-md-management` | CLAUDE.md auditing and improvement |
|
|
154
|
+
| `playground` | Interactive HTML playground creation |
|
|
155
|
+
| `commit-commands` | Commit, push, PR workflows |
|
|
156
|
+
| `github` | GitHub integration |
|
|
157
|
+
|
|
158
|
+
</details>
|
|
159
|
+
|
|
160
|
+
<details>
|
|
161
|
+
<summary><strong>Language Servers (11 LSPs)</strong></summary>
|
|
162
|
+
|
|
163
|
+
| Plugin | Language |
|
|
164
|
+
|--------|----------|
|
|
165
|
+
| `typescript-lsp` | TypeScript/JavaScript |
|
|
166
|
+
| `pyright-lsp` | Python |
|
|
167
|
+
| `gopls-lsp` | Go |
|
|
168
|
+
| `clangd-lsp` | C/C++ |
|
|
169
|
+
| `csharp-lsp` | C# |
|
|
170
|
+
| `jdtls-lsp` | Java |
|
|
171
|
+
| `kotlin-lsp` | Kotlin |
|
|
172
|
+
| `lua-lsp` | Lua |
|
|
173
|
+
| `php-lsp` | PHP |
|
|
174
|
+
| `rust-analyzer-lsp` | Rust |
|
|
175
|
+
| `swift-lsp` | Swift |
|
|
176
|
+
|
|
177
|
+
</details>
|
|
178
|
+
|
|
179
|
+
<details>
|
|
180
|
+
<summary><strong>Knowledge Work (10 plugins)</strong></summary>
|
|
181
|
+
|
|
182
|
+
| Plugin | Domain |
|
|
183
|
+
|--------|--------|
|
|
184
|
+
| `data` | SQL, dashboards, visualizations, statistical analysis |
|
|
185
|
+
| `marketing` | Campaigns, brand voice, SEO, content, competitive analysis |
|
|
186
|
+
| `finance` | Journal entries, reconciliation, SOX, variance analysis |
|
|
187
|
+
| `legal` | Contract review, NDA triage, compliance checks |
|
|
188
|
+
| `product-management` | Specs, roadmaps, sprint planning, user research |
|
|
189
|
+
| `sales` | Pipeline, forecasting, outreach, competitive intel |
|
|
190
|
+
| `customer-support` | Triage, research, escalation, KB articles |
|
|
191
|
+
| `enterprise-search` | Cross-source search, knowledge synthesis |
|
|
192
|
+
| `productivity` | Task management, memory systems |
|
|
193
|
+
| `bio-research` | PubMed, ChEMBL, clinical trials, bioRxiv, scRNA-seq |
|
|
194
|
+
|
|
195
|
+
</details>
|
|
196
|
+
|
|
197
|
+
<details>
|
|
198
|
+
<summary><strong>Utilities & AI (5 plugins)</strong></summary>
|
|
199
|
+
|
|
200
|
+
| Plugin | Purpose |
|
|
201
|
+
|--------|---------|
|
|
202
|
+
| `ralph-loop` | Autonomous agent loop |
|
|
203
|
+
| `huggingface-skills` | HF Hub: models, datasets, training, evaluation |
|
|
204
|
+
| `context7` | Up-to-date library documentation |
|
|
205
|
+
| `playwright` | Browser automation and testing |
|
|
206
|
+
| `frontend-design` | Production-grade frontend components |
|
|
207
|
+
|
|
208
|
+
</details>
|
|
209
|
+
|
|
210
|
+
### Compound Engineering Workflows
|
|
211
|
+
|
|
212
|
+
The `compound-engineering` plugin provides multi-agent orchestration:
|
|
213
|
+
|
|
214
|
+
| Workflow | Command | Description |
|
|
215
|
+
|----------|---------|-------------|
|
|
216
|
+
| **Plan** | `/plan` | Transform feature descriptions into structured plans |
|
|
217
|
+
| **Brainstorm** | `/brainstorm` | Explore requirements through collaborative ideation |
|
|
218
|
+
| **Work** | `/work` | Execute plans efficiently with quality gates |
|
|
219
|
+
| **Review** | `/review` | Exhaustive multi-agent code review |
|
|
220
|
+
| **Compound** | `/compound` | Document solved problems for future reference |
|
|
221
|
+
|
|
222
|
+
<p align="center">
|
|
223
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
224
|
+
</p>
|
|
225
|
+
|
|
226
|
+
## Installation
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# From source
|
|
230
|
+
git clone https://github.com/shyamsridhar123/sharkbait.git
|
|
231
|
+
cd sharkbait
|
|
232
|
+
bun install
|
|
233
|
+
bun run build:binary
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Prerequisites
|
|
237
|
+
|
|
238
|
+
- **Bun** >= 1.0.0
|
|
239
|
+
- **Git** >= 2.30
|
|
240
|
+
- **gh** (GitHub CLI) >= 2.40 (optional, for GitHub features)
|
|
241
|
+
- Azure OpenAI API access
|
|
242
|
+
|
|
243
|
+
## Configuration
|
|
244
|
+
|
|
245
|
+
1. Set up your Azure OpenAI credentials:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com"
|
|
249
|
+
export AZURE_OPENAI_API_KEY="your-api-key"
|
|
250
|
+
export AZURE_OPENAI_DEPLOYMENT="gpt-codex-5.2"
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
2. Or create a `.env` file:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
cp .env.example .env
|
|
257
|
+
# Edit .env with your credentials
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
<p align="center">
|
|
261
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
262
|
+
</p>
|
|
263
|
+
|
|
264
|
+
## Usage
|
|
265
|
+
|
|
266
|
+
### Interactive Chat
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
sharkbait chat
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### One-off Question
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
sharkbait ask "How do I refactor this function?"
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Autonomous Task Execution
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
sharkbait run "Add input validation to the login endpoint"
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Initialize in Project
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
cd your-project
|
|
288
|
+
sharkbait init
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Slash Commands
|
|
292
|
+
|
|
293
|
+
During an interactive chat session, use slash commands for quick actions:
|
|
294
|
+
|
|
295
|
+
### Navigation
|
|
296
|
+
| Command | Description |
|
|
297
|
+
|---------|-------------|
|
|
298
|
+
| `/cd <path>` | Change working directory (creates if needed) |
|
|
299
|
+
| `/pwd` | Show current working directory |
|
|
300
|
+
|
|
301
|
+
### Session
|
|
302
|
+
| Command | Description |
|
|
303
|
+
|---------|-------------|
|
|
304
|
+
| `/clear` | Clear message history |
|
|
305
|
+
| `/exit` | Exit Sharkbait (aliases: `/quit`, `/q`) |
|
|
306
|
+
|
|
307
|
+
### Configuration
|
|
308
|
+
| Command | Description |
|
|
309
|
+
|---------|-------------|
|
|
310
|
+
| `/beads [on\|off]` | Toggle or check Beads task tracking |
|
|
311
|
+
| `/model [name]` | Show or switch the LLM model |
|
|
312
|
+
| `/tasks` | Show Beads task status |
|
|
313
|
+
| `/context [add\|remove\|list]` | Manage context files |
|
|
314
|
+
|
|
315
|
+
### Actions
|
|
316
|
+
| Command | Description |
|
|
317
|
+
|---------|-------------|
|
|
318
|
+
| `/setup` | Launch interactive setup wizard |
|
|
319
|
+
| `/init` | Initialize Sharkbait in current directory |
|
|
320
|
+
| `/ask <question>` | Ask a one-off question |
|
|
321
|
+
| `/run <task>` | Execute a task autonomously |
|
|
322
|
+
| `/review <file>` | Run parallel code review (bugs, security, style, performance) |
|
|
323
|
+
|
|
324
|
+
### Information
|
|
325
|
+
| Command | Description |
|
|
326
|
+
|---------|-------------|
|
|
327
|
+
| `/version` | Show Sharkbait version |
|
|
328
|
+
| `/help [command]` | Show available commands or help for a specific command |
|
|
329
|
+
|
|
330
|
+
**Example:** Run a parallel code review:
|
|
331
|
+
```
|
|
332
|
+
> /review src/auth.ts
|
|
333
|
+
Starting parallel review: bugs, security, style, performance on src/auth.ts
|
|
334
|
+
[Progress bars for each reviewer mode]
|
|
335
|
+
Parallel Review Complete (12.3s)
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
[Full Slash Commands Reference](docs/COMMANDS.md)
|
|
339
|
+
|
|
340
|
+
<p align="center">
|
|
341
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
342
|
+
</p>
|
|
343
|
+
|
|
344
|
+
## Available Tools
|
|
345
|
+
|
|
346
|
+
Sharkbait has access to 36 tools across different categories:
|
|
347
|
+
|
|
348
|
+
| Category | Tools |
|
|
349
|
+
|----------|-------|
|
|
350
|
+
| **File Operations** | `read_file`, `write_file`, `edit_file`, `list_directory`, `search_files`, `grep_search`, `create_directory` |
|
|
351
|
+
| **Shell** | `run_command`, `open_file` |
|
|
352
|
+
| **Beads** | `beads_status`, `beads_init`, `beads_ready`, `beads_create`, `beads_show`, `beads_done`, `beads_add_dependency`, `beads_list` |
|
|
353
|
+
| **Git** | `git_status`, `git_diff`, `git_commit`, `git_push`, `git_branch`, `git_log` |
|
|
354
|
+
| **GitHub** | `github_create_pr`, `github_list_prs`, `github_merge_pr`, `github_create_issue`, `github_workflow_status`, `github_pr_view`, `github_issue_list` |
|
|
355
|
+
| **Codebase** | `analyze_codebase`, `find_dependencies`, `map_architecture` |
|
|
356
|
+
| **Web/Fetch** | `fetch_webpage`, `fetch_json`, `web_search` |
|
|
357
|
+
|
|
358
|
+
## Specialized Agents
|
|
359
|
+
|
|
360
|
+
Sharkbait uses a multi-agent architecture with specialized agents for different tasks:
|
|
361
|
+
|
|
362
|
+
| Agent | Purpose |
|
|
363
|
+
|-------|---------|
|
|
364
|
+
| **Orchestrator** | Routes requests to the appropriate specialized agent based on intent |
|
|
365
|
+
| **Coder** | Writes, modifies, and refactors code with tool access |
|
|
366
|
+
| **Reviewer** | Reviews code for bugs, security, style, and performance issues |
|
|
367
|
+
| **Explorer** | Maps codebase architecture and finds relevant files |
|
|
368
|
+
| **Planner** | Breaks down complex tasks into actionable steps |
|
|
369
|
+
| **Debugger** | Traces issues and diagnoses bugs |
|
|
370
|
+
| **Parallel Executor** | Runs multiple agent tasks concurrently (e.g., parallel code reviews) |
|
|
371
|
+
|
|
372
|
+
<p align="center">
|
|
373
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
374
|
+
</p>
|
|
375
|
+
|
|
376
|
+
## Architecture
|
|
377
|
+
|
|
378
|
+
<p align="center">
|
|
379
|
+
<img src="public/art/architecture.svg" alt="Sharkbait Architecture Diagram" width="800">
|
|
380
|
+
</p>
|
|
381
|
+
|
|
382
|
+
Sharkbait implements a sophisticated agentic loop with:
|
|
383
|
+
|
|
384
|
+
- **Dual-ledger progress tracking**: Inspired by Microsoft's Magentic-One research
|
|
385
|
+
- **Intelligent context compaction**: Preserves critical context while managing token limits
|
|
386
|
+
- **Action reversibility classification**: Classifies commands as easy/effort/irreversible
|
|
387
|
+
- **Stall detection & recovery**: Automatic re-planning when stuck
|
|
388
|
+
|
|
389
|
+
### Tech Stack
|
|
390
|
+
|
|
391
|
+
| Component | Technology | Reason |
|
|
392
|
+
|-----------|------------|--------|
|
|
393
|
+
| Runtime | Bun | Fast startup, native TS |
|
|
394
|
+
| Language | TypeScript | Type safety |
|
|
395
|
+
| LLM | Azure OpenAI GPT Codex 5.2 | Enterprise |
|
|
396
|
+
| Memory | Beads (built-in) | Git-backed persistence |
|
|
397
|
+
| GitHub | git + gh CLI | No Octokit needed |
|
|
398
|
+
| CLI UI | ink | React for terminals |
|
|
399
|
+
| CLI Framework | commander | Argument parsing |
|
|
400
|
+
|
|
401
|
+
## Development
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
# Install dependencies
|
|
405
|
+
bun install
|
|
406
|
+
|
|
407
|
+
# Run in development mode
|
|
408
|
+
bun run dev
|
|
409
|
+
|
|
410
|
+
# Run tests
|
|
411
|
+
bun test
|
|
412
|
+
|
|
413
|
+
# Type check
|
|
414
|
+
bun run typecheck
|
|
415
|
+
|
|
416
|
+
# Build for distribution
|
|
417
|
+
bun run build:binary
|
|
418
|
+
|
|
419
|
+
# Build for all platforms
|
|
420
|
+
bun run build:all
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
## Configuration Options
|
|
424
|
+
|
|
425
|
+
| Environment Variable | Description | Default |
|
|
426
|
+
|---------------------|-------------|---------|
|
|
427
|
+
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI endpoint URL | (required) |
|
|
428
|
+
| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key (falls back to Azure Identity if unset) | (optional) |
|
|
429
|
+
| `AZURE_OPENAI_DEPLOYMENT` | Model deployment name | `gpt-codex-5.2` |
|
|
430
|
+
| `AZURE_OPENAI_API_VERSION` | API version (Responses API requires 2025-03-01-preview+) | `2025-03-01-preview` |
|
|
431
|
+
| `SHARKBAIT_LOG_LEVEL` | Log level (debug/info/warn/error) | `info` |
|
|
432
|
+
| `SHARKBAIT_LOG_FILE` | Enable file logging to ~/.sharkbait/logs | `false` |
|
|
433
|
+
| `SHARKBAIT_LOG_JSON` | Use JSON format for console output | `false` |
|
|
434
|
+
| `SHARKBAIT_LOG_DIR` | Custom log file directory | `~/.sharkbait/logs` |
|
|
435
|
+
| `SHARKBAIT_TELEMETRY` | Enable opt-in anonymous telemetry | `false` |
|
|
436
|
+
| `SHARKBAIT_MAX_CONTEXT_TOKENS` | Max context window tokens | `100000` |
|
|
437
|
+
| `SHARKBAIT_CONFIRM_DESTRUCTIVE` | Require confirmation for destructive commands | `true` |
|
|
438
|
+
| `SHARKBAIT_WORKING_DIR` | Default working directory | (current directory) |
|
|
439
|
+
|
|
440
|
+
<p align="center">
|
|
441
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
442
|
+
</p>
|
|
443
|
+
|
|
444
|
+
## Logging & Monitoring
|
|
445
|
+
|
|
446
|
+
### Structured Logging
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
# Enable debug logging
|
|
450
|
+
export SHARKBAIT_LOG_LEVEL=debug
|
|
451
|
+
|
|
452
|
+
# Enable file logging (writes to ~/.sharkbait/logs/sharkbait.log)
|
|
453
|
+
export SHARKBAIT_LOG_FILE=true
|
|
454
|
+
|
|
455
|
+
# Use JSON format for machine-readable logs
|
|
456
|
+
export SHARKBAIT_LOG_JSON=true
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
Log output includes timestamps, levels, and contextual information:
|
|
460
|
+
```
|
|
461
|
+
[18:55:21.545] [INFO ] [coder] Agent started processing
|
|
462
|
+
[18:55:21.560] [INFO ] config.load (8ms)
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### File Logging
|
|
466
|
+
|
|
467
|
+
When enabled, logs are written as newline-delimited JSON:
|
|
468
|
+
```json
|
|
469
|
+
{"timestamp":"2026-01-29T18:55:21.545Z","level":"info","message":"Agent started","context":{"agent":"coder","correlationId":"abc123"}}
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
Features:
|
|
473
|
+
- Automatic rotation at 10MB (keeps 5 files)
|
|
474
|
+
- Structured JSON for easy parsing
|
|
475
|
+
- Context propagation (agent, tool, correlationId)
|
|
476
|
+
|
|
477
|
+
### Performance Monitoring
|
|
478
|
+
|
|
479
|
+
Built-in metrics track:
|
|
480
|
+
- LLM call latencies (avg, p50, p90, p99)
|
|
481
|
+
- Tool execution times
|
|
482
|
+
- Memory usage
|
|
483
|
+
- Token consumption
|
|
484
|
+
|
|
485
|
+
### Distributed Tracing
|
|
486
|
+
|
|
487
|
+
Trace agent execution with OpenTelemetry-inspired spans:
|
|
488
|
+
```
|
|
489
|
+
agent: coder (1250ms)
|
|
490
|
+
llm: gpt-codex-5.2 (800ms)
|
|
491
|
+
tool: file_read (45ms)
|
|
492
|
+
tool: file_write (120ms)
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### Telemetry (Opt-in)
|
|
496
|
+
|
|
497
|
+
Anonymous usage analytics can be enabled to help improve Sharkbait:
|
|
498
|
+
```bash
|
|
499
|
+
export SHARKBAIT_TELEMETRY=true
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
**What's collected:** Event counts (sessions, tool usage), latency metrics
|
|
503
|
+
**What's NOT collected:** File paths, code content, prompts, personal info
|
|
504
|
+
|
|
505
|
+
### Configuration File
|
|
506
|
+
|
|
507
|
+
Sharkbait stores configuration in `~/.sharkbait/config.json`. Example:
|
|
508
|
+
|
|
509
|
+
```json
|
|
510
|
+
{
|
|
511
|
+
"azure": {
|
|
512
|
+
"deployment": "gpt-codex-5.2"
|
|
513
|
+
},
|
|
514
|
+
"features": {
|
|
515
|
+
"beads": true,
|
|
516
|
+
"confirmDestructive": true
|
|
517
|
+
},
|
|
518
|
+
"paths": {
|
|
519
|
+
"defaultWorkingDir": "/path/to/your/project"
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
<p align="center">
|
|
525
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
526
|
+
</p>
|
|
527
|
+
|
|
528
|
+
## Generative Art Gallery
|
|
529
|
+
|
|
530
|
+
Created with the `algorithmic-art` and `canvas-design` skills:
|
|
531
|
+
|
|
532
|
+
<p align="center">
|
|
533
|
+
<img src="public/art/ocean-flow-field.png" alt="Ocean Flow Field" width="600" style="border-radius: 8px;">
|
|
534
|
+
<br><em>Ocean Flow Field — 4,000 particles tracing noise-driven current vectors</em>
|
|
535
|
+
</p>
|
|
536
|
+
|
|
537
|
+
<p align="center">
|
|
538
|
+
<img src="public/art/coral-reef-pattern.png" alt="Coral Reef Pattern" width="600" style="border-radius: 8px;">
|
|
539
|
+
<br><em>Coral Reef — Circle-packed generative polyp colonies</em>
|
|
540
|
+
</p>
|
|
541
|
+
|
|
542
|
+
<p align="center">
|
|
543
|
+
<img src="public/art/depth-gradient-banner.png" alt="Depth Gradient" width="600" style="border-radius: 8px;">
|
|
544
|
+
<br><em>Depth Gradient — Five ocean zones from sunlit to hadal with bioluminescence</em>
|
|
545
|
+
</p>
|
|
546
|
+
|
|
547
|
+
<p align="center">
|
|
548
|
+
<img src="public/gifs/ocean-divider.gif" alt="~" width="600">
|
|
549
|
+
</p>
|
|
550
|
+
|
|
551
|
+
## Security
|
|
552
|
+
|
|
553
|
+
Sharkbait includes multiple layers of security:
|
|
554
|
+
|
|
555
|
+
1. **Blocked commands**: Dangerous patterns like `rm -rf /` are blocked
|
|
556
|
+
2. **Reversibility classification**: Commands are classified by how easy they are to undo
|
|
557
|
+
3. **Confirmation prompts**: Destructive operations require confirmation
|
|
558
|
+
4. **Secret redaction**: API keys and passwords are not logged
|
|
559
|
+
|
|
560
|
+
## License
|
|
561
|
+
|
|
562
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
563
|
+
|
|
564
|
+
## Contributing
|
|
565
|
+
|
|
566
|
+
Contributions welcome! Please see the backlog in `backlog/tasks/` for open items.
|
|
567
|
+
|
|
568
|
+
<p align="center">
|
|
569
|
+
<img src="public/gifs/eac-current.gif" alt="EAC Current - Righteous!" width="450">
|
|
570
|
+
<br>
|
|
571
|
+
<em>"You so totally rock, Squirt!" — Crush</em>
|
|
572
|
+
</p>
|