@the-focus-ai/artifacts 1.1.0 → 1.2.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/README.md +47 -0
- package/dist/src/cli.d.ts +2 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +107 -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/doc-asset-collect.d.ts +29 -0
- package/dist/src/doc-asset-collect.d.ts.map +1 -0
- package/dist/src/doc-asset-collect.js +112 -0
- package/dist/src/doc-asset-collect.js.map +1 -0
- package/dist/src/doc-asset-rewrite.d.ts +6 -0
- package/dist/src/doc-asset-rewrite.d.ts.map +1 -0
- package/dist/src/doc-asset-rewrite.js +15 -0
- package/dist/src/doc-asset-rewrite.js.map +1 -0
- package/dist/src/front-matter.d.ts +36 -0
- package/dist/src/front-matter.d.ts.map +1 -0
- package/dist/src/front-matter.js +105 -0
- package/dist/src/front-matter.js.map +1 -0
- package/dist/src/http.d.ts +5 -0
- package/dist/src/http.d.ts.map +1 -1
- package/dist/src/http.js +62 -0
- package/dist/src/http.js.map +1 -1
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/living-doc.d.ts +184 -0
- package/dist/src/living-doc.d.ts.map +1 -0
- package/dist/src/living-doc.js +656 -0
- package/dist/src/living-doc.js.map +1 -0
- package/dist/src/remote-api.d.ts +38 -0
- package/dist/src/remote-api.d.ts.map +1 -1
- package/dist/src/remote-api.js +63 -0
- package/dist/src/remote-api.js.map +1 -1
- package/dist/src/storage/doc-asset-content.d.ts +55 -0
- package/dist/src/storage/doc-asset-content.d.ts.map +1 -0
- package/dist/src/storage/doc-asset-content.js +145 -0
- package/dist/src/storage/doc-asset-content.js.map +1 -0
- package/dist/src/storage/living-doc-metadata.d.ts +165 -0
- package/dist/src/storage/living-doc-metadata.d.ts.map +1 -0
- package/dist/src/storage/living-doc-metadata.js +416 -0
- package/dist/src/storage/living-doc-metadata.js.map +1 -0
- package/package.json +17 -2
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
import { neon } from "@neondatabase/serverless";
|
|
2
|
+
export class InMemoryLivingDocMetadataStore {
|
|
3
|
+
docs = new Map();
|
|
4
|
+
versions = [];
|
|
5
|
+
comments = [];
|
|
6
|
+
suggestions = [];
|
|
7
|
+
now;
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
this.now = options.now ?? (() => new Date());
|
|
10
|
+
}
|
|
11
|
+
async create(input) {
|
|
12
|
+
const timestamp = this.now();
|
|
13
|
+
const doc = {
|
|
14
|
+
opaqueId: input.opaqueId,
|
|
15
|
+
reviewId: input.reviewId,
|
|
16
|
+
publisherEmail: input.publisherEmail,
|
|
17
|
+
status: input.status ?? "active",
|
|
18
|
+
title: input.title ?? null,
|
|
19
|
+
currentMarkdown: input.currentMarkdown,
|
|
20
|
+
latestVersionNumber: 0,
|
|
21
|
+
createdAt: timestamp,
|
|
22
|
+
updatedAt: timestamp,
|
|
23
|
+
removedAt: null,
|
|
24
|
+
};
|
|
25
|
+
this.docs.set(doc.opaqueId, doc);
|
|
26
|
+
return cloneDoc(doc);
|
|
27
|
+
}
|
|
28
|
+
async getByOpaqueId(opaqueId) {
|
|
29
|
+
const doc = this.docs.get(opaqueId);
|
|
30
|
+
return doc ? cloneDoc(doc) : null;
|
|
31
|
+
}
|
|
32
|
+
async getByReviewId(reviewId) {
|
|
33
|
+
const doc = [...this.docs.values()].find((d) => d.reviewId === reviewId);
|
|
34
|
+
return doc ? cloneDoc(doc) : null;
|
|
35
|
+
}
|
|
36
|
+
async updateMarkdown(opaqueId, markdown, options) {
|
|
37
|
+
const doc = this.docs.get(opaqueId);
|
|
38
|
+
if (!doc)
|
|
39
|
+
return null;
|
|
40
|
+
const next = {
|
|
41
|
+
...doc,
|
|
42
|
+
currentMarkdown: markdown,
|
|
43
|
+
...(options && Object.hasOwn(options, "title")
|
|
44
|
+
? { title: options.title ?? null }
|
|
45
|
+
: {}),
|
|
46
|
+
updatedAt: this.now(),
|
|
47
|
+
};
|
|
48
|
+
this.docs.set(opaqueId, next);
|
|
49
|
+
return cloneDoc(next);
|
|
50
|
+
}
|
|
51
|
+
async setLatestVersionNumber(opaqueId, versionNumber) {
|
|
52
|
+
const doc = this.docs.get(opaqueId);
|
|
53
|
+
if (!doc)
|
|
54
|
+
return null;
|
|
55
|
+
const next = {
|
|
56
|
+
...doc,
|
|
57
|
+
latestVersionNumber: versionNumber,
|
|
58
|
+
updatedAt: this.now(),
|
|
59
|
+
};
|
|
60
|
+
this.docs.set(opaqueId, next);
|
|
61
|
+
return cloneDoc(next);
|
|
62
|
+
}
|
|
63
|
+
async markRemoved(opaqueId) {
|
|
64
|
+
const doc = this.docs.get(opaqueId);
|
|
65
|
+
if (!doc)
|
|
66
|
+
return null;
|
|
67
|
+
const timestamp = this.now();
|
|
68
|
+
const next = {
|
|
69
|
+
...doc,
|
|
70
|
+
status: "removed",
|
|
71
|
+
removedAt: timestamp,
|
|
72
|
+
updatedAt: timestamp,
|
|
73
|
+
};
|
|
74
|
+
this.docs.set(opaqueId, next);
|
|
75
|
+
return cloneDoc(next);
|
|
76
|
+
}
|
|
77
|
+
async listByPublisherEmail(publisherEmail) {
|
|
78
|
+
return [...this.docs.values()]
|
|
79
|
+
.filter((doc) => doc.publisherEmail === publisherEmail)
|
|
80
|
+
.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime())
|
|
81
|
+
.map(cloneDoc);
|
|
82
|
+
}
|
|
83
|
+
async addVersion(input) {
|
|
84
|
+
const version = {
|
|
85
|
+
id: input.id,
|
|
86
|
+
livingDocId: input.livingDocId,
|
|
87
|
+
versionNumber: input.versionNumber,
|
|
88
|
+
markdown: input.markdown,
|
|
89
|
+
createdAt: this.now(),
|
|
90
|
+
};
|
|
91
|
+
this.versions.push(version);
|
|
92
|
+
return cloneVersion(version);
|
|
93
|
+
}
|
|
94
|
+
async getVersion(opaqueId, versionNumber) {
|
|
95
|
+
const version = this.versions.find((v) => v.livingDocId === opaqueId && v.versionNumber === versionNumber);
|
|
96
|
+
return version ? cloneVersion(version) : null;
|
|
97
|
+
}
|
|
98
|
+
async addComment(input) {
|
|
99
|
+
const comment = {
|
|
100
|
+
id: input.id,
|
|
101
|
+
livingDocId: input.livingDocId,
|
|
102
|
+
origin: input.origin,
|
|
103
|
+
author: input.author ?? null,
|
|
104
|
+
anchorQuote: input.anchorQuote,
|
|
105
|
+
anchorStart: input.anchorStart ?? null,
|
|
106
|
+
anchorEnd: input.anchorEnd ?? null,
|
|
107
|
+
body: input.body,
|
|
108
|
+
parentCommentId: input.parentCommentId ?? null,
|
|
109
|
+
status: "open",
|
|
110
|
+
createdAt: this.now(),
|
|
111
|
+
};
|
|
112
|
+
this.comments.push(comment);
|
|
113
|
+
return cloneComment(comment);
|
|
114
|
+
}
|
|
115
|
+
async listComments(opaqueId, options = {}) {
|
|
116
|
+
return this.comments
|
|
117
|
+
.filter((comment) => comment.livingDocId === opaqueId &&
|
|
118
|
+
(options.status ? comment.status === options.status : true))
|
|
119
|
+
.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())
|
|
120
|
+
.map(cloneComment);
|
|
121
|
+
}
|
|
122
|
+
async setCommentStatus(commentId, status) {
|
|
123
|
+
const comment = this.comments.find((c) => c.id === commentId);
|
|
124
|
+
if (!comment)
|
|
125
|
+
return null;
|
|
126
|
+
comment.status = status;
|
|
127
|
+
return cloneComment(comment);
|
|
128
|
+
}
|
|
129
|
+
async addSuggestion(input) {
|
|
130
|
+
const suggestion = {
|
|
131
|
+
id: input.id,
|
|
132
|
+
livingDocId: input.livingDocId,
|
|
133
|
+
versionNumber: input.versionNumber,
|
|
134
|
+
anchorQuote: input.anchorQuote,
|
|
135
|
+
anchorStart: input.anchorStart ?? null,
|
|
136
|
+
anchorEnd: input.anchorEnd ?? null,
|
|
137
|
+
replacement: input.replacement,
|
|
138
|
+
note: input.note ?? null,
|
|
139
|
+
status: "pending",
|
|
140
|
+
createdAt: this.now(),
|
|
141
|
+
resolvedAt: null,
|
|
142
|
+
};
|
|
143
|
+
this.suggestions.push(suggestion);
|
|
144
|
+
return cloneSuggestion(suggestion);
|
|
145
|
+
}
|
|
146
|
+
async listSuggestions(opaqueId, options = {}) {
|
|
147
|
+
return this.suggestions
|
|
148
|
+
.filter((suggestion) => suggestion.livingDocId === opaqueId &&
|
|
149
|
+
(options.status ? suggestion.status === options.status : true))
|
|
150
|
+
.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())
|
|
151
|
+
.map(cloneSuggestion);
|
|
152
|
+
}
|
|
153
|
+
async setSuggestionStatus(suggestionId, status) {
|
|
154
|
+
const suggestion = this.suggestions.find((s) => s.id === suggestionId);
|
|
155
|
+
if (!suggestion)
|
|
156
|
+
return null;
|
|
157
|
+
suggestion.status = status;
|
|
158
|
+
suggestion.resolvedAt = status === "pending" ? null : this.now();
|
|
159
|
+
return cloneSuggestion(suggestion);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
export class PostgresLivingDocMetadataStore {
|
|
163
|
+
sql;
|
|
164
|
+
now;
|
|
165
|
+
constructor(sql, options = {}) {
|
|
166
|
+
this.sql = sql;
|
|
167
|
+
this.now = options.now ?? (() => new Date());
|
|
168
|
+
}
|
|
169
|
+
async create(input) {
|
|
170
|
+
const timestamp = this.now();
|
|
171
|
+
const result = await this.sql.query(`
|
|
172
|
+
insert into living_docs (
|
|
173
|
+
opaque_id, review_id, publisher_email, status, title,
|
|
174
|
+
current_markdown, latest_version_number, created_at, updated_at
|
|
175
|
+
) values ($1, $2, $3, $4, $5, $6, 0, $7, $7)
|
|
176
|
+
returning *
|
|
177
|
+
`, [
|
|
178
|
+
input.opaqueId,
|
|
179
|
+
input.reviewId,
|
|
180
|
+
input.publisherEmail,
|
|
181
|
+
input.status ?? "active",
|
|
182
|
+
input.title ?? null,
|
|
183
|
+
input.currentMarkdown,
|
|
184
|
+
timestamp,
|
|
185
|
+
]);
|
|
186
|
+
return mapDocRow(result.rows[0]);
|
|
187
|
+
}
|
|
188
|
+
async getByOpaqueId(opaqueId) {
|
|
189
|
+
const result = await this.sql.query("select * from living_docs where opaque_id = $1", [opaqueId]);
|
|
190
|
+
return result.rows[0] ? mapDocRow(result.rows[0]) : null;
|
|
191
|
+
}
|
|
192
|
+
async getByReviewId(reviewId) {
|
|
193
|
+
const result = await this.sql.query("select * from living_docs where review_id = $1", [reviewId]);
|
|
194
|
+
return result.rows[0] ? mapDocRow(result.rows[0]) : null;
|
|
195
|
+
}
|
|
196
|
+
async updateMarkdown(opaqueId, markdown, options) {
|
|
197
|
+
const result = await this.sql.query(Object.hasOwn(options ?? {}, "title")
|
|
198
|
+
? `
|
|
199
|
+
update living_docs
|
|
200
|
+
set current_markdown = $2, title = $3, updated_at = $4
|
|
201
|
+
where opaque_id = $1
|
|
202
|
+
returning *
|
|
203
|
+
`
|
|
204
|
+
: `
|
|
205
|
+
update living_docs
|
|
206
|
+
set current_markdown = $2, updated_at = $3
|
|
207
|
+
where opaque_id = $1
|
|
208
|
+
returning *
|
|
209
|
+
`, Object.hasOwn(options ?? {}, "title")
|
|
210
|
+
? [opaqueId, markdown, options?.title ?? null, this.now()]
|
|
211
|
+
: [opaqueId, markdown, this.now()]);
|
|
212
|
+
return result.rows[0] ? mapDocRow(result.rows[0]) : null;
|
|
213
|
+
}
|
|
214
|
+
async setLatestVersionNumber(opaqueId, versionNumber) {
|
|
215
|
+
const result = await this.sql.query(`
|
|
216
|
+
update living_docs
|
|
217
|
+
set latest_version_number = $2, updated_at = $3
|
|
218
|
+
where opaque_id = $1
|
|
219
|
+
returning *
|
|
220
|
+
`, [opaqueId, versionNumber, this.now()]);
|
|
221
|
+
return result.rows[0] ? mapDocRow(result.rows[0]) : null;
|
|
222
|
+
}
|
|
223
|
+
async markRemoved(opaqueId) {
|
|
224
|
+
const timestamp = this.now();
|
|
225
|
+
const result = await this.sql.query(`
|
|
226
|
+
update living_docs
|
|
227
|
+
set status = 'removed', removed_at = $2, updated_at = $2
|
|
228
|
+
where opaque_id = $1
|
|
229
|
+
returning *
|
|
230
|
+
`, [opaqueId, timestamp]);
|
|
231
|
+
return result.rows[0] ? mapDocRow(result.rows[0]) : null;
|
|
232
|
+
}
|
|
233
|
+
async listByPublisherEmail(publisherEmail) {
|
|
234
|
+
const result = await this.sql.query("select * from living_docs where publisher_email = $1 order by updated_at desc", [publisherEmail]);
|
|
235
|
+
return result.rows.map(mapDocRow);
|
|
236
|
+
}
|
|
237
|
+
async addVersion(input) {
|
|
238
|
+
const result = await this.sql.query(`
|
|
239
|
+
insert into living_doc_versions (
|
|
240
|
+
id, living_doc_id, version_number, markdown, created_at
|
|
241
|
+
) values ($1, $2, $3, $4, $5)
|
|
242
|
+
returning *
|
|
243
|
+
`, [
|
|
244
|
+
input.id,
|
|
245
|
+
input.livingDocId,
|
|
246
|
+
input.versionNumber,
|
|
247
|
+
input.markdown,
|
|
248
|
+
this.now(),
|
|
249
|
+
]);
|
|
250
|
+
return mapVersionRow(result.rows[0]);
|
|
251
|
+
}
|
|
252
|
+
async getVersion(opaqueId, versionNumber) {
|
|
253
|
+
const result = await this.sql.query("select * from living_doc_versions where living_doc_id = $1 and version_number = $2", [opaqueId, versionNumber]);
|
|
254
|
+
return result.rows[0] ? mapVersionRow(result.rows[0]) : null;
|
|
255
|
+
}
|
|
256
|
+
async addComment(input) {
|
|
257
|
+
const result = await this.sql.query(`
|
|
258
|
+
insert into living_doc_comments (
|
|
259
|
+
id, living_doc_id, origin, author, anchor_quote,
|
|
260
|
+
anchor_start, anchor_end, body, parent_comment_id, status, created_at
|
|
261
|
+
) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, 'open', $10)
|
|
262
|
+
returning *
|
|
263
|
+
`, [
|
|
264
|
+
input.id,
|
|
265
|
+
input.livingDocId,
|
|
266
|
+
input.origin,
|
|
267
|
+
input.author ?? null,
|
|
268
|
+
input.anchorQuote,
|
|
269
|
+
input.anchorStart ?? null,
|
|
270
|
+
input.anchorEnd ?? null,
|
|
271
|
+
input.body,
|
|
272
|
+
input.parentCommentId ?? null,
|
|
273
|
+
this.now(),
|
|
274
|
+
]);
|
|
275
|
+
return mapCommentRow(result.rows[0]);
|
|
276
|
+
}
|
|
277
|
+
async listComments(opaqueId, options = {}) {
|
|
278
|
+
const result = options.status
|
|
279
|
+
? await this.sql.query("select * from living_doc_comments where living_doc_id = $1 and status = $2 order by created_at", [opaqueId, options.status])
|
|
280
|
+
: await this.sql.query("select * from living_doc_comments where living_doc_id = $1 order by created_at", [opaqueId]);
|
|
281
|
+
return result.rows.map(mapCommentRow);
|
|
282
|
+
}
|
|
283
|
+
async setCommentStatus(commentId, status) {
|
|
284
|
+
const result = await this.sql.query("update living_doc_comments set status = $2 where id = $1 returning *", [commentId, status]);
|
|
285
|
+
return result.rows[0] ? mapCommentRow(result.rows[0]) : null;
|
|
286
|
+
}
|
|
287
|
+
async addSuggestion(input) {
|
|
288
|
+
const result = await this.sql.query(`
|
|
289
|
+
insert into living_doc_suggestions (
|
|
290
|
+
id, living_doc_id, version_number, anchor_quote, anchor_start,
|
|
291
|
+
anchor_end, replacement, note, status, created_at
|
|
292
|
+
) values ($1, $2, $3, $4, $5, $6, $7, $8, 'pending', $9)
|
|
293
|
+
returning *
|
|
294
|
+
`, [
|
|
295
|
+
input.id,
|
|
296
|
+
input.livingDocId,
|
|
297
|
+
input.versionNumber,
|
|
298
|
+
input.anchorQuote,
|
|
299
|
+
input.anchorStart ?? null,
|
|
300
|
+
input.anchorEnd ?? null,
|
|
301
|
+
input.replacement,
|
|
302
|
+
input.note ?? null,
|
|
303
|
+
this.now(),
|
|
304
|
+
]);
|
|
305
|
+
return mapSuggestionRow(result.rows[0]);
|
|
306
|
+
}
|
|
307
|
+
async listSuggestions(opaqueId, options = {}) {
|
|
308
|
+
const result = options.status
|
|
309
|
+
? await this.sql.query("select * from living_doc_suggestions where living_doc_id = $1 and status = $2 order by created_at", [opaqueId, options.status])
|
|
310
|
+
: await this.sql.query("select * from living_doc_suggestions where living_doc_id = $1 order by created_at", [opaqueId]);
|
|
311
|
+
return result.rows.map(mapSuggestionRow);
|
|
312
|
+
}
|
|
313
|
+
async setSuggestionStatus(suggestionId, status) {
|
|
314
|
+
const resolvedAt = status === "pending" ? null : this.now();
|
|
315
|
+
const result = await this.sql.query("update living_doc_suggestions set status = $2, resolved_at = $3 where id = $1 returning *", [suggestionId, status, resolvedAt]);
|
|
316
|
+
return result.rows[0] ? mapSuggestionRow(result.rows[0]) : null;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
export function createNeonLivingDocMetadataStore(databaseUrl = requiredEnv("DATABASE_URL")) {
|
|
320
|
+
const sql = neon(databaseUrl);
|
|
321
|
+
return new PostgresLivingDocMetadataStore({
|
|
322
|
+
async query(text, params = []) {
|
|
323
|
+
const rows = (await sql.query(text, params));
|
|
324
|
+
return { rows };
|
|
325
|
+
},
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
function mapDocRow(row) {
|
|
329
|
+
if (!row)
|
|
330
|
+
throw new Error("Expected Living Doc row");
|
|
331
|
+
return {
|
|
332
|
+
opaqueId: row.opaque_id,
|
|
333
|
+
reviewId: row.review_id,
|
|
334
|
+
publisherEmail: row.publisher_email,
|
|
335
|
+
status: row.status,
|
|
336
|
+
title: row.title ?? null,
|
|
337
|
+
currentMarkdown: row.current_markdown,
|
|
338
|
+
latestVersionNumber: Number(row.latest_version_number),
|
|
339
|
+
createdAt: new Date(row.created_at),
|
|
340
|
+
updatedAt: new Date(row.updated_at),
|
|
341
|
+
removedAt: row.removed_at ? new Date(row.removed_at) : null,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
function mapVersionRow(row) {
|
|
345
|
+
if (!row)
|
|
346
|
+
throw new Error("Expected Living Doc Version row");
|
|
347
|
+
return {
|
|
348
|
+
id: row.id,
|
|
349
|
+
livingDocId: row.living_doc_id,
|
|
350
|
+
versionNumber: Number(row.version_number),
|
|
351
|
+
markdown: row.markdown,
|
|
352
|
+
createdAt: new Date(row.created_at),
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
function mapCommentRow(row) {
|
|
356
|
+
if (!row)
|
|
357
|
+
throw new Error("Expected Living Doc Comment row");
|
|
358
|
+
return {
|
|
359
|
+
id: row.id,
|
|
360
|
+
livingDocId: row.living_doc_id,
|
|
361
|
+
origin: row.origin,
|
|
362
|
+
author: row.author ?? null,
|
|
363
|
+
anchorQuote: row.anchor_quote,
|
|
364
|
+
anchorStart: row.anchor_start === null ? null : Number(row.anchor_start),
|
|
365
|
+
anchorEnd: row.anchor_end === null ? null : Number(row.anchor_end),
|
|
366
|
+
body: row.body,
|
|
367
|
+
parentCommentId: row.parent_comment_id ?? null,
|
|
368
|
+
status: row.status,
|
|
369
|
+
createdAt: new Date(row.created_at),
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
function mapSuggestionRow(row) {
|
|
373
|
+
if (!row)
|
|
374
|
+
throw new Error("Expected Living Doc Suggestion row");
|
|
375
|
+
return {
|
|
376
|
+
id: row.id,
|
|
377
|
+
livingDocId: row.living_doc_id,
|
|
378
|
+
versionNumber: Number(row.version_number),
|
|
379
|
+
anchorQuote: row.anchor_quote,
|
|
380
|
+
anchorStart: row.anchor_start === null ? null : Number(row.anchor_start),
|
|
381
|
+
anchorEnd: row.anchor_end === null ? null : Number(row.anchor_end),
|
|
382
|
+
replacement: row.replacement,
|
|
383
|
+
note: row.note ?? null,
|
|
384
|
+
status: row.status,
|
|
385
|
+
createdAt: new Date(row.created_at),
|
|
386
|
+
resolvedAt: row.resolved_at ? new Date(row.resolved_at) : null,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
function cloneDoc(doc) {
|
|
390
|
+
return {
|
|
391
|
+
...doc,
|
|
392
|
+
createdAt: new Date(doc.createdAt),
|
|
393
|
+
updatedAt: new Date(doc.updatedAt),
|
|
394
|
+
removedAt: doc.removedAt ? new Date(doc.removedAt) : null,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
function cloneVersion(version) {
|
|
398
|
+
return { ...version, createdAt: new Date(version.createdAt) };
|
|
399
|
+
}
|
|
400
|
+
function cloneComment(comment) {
|
|
401
|
+
return { ...comment, createdAt: new Date(comment.createdAt) };
|
|
402
|
+
}
|
|
403
|
+
function cloneSuggestion(suggestion) {
|
|
404
|
+
return {
|
|
405
|
+
...suggestion,
|
|
406
|
+
createdAt: new Date(suggestion.createdAt),
|
|
407
|
+
resolvedAt: suggestion.resolvedAt ? new Date(suggestion.resolvedAt) : null,
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
function requiredEnv(name) {
|
|
411
|
+
const value = process.env[name];
|
|
412
|
+
if (!value)
|
|
413
|
+
throw new Error(`${name} is required`);
|
|
414
|
+
return value;
|
|
415
|
+
}
|
|
416
|
+
//# sourceMappingURL=living-doc-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"living-doc-metadata.js","sourceRoot":"","sources":["../../../src/storage/living-doc-metadata.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@the-focus-ai/artifacts",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "CLI-first Artifact publishing service for TheFocus.AI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"scripts": {
|
|
36
36
|
"artifacts": "tsx src/cli.ts",
|
|
37
37
|
"build": "tsc -p tsconfig.json",
|
|
38
|
+
"build:review-editor": "esbuild scripts/review-editor-entry.js --bundle --format=esm --minify --outfile=public/vendor/review-editor.js",
|
|
38
39
|
"prepack": "pnpm run build",
|
|
39
40
|
"lint": "prettier --check package.json tsconfig.json vitest.config.ts vercel.json 'src/**/*.ts' 'api/**/*.ts' 'tests/**/*.ts' README.md 'docs/**/*.md' 'public/**/*.html' && tsc --noEmit -p tsconfig.json",
|
|
40
41
|
"test": "vitest run",
|
|
@@ -50,11 +51,25 @@
|
|
|
50
51
|
"dependencies": {
|
|
51
52
|
"@clerk/backend": "^3.4.11",
|
|
52
53
|
"@neondatabase/serverless": "^1.1.0",
|
|
53
|
-
"@vercel/blob": "^2.4.0"
|
|
54
|
+
"@vercel/blob": "^2.4.0",
|
|
55
|
+
"markdown-it": "^14.3.0",
|
|
56
|
+
"yaml": "^2.9.0"
|
|
54
57
|
},
|
|
55
58
|
"devDependencies": {
|
|
59
|
+
"@tiptap/core": "^2.27.2",
|
|
60
|
+
"@tiptap/extension-image": "2.27.2",
|
|
61
|
+
"@tiptap/extension-table": "2.27.2",
|
|
62
|
+
"@tiptap/extension-table-cell": "2.27.2",
|
|
63
|
+
"@tiptap/extension-table-header": "2.27.2",
|
|
64
|
+
"@tiptap/extension-table-row": "2.27.2",
|
|
65
|
+
"@tiptap/pm": "^2.27.2",
|
|
66
|
+
"@tiptap/starter-kit": "^2.27.2",
|
|
67
|
+
"@types/markdown-it": "^14.1.2",
|
|
56
68
|
"@types/node": "^25.9.1",
|
|
69
|
+
"esbuild": "^0.28.1",
|
|
70
|
+
"happy-dom": "^20.10.6",
|
|
57
71
|
"prettier": "^3.8.3",
|
|
72
|
+
"tiptap-markdown": "^0.9.0",
|
|
58
73
|
"tsx": "^4.22.3",
|
|
59
74
|
"typescript": "^6.0.3",
|
|
60
75
|
"vitest": "^4.1.7"
|