Skip to main content

Crate ryo_app

Crate ryo_app 

Source
Expand description

RYO App - Application layer

This crate provides the application layer for RYO:

  • Project: In-memory collection of AST files with I/O
  • Intent/Goal: User intention representation
  • Api: External interface for CLI/UI/Agent
  • Storage trait: DI for persistent storage

§Architecture

┌───────────────────────────────────────────────────────────────────┐
│ Layer 3: Application (ryo-app)                                    │
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ Api                                                           ││
│ │ • executor: CoreExecutor (直接依存)                           ││
│ │ • storage: Box<dyn Storage> (DI)                              ││
│ └───────────────────────────────────────────────────────────────┘│
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ Intent/Goal                                                   ││
│ │ • User intention representation                               ││
│ │ • JSON Schema for LLM integration                             ││
│ └───────────────────────────────────────────────────────────────┘│
│ ┌───────────────────────────────────────────────────────────────┐│
│ │ Project                                                       ││
│ │ • File collection + I/O                                       ││
│ └───────────────────────────────────────────────────────────────┘│
└───────────────────────────────────────────────────────────────────┘

§Usage

use ryo_app::{Api, Project, Goal, Intent, InMemoryStorage};

// Load project
let mut project = Project::from_dir("src/")?;

// Create API with storage
let storage = Box::new(InMemoryStorage::new());
let mut api = Api::new(storage);

// Execute a goal
let goal = Goal::new(Intent::RenameIdent {
    from: Pattern::exact("old_name"),
    to: "new_name".to_string(),
    kind: IdentKind::Any,
});

let result = api.execute(&mut project, goal)?;

Re-exports§

pub use api::Api;
pub use api::ApiError;
pub use api::ApiErrorKind;
pub use api::ApiResult;
pub use api::CascadeRequest;
pub use api::CascadeResponse;
pub use api::DesignChoiceInfo;
pub use api::DiscoverRequest;
pub use api::DiscoverResponse;
pub use api::ExecuteOptions;
pub use api::ExecutionResult;
pub use api::ExecutionStatus;
pub use api::GraphSummaryRequest;
pub use api::GraphSummaryResponse;
pub use api::HookResult;
pub use api::LiteralSearchRequest;
pub use api::LiteralSearchResponse;
pub use api::OverviewRequest;
pub use api::OverviewResponse;
pub use api::PostExecutionHook;
pub use api::RunRequest;
pub use api::RunResponse;
pub use api::RyoqlRequest;
pub use api::SortOrder as ApiSortOrder;
pub use api::StatusCode;
pub use api::StatusDetail;
pub use api::StatusResponse;
pub use api::SuggestApplyRequest;
pub use api::SuggestApplyResponse;
pub use api::SuggestChoicesRequest;
pub use api::SuggestChoicesResponse;
pub use api::SuggestCompareRequest;
pub use api::SuggestCompareResponse;
pub use api::SuggestGenerateRequest;
pub use api::SuggestGenerateResponse;
pub use api::SuggestRequest;
pub use api::SuggestResponse;
pub use api::SuggestVerifyRequest;
pub use api::SuggestVerifyResponse;
pub use api::Suggestion;
pub use api::SuggestionSummary;
pub use api::VerifyLevel;

Modules§

api
Api - External interface for RYO operations.
codec
tarpc transport codec for RYO RPC communication.
service
tarpc Service Definition
spec_dsl
Spec DSL - Domain Specification Language for Large-Scale E2E Tests
spec_types

Structs§

