@the-focus-ai/artifacts 1.1.0 → 1.2.0
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/README.md +36 -0
- package/dist/src/cli.d.ts +2 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +79 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/diff.d.ts +16 -0
- package/dist/src/diff.d.ts.map +1 -0
- package/dist/src/diff.js +90 -0
- package/dist/src/diff.js.map +1 -0
- package/dist/src/http.d.ts +2 -0
- package/dist/src/http.d.ts.map +1 -1
- package/dist/src/http.js +21 -0
- package/dist/src/http.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/living-doc.d.ts +163 -0
- package/dist/src/living-doc.d.ts.map +1 -0
- package/dist/src/living-doc.js +566 -0
- package/dist/src/living-doc.js.map +1 -0
- package/dist/src/remote-api.d.ts +30 -0
- package/dist/src/remote-api.d.ts.map +1 -1
- package/dist/src/remote-api.js +59 -0
- package/dist/src/remote-api.js.map +1 -1
- package/dist/src/storage/living-doc-metadata.d.ts +159 -0
- package/dist/src/storage/living-doc-metadata.d.ts.map +1 -0
- package/dist/src/storage/living-doc-metadata.js +400 -0
- package/dist/src/storage/living-doc-metadata.js.map +1 -0
- package/package.json +10 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"living-doc.d.ts","sourceRoot":"","sources":["../../src/living-doc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
import { randomBytes, randomUUID } from "node:crypto";
|
|
2
|
+
import MarkdownIt from "markdown-it";
|
|
3
|
+
import { authenticatePublisherToken, } from "./auth.js";
|
|
4
|
+
import { formatUnifiedDiff } from "./diff.js";
|
|
5
|
+
import { createOpaqueId, defaultPublicBaseUrl } from "./publication.js";
|
|
6
|
+
export const livingDocViewPrefix = "/d";
|
|
7
|
+
export const livingDocReviewPrefix = "/r";
|
|
8
|
+
// The review endpoints are reachable by anyone holding a Review Link, so all
|
|
9
|
+
// text inputs are size-capped server-side.
|
|
10
|
+
export const maxLivingDocMarkdownBytes = 2 * 1024 * 1024;
|
|
11
|
+
export const maxLivingDocTextBytes = 64 * 1024;
|
|
12
|
+
function assertMarkdownWithinLimit(markdown) {
|
|
13
|
+
if (Buffer.byteLength(markdown, "utf8") > maxLivingDocMarkdownBytes) {
|
|
14
|
+
throw new Error("Living Doc Markdown exceeds the 2 MB limit.");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function assertTextWithinLimit(text, label) {
|
|
18
|
+
if (Buffer.byteLength(text, "utf8") > maxLivingDocTextBytes) {
|
|
19
|
+
throw new Error(`${label} exceeds the 64 KB limit.`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export async function publishLivingDoc(input) {
|
|
23
|
+
assertMarkdownWithinLimit(input.markdown);
|
|
24
|
+
const opaqueId = input.opaqueId ?? createOpaqueId();
|
|
25
|
+
const reviewId = input.reviewId ?? createReviewId();
|
|
26
|
+
const doc = await input.store.create({
|
|
27
|
+
opaqueId,
|
|
28
|
+
reviewId,
|
|
29
|
+
publisherEmail: input.publisherEmail,
|
|
30
|
+
currentMarkdown: input.markdown,
|
|
31
|
+
title: input.title ?? deriveMarkdownTitle(input.markdown),
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
opaqueId: doc.opaqueId,
|
|
35
|
+
reviewId: doc.reviewId,
|
|
36
|
+
title: doc.title,
|
|
37
|
+
viewUrl: livingDocViewUrl(input.publicBaseUrl, doc.opaqueId),
|
|
38
|
+
reviewUrl: livingDocReviewUrl(input.publicBaseUrl, doc.reviewId),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Cut an immutable Version of the Living Doc and return the current Markdown,
|
|
43
|
+
* a diff versus the previous Version, and the open Reviewer feedback. This is
|
|
44
|
+
* the turn boundary: each pull advances the version number.
|
|
45
|
+
*/
|
|
46
|
+
export async function pullLivingDocFeedback(input) {
|
|
47
|
+
const doc = await requireOwnedDoc(input.store, input.opaqueId, input.publisherEmail);
|
|
48
|
+
const previousVersion = doc.latestVersionNumber > 0
|
|
49
|
+
? await input.store.getVersion(doc.opaqueId, doc.latestVersionNumber)
|
|
50
|
+
: null;
|
|
51
|
+
const versionNumber = doc.latestVersionNumber + 1;
|
|
52
|
+
await input.store.addVersion({
|
|
53
|
+
id: randomUUID(),
|
|
54
|
+
livingDocId: doc.opaqueId,
|
|
55
|
+
versionNumber,
|
|
56
|
+
markdown: doc.currentMarkdown,
|
|
57
|
+
});
|
|
58
|
+
await input.store.setLatestVersionNumber(doc.opaqueId, versionNumber);
|
|
59
|
+
const openComments = await input.store.listComments(doc.opaqueId, {
|
|
60
|
+
status: "open",
|
|
61
|
+
});
|
|
62
|
+
const suggestions = await input.store.listSuggestions(doc.opaqueId);
|
|
63
|
+
return {
|
|
64
|
+
opaqueId: doc.opaqueId,
|
|
65
|
+
title: doc.title,
|
|
66
|
+
versionNumber,
|
|
67
|
+
previousVersionNumber: previousVersion?.versionNumber ?? null,
|
|
68
|
+
markdown: doc.currentMarkdown,
|
|
69
|
+
diffFromPreviousVersion: previousVersion
|
|
70
|
+
? formatUnifiedDiff(previousVersion.markdown, doc.currentMarkdown)
|
|
71
|
+
: null,
|
|
72
|
+
openComments: openComments
|
|
73
|
+
.filter((comment) => comment.origin === "reviewer")
|
|
74
|
+
.map(toPulledComment),
|
|
75
|
+
priorSuggestions: suggestions.map(toPulledSuggestion),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The agent's half of the round: post span-anchored Suggestions (never applied
|
|
80
|
+
* automatically) and replies to open Comments. Suggestions target the latest
|
|
81
|
+
* pulled Version.
|
|
82
|
+
*/
|
|
83
|
+
export async function respondToLivingDoc(input) {
|
|
84
|
+
const doc = await requireOwnedDoc(input.store, input.opaqueId, input.publisherEmail);
|
|
85
|
+
const versionNumber = doc.latestVersionNumber;
|
|
86
|
+
const createdSuggestions = [];
|
|
87
|
+
for (const suggestion of input.suggestions ?? []) {
|
|
88
|
+
if (!suggestion.anchorQuote) {
|
|
89
|
+
throw new Error("Each Suggestion requires an anchorQuote.");
|
|
90
|
+
}
|
|
91
|
+
assertTextWithinLimit(suggestion.anchorQuote, "Suggestion anchor");
|
|
92
|
+
assertTextWithinLimit(suggestion.replacement, "Suggestion replacement");
|
|
93
|
+
if (suggestion.note)
|
|
94
|
+
assertTextWithinLimit(suggestion.note, "Suggestion note");
|
|
95
|
+
const anchorStart = suggestion.anchorStart ?? null;
|
|
96
|
+
if (anchorStart !== null &&
|
|
97
|
+
(!Number.isInteger(anchorStart) || anchorStart < 0)) {
|
|
98
|
+
throw new Error("Suggestion anchorStart must be a non-negative integer offset.");
|
|
99
|
+
}
|
|
100
|
+
createdSuggestions.push(await input.store.addSuggestion({
|
|
101
|
+
id: randomUUID(),
|
|
102
|
+
livingDocId: doc.opaqueId,
|
|
103
|
+
versionNumber,
|
|
104
|
+
anchorQuote: suggestion.anchorQuote,
|
|
105
|
+
anchorStart,
|
|
106
|
+
anchorEnd: anchorStart === null
|
|
107
|
+
? null
|
|
108
|
+
: anchorStart + suggestion.anchorQuote.length,
|
|
109
|
+
replacement: suggestion.replacement,
|
|
110
|
+
note: suggestion.note ?? null,
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
const createdReplies = [];
|
|
114
|
+
for (const reply of input.replies ?? []) {
|
|
115
|
+
const parent = (await input.store.listComments(doc.opaqueId)).find((comment) => comment.id === reply.parentCommentId);
|
|
116
|
+
if (!parent) {
|
|
117
|
+
throw new Error(`Unknown parent Comment: ${reply.parentCommentId}`);
|
|
118
|
+
}
|
|
119
|
+
assertTextWithinLimit(reply.body, "Reply body");
|
|
120
|
+
createdReplies.push(await input.store.addComment({
|
|
121
|
+
id: randomUUID(),
|
|
122
|
+
livingDocId: doc.opaqueId,
|
|
123
|
+
origin: "agent",
|
|
124
|
+
body: reply.body,
|
|
125
|
+
anchorQuote: parent.anchorQuote,
|
|
126
|
+
anchorStart: parent.anchorStart,
|
|
127
|
+
anchorEnd: parent.anchorEnd,
|
|
128
|
+
parentCommentId: parent.id,
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
opaqueId: doc.opaqueId,
|
|
133
|
+
versionNumber,
|
|
134
|
+
createdSuggestions: createdSuggestions.map(toPulledSuggestion),
|
|
135
|
+
createdReplies: createdReplies.map(toPulledComment),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Removal disables the Living Doc: the View Link and Review Link both stop
|
|
140
|
+
* serving it. This is the kill switch for a leaked Review Link.
|
|
141
|
+
*/
|
|
142
|
+
export async function removeLivingDoc(input) {
|
|
143
|
+
const doc = await input.store.getByOpaqueId(input.opaqueId);
|
|
144
|
+
if (!doc || doc.status !== "active") {
|
|
145
|
+
return { opaqueId: input.opaqueId, status: "not-found" };
|
|
146
|
+
}
|
|
147
|
+
if (doc.publisherEmail !== input.publisherEmail) {
|
|
148
|
+
throw new Error("This Living Doc belongs to another Publisher.");
|
|
149
|
+
}
|
|
150
|
+
await input.store.markRemoved(input.opaqueId);
|
|
151
|
+
return { opaqueId: input.opaqueId, status: "removed" };
|
|
152
|
+
}
|
|
153
|
+
export async function getReviewState(store, reviewId) {
|
|
154
|
+
const doc = await requireActiveDocByReviewId(store, reviewId);
|
|
155
|
+
return {
|
|
156
|
+
opaqueId: doc.opaqueId,
|
|
157
|
+
title: doc.title,
|
|
158
|
+
versionNumber: doc.latestVersionNumber,
|
|
159
|
+
markdown: doc.currentMarkdown,
|
|
160
|
+
comments: await store.listComments(doc.opaqueId),
|
|
161
|
+
pendingSuggestions: await store.listSuggestions(doc.opaqueId, {
|
|
162
|
+
status: "pending",
|
|
163
|
+
}),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
export async function saveReviewMarkdown(store, reviewId, markdown) {
|
|
167
|
+
assertMarkdownWithinLimit(markdown);
|
|
168
|
+
const doc = await requireActiveDocByReviewId(store, reviewId);
|
|
169
|
+
const updated = await store.updateMarkdown(doc.opaqueId, markdown);
|
|
170
|
+
if (!updated)
|
|
171
|
+
throw new Error("Living Doc could not be updated.");
|
|
172
|
+
return updated;
|
|
173
|
+
}
|
|
174
|
+
export async function addReviewerComment(store, reviewId, input) {
|
|
175
|
+
const doc = await requireActiveDocByReviewId(store, reviewId);
|
|
176
|
+
if (!input.body)
|
|
177
|
+
throw new Error("A Comment requires a body.");
|
|
178
|
+
assertTextWithinLimit(input.body, "Comment body");
|
|
179
|
+
assertTextWithinLimit(input.anchorQuote, "Comment anchor");
|
|
180
|
+
return store.addComment({
|
|
181
|
+
id: randomUUID(),
|
|
182
|
+
livingDocId: doc.opaqueId,
|
|
183
|
+
origin: "reviewer",
|
|
184
|
+
body: input.body,
|
|
185
|
+
anchorQuote: input.anchorQuote,
|
|
186
|
+
anchorStart: input.anchorStart ?? null,
|
|
187
|
+
anchorEnd: input.anchorEnd ?? null,
|
|
188
|
+
author: input.author ?? null,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
export async function resolveReviewerComment(store, reviewId, commentId) {
|
|
192
|
+
const doc = await requireActiveDocByReviewId(store, reviewId);
|
|
193
|
+
const comments = await store.listComments(doc.opaqueId);
|
|
194
|
+
if (!comments.some((comment) => comment.id === commentId)) {
|
|
195
|
+
throw new Error("Unknown Comment.");
|
|
196
|
+
}
|
|
197
|
+
const updated = await store.setCommentStatus(commentId, "resolved");
|
|
198
|
+
if (!updated)
|
|
199
|
+
throw new Error("Comment could not be resolved.");
|
|
200
|
+
return updated;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Accept or reject an agent Suggestion. Accepting applies the change to the
|
|
204
|
+
* live Markdown at the anchored quote — when the quote matches more than one
|
|
205
|
+
* place, the occurrence nearest the Suggestion's anchorStart offset wins. If
|
|
206
|
+
* the quote no longer exists (the Reviewer edited past it), the Suggestion
|
|
207
|
+
* stays pending so its replacement text remains visible on the review surface
|
|
208
|
+
* instead of vanishing with an accepted-but-unapplied status.
|
|
209
|
+
*/
|
|
210
|
+
export async function decideSuggestion(store, reviewId, suggestionId, decision) {
|
|
211
|
+
const doc = await requireActiveDocByReviewId(store, reviewId);
|
|
212
|
+
const suggestion = (await store.listSuggestions(doc.opaqueId)).find((candidate) => candidate.id === suggestionId);
|
|
213
|
+
if (!suggestion)
|
|
214
|
+
throw new Error("Unknown Suggestion.");
|
|
215
|
+
if (suggestion.status !== "pending") {
|
|
216
|
+
throw new Error("Suggestion has already been decided.");
|
|
217
|
+
}
|
|
218
|
+
let markdown = doc.currentMarkdown;
|
|
219
|
+
const occurrences = findOccurrences(markdown, suggestion.anchorQuote);
|
|
220
|
+
let applied = false;
|
|
221
|
+
if (decision === "accepted") {
|
|
222
|
+
const index = pickOccurrence(occurrences, suggestion.anchorStart);
|
|
223
|
+
if (index !== null) {
|
|
224
|
+
markdown =
|
|
225
|
+
markdown.slice(0, index) +
|
|
226
|
+
suggestion.replacement +
|
|
227
|
+
markdown.slice(index + suggestion.anchorQuote.length);
|
|
228
|
+
await store.updateMarkdown(doc.opaqueId, markdown);
|
|
229
|
+
applied = true;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
return {
|
|
233
|
+
suggestion,
|
|
234
|
+
markdown,
|
|
235
|
+
applied: false,
|
|
236
|
+
occurrenceCount: occurrences.length,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
const updated = await store.setSuggestionStatus(suggestionId, decision);
|
|
241
|
+
if (!updated)
|
|
242
|
+
throw new Error("Suggestion could not be updated.");
|
|
243
|
+
return {
|
|
244
|
+
suggestion: updated,
|
|
245
|
+
markdown,
|
|
246
|
+
applied,
|
|
247
|
+
occurrenceCount: occurrences.length,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function findOccurrences(haystack, needle) {
|
|
251
|
+
const occurrences = [];
|
|
252
|
+
if (!needle)
|
|
253
|
+
return occurrences;
|
|
254
|
+
let index = haystack.indexOf(needle);
|
|
255
|
+
while (index >= 0) {
|
|
256
|
+
occurrences.push(index);
|
|
257
|
+
index = haystack.indexOf(needle, index + 1);
|
|
258
|
+
}
|
|
259
|
+
return occurrences;
|
|
260
|
+
}
|
|
261
|
+
function pickOccurrence(occurrences, anchorStart) {
|
|
262
|
+
if (occurrences.length === 0)
|
|
263
|
+
return null;
|
|
264
|
+
if (anchorStart === null)
|
|
265
|
+
return occurrences[0];
|
|
266
|
+
let best = occurrences[0];
|
|
267
|
+
for (const occurrence of occurrences) {
|
|
268
|
+
if (Math.abs(occurrence - anchorStart) < Math.abs(best - anchorStart)) {
|
|
269
|
+
best = occurrence;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return best;
|
|
273
|
+
}
|
|
274
|
+
export async function serveLivingDocViewRequest({ request, store, }) {
|
|
275
|
+
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
276
|
+
return textResponse("Method not allowed", 405);
|
|
277
|
+
}
|
|
278
|
+
const opaqueId = opaqueIdFromViewUrl(request.url);
|
|
279
|
+
if (!opaqueId)
|
|
280
|
+
return textResponse("Not found", 404);
|
|
281
|
+
const doc = await store.getByOpaqueId(opaqueId);
|
|
282
|
+
if (!doc || doc.status !== "active")
|
|
283
|
+
return textResponse("Not found", 404);
|
|
284
|
+
const wantsJson = new URL(request.url).searchParams.get("format") === "json" ||
|
|
285
|
+
(request.headers.get("accept") ?? "").includes("application/json");
|
|
286
|
+
if (wantsJson) {
|
|
287
|
+
return jsonResponse({
|
|
288
|
+
opaqueId: doc.opaqueId,
|
|
289
|
+
title: doc.title,
|
|
290
|
+
versionNumber: doc.latestVersionNumber,
|
|
291
|
+
markdown: doc.currentMarkdown,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
return new Response(request.method === "HEAD" ? null : renderViewPage(doc), {
|
|
295
|
+
status: 200,
|
|
296
|
+
headers: livingDocSafetyHeaders({
|
|
297
|
+
"content-type": "text/html; charset=utf-8",
|
|
298
|
+
}),
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
export async function handleLivingDocAgentApiRequest({ request, store, tokenStore, publicBaseUrl = defaultPublicBaseUrl, }) {
|
|
302
|
+
try {
|
|
303
|
+
const url = new URL(request.url);
|
|
304
|
+
const action = url.searchParams.get("action");
|
|
305
|
+
const token = bearerToken(request);
|
|
306
|
+
if (!token)
|
|
307
|
+
return jsonResponse({ error: "A valid Publisher Token is required" }, 401);
|
|
308
|
+
const publisherEmail = await authenticatePublisherToken({
|
|
309
|
+
token,
|
|
310
|
+
store: tokenStore,
|
|
311
|
+
});
|
|
312
|
+
if (request.method === "POST" && action === "publish") {
|
|
313
|
+
const body = (await request.json());
|
|
314
|
+
if (typeof body.markdown !== "string") {
|
|
315
|
+
return jsonResponse({ error: "markdown is required" }, 400);
|
|
316
|
+
}
|
|
317
|
+
return jsonResponse(await publishLivingDoc({
|
|
318
|
+
markdown: body.markdown,
|
|
319
|
+
title: body.title ?? undefined,
|
|
320
|
+
publisherEmail,
|
|
321
|
+
publicBaseUrl,
|
|
322
|
+
store,
|
|
323
|
+
}));
|
|
324
|
+
}
|
|
325
|
+
if (request.method === "POST" && action === "pull") {
|
|
326
|
+
const body = (await request.json());
|
|
327
|
+
if (!body.opaqueId)
|
|
328
|
+
return jsonResponse({ error: "opaqueId is required" }, 400);
|
|
329
|
+
return jsonResponse(await pullLivingDocFeedback({
|
|
330
|
+
opaqueId: body.opaqueId,
|
|
331
|
+
publisherEmail,
|
|
332
|
+
store,
|
|
333
|
+
}));
|
|
334
|
+
}
|
|
335
|
+
if (request.method === "POST" && action === "respond") {
|
|
336
|
+
const body = (await request.json());
|
|
337
|
+
if (!body.opaqueId)
|
|
338
|
+
return jsonResponse({ error: "opaqueId is required" }, 400);
|
|
339
|
+
return jsonResponse(await respondToLivingDoc({
|
|
340
|
+
opaqueId: body.opaqueId,
|
|
341
|
+
publisherEmail,
|
|
342
|
+
store,
|
|
343
|
+
suggestions: body.suggestions,
|
|
344
|
+
replies: body.replies,
|
|
345
|
+
}));
|
|
346
|
+
}
|
|
347
|
+
if (request.method === "POST" && action === "remove") {
|
|
348
|
+
const body = (await request.json());
|
|
349
|
+
if (!body.opaqueId)
|
|
350
|
+
return jsonResponse({ error: "opaqueId is required" }, 400);
|
|
351
|
+
return jsonResponse(await removeLivingDoc({
|
|
352
|
+
opaqueId: body.opaqueId,
|
|
353
|
+
publisherEmail,
|
|
354
|
+
store,
|
|
355
|
+
}));
|
|
356
|
+
}
|
|
357
|
+
if (request.method === "GET" && action === "list") {
|
|
358
|
+
return jsonResponse({
|
|
359
|
+
livingDocs: await store.listByPublisherEmail(publisherEmail),
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
return jsonResponse({ error: "Not found" }, 404);
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
return jsonResponse({ error: error instanceof Error ? error.message : String(error) }, 400);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
export async function handleReviewApiRequest({ request, store, }) {
|
|
369
|
+
try {
|
|
370
|
+
const url = new URL(request.url);
|
|
371
|
+
const reviewId = url.searchParams.get("review");
|
|
372
|
+
const action = url.searchParams.get("action") ?? "state";
|
|
373
|
+
if (!reviewId)
|
|
374
|
+
return jsonResponse({ error: "review is required" }, 400);
|
|
375
|
+
if (request.method === "GET" && action === "state") {
|
|
376
|
+
return jsonResponse(await getReviewState(store, reviewId), 200, {
|
|
377
|
+
"cache-control": "no-store",
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
if (request.method === "POST" && action === "save") {
|
|
381
|
+
const body = (await request.json());
|
|
382
|
+
if (typeof body.markdown !== "string") {
|
|
383
|
+
return jsonResponse({ error: "markdown is required" }, 400);
|
|
384
|
+
}
|
|
385
|
+
const updated = await saveReviewMarkdown(store, reviewId, body.markdown);
|
|
386
|
+
return jsonResponse({
|
|
387
|
+
versionNumber: updated.latestVersionNumber,
|
|
388
|
+
updatedAt: updated.updatedAt,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
if (request.method === "POST" && action === "comment") {
|
|
392
|
+
const body = (await request.json());
|
|
393
|
+
return jsonResponse(await addReviewerComment(store, reviewId, {
|
|
394
|
+
anchorQuote: body.anchorQuote ?? "",
|
|
395
|
+
body: body.body ?? "",
|
|
396
|
+
anchorStart: body.anchorStart,
|
|
397
|
+
anchorEnd: body.anchorEnd,
|
|
398
|
+
author: body.author,
|
|
399
|
+
}));
|
|
400
|
+
}
|
|
401
|
+
if (request.method === "POST" && action === "resolve-comment") {
|
|
402
|
+
const body = (await request.json());
|
|
403
|
+
if (!body.commentId)
|
|
404
|
+
return jsonResponse({ error: "commentId is required" }, 400);
|
|
405
|
+
return jsonResponse(await resolveReviewerComment(store, reviewId, body.commentId));
|
|
406
|
+
}
|
|
407
|
+
if (request.method === "POST" && action === "decide") {
|
|
408
|
+
const body = (await request.json());
|
|
409
|
+
if (!body.suggestionId || !body.decision) {
|
|
410
|
+
return jsonResponse({ error: "suggestionId and decision are required" }, 400);
|
|
411
|
+
}
|
|
412
|
+
return jsonResponse(await decideSuggestion(store, reviewId, body.suggestionId, body.decision));
|
|
413
|
+
}
|
|
414
|
+
return jsonResponse({ error: "Not found" }, 404);
|
|
415
|
+
}
|
|
416
|
+
catch (error) {
|
|
417
|
+
return jsonResponse({ error: error instanceof Error ? error.message : String(error) }, 400);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
// --- URLs & helpers ----------------------------------------------------------
|
|
421
|
+
export function livingDocViewUrl(publicBaseUrl, opaqueId) {
|
|
422
|
+
return absoluteLivingDocUrl(publicBaseUrl, `${livingDocViewPrefix}/${opaqueId}`);
|
|
423
|
+
}
|
|
424
|
+
export function livingDocReviewUrl(publicBaseUrl, reviewId) {
|
|
425
|
+
return absoluteLivingDocUrl(publicBaseUrl, `${livingDocReviewPrefix}/${reviewId}`);
|
|
426
|
+
}
|
|
427
|
+
export function opaqueIdFromViewUrl(url) {
|
|
428
|
+
const { pathname } = new URL(url);
|
|
429
|
+
const match = pathname.match(/^\/d\/([^/]+)\/?$/);
|
|
430
|
+
return match?.[1] ?? null;
|
|
431
|
+
}
|
|
432
|
+
export function reviewIdFromReviewUrl(url) {
|
|
433
|
+
const { pathname } = new URL(url);
|
|
434
|
+
const match = pathname.match(/^\/r\/([^/]+)\/?$/);
|
|
435
|
+
return match?.[1] ?? null;
|
|
436
|
+
}
|
|
437
|
+
export function opaqueIdFromViewReference(reference) {
|
|
438
|
+
const trimmed = reference.trim();
|
|
439
|
+
if (/^https?:\/\//.test(trimmed)) {
|
|
440
|
+
const opaqueId = opaqueIdFromViewUrl(trimmed);
|
|
441
|
+
if (opaqueId)
|
|
442
|
+
return opaqueId;
|
|
443
|
+
throw new Error(`Not a Living Doc View URL: ${reference}`);
|
|
444
|
+
}
|
|
445
|
+
return trimmed;
|
|
446
|
+
}
|
|
447
|
+
export function livingDocSafetyHeaders(headers = {}) {
|
|
448
|
+
return new Headers({
|
|
449
|
+
"cache-control": "no-store",
|
|
450
|
+
"x-robots-tag": "noindex, nofollow",
|
|
451
|
+
...headers,
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
export function deriveMarkdownTitle(markdown) {
|
|
455
|
+
for (const line of markdown.split("\n")) {
|
|
456
|
+
const heading = line.match(/^#{1,6}\s+(.+?)\s*$/);
|
|
457
|
+
if (heading)
|
|
458
|
+
return heading[1].slice(0, 200);
|
|
459
|
+
if (line.trim().length > 0)
|
|
460
|
+
return line.trim().slice(0, 200);
|
|
461
|
+
}
|
|
462
|
+
return null;
|
|
463
|
+
}
|
|
464
|
+
function absoluteLivingDocUrl(publicBaseUrl, path) {
|
|
465
|
+
const base = publicBaseUrl.endsWith("/")
|
|
466
|
+
? publicBaseUrl
|
|
467
|
+
: `${publicBaseUrl}/`;
|
|
468
|
+
return new URL(path.replace(/^\/+/, ""), base).toString();
|
|
469
|
+
}
|
|
470
|
+
async function requireOwnedDoc(store, opaqueId, publisherEmail) {
|
|
471
|
+
const doc = await store.getByOpaqueId(opaqueId);
|
|
472
|
+
if (!doc || doc.status !== "active")
|
|
473
|
+
throw new Error("Living Doc not found.");
|
|
474
|
+
if (doc.publisherEmail !== publisherEmail) {
|
|
475
|
+
throw new Error("This Living Doc belongs to another Publisher.");
|
|
476
|
+
}
|
|
477
|
+
return doc;
|
|
478
|
+
}
|
|
479
|
+
async function requireActiveDocByReviewId(store, reviewId) {
|
|
480
|
+
const doc = await store.getByReviewId(reviewId);
|
|
481
|
+
if (!doc || doc.status !== "active")
|
|
482
|
+
throw new Error("Living Doc not found.");
|
|
483
|
+
return doc;
|
|
484
|
+
}
|
|
485
|
+
function toPulledComment(comment) {
|
|
486
|
+
return {
|
|
487
|
+
id: comment.id,
|
|
488
|
+
origin: comment.origin,
|
|
489
|
+
author: comment.author,
|
|
490
|
+
anchorQuote: comment.anchorQuote,
|
|
491
|
+
body: comment.body,
|
|
492
|
+
createdAt: comment.createdAt.toISOString(),
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
function toPulledSuggestion(suggestion) {
|
|
496
|
+
return {
|
|
497
|
+
id: suggestion.id,
|
|
498
|
+
anchorQuote: suggestion.anchorQuote,
|
|
499
|
+
anchorStart: suggestion.anchorStart,
|
|
500
|
+
replacement: suggestion.replacement,
|
|
501
|
+
note: suggestion.note,
|
|
502
|
+
status: suggestion.status,
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
function bearerToken(request) {
|
|
506
|
+
const header = request.headers.get("authorization");
|
|
507
|
+
const match = header?.match(/^Bearer\s+(.+)$/i);
|
|
508
|
+
return match?.[1] ?? null;
|
|
509
|
+
}
|
|
510
|
+
function jsonResponse(body, status = 200, extraHeaders = {}) {
|
|
511
|
+
return new Response(JSON.stringify(body), {
|
|
512
|
+
status,
|
|
513
|
+
headers: { "content-type": "application/json", ...extraHeaders },
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
function textResponse(message, status) {
|
|
517
|
+
return new Response(message, {
|
|
518
|
+
status,
|
|
519
|
+
headers: livingDocSafetyHeaders(),
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
export function createReviewId() {
|
|
523
|
+
return randomBytes(24).toString("base64url");
|
|
524
|
+
}
|
|
525
|
+
// html:false keeps raw HTML in reviewer-editable Markdown from reaching the page.
|
|
526
|
+
const viewPageMarkdownRenderer = new MarkdownIt({
|
|
527
|
+
html: false,
|
|
528
|
+
linkify: true,
|
|
529
|
+
breaks: false,
|
|
530
|
+
});
|
|
531
|
+
function renderViewPage(doc) {
|
|
532
|
+
const title = escapeHtml(doc.title ?? "Living Doc");
|
|
533
|
+
const content = viewPageMarkdownRenderer.render(doc.currentMarkdown || "");
|
|
534
|
+
return `<!doctype html>
|
|
535
|
+
<html lang="en">
|
|
536
|
+
<head>
|
|
537
|
+
<meta charset="utf-8" />
|
|
538
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
539
|
+
<meta name="robots" content="noindex, nofollow" />
|
|
540
|
+
<title>${title}</title>
|
|
541
|
+
<style>
|
|
542
|
+
:root { color-scheme: light dark; }
|
|
543
|
+
body { margin: 0; font: 16px/1.6 system-ui, sans-serif; }
|
|
544
|
+
main { max-width: 46rem; margin: 0 auto; padding: 3rem 1.5rem 6rem; }
|
|
545
|
+
pre { overflow-x: auto; padding: 1rem; background: rgba(127,127,127,0.12); border-radius: 8px; }
|
|
546
|
+
code { font-family: ui-monospace, monospace; }
|
|
547
|
+
img { max-width: 100%; }
|
|
548
|
+
.doc-meta { color: #888; font-size: 0.85rem; margin-bottom: 2rem; }
|
|
549
|
+
</style>
|
|
550
|
+
</head>
|
|
551
|
+
<body>
|
|
552
|
+
<main>
|
|
553
|
+
<div class="doc-meta">Living Doc · read-only view</div>
|
|
554
|
+
<article id="content">${content}</article>
|
|
555
|
+
</main>
|
|
556
|
+
</body>
|
|
557
|
+
</html>`;
|
|
558
|
+
}
|
|
559
|
+
function escapeHtml(value) {
|
|
560
|
+
return value
|
|
561
|
+
.replace(/&/g, "&")
|
|
562
|
+
.replace(/</g, "<")
|
|
563
|
+
.replace(/>/g, ">")
|
|
564
|
+
.replace(/"/g, """);
|
|
565
|
+
}
|
|
566
|
+
//# sourceMappingURL=living-doc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"living-doc.js","sourceRoot":"","sources":["../../src/living-doc.ts"],"names":[],"mappings":"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"}
|
package/dist/src/remote-api.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { PublishLivingDocResult, PullLivingDocResult, RemoveLivingDocResult, RespondLivingDocResult, RespondReplyInput, RespondSuggestionInput } from "./living-doc.js";
|
|
1
2
|
import { type PreparedArtifactUpload, type PublishArtifactResult, type RemovePublicationResult } from "./publication.js";
|
|
3
|
+
import type { LivingDoc } from "./storage/living-doc-metadata.js";
|
|
2
4
|
import type { PublicationMetadata } from "./storage/publication-metadata.js";
|
|
3
5
|
export interface ArtifactApiClient {
|
|
4
6
|
whoami(token: string): Promise<string>;
|
|
@@ -27,5 +29,33 @@ export declare class HttpArtifactApiClient implements ArtifactApiClient {
|
|
|
27
29
|
}>;
|
|
28
30
|
private request;
|
|
29
31
|
}
|
|
32
|
+
export interface LivingDocApiClient {
|
|
33
|
+
publishDoc(token: string, markdown: string, options?: {
|
|
34
|
+
title?: string;
|
|
35
|
+
}): Promise<PublishLivingDocResult>;
|
|
36
|
+
pullDoc(token: string, opaqueId: string): Promise<PullLivingDocResult>;
|
|
37
|
+
respondDoc(token: string, opaqueId: string, body: {
|
|
38
|
+
suggestions?: RespondSuggestionInput[];
|
|
39
|
+
replies?: RespondReplyInput[];
|
|
40
|
+
}): Promise<RespondLivingDocResult>;
|
|
41
|
+
listDocs(token: string): Promise<LivingDoc[]>;
|
|
42
|
+
removeDoc(token: string, opaqueId: string): Promise<RemoveLivingDocResult>;
|
|
43
|
+
}
|
|
44
|
+
export declare class HttpLivingDocApiClient implements LivingDocApiClient {
|
|
45
|
+
private readonly publicBaseUrl;
|
|
46
|
+
private readonly fetchImpl;
|
|
47
|
+
constructor(publicBaseUrl?: string, fetchImpl?: typeof fetch);
|
|
48
|
+
publishDoc(token: string, markdown: string, options?: {
|
|
49
|
+
title?: string;
|
|
50
|
+
}): Promise<PublishLivingDocResult>;
|
|
51
|
+
pullDoc(token: string, opaqueId: string): Promise<PullLivingDocResult>;
|
|
52
|
+
respondDoc(token: string, opaqueId: string, body: {
|
|
53
|
+
suggestions?: RespondSuggestionInput[];
|
|
54
|
+
replies?: RespondReplyInput[];
|
|
55
|
+
}): Promise<RespondLivingDocResult>;
|
|
56
|
+
listDocs(token: string): Promise<LivingDoc[]>;
|
|
57
|
+
removeDoc(token: string, opaqueId: string): Promise<RemoveLivingDocResult>;
|
|
58
|
+
private request;
|
|
59
|
+
}
|
|
30
60
|
export declare function artifactUploadForm(upload: PreparedArtifactUpload, options?: RemotePublishOptions): FormData;
|
|
31
61
|
//# sourceMappingURL=remote-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-api.d.ts","sourceRoot":"","sources":["../../src/remote-api.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,sBAAsB,EAE3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpD,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACpC,OAAO,CACL,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,GAAG;QAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,qBAAsB,YAAW,iBAAiB;IAE3D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,aAAa,GAAE,MAA6B,EAC5C,SAAS,GAAE,OAAO,KAAa;IAG5C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAQnD,MAAM,CACV,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,uBAAuB,CAAC;IAS7B,OAAO,CACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,qBAAqB,GAAG;QAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;YAoB1D,OAAO;CAoBtB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,EAC9B,OAAO,GAAE,oBAAyB,GACjC,QAAQ,CAwBV"}
|
|
1
|
+
{"version":3,"file":"remote-api.d.ts","sourceRoot":"","sources":["../../src/remote-api.ts"],"names":[],"mappings":"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"}
|