Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
745 commits
Select commit Hold shift + click to select a range
d757670
feat: add autosave session management with TUI picker and multiline i…
mpfaffenberger Oct 12, 2025
e0b8aa7
chore: bump version [ci skip]
github-actions[bot] Oct 12, 2025
a42fc9e
feat: add autosave session rotation on agent switch and conversation …
mpfaffenberger Oct 12, 2025
c4d33e1
chore: bump version [ci skip]
github-actions[bot] Oct 12, 2025
ca322c6
refactor: honor per-agent pinned models in context length calculation…
mpfaffenberger Oct 13, 2025
557e66c
chore: bump version [ci skip]
github-actions[bot] Oct 13, 2025
6c59aa6
feat: add support for file attachments and URLs in prompts
mpfaffenberger Oct 12, 2025
b6794c1
fix: add string representation for BinaryContent in message formatting
mpfaffenberger Oct 12, 2025
64f63c4
doing stuff
mpfaffenberger Oct 12, 2025
61f01d1
Basic image input
mpfaffenberger Oct 12, 2025
56a490c
feat: add support for drag-and-drop file paths with escaped spaces
mpfaffenberger Oct 13, 2025
d032a8c
fix: preserve backslashes in file paths on Windows during tokenization
mpfaffenberger Oct 13, 2025
1e78747
refactor: simplify attachment handling to support images only
mpfaffenberger Oct 13, 2025
95386dc
chore: bump version [ci skip]
github-actions[bot] Oct 13, 2025
4f2ceb2
refactor: implement pagination for autosave session selection interface
mpfaffenberger Oct 13, 2025
aaca8f8
chore: bump version [ci skip]
github-actions[bot] Oct 13, 2025
b97e62b
refactor: disable URL parsing in prompt attachments and fix agent his…
mpfaffenberger Oct 13, 2025
87e1f44
chore: bump version [ci skip]
github-actions[bot] Oct 13, 2025
a30447e
feat: implement persistent browser profile storage for Camoufox
Oct 14, 2025
450cabb
fix: resolve import path and browser initialization issues
mpfaffenberger Oct 14, 2025
e1a6f35
chore: bump version [ci skip]
github-actions[bot] Oct 14, 2025
9fae017
Fix windoze bug
mpfaffenberger Oct 14, 2025
2be1060
chore: bump version [ci skip]
github-actions[bot] Oct 14, 2025
7522be1
feat: add support for claude-4.1-opus model and improve attachment pa…
mpfaffenberger Oct 14, 2025
21804f7
Merge branch 'feat/qa_kitten_profile'
mpfaffenberger Oct 14, 2025
358cf03
chore: bump version [ci skip]
github-actions[bot] Oct 14, 2025
75ecd06
feat: enable HTTP/2 support in httpx clients (#48)
Boredphilosopher96 Oct 14, 2025
0e184f0
chore: bump version [ci skip]
github-actions[bot] Oct 14, 2025
48e96a2
feat: add Synthetic provider integration with open-source models
mpfaffenberger Oct 15, 2025
82580c4
chore: bump version [ci skip]
github-actions[bot] Oct 15, 2025
4e013c9
Run linters / checks
mpfaffenberger Oct 15, 2025
f13e8c3
chore: bump version [ci skip]
github-actions[bot] Oct 15, 2025
a8f3036
feat: add support for DBOS durable execution (#50)
qianl15 Oct 17, 2025
c7e2221
chore: bump version [ci skip]
github-actions[bot] Oct 17, 2025
40bbf8b
refactor: make DBOS enablement runtime-configurable via CLI
mpfaffenberger Oct 17, 2025
faab498
chore: bump version [ci skip]
github-actions[bot] Oct 17, 2025
6e481a8
feat: add restart notification for DBOS configuration changes
mpfaffenberger Oct 17, 2025
acab9cc
chore: bump version [ci skip]
github-actions[bot] Oct 17, 2025
3a554ad
test: extract shared mock fixture and update config test expectations
mpfaffenberger Oct 17, 2025
62dfb59
chore: bump version [ci skip]
github-actions[bot] Oct 17, 2025
0b1dc70
refactor: replace fatal errors with warnings in model and attachment …
mpfaffenberger Oct 17, 2025
faba599
feat: add graceful handling for missing ZAI_API_KEY
mpfaffenberger Oct 17, 2025
dc8fdc1
refactor: separate directory and file ignore patterns for tool-specif…
mpfaffenberger Oct 17, 2025
ba74756
refactor: simplify file listing by delegating non-recursive mode to f…
mpfaffenberger Oct 17, 2025
fd33c8d
chore: bump version [ci skip]
github-actions[bot] Oct 17, 2025
0151c9b
Add bd usage to AGENTS.md
mpfaffenberger Oct 18, 2025
1c5a56f
feat(integration): rebuild robust pexpect CLI harness
mpfaffenberger Oct 18, 2025
9099953
fix(cli-harness): make pexpect flows \r-explicit and autosave-friendly
mpfaffenberger Oct 18, 2025
5f44dda
test(integration): add CLI happy-path coverage with shared fixtures
mpfaffenberger Oct 18, 2025
4457fa2
feat(integration): add autosave resume test and stability improvements
mpfaffenberger Oct 18, 2025
f8202e6
test(session): verify session ID rotation with picker bypass integrat…
mpfaffenberger Oct 18, 2025
8f092cc
chore(lefthook): add pre-commit isort+ruff and pre-push pytest
mpfaffenberger Oct 18, 2025
5e708d8
docs(lefthook): document linters & hooks and close bd-21
mpfaffenberger Oct 18, 2025
028b19f
test(dbos): enable DBOS in integration harness and assert DB initiali…
mpfaffenberger Oct 18, 2025
d3e3f29
test(dbos): dump SQLite report at end of integration suite and harden…
mpfaffenberger Oct 18, 2025
bf14a1d
test(mcp): add Context7 end-to-end integration (install/start/status/…
mpfaffenberger Oct 19, 2025
e8f2e51
test(mcp): ensure context7 tool call is actually executed and visible…
mpfaffenberger Oct 19, 2025
5e8c0b5
fix(mcp): resolve tool name conflicts during agent reload
mpfaffenberger Oct 19, 2025
6905df0
feat: Add integration test for file operation tools
mpfaffenberger Oct 19, 2025
cbcf297
feat: Add selective file cleanup to integration test harness
mpfaffenberger Oct 19, 2025
ee787b9
feat: Implement round-robin model distribution integration tests
mpfaffenberger Oct 19, 2025
2d11d02
chore: bump version [ci skip]
github-actions[bot] Oct 19, 2025
203023d
Add Unit Tests (#55)
cdakotabrown Oct 19, 2025
ac24833
chore: bump version [ci skip]
github-actions[bot] Oct 19, 2025
0c27253
TUI: Interactive /model picker + border fix (#52)
jackdevs000 Oct 19, 2025
a567041
chore: bump version [ci skip]
github-actions[bot] Oct 19, 2025
b14f60f
🔒 feat(ci): gate PyPI publishing with comprehensive test suite
mpfaffenberger Oct 19, 2025
564c8bf
🔧 deps: add pexpect for advanced CLI testing and process control
mpfaffenberger Oct 19, 2025
16286ab
🪟 feat(ci): add cross-platform matrix builds for Windows/macOS/Linux
mpfaffenberger Oct 19, 2025
ec6d34b
🔥 refactor(integration): require environment vars, eliminate skipifs
mpfaffenberger Oct 19, 2025
a89519f
🐛 debug(ci): add secret debugging for integration tests
mpfaffenberger Oct 19, 2025
7d53da1
♻️ refactor(ci): consolidate test steps, move env vars before tests
mpfaffenberger Oct 19, 2025
faf4e3d
Remove tests from ci.yml
mpfaffenberger Oct 19, 2025
500f4a5
⚡ refactor(git): remove pre-push pytest hook from lefthook
mpfaffenberger Oct 19, 2025
d23f980
feat: enable integration tests on Windows
mpfaffenberger Oct 19, 2025
240e973
fix: guard Windows pexpect backend availability
mpfaffenberger Oct 19, 2025
12cf894
chore: add pywinpty Windows dependency
mpfaffenberger Oct 19, 2025
dd182ef
Win compat on test harness
mpfaffenberger Oct 19, 2025
087c55a
Revert "Win compat on test harness"
mpfaffenberger Oct 19, 2025
5956098
Revert "chore: add pywinpty Windows dependency"
mpfaffenberger Oct 19, 2025
ff028ba
Revert "fix: guard Windows pexpect backend availability"
mpfaffenberger Oct 19, 2025
80b7236
Revert "feat: enable integration tests on Windows"
mpfaffenberger Oct 19, 2025
8da443f
build: pin ripgrep dependency to exact version 14.1.0
mpfaffenberger Oct 20, 2025
79340b4
ci: disable integration tests and remove pexpect dependencies
mpfaffenberger Oct 20, 2025
30c3649
ci: streamline matrix builds - only Ubuntu/macOS with Python 3.13
mpfaffenberger Oct 20, 2025
309eeaa
ci: install pexpect inline for integration test compatibility
mpfaffenberger Oct 20, 2025
9a4be67
chore: bump version [ci skip]
github-actions[bot] Oct 20, 2025
71d9807
- Standardize agent permissions: remove edit_file from code-reviewer,…
diegonix Oct 20, 2025
6601fe0
chore: bump version [ci skip]
github-actions[bot] Oct 20, 2025
6161df7
style: apply automated linting and code formatting
mpfaffenberger Oct 20, 2025
7d67c0f
chore: bump version [ci skip]
github-actions[bot] Oct 20, 2025
ddb725c
feat(ci): re-enable integration tests and enhance PR workflow
mpfaffenberger Oct 21, 2025
611eaf2
fix(ci): resolve integration test timeouts in CI environment
mpfaffenberger Oct 21, 2025
ffb95df
fix(ci): skip flaky integration tests in CI environment
mpfaffenberger Oct 21, 2025
5a3ac4f
fix(ci): skip flaky MCP integration test in CI
mpfaffenberger Oct 21, 2025
85376ce
chore: bump version [ci skip]
github-actions[bot] Oct 21, 2025
27a1e1b
fix(integration): remove CI skips and fix timeout issues
mpfaffenberger Oct 21, 2025
0c823cf
fix(integration): handle Ubuntu CI filesystem timing issues
mpfaffenberger Oct 22, 2025
79a92b5
chore: bump version [ci skip]
github-actions[bot] Oct 22, 2025
3d520b8
feat: Adding edit file permission feature (#45)
cgycorey Oct 22, 2025
5dd6c64
style: format code with consistent whitespace and remove unused imports
mpfaffenberger Oct 22, 2025
3775cab
feat: add configurable diff highlighting with intelligent color pairs
mpfaffenberger Oct 22, 2025
9e6f99c
refactor: improve code formatting and consistency across multiple mod…
mpfaffenberger Oct 22, 2025
b84ff30
feat: add manual autosave session loading command
mpfaffenberger Oct 22, 2025
1a8c97e
feat: add diff command configuration hint
mpfaffenberger Oct 22, 2025
8d703eb
test: fix autosave integration tests by adding explicit triggers
mpfaffenberger Oct 22, 2025
23c1ee0
chore: bump version [ci skip]
github-actions[bot] Oct 22, 2025
d056651
Fix UV Python version management - always use latest compatible Python
mpfaffenberger Oct 24, 2025
e477bc9
Simplify UV installation - just export UV_MANAGED_PYTHON=1
mpfaffenberger Oct 24, 2025
db4df25
build: configure uv to use only managed Python installations
mpfaffenberger Oct 24, 2025
be12bad
Update requires-python to exclude versions greater than 3.13
mpfaffenberger Oct 24, 2025
9efc842
chore: bump version [ci skip]
github-actions[bot] Oct 24, 2025
c3ed68c
fix: race condition between automatic summarization and pending tool …
diegonix Oct 25, 2025
4621a98
chore: bump version [ci skip]
github-actions[bot] Oct 25, 2025
b9ed692
add context diff line config (#65)
cgycorey Oct 25, 2025
942b203
chore: bump version [ci skip]
github-actions[bot] Oct 25, 2025
53aed30
feat: add customizable markdown commands plugin
mpfaffenberger Oct 25, 2025
07ecc53
chore: bump version [ci skip]
github-actions[bot] Oct 25, 2025
231301c
fix: restore autosave functionality by moving autosave calls outside …
mpfaffenberger Oct 25, 2025
e27ceaa
feat: add auto_save_session configuration option and display
mpfaffenberger Oct 25, 2025
90908d1
chore: bump version [ci skip]
github-actions[bot] Oct 25, 2025
8409841
adding planning agent (#66)
cgycorey Oct 25, 2025
1e8c0f7
chore: bump version [ci skip]
github-actions[bot] Oct 25, 2025
e02fc50
feat: add Claude Code OAuth plugin with automatic model discovery
mpfaffenberger Oct 25, 2025
560106f
feat: add ChatGPT OAuth plugin for automatic model discovery and auth…
mpfaffenberger Oct 25, 2025
e83cab4
feat: implement clean task cancellation for agent operations
mpfaffenberger Oct 26, 2025
820e094
refactor: simplify ChatGPT OAuth flow and consolidate HTML templates
mpfaffenberger Oct 26, 2025
3a7513c
test: update test to handle tuple return from run_prompt_with_attachm…
mpfaffenberger Oct 26, 2025
ce35618
chore: bump version [ci skip]
github-actions[bot] Oct 26, 2025
8713cdf
feat: add Claude Code OAuth integration support
mpfaffenberger Oct 26, 2025
323d891
feat: enhance Claude Code agent handling with dedicated prompt
mpfaffenberger Oct 26, 2025
09006e5
chore: bump version [ci skip]
github-actions[bot] Oct 26, 2025
83fa181
feat: overwrite claude_models.json on every auth instead of accumulating
mpfaffenberger Oct 26, 2025
f22bc4d
browser: defer Camoufox imports and add Playwright fallback to avoid …
Oct 26, 2025
aa227b7
Merge remote-tracking branch 'origin/main'
mpfaffenberger Oct 26, 2025
96edd2c
chore: bump version [ci skip]
github-actions[bot] Oct 26, 2025
fc2c914
Improve planning agent prompt and code puppy (#67)
cgycorey Oct 26, 2025
71a211b
test: improve agent tools test by mocking yolo mode
mpfaffenberger Oct 26, 2025
693c584
chore: bump version [ci skip]
github-actions[bot] Oct 26, 2025
61b5c3b
feat: add synthetic-MiniMax-M2 model configuration
mpfaffenberger Oct 27, 2025
e76ca16
chore: bump version [ci skip]
github-actions[bot] Oct 27, 2025
178ab62
Adds codex API
mpfaffenberger Oct 27, 2025
e39787f
chore: bump version [ci skip]
github-actions[bot] Oct 27, 2025
e518675
Fix typo
mpfaffenberger Oct 27, 2025
19bddb0
Merge remote-tracking branch 'origin/main'
mpfaffenberger Oct 27, 2025
de067d7
chore: bump version [ci skip]
github-actions[bot] Oct 27, 2025
f5fcf89
feat: replace Cerebras-Qwen3-Coder with Cerebras-GLM-4.6 model
mpfaffenberger Oct 31, 2025
19c285b
Merge remote-tracking branch 'origin/main'
mpfaffenberger Oct 31, 2025
5153aad
Fix round robin integration test assertion
mpfaffenberger Oct 31, 2025
09516ba
ci: limit publishing workflow to macOS only
mpfaffenberger Oct 31, 2025
28a867f
chore: bump version [ci skip]
github-actions[bot] Oct 31, 2025
7d3e48e
let execute plan trigger be less strict (#75)
cgycorey Oct 31, 2025
5ca1706
chore: bump version [ci skip]
github-actions[bot] Nov 1, 2025
d6963c2
fix: convert agent invocation to async and improve error handling
mpfaffenberger Nov 1, 2025
df2fb45
chore: bump version [ci skip]
github-actions[bot] Nov 1, 2025
992af2e
change prompt for qa (#79)
cgycorey Nov 2, 2025
e2a14a0
chore: bump version [ci skip]
github-actions[bot] Nov 2, 2025
d3aae8f
TUI Changes, --model flag added, API config and loading & Cleanup (#81)
janfeddersen-wq Nov 2, 2025
b170ab0
Revert "TUI Changes, --model flag added, API config and loading & Cle…
mpfaffenberger Nov 2, 2025
059b392
feat: add configurable default agent and model selection
mpfaffenberger Nov 2, 2025
7f37250
refactor: reduce console spam by removing verbose initialization mess…
mpfaffenberger Nov 2, 2025
40fdb52
ci: add SYN_API_KEY to CI and publish workflows
mpfaffenberger Nov 2, 2025
f5c2d35
chore: bump version [ci skip]
github-actions[bot] Nov 2, 2025
468fbb8
TUI Changes (#82)
janfeddersen-wq Nov 2, 2025
f955aff
chore: bump version [ci skip]
github-actions[bot] Nov 2, 2025
bee9cf1
Theme update (#83)
janfeddersen-wq Nov 2, 2025
29a1cb5
chore: bump version [ci skip]
github-actions[bot] Nov 2, 2025
100f581
feat: add escape key support for cancelling shell commands
mpfaffenberger Nov 2, 2025
fda4238
feat: improve agent cancellation with subagent task cleanup
mpfaffenberger Nov 2, 2025
a21b455
feat: add workflow cancellation support for subagent tasks
mpfaffenberger Nov 3, 2025
5bd9ab6
chore: bump version [ci skip]
github-actions[bot] Nov 3, 2025
7daa41b
feat: enhance startup experience with pyfiglet banner and improved RE…
mpfaffenberger Nov 3, 2025
b388ad8
docs: update README with new branding and download statistics
mpfaffenberger Nov 3, 2025
f06ccc0
chore: bump version [ci skip]
github-actions[bot] Nov 3, 2025
5a56816
refactor: improve logo display conditions in interactive mode
mpfaffenberger Nov 3, 2025
766cf1d
chore: bump version [ci skip]
github-actions[bot] Nov 3, 2025
7e614a8
feat: add Cerebras-Qwen3-Coder-480b model configuration
mpfaffenberger Nov 3, 2025
e76a7ae
chore: bump version [ci skip]
github-actions[bot] Nov 3, 2025
151b8fd
Append Unix timestamp to DBOS app version (#84)
qianl15 Nov 3, 2025
0e9b6a2
chore: bump version [ci skip]
github-actions[bot] Nov 3, 2025
eb8cd65
feat: enhance user interface with privacy commitment and visual impro…
mpfaffenberger Nov 3, 2025
6b14f7a
style: improve code formatting in interactive mode
mpfaffenberger Nov 3, 2025
3dea2ec
chore: bump version [ci skip]
github-actions[bot] Nov 3, 2025
1391cbe
Remove agent building statement from README
mpfaffenberger Nov 3, 2025
d306fdd
Fix context len for qwen3
mpfaffenberger Nov 3, 2025
c9974b8
chore: bump version [ci skip]
github-actions[bot] Nov 3, 2025
b8a08fa
refactor: optimize intro gradient rendering with batch processing
mpfaffenberger Nov 3, 2025
d2ea020
chore: bump version [ci skip]
github-actions[bot] Nov 3, 2025
c382b83
feat: add persistent session management for subagent conversations
mpfaffenberger Nov 5, 2025
92bce9c
chore: bump version [ci skip]
github-actions[bot] Nov 5, 2025
903adc0
feat: enhance agent invocation with improved session management
mpfaffenberger Nov 5, 2025
0fc283f
chore: bump version [ci skip]
github-actions[bot] Nov 5, 2025
a0e4680
feat: add synthetic-Kimi-K2-Thinking model configuration
mpfaffenberger Nov 7, 2025
5a34bc8
chore: bump version [ci skip]
github-actions[bot] Nov 7, 2025
330be38
feat: update model configurations and add new OpenRouter Polaris model
mpfaffenberger Nov 8, 2025
eebfa96
Merge remote-tracking branch 'origin/main'
mpfaffenberger Nov 8, 2025
47c42cb
chore: bump version [ci skip]
github-actions[bot] Nov 8, 2025
42ae90f
feat: enable message history accumulation in agent registration
mpfaffenberger Nov 8, 2025
2f4768e
chore: bump version [ci skip]
github-actions[bot] Nov 8, 2025
693a966
small change to remove hanging (#87)
cgycorey Nov 9, 2025
ca6ba77
refactor: Split slash commands into modules with registry system (#95)
cdakotabrown Nov 9, 2025
f147562
test: update integration tests to use Cerebras-GLM-4.6 model
mpfaffenberger Nov 9, 2025
d9abf44
feat: enhance user approval system with interactive feedback and impr…
mpfaffenberger Nov 9, 2025
7246a54
feat: add interactive model picker with arrow-key navigation
mpfaffenberger Nov 9, 2025
0f283bf
test: update test fixtures and remove integration tests
mpfaffenberger Nov 9, 2025
fd70114
chore: bump version [ci skip]
github-actions[bot] Nov 9, 2025
7a745c8
fix: improve Windows terminal handling and error resilience
mpfaffenberger Nov 9, 2025
0632568
fix: improve Windows terminal state handling and spinner cleanup
mpfaffenberger Nov 9, 2025
625ac8c
fix: use taskkill for Windows process termination and clear spinner a…
mpfaffenberger Nov 9, 2025
640dd39
fix: change Rich Live display from transient=False and add console st…
mpfaffenberger Nov 9, 2025
f6bbdf6
docs: update version badge to use PyPI version shield (#98)
cellwebb Nov 10, 2025
57b4927
Remove reset_shell_state function
mpfaffenberger Nov 10, 2025
65ed1e3
docs: update version badge to use PyPI version shield (#98)
cellwebb Nov 10, 2025
33892f1
Merge remote-tracking branch 'origin/main'
mpfaffenberger Nov 10, 2025
890184a
refactor: remove redundant sys imports from common.py
mpfaffenberger Nov 10, 2025
7bbea98
chore: bump version [ci skip]
github-actions[bot] Nov 10, 2025
f78e94e
feat: add tab completion for /pin_model command (#99)
cellwebb Nov 10, 2025
a4574c9
chore: bump version [ci skip]
github-actions[bot] Nov 10, 2025
0e285d4
build: remove pnpm check from pre-commit hook (#101)
cellwebb Nov 10, 2025
8c0f59a
chore: bump version [ci skip]
github-actions[bot] Nov 10, 2025
764a06a
feat: add cache control injection for Claude Code API
mpfaffenberger Nov 11, 2025
8cb4455
chore: bump version [ci skip]
github-actions[bot] Nov 11, 2025
674fa30
prompt reviewer (#104)
cgycorey Nov 11, 2025
7793ced
feat: Implement unified slash command completion system with spacing,…
cellwebb Nov 11, 2025
da71cf9
feat: Add tab completion for /m and /mcp commands (#105)
cellwebb Nov 11, 2025
2da2610
feat: improve command completion UX and model handling
mpfaffenberger Nov 12, 2025
f467768
chore: bump version [ci skip]
github-actions[bot] Nov 12, 2025
18f2954
feat: add interactive TUI menus for autosave loading and diff configu…
mpfaffenberger Nov 12, 2025
a3f195a
fix: improve autosave loading compatibility for non-TTY environments
mpfaffenberger Nov 13, 2025
a610780
chore: bump version [ci skip]
github-actions[bot] Nov 13, 2025
665583f
chore: remove pre-commit configuration (#106)
cellwebb Nov 13, 2025
c8c3ca9
chore: bump version [ci skip]
github-actions[bot] Nov 13, 2025
2f8026a
feat: add interactive agent picker with preview functionality
mpfaffenberger Nov 13, 2025
89c4db0
Merge remote-tracking branch 'origin/main'
mpfaffenberger Nov 13, 2025
057339e
feat: add AI-powered shell command safety checking plugin
mpfaffenberger Nov 14, 2025
8df7a93
test: increase timeout and sleep durations in session rotation test
mpfaffenberger Nov 14, 2025
0dac824
chore: bump version [ci skip]
github-actions[bot] Nov 14, 2025
f36530d
feat: add async version of user approval function
mpfaffenberger Nov 14, 2025
7226baf
Merge remote-tracking branch 'origin/main'
mpfaffenberger Nov 14, 2025
7ff9c0b
feat: enhance model management with latest Claude/GPT models and impr…
cellwebb Nov 14, 2025
e44d33d
Update pyproject.toml
mpfaffenberger Nov 14, 2025
0ecf008
chore: bump version [ci skip]
github-actions[bot] Nov 14, 2025
0d20de6
feat: add support for gpt-5.1-codex-api model
mpfaffenberger Nov 14, 2025
59de5da
refactor: simplify codex model detection with substring check
mpfaffenberger Nov 14, 2025
779f161
chore: bump version [ci skip]
github-actions[bot] Nov 14, 2025
147c587
feat: add proxy support with network traffic monitoring
mpfaffenberger Nov 16, 2025
cca1eb3
chore: bump version [ci skip]
github-actions[bot] Nov 16, 2025
9879fe9
Claude/add code sandboxing 01 jmsb jv6 luyt lfudu tv3 mb4 (#1)
soodoku Nov 16, 2025
ee51bf8
feat: add package.json with build and development scripts (#2)
soodoku Nov 16, 2025
e272b9b
refactor: improve package.json based on PR feedback (#3)
soodoku Nov 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions .env

This file was deleted.

28 changes: 28 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Code Puppy API Keys Configuration
# Copy this file to .env and fill in your API keys
# The .env file takes priority over ~/.code_puppy/puppy.cfg

# OpenAI API Key
# OPENAI_API_KEY=sk-...

# Google Gemini API Key
# GEMINI_API_KEY=...

# Anthropic (Claude) API Key
# ANTHROPIC_API_KEY=...

# Cerebras API Key
# CEREBRAS_API_KEY=...

# OpenRouter API Key
# OPENROUTER_API_KEY=...

# Z.ai API Key
# ZAI_API_KEY=...

# Azure OpenAI
# AZURE_OPENAI_API_KEY=...
# AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/

# Synthetic AI API Key
# SYN_API_KEY=...
91 changes: 91 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Quality Checks

on:
pull_request:
branches:
- '**'

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ['3.13']
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install uv
run: pip install uv

- name: Setup uv virtual environment
run: uv venv

- name: Install dependencies
run: uv pip install -e .

- name: Install pexpect for integration tests
run: uv pip install pexpect>=4.9.0

- name: Debug environment variables
env:
CEREBRAS_API_KEY: ${{ secrets.CEREBRAS_API_KEY || 'fake-key-for-ci-testing' }}
CONTEXT7_API_KEY: ${{ secrets.CONTEXT7_API_KEY || 'fake-key-for-ci-testing' }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY || 'fake-key-for-ci-testing' }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY || 'fake-key-for-ci-testing' }}
SYN_API_KEY: ${{ secrets.SYN_API_KEY || 'fake-key-for-ci-testing' }}
run: |
echo "=== DEBUG: Environment Variables ==="
echo "CEREBRAS_API_KEY is set: ${{ secrets.CEREBRAS_API_KEY != '' }}"
echo "CONTEXT7_API_KEY is set: ${{ secrets.CONTEXT7_API_KEY != '' }}"
echo "OPENAI_API_KEY is set: ${{ secrets.OPENAI_API_KEY != '' }}"
echo "ANTHROPIC_API_KEY is set: ${{ secrets.ANTHROPIC_API_KEY != '' }}"
echo "SYN_API_KEY is set: ${{ secrets.SYN_API_KEY != '' }}"
echo "CEREBRAS_API_KEY length: ${#CEREBRAS_API_KEY}"
echo "CONTEXT7_API_KEY length: ${#CONTEXT7_API_KEY}"
echo "OPENAI_API_KEY length: ${#OPENAI_API_KEY}"
echo "ANTHROPIC_API_KEY length: ${#ANTHROPIC_API_KEY}"
echo "SYN_API_KEY length: ${#SYN_API_KEY}"
echo "=== END DEBUG ==="

- name: Run tests
env:
CEREBRAS_API_KEY: ${{ secrets.CEREBRAS_API_KEY || 'fake-key-for-ci-testing' }}
CONTEXT7_API_KEY: ${{ secrets.CONTEXT7_API_KEY || 'fake-key-for-ci-testing' }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY || 'fake-key-for-ci-testing' }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY || 'fake-key-for-ci-testing' }}
SYN_API_KEY: ${{ secrets.SYN_API_KEY || 'fake-key-for-ci-testing' }}
run: |
echo "Running all tests (including integration tests) on ${{ runner.os }} with Python ${{ matrix.python-version }}..."
echo "Required environment variables are set (using CI fallbacks if secrets not available)"
uv run pytest tests/ -v --cov=code_puppy --cov-report=term-missing

quality:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Python 3.13
uses: actions/setup-python@v5
with:
python-version: '3.13'

- name: Install dev dependencies (ruff)
run: pip install ruff

- name: Install code_puppy
run: pip install .

- name: Lint with ruff
run: ruff check .

- name: Check formatting with ruff
run: ruff format --check .
68 changes: 66 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,82 @@ on:
- main

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest]
python-version: ['3.13']
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install uv
run: pip install uv

- name: Setup uv virtual environment
run: uv venv

- name: Install dependencies
run: uv pip install -e .

- name: Install pexpect for integration tests
run: uv pip install pexpect>=4.9.0



- name: Debug environment variables
env:
CEREBRAS_API_KEY: ${{ secrets.CEREBRAS_API_KEY || 'fake-key-for-ci-testing' }}
CONTEXT7_API_KEY: ${{ secrets.CONTEXT7_API_KEY || 'fake-key-for-ci-testing' }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY || 'fake-key-for-ci-testing' }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY || 'fake-key-for-ci-testing' }}
SYN_API_KEY: ${{ secrets.SYN_API_KEY || 'fake-key-for-ci-testing' }}
run: |
echo "=== DEBUG: Environment Variables ==="
echo "CEREBRAS_API_KEY is set: ${{ secrets.CEREBRAS_API_KEY != '' }}"
echo "CONTEXT7_API_KEY is set: ${{ secrets.CONTEXT7_API_KEY != '' }}"
echo "OPENAI_API_KEY is set: ${{ secrets.OPENAI_API_KEY != '' }}"
echo "ANTHROPIC_API_KEY is set: ${{ secrets.ANTHROPIC_API_KEY != '' }}"
echo "SYN_API_KEY is set: ${{ secrets.SYN_API_KEY != '' }}"
echo "CEREBRAS_API_KEY length: ${#CEREBRAS_API_KEY}"
echo "CONTEXT7_API_KEY length: ${#CONTEXT7_API_KEY}"
echo "OPENAI_API_KEY length: ${#OPENAI_API_KEY}"
echo "ANTHROPIC_API_KEY length: ${#ANTHROPIC_API_KEY}"
echo "SYN_API_KEY length: ${#SYN_API_KEY}"
echo "=== END DEBUG ==="

- name: Run tests
env:
CEREBRAS_API_KEY: ${{ secrets.CEREBRAS_API_KEY || 'fake-key-for-ci-testing' }}
CONTEXT7_API_KEY: ${{ secrets.CONTEXT7_API_KEY || 'fake-key-for-ci-testing' }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY || 'fake-key-for-ci-testing' }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY || 'fake-key-for-ci-testing' }}
SYN_API_KEY: ${{ secrets.SYN_API_KEY || 'fake-key-for-ci-testing' }}
run: |
echo "Running all tests (including integration tests) on ${{ runner.os }} with Python ${{ matrix.python-version }}..."
echo "Required environment variables are set (using CI fallbacks if secrets not available)"
uv run pytest tests/ -v --cov=code_puppy --cov-report=term-missing

build-publish:
runs-on: ubuntu-latest
needs: test
permissions:
contents: write # Allows writing to the repository
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Python 3.11
- name: Setup Python 3.13
uses: actions/setup-python@v5
with:
python-version: '3.11'
python-version: '3.13'

- name: Install uv, build, and twine
run: pip install uv build twine
Expand Down
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,17 @@ wheels/
.venv

.coverage

# Session memory
.puppy_session_memory.json

# Pytest cache
.pytest_cache/

dummy_path

.idea/

.DS_Store
.env
.serena/
1 change: 0 additions & 1 deletion .python-version

This file was deleted.

64 changes: 64 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Code Puppy

Code Puppy is a code gen agent!

## Code Style

- Clean
- Concise
- Follow yagni, srp, dry, etc
- Don't write files longer than 600 lines
- type hints on everything

## Testing

- `uv run pytest`

## Namespaces Packages

code_puppy
- agent.py - declares code generation agent
- agent_prompts.py - declares prompt for agent
- config.py - global config manager
- main.py - CLI loop
- message_history_processor.py - message history trimming, summarization logic
- __init__.py - package version detection and exposure
- model_factory.py - constructs models from configuration mapping
- models.json - available models and metadata registry
- state_management.py - global message history state helpers
- summarization_agent.py - specialized agent for history summarization
- version_checker.py - fetches latest PyPI package version

code_puppy.tools
- __init__.py - registers all available tool modules
- common.py - shared console and ignore helpers
- command_runner.py - shell command execution with confirmations
- file_modifications.py - robust file editing with diffs
- file_operations.py - list read grep filesystem files

code_puppy.command_line
- __init__.py - marks command line subpackage init
- file_path_completion.py - path completion with @ trigger
- meta_command_handler.py - handles meta commands and configuration
- model_picker_completion.py - model selection completion and setters
- motd.py - message of the day tracking
- prompt_toolkit_completion.py - interactive prompt with combined completers
- utils.py - directory listing and table utilities

## Git Workflow

- ALWAYS run `pnpm check` before committing
- Fix linting errors with `ruff check --fix`
- Run `ruff format .` to auto format
- NEVER use `git push --force` on the main branch

## `bd` Issue Tracker Tips

- Initialize locally with `bd init` if missing.
- Create issues fast: `bd create 'Title' --type task --priority 2 --description '...' --acceptance '...'`.
- Update acceptance criteria: `bd update bd-123 --acceptance-criteria 'Given ...'`.
- Append notes to capture decisions: `bd update bd-123 --notes 'context here'`.
- List the backlog: `bd list`.
- Show a single issue: `bd show bd-123`.
- Keep commands under 60s; long multi-line acceptance text can time out—compact it or rerun with shorter strings.
- Remember: `bd update` does *not* change descriptions directly; use notes/design fields when you need to tweak narrative details.
57 changes: 57 additions & 0 deletions DEV_CONSOLE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Code Puppy Developer Console Commands

Woof! Here’s the scoop on built-in dev-console `~` meta-commands and exactly how you can add your own. This is for the secret society of code hackers (that’s you now).

## Available Console Commands

| Command | Description |
|---------------------|----------------------------------------------------------|
| `~cd [dir]` | Show directory listing or change working directory |
| `~show` | Show puppy/owner/model status and metadata |
| `~m <model>` | Switch the active code model for the agent |
| `~set KEY=VALUE` | Set a puppy.cfg setting! |
| `~help` or `~h` | Show available meta-commands |
| any unknown `~...` | Warn user about unknown command and (for plain `~`) |
| | shows current model |

## How to Add a New Meta-Command

All `~meta` commands are handled in **`code_puppy/command_line/meta_command_handler.py`** inside the `handle_meta_command` function. Follow these steps:

### 1. Edit the Command Handler
- Open `code_puppy/command_line/meta_command_handler.py`.
- Locate the `handle_meta_command(command: str, console: Console) -> bool` function.
- Add a new `if command.startswith("~yourcmd"):` block (do this _above_ the "unknown command" fallback).
- Use .startswith for prefix commands (e.g., `~foo bar`), or full equality if you want only the bare command to match.
- Implement your logic. Use rich’s Console to print stuff back to the terminal.
- Return `True` if you handle the command.

### 2. (Optional) Add Autocomplete

### ~set: Update your code puppy’s settings

`~set` lets you instantly update values in your puppy.cfg, like toggling YOLO_MODE or renaming your puppy on the fly!

- Usage:
- `~set YOLO_MODE=true`
- `~set puppy_name Snoopy`
- `~set owner_name="Best Owner"`

As you type `~set`, tab completion pops up with available config keys so you don’t have to remember them like a boring human.

If your new command needs tab completion/prompt support, check these files:
- `code_puppy/command_line/prompt_toolkit_completion.py` (has completer logic)
- `code_puppy/command_line/model_picker_completion.py`, `file_path_completion.py` (for model/filename completions)

Update them if your command would benefit from better input support. Usually you just need meta_command_handler.py, though!

### 3. (Optional) Update Help
- Update the help text inside the `~help` handler to list your new command and a short description.

### 4. (Optional) Add Utilities
Place any helper logic for your command in an appropriate utils or tools module if it grows big. Don’t go dumping everything in meta_command_handler.py, or the puppy will fetch your slippers in protest!


---

Be concise, be fun, don’t make your files long, and remember: if you find yourself writing more than a quick conditional in meta_command_handler.py, break that logic out into another module! Woof woof!
Loading