cnctd-service-ssh 0.1.7

SSH command execution service - library and MCP server
Documentation
# SSH Service Refactor Progress

## Goal
Refactor cnctd-service-ssh from a standalone MCP binary to a **library + binary** architecture.

## Progress

### Phase 1: Restructure Crate ✅
- [x] Update Cargo.toml with lib + bin sections
- [x] Create src/lib.rs
- [x] Move tool_router.rs to src/mcp/
- [x] Create src/mcp/mod.rs
- [x] Move main.rs to src/bin/main.rs
- [x] Test compilation (both lib-only and full)

### Phase 2: Make Operations Embeddable ✅
- [x] Add SshService struct that owns target registry
- [x] Keep global registry for MCP backwards compat
- [x] Instance methods: register(), exec(), unregister(), list_targets(), has_target()

### Phase 3: Integration with cnctd.world ✅
- [x] Add cnctd-service-ssh as dependency in cnctd.world (default-features = false)
- [x] Create built_in_tools.rs module with SSH tool execution
- [x] Wire built-in tools into tool_executor.rs (builtin -> app -> MCP routing)
- [x] Add built-in tools to ConversationContext tool loading
- [x] Export: is_builtin_tool, execute_builtin_tool, get_builtin_tool_definitions

### Phase 4: Testing & Refinement ⬜
- [ ] End-to-end test with a dot using SSH tools
- [ ] Consider permission model (which dots can use SSH?)
- [ ] Add SSH target management UI (optional)

## API Summary

```rust
// Instance-based (for cnctd.world embedding)
let service = SshService::new();
service.register(args).await?;
let result = service.exec(args).await?;

// Global (for MCP server)
ssh_register(args).await?;
ssh_exec(args).await?;
```

## Tool Names
- `ssh:ssh_register_target` - Register a target
- `ssh:ssh_exec` - Execute command on target
- `ssh:ssh_unregister_target` - Remove a target

## Architecture
```
cnctd.world server
├── modules/tools/
│   ├── built_in_tools.rs      # SSH execution wrapper
│   └── mod.rs                  # Exports built-in tool functions
├── modules/conversation/
│   ├── context.rs             # Adds built-in tools to LLM context
│   └── tool_executor.rs       # Routes to execute_builtin_tool()
└── Cargo.toml                 # depends on cnctd-service-ssh (lib only)

cnctd-service-ssh
├── src/lib.rs                 # Library entry point
├── src/operations.rs          # SshService + global functions
├── src/mcp/                   # MCP-specific (feature-gated)
└── src/bin/main.rs           # Standalone MCP server
```