progit-plugin-sdk 0.3.0

Plugin SDK for ProGit — sandboxed LuaJIT runtime with capability-based security. LSL-1.0 (file-level copyleft, proprietary plugins allowed via the commercial bridge).
Documentation
// SPDX-License-Identifier: LSL-1.0
// Copyright (c) 2025 Markus Maiwald

//! Plugin trait definitions
//!
//! This module defines the contract between ProGit and plugins.
//!
//! ## Trait Hierarchy
//!
//! ```text
//! Plugin (core trait)
//! ├── IssuePlugin (issue lifecycle convenience)
//! ├── SyncPlugin (sync operation convenience)
//! ├── IntegrationPlugin (external system sync)
//! └── AnalyticsPlugin (metrics and reporting)
//! ```
//!
//! ## Usage
//!
//! Most plugins only need to implement the base `Plugin` trait.
//! The specialized traits (`IntegrationPlugin`, `AnalyticsPlugin`) are
//! for plugins that provide specific functionality.

mod core;
mod integration;
mod analytics;
pub mod jobs;

// Experimental APIs — landing as `experimental_*` per the design lesson:
// never stabilize a trait surface before a real consumer has used it in
// production. Promote to stable once their first plugin ships.
pub mod experimental_diff_renderer;
pub mod experimental_fragments;

// Re-export everything from core
pub use core::*;

// Re-export integration types
pub use integration::{
    AuthType,
    ConflictResolution,
    ExternalLink,
    FieldMappings,
    IntegrationInfo,
    IntegrationPlugin,
    SyncResult,
    SyncStatus,
};

// Re-export analytics types
pub use analytics::{
    AnalyticsPlugin,
    AnalyticsQuery,
    DataPoint,
    DateRange,
    ExportFormat,
    IssueSnapshot,
    MetricType,
    MetricValue,
    Report,
    ReportType,
    Sprint,
    StatusTransition,
    Trend,
    TrendDirection,
};