- 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
118 lines
4.5 KiB
C#
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
|
|
);
|