AnalysisContext
Unified context containing all analysis structures.
ApplyCommands
Commands for applying a suggestion.
BlueprintExecutor
Executor for ParallelBlueprint
BlueprintResult
Result of executing a blueprint
BorrowCheckResultV2
Borrow check result (V2).
BorrowTrackerV2
Tracks active borrows for a set of variables (V2 - uses VarId).
CascadeAnalyzer
Cascade分析エンジン
CascadeResult
Response DTO for cascade analysis.
ChoiceId
Unique identifier for a design choice within a set.
CodeGraphV2
Symbol relationship graph with Data-Oriented Design.
CodeNode
A code node returned from queries
Conflict
Conflict detected during blueprint planning
DataFlowBuilderWorkspace
Builder for constructing DataFlowGraphV2 using WorkspaceFilePath-keyed files.
DataFlowGraphV2
Data flow graph with Data-Oriented Design.
DataFlowServiceV2
Service for dataflow analysis operations (V2 - String-free).
DataFlowStatsV2
DataFlow graph statistics (V2).
DesignChoice
A single design choice representing one possible implementation approach.
DesignChoiceSet
A set of design choices for a single suggestion.
DiscoverService
Service for pattern-based symbol discovery operations.
DiscoveredSymbol
A discovered symbol with metadata.
DiscoveryEngine
Main discovery engine for pattern-based symbol search.
DiscoveryQuery
Query specification for symbol discovery.
DiscoveryResult
Result of a discovery query.
EnhancedSuggestion
An enhanced suggestion with design choices and verification.
FlowInfoV2
Flow information (V2).
Goal
抽出されたゴール
GraphApi
Graph API for code analysis
GraphBuilderV2
Builder for constructing CodeGraphV2.
GraphStats
Graph statistics
ImportConfig
Import configuration
InMemoryStorage
In-memory storage for testing.
LockAnalysisResultV2
Lock analysis result (V2).
LockGranularityAnalyzerV2
Lightweight lock granularity analyzer using LockTrackerV2 (V2 - uses VarId).
LockStatsV2
Statistics about lock usage (V2).
LockTrackerV2
Tracks lock acquisitions and critical sections (V2 - uses VarId).
ModuleConfig
Module-specific configuration
MutationConfig
Mutation execution configuration
ParallelBlueprint
Parallel execution blueprint
Planner
Planner: Goal → Vec
Project
A project loaded entirely in memory as PureFile ASTs.
ProjectConfig
Project metadata
PureFile
A complete Rust source file (pure, no spans).
QueryBuilder
Fluent query builder for CodeGraphV2.
QueryResponse
クエリレスポンス
RelationGraph
Graph of symbol relations.
RyoConfig
Project configuration loaded from ryo.toml
ScopeHint
検索スコープのヒント
SpecFlowData
Loaded SpecFlow data (DoD - no registry needed).
SpecGroupInfo
Information about a spec group.
SpecInfo
Information about a single spec alias.
SpecLintIssue
Lint issue found in specs.
SpecLintResult
Lint result.
SpecRelation
Spec TypeAliasの依存関係
SpecService
SpecFlow service for building and querying SpecFlowGraphV2.
SpecShowResponse
SpecFlow query result.
SpecStats
SpecFlow statistics.
SuggestId
Unique identifier for a suggestion coupled to AnalysisContext lifecycle
SuggestLocation
Location information for a suggestion
SuggestOpportunity
A detected opportunity for improvement
SummaryBuilder
Builder for generating graph summaries
SummaryOptions
Options for customizing summary output
SymbolRegistry
Central registry for symbol management
TradeOffs
Trade-off analysis for a design choice.
TransformExample
変換例(Custom用)
VarInfoV2
Variable information (V2 - with VarId).
VarNode
Variable node with name and metadata.
VerifiedCandidate
A verified candidate representing a potential change.

Enums§

ConfigError
Error loading configuration
ConflictKind
Types of conflicts
ConflictStrategy
コンフリクト解決戦略
Constraint
実行時制約
DataFlowErrorV2
Error type for DataFlow V2 operations.
DiscoverError
Error type for Discover operations.
EstimatedScope
推定影響範囲
ExtractError
Intent抽出エラー
Format
Supported serialization formats.
GraphError
Graph API error
IdentKind
識別子の種類
Intent
変換意図
ItemKind
Kind of AST item (shared vocabulary across crates).
LintSeverity
Lint issue severity.
MutationSpec
Atomic mutation specification
NodeKind
Kind of code node
PlanError
Planning error
ProjectError
Project error types
Rating
Rating level for trade-off dimensions (1-3 stars).
RelationKind
Kind of relation between symbols.
SafetyLevel
Safety classification for auto-application decisions
SortOrder
Sort order for discovery results.
SpecError
SpecFlow service error.
SpecRelationKind
Spec依存関係の種類
SpecSourceKind
Source of spec information.
StmtInsertPosition
文の挿入位置
SuggestCategory
Category for suggestion classification
TxLogMode
Auto-save mode for transaction logs.
VarKind
Kind of variable.
VerificationStatus
Verification status for a candidate.
ViewMode
出力モード
Visibility
可視性

Traits§

IntentExtractor
IntentExtractor: NLクエリ → Goal
Storage
Abstract storage trait for session persistence.
ToSummary
Generate AI-readable structured text summary

Type Aliases§

PlanResult