Commit Graph

75 Commits

Author SHA1 Message Date
Claude
48255ead3d docs: add CLAUDE.md with codebase guide for AI assistants
Comprehensive reference covering project structure, architecture patterns,
testing conventions, development workflows, and key configuration for AI
assistants working in this repository.

https://claude.ai/code/session_01Y77ZMumHHk5t9wT8ASrpwZ
2026-02-24 23:17:49 +00:00
Alexander Whitestone
28bb92e35b Merge pull request #25 from AlexanderWhitestone/claude/fix-iphone-ui-NWwmk 2026-02-24 17:54:36 -05:00
Claude
65a278dbee fix: comprehensive iPhone UI overhaul — glassmorphism, responsive layouts, theme unification
- base.html: add missing {% block extra_styles %}, mobile hamburger menu with
  slide-out nav, interactive-widget viewport meta, -webkit-text-size-adjust
- style.css: define 15+ missing CSS variables (--bg-secondary, --text-muted,
  --accent, --success, --danger, etc.), add missing utility classes (.grid,
  .stat, .agent-card, .agent-avatar, .form-group), glassmorphism card effects,
  iPhone breakpoints (768px, 390px), 44pt min touch targets, smooth animations
- mobile.html: rewrite with proper theme variables, glass cards, touch-friendly
  quick actions grid, chat with proper message bubbles
- swarm_live.html: replace undefined CSS vars, use mc-panel theme cards
- marketplace.html: responsive agent cards that stack on iPhone, themed pricing
- voice_button.html & voice_enhanced.html: proper theme integration, touch-sized
  buttons, themed result containers
