Go to file
StillHammer 18f4f16213 feat: Add WebModule for HTTP requests via IIO
Implements WebModule that allows other modules to make HTTP requests
through IIO pub/sub messaging system.

Features:
- HTTP GET/POST support via existing HttpClient
- Request/response via IIO topics (web:request/web:response)
- Security: blocks localhost and private IPs
- Statistics tracking (total, success, failed)
- Hot-reload state preservation
- Custom headers and timeout configuration

Module architecture:
- WebModule.h/cpp: 296 lines total (within 300 line limit)
- config/web.json: Configuration file
- 10 integration tests (TI_WEB_001 to TI_WEB_010)

Tests: 120/120 passing (110 existing + 10 new)

Protocol:
- Subscribe: web:request
- Publish: web:response
- Request fields: requestId, url, method, headers, body, timeoutMs
- Response fields: requestId, success, statusCode, body, error, durationMs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 17:15:46 +08:00
.claude Refactor documentation structure and add language learning 2025-10-29 07:28:34 +08:00
audits refactor: Services architecture for GroveEngine compliance 2025-11-26 11:57:53 +08:00
config feat: Add WebModule for HTTP requests via IIO 2025-11-28 17:15:46 +08:00
deps/sqlite refactor: Services architecture for GroveEngine compliance 2025-11-26 11:57:53 +08:00
docs feat: Add MCP server mode (--mcp-server) 2025-11-27 19:38:32 +08:00
external fix: Restore GroveEngine symlink removed during refactor 2025-11-26 13:49:32 +08:00
plans feat: Add WebModule for HTTP requests via IIO 2025-11-28 17:15:46 +08:00
src feat: Add WebModule for HTTP requests via IIO 2025-11-28 17:15:46 +08:00
tests feat: Add WebModule for HTTP requests via IIO 2025-11-28 17:15:46 +08:00
.gitignore chore: Add .env to .gitignore 2025-11-27 14:27:43 +08:00
AlternativesAnalysis.md Update CDC with hybrid architecture (WarFactory + multi-target) 2025-10-27 11:49:09 +08:00
CDCDraft.md Update CDC with hybrid architecture (WarFactory + multi-target) 2025-10-27 11:49:09 +08:00
CLAUDE.md feat: Add WebModule for HTTP requests via IIO 2025-11-28 17:15:46 +08:00
CMakeLists.txt feat: Add WebModule for HTTP requests via IIO 2025-11-28 17:15:46 +08:00
PLAN_FILESYSTEM_TOOLS.md docs: Add plan for FileSystem tools (read/write/edit) 2025-11-26 22:27:06 +08:00
PLAN_TESTS_INTEGRATION.md test: Implement 20 integration tests for Scheduler and Notification modules 2025-11-27 09:49:08 +08:00
PROMPT_SUCCESSEUR.md docs: Add run.sh wrapper and update documentation 2025-11-28 14:22:04 +08:00
README.md feat: Add WebModule for HTTP requests via IIO 2025-11-28 17:15:46 +08:00
run.sh docs: Add run.sh wrapper and update documentation 2025-11-28 14:22:04 +08:00

AISSIA - AI Smart Schedule & Interactive Assistant

AISSIA is an intelligent personal assistant for time management, hyperfocus detection, and language learning, powered by GroveEngine.

What is AISSIA?

AISSIA helps manage:

  • Hyperfocus: Detects when you've been working too long and need a break
  • Time Management: Intelligent scheduling and task planning
  • Language Learning: Interactive practice in target languages
  • Notifications: Context-aware alerts with TTS support

Built on GroveEngine

AISSIA leverages GroveEngine, a C++17 hot-reload module system that enables:

  • Hot-Reload: Modify code at runtime without losing state (<1ms reload latency)
  • Modular Architecture: Self-contained modules (200-300 lines each)
  • Pub/Sub Communication: Decoupled inter-module messaging
  • State Preservation: Automatic state serialization across reloads
  • Configuration Hot-Reload: Update settings without code changes

Why GroveEngine?

Ultra-fast Development: Hot-reload validated at 0.4ms Type Safety: Strong C++ typing, no "wildcode" Proven Architecture: Production-ready module system Privacy-First: Local mode, data never uploaded Progressive Evolution: MVP → Production → Cloud without rewrite

Project Structure

Aissia/
├── external/
│   └── GroveEngine/          # GroveEngine (symlink)
├── src/
│   ├── main.cpp              # Main application loop
│   └── modules/
│       ├── SchedulerModule.*       # Time management & hyperfocus
│       ├── NotificationModule.*    # Alerts & TTS
│       ├── AIAssistantModule.*     # (TODO) LLM integration
│       ├── LanguageLearningModule.* # (TODO) Language practice
│       └── DataModule.*            # (TODO) SQLite persistence
├── config/
│   ├── scheduler.json
│   └── notification.json
├── docs/
│   ├── README.md                   # Project documentation
│   └── GROVEENGINE_GUIDE.md        # GroveEngine user guide
└── CMakeLists.txt

