@musnows/scriverse 0.8.0 → 0.8.1
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 +22 -2
- package/dist/ai.js.map +1 -1
- package/dist/app.js +39 -10
- package/dist/app.js.map +1 -1
- package/dist/public/app.js +161 -53
- package/dist/public/index.html +4 -4
- package/dist/public/stream-typewriter.d.ts +1 -0
- package/dist/public/stream-typewriter.js +12 -0
- package/dist/public/styles.css +19 -13
- package/dist/public/work-permissions.d.ts +1 -1
- package/dist/public/work-permissions.js +13 -1
- package/dist/store.js +50 -10
- package/dist/store.js.map +1 -1
- package/dist/user-auth.js +34 -7
- package/dist/user-auth.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/work-permissions.js +13 -2
- package/dist/work-permissions.js.map +1 -1
- package/package.json +1 -1
package/dist/app.js
CHANGED
|
@@ -40,10 +40,14 @@ import { S3BackupManager } from "./s3-backup.js";
|
|
|
40
40
|
import { APP_VERSION } from "./version.js";
|
|
41
41
|
import { ReleaseUpdateChecker } from "./release-update.js";
|
|
42
42
|
import { DEFAULT_IMAGE_UPLOAD_LIMITS, formatUploadLimit } from "./upload-limits.js";
|
|
43
|
-
import { canReadWorkModule, canWriteWorkModule, fullWorkModulePermissions, proseReplacementPermissionModules } from "./work-permissions.js";
|
|
43
|
+
import { canReadWorkModule, canWriteWorkModule, chapterAnnotationPermissionModule, fullWorkModulePermissions, proseReplacementPermissionModules } from "./work-permissions.js";
|
|
44
44
|
import { CollaborationPresence, editorPageKey, entityEditorPageKey, modulePageKey, presencePageKinds } from "./collaboration-presence.js";
|
|
45
45
|
import { PresenceStore } from "./presence-store.js";
|
|
46
46
|
import { analysisTaskReadModules, clearSessionCookie, createCliApiScopeMiddleware, createUserSessionMiddleware, createWorkAuthorizationMiddleware, relationshipAnalysisReadModules, setSessionCookie, UserAuthService } from "./user-auth.js";
|
|
47
|
+
const chapterAnnotationKinds = ["note", "todo"];
|
|
48
|
+
function readableChapterAnnotationKinds(permissions) {
|
|
49
|
+
return chapterAnnotationKinds.filter((kind) => canReadWorkModule(permissions, chapterAnnotationPermissionModule(kind)));
|
|
50
|
+
}
|
|
47
51
|
const nonEmpty = z.string().trim().min(1);
|
|
48
52
|
const identifier = z.string().trim().min(1).max(200);
|
|
49
53
|
const idempotencyKeySchema = z.string().trim().min(16).max(128)
|
|
@@ -110,6 +114,8 @@ const memberRoleValueSchema = z.enum(["editor", "settings-editor", "viewer"]);
|
|
|
110
114
|
const moduleAccessSchema = z.enum(["none", "read", "write"]);
|
|
111
115
|
const modulePermissionsSchema = z.object({
|
|
112
116
|
prose: moduleAccessSchema,
|
|
117
|
+
comments: moduleAccessSchema.optional(),
|
|
118
|
+
todos: moduleAccessSchema.optional(),
|
|
113
119
|
drafts: moduleAccessSchema.optional(),
|
|
114
120
|
settings: moduleAccessSchema,
|
|
115
121
|
characters: moduleAccessSchema,
|
|
@@ -124,6 +130,8 @@ const modulePermissionsSchema = z.object({
|
|
|
124
130
|
"ai-settings": moduleAccessSchema
|
|
125
131
|
}).strict().transform((permissions) => ({
|
|
126
132
|
...permissions,
|
|
133
|
+
comments: permissions.comments ?? permissions.prose,
|
|
134
|
+
todos: permissions.todos ?? permissions.prose,
|
|
127
135
|
drafts: permissions.drafts ?? (permissions.prose === "write" && permissions.settings === "write"
|
|
128
136
|
? "write"
|
|
129
137
|
: permissions.prose === "none" || permissions.settings === "none" ? "none" : "read")
|
|
@@ -932,12 +940,18 @@ function redactAiConversationMessage(item, permissions) {
|
|
|
932
940
|
if (!message)
|
|
933
941
|
return item;
|
|
934
942
|
if (permissions.prose !== "none") {
|
|
935
|
-
if (permissions.characters !== "none")
|
|
936
|
-
return item;
|
|
937
943
|
const metadata = recordValue(message.metadata);
|
|
938
|
-
if (!metadata
|
|
944
|
+
if (!metadata)
|
|
945
|
+
return item;
|
|
946
|
+
const readableMetadata = { ...metadata };
|
|
947
|
+
if (permissions.characters === "none")
|
|
948
|
+
delete readableMetadata.mentionCharacterIds;
|
|
949
|
+
if (permissions.races === "none")
|
|
950
|
+
delete readableMetadata.mentionRaceIds;
|
|
951
|
+
if (permissions.organizations === "none")
|
|
952
|
+
delete readableMetadata.mentionOrganizationIds;
|
|
953
|
+
if (Object.keys(readableMetadata).length === Object.keys(metadata).length)
|
|
939
954
|
return item;
|
|
940
|
-
const { mentionCharacterIds: _mentionCharacterIds, ...readableMetadata } = metadata;
|
|
941
955
|
return { ...message, metadata: readableMetadata };
|
|
942
956
|
}
|
|
943
957
|
return {
|
|
@@ -1609,12 +1623,23 @@ export function createRuntime(options) {
|
|
|
1609
1623
|
const pagination = parsePagination(request.query);
|
|
1610
1624
|
data(response, pagination ? store.listChapterInsightsPage(request.params.chapterId, pagination) : store.listChapterInsights(request.params.chapterId));
|
|
1611
1625
|
});
|
|
1612
|
-
app.get("/api/chapters/:chapterId/
|
|
1626
|
+
app.get("/api/chapters/:chapterId/annotation-counts", (request, response) => {
|
|
1627
|
+
const permissions = requestPermissions(request);
|
|
1628
|
+
data(response, store.listChapterAnnotationCounts(request.params.chapterId, readableChapterAnnotationKinds(permissions)));
|
|
1629
|
+
});
|
|
1630
|
+
app.get("/api/chapters/:chapterId/annotations", (request, response) => {
|
|
1631
|
+
const line = request.query.line === undefined
|
|
1632
|
+
? undefined
|
|
1633
|
+
: parse(z.coerce.number().int().positive().max(100_000), request.query.line);
|
|
1634
|
+
const permissions = requestPermissions(request);
|
|
1635
|
+
data(response, store.listChapterAnnotations(request.params.chapterId, readableChapterAnnotationKinds(permissions), line));
|
|
1636
|
+
});
|
|
1613
1637
|
app.get("/api/works/:workId/chapter-annotations", (request, response) => {
|
|
1614
1638
|
const pagination = parsePagination(request.query);
|
|
1639
|
+
const permissions = requestPermissions(request, request.params.workId);
|
|
1615
1640
|
data(response, pagination
|
|
1616
|
-
? store.listWorkChapterAnnotationsPage(request.params.workId, pagination)
|
|
1617
|
-
: store.listWorkChapterAnnotations(request.params.workId));
|
|
1641
|
+
? store.listWorkChapterAnnotationsPage(request.params.workId, pagination, readableChapterAnnotationKinds(permissions))
|
|
1642
|
+
: store.listWorkChapterAnnotations(request.params.workId, readableChapterAnnotationKinds(permissions)));
|
|
1618
1643
|
});
|
|
1619
1644
|
app.post("/api/chapters/:chapterId/annotations", (request, response) => {
|
|
1620
1645
|
const input = parse(z.object({
|
|
@@ -2709,6 +2734,8 @@ export function createRuntime(options) {
|
|
|
2709
2734
|
...(resolvedScope.characterIds ?? []),
|
|
2710
2735
|
...(resolvedScope.mentionCharacterIds ?? [])
|
|
2711
2736
|
])];
|
|
2737
|
+
const mentionRaceIds = [...new Set(resolvedScope.raceIds ?? [])];
|
|
2738
|
+
const mentionOrganizationIds = [...new Set(resolvedScope.organizationIds ?? [])];
|
|
2712
2739
|
const begun = store.beginAiConversationStreamRequest({
|
|
2713
2740
|
workId: request.params.workId,
|
|
2714
2741
|
conversationId,
|
|
@@ -2719,9 +2746,11 @@ export function createRuntime(options) {
|
|
|
2719
2746
|
content: input.instruction,
|
|
2720
2747
|
citations,
|
|
2721
2748
|
...(input.currentMessageId ? { existingMessageId: input.currentMessageId } : {}),
|
|
2722
|
-
...((modelId || mentionCharacterIds.length) ? { metadata: {
|
|
2749
|
+
...((modelId || mentionCharacterIds.length || mentionRaceIds.length || mentionOrganizationIds.length) ? { metadata: {
|
|
2723
2750
|
...(modelId ? { modelId } : {}),
|
|
2724
|
-
...(mentionCharacterIds.length ? { mentionCharacterIds } : {})
|
|
2751
|
+
...(mentionCharacterIds.length ? { mentionCharacterIds } : {}),
|
|
2752
|
+
...(mentionRaceIds.length ? { mentionRaceIds } : {}),
|
|
2753
|
+
...(mentionOrganizationIds.length ? { mentionOrganizationIds } : {})
|
|
2725
2754
|
} } : {})
|
|
2726
2755
|
}
|
|
2727
2756
|
});
|