@musnows/scriverse 1.1.4 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai.js +19 -13
- package/dist/ai.js.map +1 -1
- package/dist/image-captcha.js +35 -9
- package/dist/image-captcha.js.map +1 -1
- package/dist/public/app.js +152 -55
- package/dist/public/index.html +12 -3
- package/dist/public/roleplay-turn.js +10 -0
- package/dist/public/styles.css +13 -0
- package/dist/roleplay-turn.js +6 -0
- package/dist/roleplay-turn.js.map +1 -1
- package/dist/store.js +20 -5
- package/dist/store.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -98,3 +98,13 @@ export function roleplayUserTurnTitleSource(content) {
|
|
|
98
98
|
if (!parsed.hasMarkup) return content;
|
|
99
99
|
return parsed.userMessage || parsed.sceneDirection;
|
|
100
100
|
}
|
|
101
|
+
|
|
102
|
+
export function aiConversationTitleSource(content) {
|
|
103
|
+
const source = roleplayUserTurnTitleSource(content);
|
|
104
|
+
const wrapped = unwrapRegion(source.trim(), USER_MESSAGE_TAG) ?? unwrapRegion(source.trim(), "author_instruction");
|
|
105
|
+
const prompt = wrapped && !wrapped.rest ? wrapped.inner : source;
|
|
106
|
+
return prompt.replace(
|
|
107
|
+
/<ai_reference kind="(character|setting|chapter|context-settings)" id="[^"]+">([\s\S]*?)<\/ai_reference>/gu,
|
|
108
|
+
(_reference, _kind, name) => unescapeXmlText(name)
|
|
109
|
+
);
|
|
110
|
+
}
|
package/dist/public/styles.css
CHANGED
|
@@ -1598,6 +1598,18 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
1598
1598
|
.chapter-content { position: relative; z-index: 1; grid-column: 2; grid-row: 1; resize: none; width: 100%; height: auto; min-height: 100%; margin: 0; padding: 32px 36px 72px; border: 0; background: transparent; border-radius: 0; font-size: var(--editor-font-size); line-height: var(--editor-line-height); letter-spacing: .01em; overflow-wrap: break-word; overflow: hidden; }
|
|
1599
1599
|
.app-shell.editor-typewriter-mode .chapter-content { padding-bottom: max(72px, 45dvh); }
|
|
1600
1600
|
.chapter-content:focus { box-shadow: none; }
|
|
1601
|
+
.chapter-content-skeleton { position: absolute; z-index: 3; grid-column: 2; grid-row: 1; display: grid; align-content: start; gap: 16px; width: 100%; min-height: 100%; margin: 0; padding: 36px 36px 72px; background: var(--paper); pointer-events: none; }
|
|
1602
|
+
.chapter-content-skeleton.hidden { display: none; }
|
|
1603
|
+
.chapter-content-skeleton-line { position: relative; display: block; height: 14px; overflow: hidden; border-radius: 4px; background: color-mix(in srgb, var(--line) 78%, var(--paper)); }
|
|
1604
|
+
.chapter-content-skeleton-line::after { position: absolute; inset: 0; background: linear-gradient(110deg, transparent 18%, color-mix(in srgb, var(--surface) 72%, transparent) 48%, transparent 78%); content: ""; transform: translateX(-110%); animation: image-upload-placeholder-shimmer 1.45s ease-in-out infinite; }
|
|
1605
|
+
.chapter-content-skeleton-line:nth-child(2) { width: 92%; }
|
|
1606
|
+
.chapter-content-skeleton-line:nth-child(3) { width: 84%; }
|
|
1607
|
+
.chapter-content-skeleton-line:nth-child(4) { width: 46%; }
|
|
1608
|
+
.chapter-content-skeleton-line:nth-child(5) { width: 96%; margin-top: 8px; }
|
|
1609
|
+
.chapter-content-skeleton-line:nth-child(6) { width: 88%; }
|
|
1610
|
+
.chapter-content-skeleton-line:nth-child(7) { width: 73%; }
|
|
1611
|
+
.chapter-content-skeleton-line:nth-child(8) { width: 38%; }
|
|
1612
|
+
@media (prefers-reduced-motion: reduce) { .chapter-content-skeleton-line::after { animation: none; } }
|
|
1601
1613
|
.chapter-whitespace-overlay { position: relative; z-index: 2; grid-column: 2; grid-row: 1; width: 100%; height: 100%; overflow: hidden; opacity: 0; pointer-events: none; }
|
|
1602
1614
|
.chapter-whitespace-overlay.is-visible { opacity: 1; }
|
|
1603
1615
|
#chapter-whitespace-inner { box-sizing: border-box; min-height: 100%; color: transparent; white-space: pre-wrap; }
|
|
@@ -4575,6 +4587,7 @@ select:focus, input:focus, textarea:focus { border-color: #a77768; box-shadow: 0
|
|
|
4575
4587
|
.editor-view .editor-actions > button { min-width: 0; min-height: 34px; padding-inline: 6px; font-size: 11px; }
|
|
4576
4588
|
.chapter-title { font-size: 18px; }
|
|
4577
4589
|
.chapter-content { padding: 22px 16px 64px 12px; font-size: max(16px, var(--editor-font-size)); }
|
|
4590
|
+
.chapter-content-skeleton { gap: 14px; padding: 26px 16px 64px 12px; }
|
|
4578
4591
|
.app-shell.editor-typewriter-mode .chapter-content { padding-bottom: max(64px, 45dvh); }
|
|
4579
4592
|
.chapter-line-numbers { width: 32px; font-size: 11px; }
|
|
4580
4593
|
.chapter-editor-scroll { grid-template-columns: 32px minmax(0, 1fr); }
|
package/dist/roleplay-turn.js
CHANGED
|
@@ -95,4 +95,10 @@ export function roleplayUserTurnTitleSource(content) {
|
|
|
95
95
|
return content;
|
|
96
96
|
return parsed.userMessage || parsed.sceneDirection;
|
|
97
97
|
}
|
|
98
|
+
export function aiConversationTitleSource(content) {
|
|
99
|
+
const source = roleplayUserTurnTitleSource(content);
|
|
100
|
+
const wrapped = unwrapRegion(source.trim(), USER_MESSAGE_TAG) ?? unwrapRegion(source.trim(), "author_instruction");
|
|
101
|
+
const prompt = wrapped && !wrapped.rest ? wrapped.inner : source;
|
|
102
|
+
return prompt.replace(/<ai_reference kind="(character|setting|chapter|context-settings)" id="[^"]+">([\s\S]*?)<\/ai_reference>/gu, (_reference, _kind, name) => unescapeXmlText(name));
|
|
103
|
+
}
|
|
98
104
|
//# sourceMappingURL=roleplay-turn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roleplay-turn.js","sourceRoot":"","sources":["../src/roleplay-turn.ts"],"names":[],"mappings":"AAYA,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAC9C,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,IAAY,EAAE,MAAM,GAAG,IAAI;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,OAAO,IAAI,GAAG,MAAM,OAAO,OAAO,GAAG,GAAG,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,GAAW;IAChD,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;IACxB,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,MAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACxE,CAAC,CAAC,KAAgC;QAClC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,IAAI,GAAG,CAAC,GAAY,EAAE,OAAe,EAAU,EAAE,CAAC,CACtD,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAC5D,CAAC;IACF,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;QACvD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACpD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAqB;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAqB;IAC9D,MAAM,UAAU,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,IAAI,UAAU,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,cAAsB,EAAE,WAAmB;IACxF,OAAO;QACL,UAAU,CAAC,mBAAmB,EAAE,cAAc,EAAE,IAAI,CAAC;QACrD,UAAU,CAAC,gBAAgB,EAAE,WAAW,EAAE,KAAK,CAAC;KACjD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,cAAsB,EAAE,WAAmB;IAC1F,MAAM,KAAK,GAAG,UAAU,CAAC,mBAAmB,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC;IAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACxD,OAAO;QACL,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5C,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;QAC3C,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC;IACtC,OAAO,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,cAAc,CAAC;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"roleplay-turn.js","sourceRoot":"","sources":["../src/roleplay-turn.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
CHANGED
|
@@ -14,7 +14,7 @@ import { buildWritingCalendar, writingDateKey } from "./writing-progress-time.js
|
|
|
14
14
|
import { DEFAULT_AGENT_TOOL_CALL_LIMIT, MIN_AGENT_TOOL_CALL_LIMIT, resolveMaxAgentToolCallLimit } from "./ai-tool-results.js";
|
|
15
15
|
import { DEFAULT_AI_STREAM_IDLE_TIMEOUT_SECONDS, normalizeAiStreamIdleTimeoutSeconds } from "./ai-stream-timeout.js";
|
|
16
16
|
import { normalizeCharacterAttributes, normalizeCharacterState } from "./public/character-profile.js";
|
|
17
|
-
import { normalizeRoleplayScenePin, roleplayUserTurnDisplayText, roleplayUserTurnTitleSource } from "./roleplay-turn.js";
|
|
17
|
+
import { aiConversationTitleSource, normalizeRoleplayScenePin, roleplayUserTurnDisplayText, roleplayUserTurnTitleSource } from "./roleplay-turn.js";
|
|
18
18
|
import { chapterAnnotationLineHashes, createChapterLineIds, MAX_CHAPTER_LINE_IDS, parseChapterAnnotationLineIds, parseChapterAnnotationLineHashes, parseChapterLineIds, reconcileChapterLineIds, reanchorChapterAnnotations } from "./chapter-annotation-anchor.js";
|
|
19
19
|
import { chapterTitleFormats, isChapterTitlePreference, parseChapterTitleNumber, planAutoNumberedTitles, planVolumeTitleRenumber, renumberChapterTitle, resolveChapterTitleFormat } from "./chapter-title-numbering.js";
|
|
20
20
|
import { normalizeRoleplayMemoryContent, roleplayMemoryCandidateIsSafe } from "./roleplay-memory.js";
|
|
@@ -261,7 +261,7 @@ function normalizeAiConversationTaskType(value, roleplayCharacterId) {
|
|
|
261
261
|
return "chat";
|
|
262
262
|
}
|
|
263
263
|
export function defaultAiConversationTitle(prompt) {
|
|
264
|
-
const normalized =
|
|
264
|
+
const normalized = aiConversationTitleSource(prompt).replace(/\s+/gu, " ").trim();
|
|
265
265
|
return Array.from(normalized).slice(0, 15).join("") || "新对话";
|
|
266
266
|
}
|
|
267
267
|
function isRecord(value) {
|
|
@@ -7237,7 +7237,7 @@ export class Store {
|
|
|
7237
7237
|
role: requiredString(message, "role") === "assistant" ? "assistant" : "user",
|
|
7238
7238
|
content: requiredString(message, "content")
|
|
7239
7239
|
}));
|
|
7240
|
-
return { title: requiredString(conversation, "title"), messages };
|
|
7240
|
+
return { title: this.aiConversationDisplayTitle(conversationId, requiredString(conversation, "title")), messages };
|
|
7241
7241
|
}
|
|
7242
7242
|
setAiConversationContextWarning(conversationId, pending) {
|
|
7243
7243
|
const conversation = this.db.get("SELECT id FROM ai_conversations WHERE id = ?", conversationId);
|
|
@@ -7255,12 +7255,17 @@ export class Store {
|
|
|
7255
7255
|
});
|
|
7256
7256
|
return this.getAiConversation(conversationId);
|
|
7257
7257
|
}
|
|
7258
|
-
setAiConversationTitle(conversationId, title) {
|
|
7258
|
+
setAiConversationTitle(conversationId, title, expectedTitle) {
|
|
7259
7259
|
const conversation = this.db.get("SELECT id FROM ai_conversations WHERE id = ?", conversationId);
|
|
7260
7260
|
if (!conversation)
|
|
7261
7261
|
throw notFound("AI 对话");
|
|
7262
7262
|
const normalizedTitle = title.replace(/\s+/gu, " ").trim().slice(0, 200) || "新对话";
|
|
7263
7263
|
this.db.transaction(() => {
|
|
7264
|
+
if (expectedTitle !== undefined) {
|
|
7265
|
+
const current = this.db.get("SELECT title FROM ai_conversations WHERE id = ?", conversationId);
|
|
7266
|
+
if (!current || this.aiConversationDisplayTitle(conversationId, requiredString(current, "title")) !== expectedTitle)
|
|
7267
|
+
return;
|
|
7268
|
+
}
|
|
7264
7269
|
this.db.run("UPDATE ai_conversations SET title = ?, updated_at = ? WHERE id = ?", normalizedTitle, now(), conversationId);
|
|
7265
7270
|
this.syncAiHistorySearchShortTermsForSource("conversation", conversationId);
|
|
7266
7271
|
});
|
|
@@ -7711,6 +7716,16 @@ export class Store {
|
|
|
7711
7716
|
this.syncAiHistorySearchShortTermsForSource(sourceType, String(row.source_id));
|
|
7712
7717
|
}
|
|
7713
7718
|
}
|
|
7719
|
+
aiConversationDisplayTitle(conversationId, title) {
|
|
7720
|
+
if (!title.startsWith("<"))
|
|
7721
|
+
return title;
|
|
7722
|
+
const firstUserMessage = this.db.get("SELECT content FROM ai_conversation_messages WHERE conversation_id = ? AND role = 'user' ORDER BY created_at, rowid LIMIT 1", conversationId);
|
|
7723
|
+
if (!firstUserMessage)
|
|
7724
|
+
return title;
|
|
7725
|
+
const content = requiredString(firstUserMessage, "content");
|
|
7726
|
+
const legacyTitle = Array.from(roleplayUserTurnTitleSource(content).replace(/\s+/gu, " ").trim()).slice(0, 15).join("") || "新对话";
|
|
7727
|
+
return title === legacyTitle ? defaultAiConversationTitle(content) : title;
|
|
7728
|
+
}
|
|
7714
7729
|
mapAiConversation(row) {
|
|
7715
7730
|
const roleplayCharacterId = optionalString(row, "roleplay_character_id");
|
|
7716
7731
|
const roleplayUserCharacterId = optionalString(row, "roleplay_user_character_id");
|
|
@@ -7726,7 +7741,7 @@ export class Store {
|
|
|
7726
7741
|
return {
|
|
7727
7742
|
id: requiredString(row, "id"),
|
|
7728
7743
|
workId: requiredString(row, "work_id"),
|
|
7729
|
-
title: requiredString(row, "title"),
|
|
7744
|
+
title: this.aiConversationDisplayTitle(conversationId, requiredString(row, "title")),
|
|
7730
7745
|
isFavorite: booleanValue(row, "is_favorite"),
|
|
7731
7746
|
messageCount: numberValue(row, "message_count"),
|
|
7732
7747
|
preview: roleplayUserTurnDisplayText(requiredString(row, "preview")),
|