Modules

Implemented

SchedulerModule: Time management and hyperfocus detection

  • Tracks work sessions and break intervals
  • Detects hyperfocus based on configurable threshold (default: 120 minutes)
  • Reminds for breaks (default: every 45 minutes)
  • Task estimation and tracking

NotificationModule: System alerts with priority levels

  • Priority-based notifications (LOW, NORMAL, HIGH, URGENT)
  • Silent mode (respects URGENT priority)
  • TTS support (configurable)
  • Multilingual support (fr/en/jp)
  • Queue management with rate limiting

Planned

AIAssistantModule: LLM-powered contextual interventions

  • Claude API integration
  • Context-aware suggestions
  • Intelligent document retrieval

LanguageLearningModule: Language practice and learning

  • Conversation in target language
  • Vocabulary tracking
  • Progress monitoring

DataModule: SQLite persistence

  • Task history
  • Session analytics
  • Configuration backup

Getting Started

Prerequisites

  • CMake 3.20+
  • C++17 compiler (GCC/Clang)
  • GroveEngine (included via symlink)

Build

# Configure
cmake -B build

# Build everything
cmake --build build -j4

# Build modules only (for hot-reload workflow)
cmake --build build --target modules

Run

# Interactive mode (requires ANTHROPIC_API_KEY in .env)
./run.sh

# Or manually with .env loaded
source .env && ./build/aissia -i

# MCP Server mode (for Claude Code integration)
./build/aissia --mcp-server

# Normal mode (background daemon)
./build/aissia

Note: Create a .env file with your API key:

ANTHROPIC_API_KEY=sk-ant-...

Hot-Reload Workflow

  1. Start AISSIA: ./build/aissia
  2. Edit a module: src/modules/SchedulerModule.cpp
  3. Rebuild: cmake --build build --target modules
  4. Module reloads automatically with state preserved

Configuration

Configuration files in config/:

scheduler.json:

{
    "hyperfocusThresholdMinutes": 120,
    "breakReminderIntervalMinutes": 45,
    "breakDurationMinutes": 10,
    "workdayStartHour": 9,
    "workdayEndHour": 18
}

notification.json:

{
    "language": "fr",
    "silentMode": false,
    "ttsEnabled": false,
    "maxQueueSize": 50
}

Documentation

Development Philosophy

MVP-First

  • Phase 1 (Required): Local Windows mode only
  • Phase 2+ (Optional): Cloud features if needed
  • Configuration-Driven: 90% of needs via JSON
  • Simplicity First: Complexity emerges from interaction

Module Development

Each module is a self-contained unit (~200-300 lines):

  1. Implements IModule interface
  2. Pure business logic (no infrastructure code)
  3. Communicates via IIO pub/sub
  4. Serializes state for hot-reload
  5. Configurable via IDataNode

See docs/GROVEENGINE_GUIDE.md for detailed module development guide.

Architecture

AISSIA runs on a simple loop (10Hz for assistant workload):

┌─────────────────────────────────────────────┐
│           Main Loop (10Hz)                   │
│                                              │
│  ┌────────────────────────────────────┐    │
│  │  1. Check for module file changes   │    │
│  │  2. Hot-reload if modified          │    │
│  │  3. Process all modules             │    │
│  │  4. Route inter-module messages     │    │
│  │  5. Sleep to maintain 10Hz          │    │
│  └────────────────────────────────────┘    │
└─────────────────────────────────────────────┘

Modules communicate via topics:

  • scheduler:hyperfocus_detected → NotificationModule alerts user
  • notification:alert_sent → DataModule logs event
  • aiassistant:suggestion → NotificationModule displays suggestion

Technical Stack

  • Core: C++17
  • Module System: GroveEngine
  • Logging: spdlog
  • Data Format: JSON (nlohmann/json)
  • Build: CMake 3.20+
  • Future: SQLite (DataModule), Claude API (AIAssistantModule)

Roadmap

Completed

  • Project setup with GroveEngine
  • SchedulerModule (time management & hyperfocus)
  • NotificationModule (alerts & TTS)
  • MonitoringModule (app tracking & classification)
  • AIModule (LLM conversation & suggestions)
  • VoiceModule (TTS/STT interfaces)
  • StorageModule (SQLite persistence)
  • WebModule (HTTP requests via IIO pub/sub)
  • LLM Service (Claude API integration - Sonnet 4)
  • 17 Agentic Tools (filesystem, scheduler, storage, etc.)
  • MCP Server mode (JSON-RPC stdio)
  • Interactive mode (--interactive)
  • 110/110 tests passing

In Progress 🚧

  • Test interactive mode with real queries
  • Expose InternalTools via MCP Server

Planned 📋

  • Windows Toast notifications
  • Real TTS integration (espeak-ng)
  • Language learning features

License

To be determined