- create_task.html: mobile-friendly forms with 16px font (prevents iOS zoom)
- tools.html & creative.html: themed headers, responsive column stacking
- spark.html: replace all hardcoded blue (#00d4ff) colors with theme purple/orange
- briefing.html: replace hardcoded bootstrap colors with theme variables

Fixes: header nav overflow on iPhone (7 links in single row), missing
extra_styles block silently dropping child template styles, undefined CSS
variables breaking mobile/swarm/marketplace/voice pages, sub-44pt touch
targets, missing -webkit-text-size-adjust, inconsistent color themes.

97 UI tests pass (91 UI-specific + 6 creative route).

https://claude.ai/code/session_01JiyhGyee2zoMN4p8xWYqEe
2026-02-24 22:25:04 +00:00
Alexander Whitestone
d96b7593fc Merge pull request #24 from AlexanderWhitestone/claude/cloud-ready-deployment-KxS0u 2026-02-24 16:28:20 -05:00
Claude
b7cfb3b097 feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.

New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
  Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI

Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image

https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
Alexander Whitestone
7018a756b3 Merge pull request #22 from AlexanderWhitestone/claude/audit-timmy-dashboard-ft27r 2026-02-24 14:18:29 -05:00
Claude
96c9f1b02f fix: address audit low-hanging fruit — docs accuracy, auction timing, stubs, tests
- Docs: "No Cloud" → "No Cloud AI" (frontend uses CDN for Bootstrap/HTMX/fonts)
- Docs: "600+" → "640+" tests, "20+" → "58" endpoints (actual counts)
- Docs: LND described as "scaffolded" not "gRPC-ready"; remove "agents earn sats"
- Fix auction timing: coordinator sleep(0) → sleep(AUCTION_DURATION_SECONDS)
- agent_core: implement remember() with dedup/eviction, communicate() via swarm comms
- Tests: add CLI tests for chat, think, and backend/model-size forwarding (647 passing)

https://claude.ai/code/session_01SZTwAkTg6v4ybv8g9NLxqN
2026-02-24 18:29:21 +00:00
Alexander Whitestone
03ff505c4b Merge pull request #23 from AlexanderWhitestone/security/macaroon-forgery-and-xss-1771955896 2026-02-24 13:00:52 -05:00
AlexanderWhitestone
4daf382819 security: fix L402 macaroon forgery and XSS in templates 2026-02-24 12:58:19 -05:00
Claude
0367fe3649 audit: add detailed findings from parallel subsystem audits
Incorporates findings from deep-dive audits of all 5 subsystems:
- Swarm auction timing bug (sleep(0) instead of 15s)
- Docker agent HTTP API partially wired
- L402 macaroons are HMAC-only (no caveats/delegation)
- Agent sats are bid-only, no settlement occurs
- CLI test coverage gap (2 tests for 3 commands)
- agent_core persist_memory/communicate are stubs

https://claude.ai/code/session_01SZTwAkTg6v4ybv8g9NLxqN
2026-02-24 17:36:10 +00:00
Claude
dd28595dbd audit: comprehensive feature verification against documentation claims
Audits all 15+ subsystems against claims in docs/index.html and README.md.
643 tests pass (not "600+"), 58 endpoints exist (not "20+"). Identifies
three false claims: "0 Cloud Calls" (CDN deps in templates), "LND gRPC-ready"
(every method raises NotImplementedError), and "agents earn sats autonomously"
(unimplemented v3 feature presented as current).

https://claude.ai/code/session_01SZTwAkTg6v4ybv8g9NLxqN
2026-02-24 17:34:04 +00:00
Alexander Whitestone
1e9e0748a9 Merge pull request #21 from AlexanderWhitestone/claude/cleanup-github-references-LdfDa 2026-02-24 12:20:16 -05:00
Claude
832478f0d0 fix: serve_chat endpoint bug, stale docs, and license mismatch
- Fix /serve/chat AttributeError: split Request and ChatRequest params
  so auth headers are read from HTTP request, not Pydantic body
- Add regression tests for the serve_chat endpoint bug
- Add agent_core and lightning to pyproject.toml wheel includes
- Replace Apache 2.0 LICENSE with MIT to match pyproject.toml
- Update test count from "228" to "600+" across README, docs, AGENTS.md
- Add 5 missing subsystems to README table (Spark, Creative, Tools,
  Telegram, agent_core/lightning)
- Update AGENTS.md project structure with 6 missing modules
- Mark completed v2 roadmap items (personas, MCP tools) in AGENTS.md

https://claude.ai/code/session_01GMiccXbo77GkV3TA69x6KS
2026-02-24 17:18:29 +00:00
Claude
d7cd686341 chore: replace all Alexspayne/Payne references with AlexanderWhitestone
Update GitHub URLs, clone commands, CI badge links, GitHub Pages URL,
agent team name, and hardcoded macOS paths in handoff scripts to reflect
the new GitHub username. Handoff scripts now use relative paths instead
of hardcoded /Users/apayne paths.

https://claude.ai/code/session_01GMiccXbo77GkV3TA69x6KS
2026-02-24 17:05:16 +00:00
Alexander Whitestone
1c8edfc52b Merge pull request #20 from AlexanderWhitestone/claude/integrate-spark-timmy-e5D1i 2026-02-24 11:50:26 -05:00
Claude
b098b00959 test: add integration tests with real media for music video pipeline
Build real PNG, WAV, and MP4 fixtures (no AI models) and exercise the
full assembler and Creative Director pipeline end-to-end.  Fix MoviePy v2
crossfade API (vfx.CrossFadeIn) and font resolution (DejaVu-Sans).

14 new integration tests — 638 total, all passing.

https://claude.ai/code/session_01KJm6jQkNi3aA3yoQJn636c
2026-02-24 16:48:14 +00:00
Claude
1103da339c feat: add full creative studio + DevOps tools (Pixel, Lyra, Reel personas)
Adds 3 new personas (Pixel, Lyra, Reel) and 5 new tool modules:

- Git/DevOps tools (GitPython): clone, status, diff, log, blame, branch,
  add, commit, push, pull, stash — wired to Forge and Helm personas
- Image generation (FLUX via diffusers): text-to-image, storyboards,
  variations — Pixel persona
- Music generation (ACE-Step 1.5): full songs with vocals+instrumentals,
  instrumental tracks, vocal-only tracks — Lyra persona
- Video generation (Wan 2.1 via diffusers): text-to-video, image-to-video
  clips — Reel persona
- Creative Director pipeline: multi-step orchestration that chains
  storyboard → music → video → assembly into 3+ minute final videos
- Video assembler (MoviePy + FFmpeg): stitch clips, overlay audio,
  title cards, subtitles, final export

Also includes:
- Spark Intelligence tool-level + creative pipeline event capture
- Creative Studio dashboard page (/creative/ui) with 4 tabs
- Config settings for all new models and output directories
- pyproject.toml creative optional extra for GPU dependencies
- 107 new tests covering all modules (624 total, all passing)

https://claude.ai/code/session_01KJm6jQkNi3aA3yoQJn636c
2026-02-24 16:31:47 +00:00
Claude
1ab26d30ad feat: integrate Spark Intelligence into Timmy swarm system
Adds a self-evolving cognitive layer inspired by vibeship-spark-intelligence,
adapted for Timmy's agent architecture. Spark captures swarm events, runs
EIDOS prediction-evaluation loops, consolidates memories, and generates
advisory recommendations — all backed by SQLite consistent with existing
patterns.

New modules:
- spark/memory.py — event capture with importance scoring + memory consolidation
- spark/eidos.py — EIDOS cognitive loop (predict → observe → evaluate → learn)
- spark/advisor.py — ranked advisory generation from accumulated intelligence
- spark/engine.py — top-level API wiring all subsystems together

Dashboard:
- /spark/ui — full Spark Intelligence dashboard (3-column: status/advisories,
  predictions/memories, event timeline) with HTMX auto-refresh
- /spark — JSON API for programmatic access
- SPARK link added to navigation header

Integration:
- Coordinator hooks emit Spark events on task post, bid, assign, complete, fail
- EIDOS predictions generated when tasks are posted, evaluated on completion
- Memory consolidation triggers when agents accumulate enough outcomes
- SPARK_ENABLED config toggle (default: true)

Tests: 47 new tests covering all Spark subsystems + dashboard routes.
Full suite: 538 tests passing.

https://claude.ai/code/session_01KJm6jQkNi3aA3yoQJn636c
2026-02-24 15:51:15 +00:00
Alexander Whitestone
4554891674 Merge pull request #19 from AlexanderWhitestone/claude/nostalgic-cori
feat: pytest-cov setup and test suite audit
2026-02-22 20:44:42 -05:00
Alexander Payne
ca60483268 feat: pytest-cov configuration and test audit cleanup
Add full pytest-cov configuration with fail_under=60% threshold,
HTML/XML report targets, and proper exclude_lines. Fix websocket
history test to use public broadcast() API instead of manually
manipulating internals. Audit confirmed 491 tests at 71.2% coverage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 20:42:58 -05:00
Alexander Payne
14072f9bb5 feat: MCP tools integration for swarm agents
ToolExecutor:
- Persona-specific toolkit selection (forge gets code tools, echo gets search)
- Tool inference from task keywords (search→web_search, code→python)
- LLM-powered reasoning about tool selection
- Graceful degradation when Agno unavailable

PersonaNode Updates:
- Subscribe to swarm:events for task assignments
- Execute tasks using ToolExecutor when assigned
- Complete tasks via comms.complete_task()
- Track current_task for status monitoring

Tests:
- 19 new tests for tool execution
- All 6 personas covered
- Tool inference verification
- Edge cases (no toolkit, unknown tasks)

Total: 491 tests passing
2026-02-22 20:33:26 -05:00
Alexander Payne
c5df954d44 feat: Lightning interface, swarm routing, sovereignty audit, embodiment prep
Lightning Backend Interface:
- Abstract LightningBackend with pluggable implementations
- MockBackend for development (auto-settle invoices)
- LndBackend stub with gRPC integration path documented
- Backend factory for runtime selection via LIGHTNING_BACKEND env

Intelligent Swarm Routing:
- CapabilityManifest for agent skill declarations
- Task scoring based on keywords + capabilities + bid price
- RoutingDecision audit logging to SQLite
- Agent stats tracking (wins, consideration rate)

Sovereignty Audit:
- Comprehensive audit report (docs/SOVEREIGNTY_AUDIT.md)
- 9.2/10 sovereignty score
- Documented all external dependencies and local alternatives

Substrate-Agnostic Agent Interface:
- TimAgent abstract base class
- Perception/Action/Memory/Communication types
- OllamaAdapter implementation
- Foundation for future embodiment (robot, VR)

Tests:
- 36 new tests for Lightning and routing
- 472 total tests passing
- Maintained 0 warning policy
2026-02-22 20:20:11 -05:00
Alexander Payne
82ce8a31cf chore: add resume.sh one-liner for handoff 2026-02-22 19:37:15 -05:00
Alexander Whitestone
feaac7ce38 Merge pull request #18 from AlexanderWhitestone/kimi/sprint-v2-swarm-tools-serve
Sprint v2: Swarm E2E, MCP Tools, timmy-serve L402, Tests, Notifications
2026-02-22 19:34:50 -05:00
Alexander Payne
90fa7f55cf docs: update checkpoint with handoff system info 2026-02-22 19:33:44 -05:00
Alexander Payne
bd0030f536 chore: add handoff system for long-running sessions
Add bootstrap.sh and checkpoint files for 2-hour handoff cycles:
- CONTINUE.md - Quick start guide
- CHECKPOINT.md - Current state (updated by Kimi)
- TODO.md - Remaining tasks
- bootstrap.sh - One-command status check
2026-02-22 19:16:09 -05:00
Alexander Payne
f0aa43533f feat: swarm E2E, MCP tools, timmy-serve L402, tests, notifications
Major Features:
- Auto-spawn persona agents (Echo, Forge, Seer) on app startup
- WebSocket broadcasts for real-time swarm UI updates
- MCP tool integration: web search, file I/O, shell, Python execution
- New /tools dashboard page showing agent capabilities
- Real timmy-serve start with L402 payment gating middleware
- Browser push notifications for briefings and task events

Tests:
- test_docker_agent.py: 9 tests for Docker agent runner
- test_swarm_integration_full.py: 18 E2E lifecycle tests
- Fixed all pytest warnings (436 tests, 0 warnings)

Improvements:
- Fixed coroutine warnings in coordinator broadcasts
- Fixed ResourceWarning for unclosed process pipes
- Added pytest-asyncio config to pyproject.toml
- Test isolation with proper event loop cleanup
2026-02-22 19:01:04 -05:00
Alexander Whitestone
c5f86b8960 Merge pull request #17 from AlexanderWhitestone/claude/evaluate-integration-usefulness-FyYSl
Claude/evaluate integration usefulness fy y sl
2026-02-22 17:10:21 -05:00
Claude
167fd0a7b4 Add outcome-based learning system for swarm agents
Introduce a feedback loop where task outcomes (win/loss, success/failure)
feed back into agent bidding strategy. Borrows the "learn from outcomes"
concept from Spark Intelligence but builds it natively on Timmy's existing
SQLite + swarm architecture.

New module: src/swarm/learner.py
- Records every bid outcome with task description context
- Computes per-agent metrics: win rate, success rate, keyword performance
- suggest_bid() adjusts bids based on historical performance
- learned_keywords() discovers what task types agents actually excel at

Changes:
- persona_node: _compute_bid() now consults learner for adaptive adjustments
- coordinator: complete_task/fail_task feed results into learner
- coordinator: run_auction_and_assign records all bid outcomes
- routes/swarm: add /swarm/insights and /swarm/insights/{agent_id} endpoints
- routes/swarm: add POST /swarm/tasks/{task_id}/fail endpoint

All 413 tests pass (23 new + 390 existing).

https://claude.ai/code/session_01E5jhTCwSUnJk9p9zrTMVUJ
2026-02-22 22:04:37 +00:00
Claude
9981580131 Evaluate VibeShip Spark Intelligence for integration
Assess practical usefulness of spark.vibeship.co as an
integration into Timmy's agent system. Conclusion: low value
due to fundamental purpose mismatch (developer meta-tool vs
autonomous agent system), redundant persistence/orchestration
layers, and non-trivial integration effort for unclear benefit.

https://claude.ai/code/session_01E5jhTCwSUnJk9p9zrTMVUJ
2026-02-22 21:42:39 +00:00
Alexander Whitestone
ddd5e98ae5 Merge pull request #16 from AlexanderWhitestone/claude/docker-swarm-agents
feat: add Docker-based swarm agent containerization
2026-02-22 16:26:36 -05:00
Alexander Payne
4020b5222f feat: add Docker-based swarm agent containerization
Add infrastructure for running swarm agents as isolated Docker
containers with HTTP-based coordination, startup recovery, and
enhanced dashboard UI for agent management.

- Dockerfile and docker-compose.yml for multi-service orchestration
- DockerAgentRunner for programmatic container lifecycle management
- Internal HTTP API for container agents to poll tasks and submit bids
- Startup recovery system to reconcile orphaned tasks and stale agents
- Enhanced UI partials for agent panels, chat, and task assignment
- Timmy docker entry point with heartbeat and task polling
- New Makefile targets for Docker workflows
- Tests for swarm recovery

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 16:21:32 -05:00
Alexander Whitestone
b70163600a Merge pull request #15 from AlexanderWhitestone/claude/telegram-bot-integration-L2uIu 2026-02-22 12:33:03 -05:00
Claude
bb93697b92 feat: add Telegram bot integration
Bridges Telegram messages to Timmy via python-telegram-bot (optional
dependency). The bot token can be supplied through the TELEGRAM_TOKEN
env var or at runtime via the new POST /telegram/setup dashboard
endpoint, which (re)starts the bot without a restart.

Changes:
- src/telegram_bot/bot.py — TelegramBot singleton: token persistence
  (telegram_state.json), lifecycle (start/stop), /start command and
  message handler that forwards to Timmy
- src/dashboard/routes/telegram.py — /telegram/setup and /telegram/status
  FastAPI routes
- src/dashboard/app.py — register telegram router; auto-start/stop bot
  in lifespan hook
- src/config.py — TELEGRAM_TOKEN setting (pydantic-settings)
- pyproject.toml — [telegram] optional extra (python-telegram-bot>=21),
  telegram_bot wheel include
- .env.example — TELEGRAM_TOKEN section
- .gitignore — exclude telegram_state.json (contains token)
- tests/conftest.py — stub telegram/telegram.ext for offline test runs
- tests/test_telegram_bot.py — 16 tests covering token helpers,
  lifecycle, and all dashboard routes (370 total, all passing)

https://claude.ai/code/session_01CNBm3ZLobtx3Z1YogHq8ZS
2026-02-22 17:16:12 +00:00
Alexander Whitestone
c7388f1585 Merge pull request #13 from AlexanderWhitestone/claude/fix-mac-scrolling-9uz2p
Add phone testing support and fix scrolling behavior
2026-02-22 10:21:39 -05:00
Alexander Whitestone
7c06056318 Merge pull request #12 from AlexanderWhitestone/claude/fix-quickstart-pip-E6LER
Add ollama and openai dependencies, update agno to sqlite variant
2026-02-22 10:21:12 -05:00
Claude
abaa04fe3a Fix Mac trackpad scrolling; add make ip for phone testing
overflow: hidden creates a WebKit scroll container that absorbs trackpad
events before they reach scrollable children (.chat-log, .mc-sidebar).
Changed .mc-main and .mc-chat-panel > .card to overflow: clip, which
clips visually but does not create a scroll container, so trackpad events
propagate correctly to the nearest scrollable descendant.

Added min-height: 0 to .mc-sidebar so the flex item can shrink below its
content size and overflow-y: auto actually triggers scrolling.

Added `make ip` target that prints local network URLs the phone can
reach. The server already runs on 0.0.0.0 with --reload, so Python and
template changes auto-reload; CSS/static changes need a manual refresh.

https://claude.ai/code/session_01WFuf8fzKSWjH8ztF6E9jbj
2026-02-22 15:19:51 +00:00
Claude
78f583f334 fix(deps): add ollama and openai as explicit dependencies
agno's Ollama backend requires both the `ollama` and `openai` packages
(it uses the OpenAI-compatible wire format under the hood), but neither
was declared as a project dependency.

Ran a full import walk of all src modules in a fresh venv to confirm
zero missing imports after this change.

https://claude.ai/code/session_01W8jeKbHYNS75mPhGLYJxVq
2026-02-22 14:51:12 +00:00
Claude
b2ccb9faf5 fix(deps): add agno[sqlite] extra to pull in sqlalchemy
agno ships sqlalchemy as an optional dependency under its `sqlite` extra.
Installing bare `agno` (without the extra) left sqlalchemy absent, causing
`ModuleNotFoundError: No module named 'sqlalchemy'` on `make dev`.

Changing the dependency spec from `agno>=1.4.0` to `agno[sqlite]>=1.4.0`
ensures sqlalchemy is installed automatically by `make install`.

Also added a troubleshooting entry to README.md for this error.

https://claude.ai/code/session_01W8jeKbHYNS75mPhGLYJxVq
2026-02-22 14:44:38 +00:00
Alexander Whitestone
41b26907d4 Merge pull request #11 from Alexspayne/claude/briefing-approval-queue-T0GNi 2026-02-22 09:10:04 -05:00
Claude
ce6077be0c feat(briefing): morning briefing + approval queue
Implements the Morning Briefing and Approval Queue feature — the first step
from tool to companion.  Timmy now shows up before the owner asks.

New modules
-----------
• src/timmy/approvals.py  — ApprovalItem dataclass, GOLDEN_TIMMY governance
  constant, full SQLite CRUD (create / list / approve / reject / expire).
  Items auto-expire after 7 days if not actioned.
• src/timmy/briefing.py   — BriefingEngine that queries swarm activity and
  chat history, calls Timmy's Agno agent for a prose summary, and caches
  the result in SQLite (~/.timmy/briefings.db).  get_or_generate() skips
  regeneration if a fresh briefing (< 30 min) already exists.

New routes (src/dashboard/routes/briefing.py)
----------------------------------------------
  GET  /briefing                        — full briefing page
  GET  /briefing/approvals              — HTMX partial: pending approval cards
  POST /briefing/approvals/{id}/approve — approve via HTMX (no page reload)
  POST /briefing/approvals/{id}/reject  — reject via HTMX (no page reload)

New templates
-------------
• briefing.html           — clean, mobile-first prose layout (max 680px)
• partials/approval_cards.html         — list of approval cards
• partials/approval_card_single.html   — single approval card with
                                          Approve/Reject HTMX buttons

App wiring (src/dashboard/app.py)
----------------------------------
• Added asynccontextmanager lifespan with _briefing_scheduler background task.
  Generates a briefing at startup and every 6 hours; skips if fresh.

Push notification hook (src/notifications/push.py)
---------------------------------------------------
• notify_briefing_ready(briefing) — logs + triggers local notifier.
  Placeholder for APNs/Pushover wiring later.

Navigation
----------
• Added BRIEFING link to the header nav in base.html.

Tests
-----
• tests/test_approvals.py  — 17 tests: GOLDEN_TIMMY, CRUD, expiry, ordering
• tests/test_briefing.py   — 22 tests: dataclass, freshness, cache round-trip,
                              generate/get_or_generate, push notification hook

354 tests, 354 passing.

https://claude.ai/code/session_01D7p5w91KX3grBeioGiiGy8
2026-02-22 14:04:20 +00:00
Alexander Whitestone
648305d65c Merge pull request #10 from Alexspayne/claude/continue-development-v09U5 2026-02-22 07:26:50 -05:00
Claude
cc7f0bdc0a feat(swarm): agent personas, bid stats persistence, marketplace frontend
v2.0.0 Exodus — three roadmap items implemented in one PR:

**1. Agent Personas (Echo, Mace, Helm, Seer, Forge, Quill)**
- src/swarm/personas.py — PERSONAS dict with role, description, capabilities,
  rate_sats, bid_base/jitter, and preferred_keywords for each of the 6 agents
- src/swarm/persona_node.py — PersonaNode extends SwarmNode with capability-
  aware bidding: bids lower when the task description contains a preferred
  keyword (specialist advantage), higher otherwise (off-spec inflation)
- SwarmCoordinator.spawn_persona(persona_id) — registers the persona in the
  SQLite registry with its full capabilities string and wires it into the
  shared AuctionManager via comms subscription

**2. Bid History Persistence (prerequisite for marketplace stats)**
- src/swarm/stats.py — bid_history table in data/swarm.db:
  record_bid(), mark_winner(), get_agent_stats(), get_all_agent_stats()
- coordinator.run_auction_and_assign() now calls swarm_stats.mark_winner()
  when a winner is chosen, so tasks_won/total_earned survive restarts
- spawn_persona() records each bid for stats tracking

**3. Marketplace Frontend wired to real data**
- /marketplace/ui — new HTML route renders marketplace.html with live
  registry status (idle/busy/offline/planned) and cumulative bid stats
- /marketplace JSON endpoint enriched with same registry+stats data
- marketplace.html — fixed field names (rate_sats, tasks_completed,
  total_earned), added role subtitle, comma-split capabilities string,
  FREE label for Timmy, "planned_count" display
- base.html — added MARKET nav link pointing to /marketplace/ui

Tests: 315 passed (87 new) covering personas, persona_node, stats CRUD,
       marketplace UI route, and enriched catalog data.

https://claude.ai/code/session_013CPPgLc589wfdS8LDNuarL
2026-02-22 12:21:50 +00:00
Alexander Whitestone
250fc8dc08 Merge pull request #9 from Alexspayne/claude/analyze-tool-contributions-J4nFy 2026-02-22 06:55:27 -05:00
Claude
3a3b03e1e8 docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
  WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
  Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
  theme, scanline overlay, feature grid, architecture diagram, quickstart
  steps, agent team cards, roadmap, stats bar)

