stan44 e0f298ba36 Add LyricFlow .NET backend API and Python bridge integration
- introduce `LyricFlow.Core.Backend` with shared DTOs, rhyme/spellcheck engines, and REST endpoints
- wire Python GUI/core to run and call the backend via new bridge/client modules
- add backend parity/integration tests and update packaging/ignore settings
2026-03-15 01:44:56 -05:00

118 lines
4.5 KiB
C#

using System.Text.Json.Serialization;
namespace LyricFlow.Core.Dtos;
public record CapabilitiesDto(
[property: JsonPropertyName("analysis")] bool Analysis,
[property: JsonPropertyName("phonetics")] bool Phonetics,
[property: JsonPropertyName("spellcheck")] bool Spellcheck,
[property: JsonPropertyName("synonyms")] bool Synonyms,
[property: JsonPropertyName("autocorrect")] bool Autocorrect,
[property: JsonPropertyName("projects")] bool Projects,
[property: JsonPropertyName("sessions")] bool Sessions,
[property: JsonPropertyName("settings")] bool Settings,
[property: JsonPropertyName("files")] bool Files,
[property: JsonPropertyName("history")] bool History,
[property: JsonPropertyName("scratchpad")] bool Scratchpad,
[property: JsonPropertyName("has_cmudict")] bool HasCmudict,
[property: JsonPropertyName("has_wordnet")] bool HasWordNet
);
public record HealthDto(
[property: JsonPropertyName("status")] string Status,
[property: JsonPropertyName("version")] string Version,
[property: JsonPropertyName("ready")] bool Ready,
[property: JsonPropertyName("dictionary_count")] int DictionaryCount,
[property: JsonPropertyName("capabilities")] CapabilitiesDto Capabilities
);
public record ProjectStateDto(
[property: JsonPropertyName("version")] int Version,
[property: JsonPropertyName("name")] string Name,
[property: JsonPropertyName("open_files")] List<string> OpenFiles,
[property: JsonPropertyName("active_file")] string? ActiveFile,
[property: JsonPropertyName("cursor_positions")] Dictionary<string, int> CursorPositions,
[property: JsonPropertyName("scratchpad_open")] bool ScratchpadOpen
);
public record SessionTabSnapshotDto(
[property: JsonPropertyName("tab_id")] string TabId,
[property: JsonPropertyName("file_path")] string? FilePath,
[property: JsonPropertyName("display_name")] string DisplayName,
[property: JsonPropertyName("content")] string Content,
[property: JsonPropertyName("cursor_position")] int CursorPosition,
[property: JsonPropertyName("is_dirty")] bool IsDirty,
[property: JsonPropertyName("is_untitled")] bool IsUntitled,
[property: JsonPropertyName("snapshot_mtime")] double? SnapshotMtime,
[property: JsonPropertyName("workspace_root")] string? WorkspaceRoot,
[property: JsonPropertyName("updated_at")] string UpdatedAt
);
public record AppCorePreferencesDto(
[property: JsonPropertyName("reopen_last_project")] bool ReopenLastProject,
[property: JsonPropertyName("restore_unsaved_tabs")] bool RestoreUnsavedTabs,
[property: JsonPropertyName("last_project_file")] string LastProjectFile
);
public record FileReadResultDto(
[property: JsonPropertyName("success")] bool Success,
[property: JsonPropertyName("message")] string Message,
[property: JsonPropertyName("content")] string? Content,
[property: JsonPropertyName("path")] string? Path
);
public record FileWriteResultDto(
[property: JsonPropertyName("success")] bool Success,
[property: JsonPropertyName("message")] string Message,
[property: JsonPropertyName("path")] string? Path
);
public record SnapshotDto(
[property: JsonPropertyName("id")] int Id,
[property: JsonPropertyName("file_path")] string FilePath,
[property: JsonPropertyName("content")] string Content,
[property: JsonPropertyName("timestamp")] double Timestamp
);
public record CountDto(
[property: JsonPropertyName("count")] int Count
);
public record KnownWordDto(
[property: JsonPropertyName("is_known")] bool IsKnown
);
public record CandidateDto(
[property: JsonPropertyName("candidate")] string? Candidate
);
public record SuccessDto(
[property: JsonPropertyName("success")] bool Success
);
public record ScratchpadContentDto(
[property: JsonPropertyName("content")] string Content
);
public record RhymeGroupDto(
[property: JsonPropertyName("word")] string Word,
[property: JsonPropertyName("group")] int? Group
);
public record SuggestionResponseDto(
[property: JsonPropertyName("perfect")] List<string> Perfect,
[property: JsonPropertyName("slant")] List<string> Slant
);
public record SynonymResponseDto(
[property: JsonPropertyName("synonyms")] List<string> Synonyms,
[property: JsonPropertyName("vibe")] List<string> Vibe
);
public record SpellingIssueDto(
[property: JsonPropertyName("word")] string Word,
[property: JsonPropertyName("normalized")] string Normalized,
[property: JsonPropertyName("line")] int Line,
[property: JsonPropertyName("suggestions")] List<string> Suggestions
);