Add outline import feature; drop Dto naming, map entities at the API boundary
Services now return entities; endpoints (and the agent toolsets) map to *Response records instead of services building wire DTOs themselves. Also brings in the outline-import agent, MCP tool, ledger and web dialog that were already in progress on disk.
This commit is contained in:
@@ -36,7 +36,9 @@ public static class BeatTools
|
||||
|
||||
[McpServerTool(Name = "update_beat")]
|
||||
[Description("Revise a beat. Only the fields you supply change. Supplying a tag list replaces "
|
||||
+ "the beat's tags outright, so include the ones you want to keep.")]
|
||||
+ "the beat's tags outright, so include the ones you want to keep. A character or "
|
||||
+ "scene id already set stays put unless you pass clearCharacter/clearScene — "
|
||||
+ "leaving the id null means 'don't touch it', not 'remove it'.")]
|
||||
public static Task<CallToolResult> UpdateBeat(
|
||||
NovelApiClient api,
|
||||
[Description("The beat's id.")] Guid beatId,
|
||||
@@ -47,9 +49,11 @@ public static class BeatTools
|
||||
[Description("The event itself.")] string? whatHappened = null,
|
||||
[Description("What it sets in motion.")] string? whatsNext = null,
|
||||
[Description("Id of the scene this beat will be written into.")] Guid? sceneId = null,
|
||||
[Description("Tags for cross-referencing. Replaces the existing tags.")] string[]? tags = null) =>
|
||||
[Description("Tags for cross-referencing. Replaces the existing tags.")] string[]? tags = null,
|
||||
[Description("Detach this beat's character, leaving it unassigned.")] bool clearCharacter = false,
|
||||
[Description("Detach this beat's scene, leaving it ungrouped.")] bool clearScene = false) =>
|
||||
api.PatchAsync($"/api/beats/{beatId}",
|
||||
new { title, sortOrder, characterId, whatHappened, whatsNext, sceneId, tags }, ct);
|
||||
new { title, sortOrder, characterId, whatHappened, whatsNext, sceneId, tags, clearCharacter, clearScene }, ct);
|
||||
|
||||
[McpServerTool(Name = "delete_beat")]
|
||||
[Description("Remove a beat from a chapter's outline. Confirm with the writer first.")]
|
||||
|
||||
@@ -31,8 +31,9 @@ public static class ProjectTools
|
||||
[Description("Genre or category.")] string? genre = null,
|
||||
[Description("One-sentence pitch.")] string? logline = null,
|
||||
[Description("Paragraph-length summary of the whole book.")] string? synopsis = null,
|
||||
[Description("Free-form notes on theme, tone, comparable titles.")] string? notes = null,
|
||||
[Description("Target manuscript length in words.")] int? targetWordCount = null) =>
|
||||
api.PostAsync("/api/projects", new { title, author, genre, logline, synopsis, targetWordCount }, ct);
|
||||
api.PostAsync("/api/projects", new { title, author, genre, logline, synopsis, notes, targetWordCount }, ct);
|
||||
|
||||
[McpServerTool(Name = "update_project_brief")]
|
||||
[Description("Revise a project's top-level fields. Only the fields you supply change; "
|
||||
|
||||
Reference in New Issue
Block a user