https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
Alexander Whitestone
e59b1191d1 Merge pull request #8 from Alexspayne/feat/security-swarm-coverage-improvements 2026-02-21 13:48:46 -05:00
Manus AI
f2481010f9 sec: add startup warnings for default L402 secrets
- payment_handler.py: warn when L402_HMAC_SECRET uses default value
- l402_proxy.py: warn when L402_MACAROON_SECRET uses default value
- .env.example: document L402_HMAC_SECRET, L402_MACAROON_SECRET, and
  LIGHTNING_BACKEND with generation instructions

These warnings ensure operators are alerted before deploying with
insecure default secrets.
2026-02-21 13:46:12 -05:00
Manus AI
2e055635a8 test: close coverage gaps for timmy_serve CLI, voice_enhanced, WebSocket, and swarm live page
- Add 8 tests for timmy_serve/cli.py (start, invoice, status commands)
  covering default args, custom args, and output validation
- Add 8 tests for voice_enhanced route covering all intent types
  (status, help, swarm, voice, chat fallback) plus error handling
- Add 17 tests for websocket/handler.py covering broadcast to
  multiple clients, dead connection cleanup, history trimming,
  connect/disconnect, and all convenience broadcast methods
- Add 4 tests for the new GET /swarm/live page route

Total new tests: 37
2026-02-21 13:45:24 -05:00
Manus AI
ccfe2717ed feat(ui): wire WebSocket live feed into HTMX dashboard
- Fix swarm_live.html WebSocket URL from /swarm/ws to /swarm/live
  (matching the actual endpoint in swarm_ws.py)
- Update handleMessage() to process individual swarm events
  (agent_joined, task_posted, bid_submitted, task_assigned, etc.)
  in addition to bulk state snapshots
- Add refreshStats() helper that fetches /swarm REST endpoint to
  update stat counters after each event
- Add GET /swarm/live page route to render the swarm_live.html template
- Add SWARM and MOBILE navigation links to base.html header
  (fixes UX-01: /mobile route not in desktop nav)
2026-02-21 13:43:42 -05:00
Manus AI
ee45a16267 feat(swarm): add in-process agent spawning with live auction bidding
- Add spawn_in_process_agent() to SwarmCoordinator: creates lightweight
  SwarmNode instances that share the coordinator's comms layer and
  AuctionManager, enabling synchronous bid submission
- Fix post_task() to open the auction BEFORE announcing via comms so
  in-process agent callbacks can submit bids into an open auction
- Fix run_auction_and_assign() to close an already-open auction instead
  of re-opening (which would discard bids)
- Add POST /swarm/tasks/auction route for atomic task+auction flow
- Add 7 integration tests (TDD) covering the full lifecycle:
  spawn → post → auction → assign → complete
2026-02-21 13:42:31 -05:00