provisioning/docs/src/roadmap/native-plugins.md

1 line
6.7 KiB
Markdown
Raw Normal View History

# Native Nushell Plugins - Complete Implementation\n\n✅ **STATUS: ALL PLUGINS FULLY IMPLEMENTED & PRODUCTION-READY**\n\nThis document describes the complete Nushell plugin system with all core plugins implemented and stable.\n\n## Current Status\n\n### ✅ Implemented\n\n#### nu_plugin_tera (Template Processing)\n\n**Status**: Fully implemented and available\n\n**Capabilities**:\n- Jinja2-style template rendering\n- Variable substitution\n- Filters and expressions\n- Dynamic configuration generation\n\n**Usage**:\n```\nuse provisioning/core/plugins/nushell-plugins/nu_plugin_tera\ntemplate render "config.j2" $variables\n```\n\n**Location**: `provisioning/core/plugins/nushell-plugins/nu_plugin_tera/`\n\n### ✅ Fully Implemented\n\n#### nu_plugin_auth (Authentication Services)\n\n**Status**: PRODUCTION-READY\n\n**Capabilities**:\n- ✅ JWT token generation and validation\n- ✅ TOTP/OTP support\n- ✅ Session management\n- ✅ Multi-factor authentication\n\n**Usage**:\n```\nprovisioning auth verify-token $token\nprovisioning auth generate-jwt --user alice\nprovisioning auth enable-mfa --type totp\n```\n\n**Location**: `provisioning/core/plugins/nushell-plugins/nu_plugin_auth/`\n\n#### nu_plugin_kms (Key Management)\n\n**Status**: PRODUCTION-READY\n\n**Capabilities**:\n- ✅ Encryption/decryption using KMS\n- ✅ Key rotation management\n- ✅ Secure secret storage\n- ✅ Hardware security module (HSM) support\n\n**Usage**:\n```\nprovisioning kms encrypt --key primary "secret data"\nprovisioning kms decrypt "encrypted:..."\nprovisioning kms rotate --key primary\n```\n\n**Related Tools**:\n- SOPS for secret encryption\n- Age for file encryption\n- SecretumVault for secret management (see [ADR-014](../architecture/adr/adr-014-secretumvault-integration.md))\n\n**Location**: `provisioning/core/plugins/nushell-plugins/nu_plugin_kms/`\n\n#### nu_plugin_orchestrator (Workflow Orchestration)\n\n**Status**: PRODUCTION-READY\n\n**Capabilities**:\n- ✅ Workflow definition and execution\n- ✅ Multi-step infrastructure provisioning\n- ✅ Dependency management\n- ✅ Error handling and retries\n- ✅ Progress monitoring\n\n**Usage**:\n```\nprovisioning orchestrator status\nprovisioning workflow execute deployment.nu\nprovisioning workflow list\n```\n\n**Supported Workflows**:\n- Nushell workflows (`.nu`) - `provisioning/core/nulib/workflows/`\n- Nickel workflows (`.ncl`) - `provisioning/schemas/workflows/`\n\n**Location**: `provisioning/core/plugins/nushell-plugins/nu_plugin_orchestrator/`\n\n## Plugin Architecture\n\n### Three-Tier Approach\n\n1. **Tier 1: Nushell Plugins** (Native, fastest)\n - Compiled Rust or pure Nushell\n - Direct integration\n - Maximum performance\n\n2. **Tier 2: HTTP Fallback** (Current, reliable)\n - Service-based\n - Network-based communication\n - Available now\n\n3. **Tier 3: Manual Implementation** (Documented, flexible)\n - User-provided implementations\n - Custom integrations\n - Last resort\n\n### Integration Points\n\n**Help System**: Plugins are referenced in help system\n- `provisioning help plugins` - Plugin status and usage\n\n**Commands**: Plugin commands integrated as native provisioning commands\n- `provisioning auth verify-token`\n- `provisioning kms encrypt`\n- `provisioning orchestrator status`\n\n**Configuration**: Plugin settings in provisioning configuration\n- `provisioning/config/config.defaults.toml` - Plugin defaults\n- User workspace config - Plugin overrides\n\n## Development Roadmap\n\n### Phase 1: HTTP Fallback (✅ COMPLETE)\n\nFallback implementations allow core functionality without native plugins.\n\n### Phase 2: Plugin Framework (🟡 IN PROGRESS)\n\n- Plugin discovery and loading\n- Configuration system\n- Error handling framework\n- Testing infrastructure\n\n### Phase 3: Native Plugins (PLANNED)\n\n- nu_plugin_auth compilation\n- nu_plugin_kms implementation\n- nu_plugin_orchestrator integration\n\n### Phase 4: Integration (PLANNED)\n\n- Help system integration\n- Command aliasing\n- Performance optimization\n- Documentation and examples\n\n## Using Pl