13 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.5 b7956f88ed feat: add permission modes and CLI orchestration layer
Permission Modes:
- Add default/plan/auto_accept modes controlling tool access
- Plan mode restricts Task agent to read-only tools only
- Auto-accept mode bypasses approval prompts (with confirmation)

Approval Scaffolding:
- Add ApprovalRule/ApprovalRuleSet for granular tool control
- Pattern-based matching on tool name and arguments
- Default rules for common safe/dangerous patterns
- Prep for future bidirectional approval flow

CLI Refactor:
- Default to Task agent (main orchestrator)
- Add --mode flag and runtime mode switching
- Integrate prompt_toolkit for better UX:
  - Persistent command history (~/.webber_history)
  - Tab completion for commands and file paths
  - Auto-suggest from history
- Deprecate standalone 'explore' command

Other:
- Split CHANGELOG.md into per-package files
- Update AGENTS.md release procedure for both packages

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 08:48:07 +01:00
jpmschweitzerandClaude Opus 4.5 acf231eb66 feat: add retry logic for transient failures
Build and Push API / release (push) Successful in 3s
Build and Push API / build (push) Successful in 1m14s
- @with_retry decorator and retry_async() function
- Exponential backoff with jitter
- Retries on: timeout, connection errors, HTTP 429/5xx
- Web search tool now retries on network failures
- Configurable via RETRY_MAX_ATTEMPTS, RETRY_BASE_DELAY, RETRY_MAX_DELAY
- 29 new tests (205 total passing)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 23:22:16 +01:00
jpmschweitzerandClaude Opus 4.5 2f97041aa9 fix: replace litellm with tiktoken for token counting
Build and Push API / release (push) Successful in 3s
Build and Push API / build (push) Successful in 2m26s
- litellm had dependency conflicts with pydantic-ai
- tiktoken is lighter and already required by pydantic-ai
- Updated documentation (README.md, architecture.md)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 23:05:11 +01:00
jpmschweitzerandClaude Opus 4.5 2523db4da7 feat: add conversation persistence and context management layer
Build and Push API / release (push) Successful in 3s
Build and Push API / build (push) Failing after 34s
- SQLAlchemy async database layer (SQLite dev, PostgreSQL prod)
- Conversation and Message models with UUID primary keys
- Token counting utilities using litellm
- Context summarization at 80% token threshold
- REST API endpoints for multi-turn conversations
- 19 conversation tests, 6 token tests (176 total passing)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 22:42:38 +01:00
jpmschweitzer 470b7448ac chore: release api v0.3.4
Build and Push API / release (push) Successful in 4s
Build and Push API / build (push) Successful in 1m18s
2026-01-11 20:21:50 +01:00
jpmschweitzerandClaude Opus 4.5 b5b2346db5 feat: add Plan Agent for implementation planning
Build and Push API / release (push) Successful in 5s
Build and Push API / build (push) Successful in 1m15s
- Add PlanAgentImpl with read-only tools only
- System prompts optimized for architecture planning
- Outputs step-by-step implementation plans with critical files
- 15 unit tests for registration, tools, and API
- Update COVERAGE.md to ~70% complete

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 19:57:30 +01:00
jpmschweitzerandClaude Opus 4.5 617ff61347 chore: release api v0.3.2
Build and Push API / release (push) Successful in 3s
Build and Push API / build (push) Successful in 1m15s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 19:43:08 +01:00
jpmschweitzerandClaude Opus 4.5 1f3b241485 chore: release api v0.3.1
Build and Push API / release (push) Failing after 3s
Build and Push API / build (push) Has been skipped
- Update changelog with v0.3.0 and v0.3.1 changes
- Bump version in pyproject.toml to 0.3.1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 19:36:24 +01:00
jpmschweitzerandClaude Opus 4.5 33b7e72b18 feat: add Docker healthcheck for container monitoring
Build and Push / release (push) Successful in 3s
Build and Push / build (push) Successful in 1m14s
Helps Watchtower and Docker detect unhealthy containers.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 21:28:39 +01:00
jpmschweitzerandClaude Opus 4.5 d046831903 fix: handle empty environment variables for list fields
Build and Push / release (push) Successful in 3s
Build and Push / build (push) Successful in 1m12s
- Use Optional[list[str]] with None default for allowed_paths
- Add env_parse_none_str="" to treat empty strings as None
- Add effective_allowed_paths property for safe access

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 20:38:30 +01:00
jpmschweitzerandClaude Opus 4.5 cbf75986fb chore: release v0.2.1 - test CI/CD pipeline
Build and Push / release (push) Successful in 3s
Build and Push / build (push) Successful in 3m23s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 20:22:07 +01:00
jpmschweitzerandClaude Opus 4.5 098367ab85 chore: release v0.2.0
Build and Push / release (push) Failing after 3s
Build and Push / build (push) Has been skipped
Added reference prompts and expanded documentation for agents and tools.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 20:07:04 +01:00
jpmschweitzerandClaude Opus 4.5 ccfa16089a chore: add CI/CD pipeline for Gitea deployment
- Add .gitea/workflows/build.yml for tag-triggered builds
- Add Dockerfile for containerized deployment (port 8086)
- Add .dockerignore to keep image lean
- Add CHANGELOG.md following Keep a Changelog format
- Update AGENTS.md with deployment verification URL

Build pipeline:
1. Create Gitea release on v* tag
2. Build and push Docker image to git.schweitz.internal
3. Trigger Watchtower for automatic deployment

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 19:10:52 +01:00