agentic-domain-document 0.6.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.
Files changed (106) hide show
  1. package/.tbls.yml +201 -0
  2. package/CHANGELOG.md +68 -0
  3. package/README.md +313 -0
  4. package/agent/agent.manifest.json +8 -0
  5. package/agent/capabilities/document-authoring.json +21 -0
  6. package/agent/capabilities/document-block.json +22 -0
  7. package/agent/capabilities/document-toc.json +21 -0
  8. package/agent/capabilities/document-validation.json +21 -0
  9. package/agent/examples/document-quality-examples.md +153 -0
  10. package/agent/examples/examples.md +172 -0
  11. package/agent/guides/10-document-authoring-guide.md +28 -0
  12. package/agent/guides/20-domain-boundary-guide.md +41 -0
  13. package/agent/guides/30-authoring-policy-guide.md +40 -0
  14. package/agent/guides/40-toc-authoring-guide.md +73 -0
  15. package/agent/guides/50-content-block-guide.md +57 -0
  16. package/agent/guides/51-paragraph-authoring-guide.md +68 -0
  17. package/agent/guides/52-table-authoring-guide.md +73 -0
  18. package/agent/guides/53-diagram-figure-authoring-guide.md +75 -0
  19. package/agent/guides/70-korean-writing-style-guide.md +65 -0
  20. package/agent/instructions/00-runtime-behavior.md +17 -0
  21. package/agent/instructions/10-scope-and-boundary.md +27 -0
  22. package/agent/instructions/20-task-procedures.md +69 -0
  23. package/agent/instructions/30-must-and-must-not.md +34 -0
  24. package/agent/resource-index.json +185 -0
  25. package/agent/resource-selection.json +205 -0
  26. package/agent/routing.json +34 -0
  27. package/agent/sources/reference-mapping.md +53 -0
  28. package/agent/validation/document-validation-rules.md +73 -0
  29. package/dist/agent/document-agent-contribution.d.ts +15 -0
  30. package/dist/agent/document-agent-contribution.d.ts.map +1 -0
  31. package/dist/agent/document-agent-contribution.js +39 -0
  32. package/dist/agent/document-agent-contribution.js.map +1 -0
  33. package/dist/agent/index.d.ts +2 -0
  34. package/dist/agent/index.d.ts.map +1 -0
  35. package/dist/agent/index.js +2 -0
  36. package/dist/agent/index.js.map +1 -0
  37. package/dist/database.d.ts +8 -0
  38. package/dist/database.d.ts.map +1 -0
  39. package/dist/database.js +76 -0
  40. package/dist/database.js.map +1 -0
  41. package/dist/index.d.ts +15 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +14 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/markdown-importer.d.ts +14 -0
  46. package/dist/markdown-importer.d.ts.map +1 -0
  47. package/dist/markdown-importer.js +386 -0
  48. package/dist/markdown-importer.js.map +1 -0
  49. package/dist/reader.d.ts +17 -0
  50. package/dist/reader.d.ts.map +1 -0
  51. package/dist/reader.js +332 -0
  52. package/dist/reader.js.map +1 -0
  53. package/dist/repositories.d.ts +118 -0
  54. package/dist/repositories.d.ts.map +1 -0
  55. package/dist/repositories.js +388 -0
  56. package/dist/repositories.js.map +1 -0
  57. package/dist/service.d.ts +35 -0
  58. package/dist/service.d.ts.map +1 -0
  59. package/dist/service.js +327 -0
  60. package/dist/service.js.map +1 -0
  61. package/dist/types.d.ts +276 -0
  62. package/dist/types.d.ts.map +1 -0
  63. package/dist/types.js +2 -0
  64. package/dist/types.js.map +1 -0
  65. package/dist/validators.d.ts +4 -0
  66. package/dist/validators.d.ts.map +1 -0
  67. package/dist/validators.js +255 -0
  68. package/dist/validators.js.map +1 -0
  69. package/docs/build.md +55 -0
  70. package/docs/configuration.md +34 -0
  71. package/docs/delivery.md +50 -0
  72. package/docs/operations.md +50 -0
  73. package/docs/publishing.md +69 -0
  74. package/docs/schema/generated/README.md +30 -0
  75. package/docs/schema/generated/document_annotations.md +119 -0
  76. package/docs/schema/generated/document_annotations.svg +60 -0
  77. package/docs/schema/generated/document_blocks.md +97 -0
  78. package/docs/schema/generated/document_blocks.svg +60 -0
  79. package/docs/schema/generated/document_change_events.md +135 -0
  80. package/docs/schema/generated/document_change_events.svg +88 -0
  81. package/docs/schema/generated/document_code_groups.md +70 -0
  82. package/docs/schema/generated/document_code_groups.svg +52 -0
  83. package/docs/schema/generated/document_codes.md +88 -0
  84. package/docs/schema/generated/document_codes.svg +52 -0
  85. package/docs/schema/generated/document_contents.md +87 -0
  86. package/docs/schema/generated/document_contents.svg +116 -0
  87. package/docs/schema/generated/document_documents.md +126 -0
  88. package/docs/schema/generated/document_documents.svg +222 -0
  89. package/docs/schema/generated/document_node_taxonomies.md +84 -0
  90. package/docs/schema/generated/document_node_taxonomies.svg +80 -0
  91. package/docs/schema/generated/document_node_taxonomy_levels.md +91 -0
  92. package/docs/schema/generated/document_node_taxonomy_levels.svg +52 -0
  93. package/docs/schema/generated/document_nodes.md +120 -0
  94. package/docs/schema/generated/document_nodes.svg +98 -0
  95. package/docs/schema/generated/document_revisions.md +107 -0
  96. package/docs/schema/generated/document_revisions.svg +116 -0
  97. package/docs/schema/generated/document_versions.md +126 -0
  98. package/docs/schema/generated/document_versions.svg +88 -0
  99. package/docs/schema/generated/schema.json +2534 -0
  100. package/docs/schema/generated/schema.mmd +170 -0
  101. package/docs/schema/generated/schema.svg +331 -0
  102. package/docs/schema/migrations.md +40 -0
  103. package/docs/usage.md +332 -0
  104. package/docs/validation-rules.md +69 -0
  105. package/package.json +30 -0
  106. package/src/database/migrations/0001_document_base.sql +753 -0
@@ -0,0 +1,388 @@
1
+ function jsonValue(value) {
2
+ return value === undefined || value === null ? null : JSON.stringify(value);
3
+ }
4
+ function parseJson(value) {
5
+ if (typeof value !== "string" || value.length === 0) {
6
+ return undefined;
7
+ }
8
+ return JSON.parse(value);
9
+ }
10
+ function optionalString(value) {
11
+ return typeof value === "string" ? value : undefined;
12
+ }
13
+ function documentFromRow(row) {
14
+ return {
15
+ documentId: row.document_id,
16
+ documentTypeCode: row.document_type_code,
17
+ taxonomyId: row.taxonomy_id,
18
+ title: row.title,
19
+ sourceDocumentId: optionalString(row.source_document_id),
20
+ versionLabel: optionalString(row.version_label),
21
+ authorTypeCode: row.author_type_code,
22
+ authorId: optionalString(row.author_id),
23
+ authorName: optionalString(row.author_name),
24
+ statusCode: row.status_code,
25
+ tocLevelLimit: row.toc_level_limit,
26
+ publishedAt: optionalString(row.published_at),
27
+ createdAt: row.created_at,
28
+ updatedAt: row.updated_at,
29
+ metadata: parseJson(row.metadata_json)
30
+ };
31
+ }
32
+ function nodeFromRow(row) {
33
+ return {
34
+ nodeId: row.node_id,
35
+ documentId: row.document_id,
36
+ parentNodeId: optionalString(row.parent_node_id),
37
+ nodeLevel: row.node_level,
38
+ nodeRoleCode: row.node_role_code,
39
+ title: row.title,
40
+ tocVisibility: row.toc_visibility,
41
+ numberingPolicyCode: row.numbering_policy_code,
42
+ numberingOverride: optionalString(row.numbering_override),
43
+ sortOrder: row.sort_order,
44
+ createdAt: row.created_at,
45
+ updatedAt: row.updated_at,
46
+ metadata: parseJson(row.metadata_json)
47
+ };
48
+ }
49
+ function contentFromRow(row) {
50
+ return {
51
+ contentId: row.content_id,
52
+ documentId: row.document_id,
53
+ nodeId: row.node_id,
54
+ createdAt: row.created_at,
55
+ updatedAt: row.updated_at,
56
+ metadata: parseJson(row.metadata_json)
57
+ };
58
+ }
59
+ function blockFromRow(row) {
60
+ return {
61
+ blockId: row.block_id,
62
+ contentId: row.content_id,
63
+ blockTypeCode: row.block_type_code,
64
+ sortOrder: row.sort_order,
65
+ contentText: optionalString(row.content_text),
66
+ contentJson: parseJson(row.content_json),
67
+ createdAt: row.created_at,
68
+ updatedAt: row.updated_at,
69
+ metadata: parseJson(row.metadata_json)
70
+ };
71
+ }
72
+ function annotationFromRow(row) {
73
+ return {
74
+ annotationId: row.annotation_id,
75
+ documentId: row.document_id,
76
+ targetTypeCode: row.target_type_code,
77
+ targetId: row.target_id,
78
+ annotationTypeCode: "note",
79
+ statusCode: row.status_code,
80
+ noteText: row.note_text,
81
+ authorTypeCode: row.author_type_code,
82
+ authorId: optionalString(row.author_id),
83
+ authorName: optionalString(row.author_name),
84
+ resolvedAt: optionalString(row.resolved_at),
85
+ createdAt: row.created_at,
86
+ updatedAt: row.updated_at,
87
+ metadata: parseJson(row.metadata_json)
88
+ };
89
+ }
90
+ function revisionFromRow(row) {
91
+ return {
92
+ revisionId: row.revision_id,
93
+ documentId: row.document_id,
94
+ revisionNo: row.revision_no,
95
+ revisionTitle: row.revision_title,
96
+ revisionReason: optionalString(row.revision_reason),
97
+ documentStatusCode: row.document_status_code,
98
+ createdByTypeCode: row.created_by_type_code,
99
+ createdById: optionalString(row.created_by_id),
100
+ createdByName: optionalString(row.created_by_name),
101
+ createdAt: row.created_at,
102
+ metadata: parseJson(row.metadata_json)
103
+ };
104
+ }
105
+ function versionFromRow(row) {
106
+ return {
107
+ versionId: row.version_id,
108
+ documentId: row.document_id,
109
+ revisionId: row.revision_id,
110
+ versionNo: row.version_no,
111
+ versionLabel: optionalString(row.version_label),
112
+ snapshotTypeCode: row.snapshot_type_code,
113
+ documentStatusCode: row.document_status_code,
114
+ snapshot: parseJson(row.snapshot_json),
115
+ checksum: optionalString(row.checksum),
116
+ createdByTypeCode: row.created_by_type_code,
117
+ createdById: optionalString(row.created_by_id),
118
+ createdByName: optionalString(row.created_by_name),
119
+ createdAt: row.created_at
120
+ };
121
+ }
122
+ export class DocumentRepository {
123
+ db;
124
+ constructor(db) {
125
+ this.db = db;
126
+ }
127
+ findTaxonomyByCode(taxonomyCode) {
128
+ const row = this.db
129
+ .prepare(`SELECT taxonomy_id, default_toc_level_limit, document_type_code
130
+ FROM document_node_taxonomies
131
+ WHERE taxonomy_code = ?
132
+ AND is_active = 1`)
133
+ .get(taxonomyCode);
134
+ if (row === undefined) {
135
+ throw new Error(`Unknown document taxonomy: ${taxonomyCode}`);
136
+ }
137
+ return row;
138
+ }
139
+ createDocument(documentId, input, taxonomyId, documentTypeCode, tocLevelLimit) {
140
+ const actor = normalizeActor(input.author);
141
+ this.db
142
+ .prepare(`INSERT INTO document_documents
143
+ (document_id, document_type_code, taxonomy_id, title, version_label, author_type_code, author_id, author_name, toc_level_limit, metadata_json)
144
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
145
+ .run(documentId, documentTypeCode, taxonomyId, input.title, input.versionLabel ?? null, actor.type, actor.id ?? null, actor.name ?? null, tocLevelLimit, jsonValue(input.metadata));
146
+ return this.getDocument(documentId);
147
+ }
148
+ insertDraftClone(documentId, source, input) {
149
+ this.db
150
+ .prepare(`INSERT INTO document_documents
151
+ (document_id, document_type_code, taxonomy_id, title, source_document_id, version_label, author_type_code, author_id, author_name, status_code, toc_level_limit, metadata_json)
152
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'draft', ?, ?)`)
153
+ .run(documentId, source.documentTypeCode, source.taxonomyId, input.title, source.documentId, input.versionLabel ?? null, input.actor.type, input.actor.id ?? null, input.actor.name ?? null, source.tocLevelLimit, jsonValue(input.metadata ?? source.metadata));
154
+ return this.getDocument(documentId);
155
+ }
156
+ getDocument(documentId) {
157
+ const row = this.db.prepare(`SELECT * FROM document_documents WHERE document_id = ?`).get(documentId);
158
+ if (row === undefined) {
159
+ throw new Error(`Document not found: ${documentId}`);
160
+ }
161
+ return documentFromRow(row);
162
+ }
163
+ listDocuments(query = {}) {
164
+ const conditions = [];
165
+ const params = [];
166
+ if (query.documentTypeCode !== undefined) {
167
+ conditions.push("document_type_code = ?");
168
+ params.push(query.documentTypeCode);
169
+ }
170
+ if (query.statusCode !== undefined) {
171
+ conditions.push("status_code = ?");
172
+ params.push(query.statusCode);
173
+ }
174
+ if (query.titleContains !== undefined) {
175
+ conditions.push("title LIKE ?");
176
+ params.push(`%${query.titleContains}%`);
177
+ }
178
+ if (query.sourceDocumentId !== undefined) {
179
+ conditions.push("source_document_id = ?");
180
+ params.push(query.sourceDocumentId);
181
+ }
182
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
183
+ const limitClause = query.limit !== undefined ? "LIMIT ?" : "";
184
+ if (query.limit !== undefined) {
185
+ params.push(query.limit);
186
+ }
187
+ return this.db
188
+ .prepare(`SELECT *
189
+ FROM document_documents
190
+ ${whereClause}
191
+ ORDER BY updated_at DESC, created_at DESC
192
+ ${limitClause}`)
193
+ .all(...params).map(documentFromRow);
194
+ }
195
+ getLatestDocument(query = {}) {
196
+ return this.listDocuments({ ...query, limit: 1 })[0];
197
+ }
198
+ updateDocumentStatus(documentId, status, versionLabel) {
199
+ this.db
200
+ .prepare(`UPDATE document_documents
201
+ SET status_code = ?,
202
+ version_label = COALESCE(?, version_label),
203
+ published_at = CASE WHEN ? = 'published' THEN CURRENT_TIMESTAMP ELSE published_at END,
204
+ updated_at = CURRENT_TIMESTAMP
205
+ WHERE document_id = ?`)
206
+ .run(status, versionLabel ?? null, status, documentId);
207
+ return this.getDocument(documentId);
208
+ }
209
+ listNodes(documentId) {
210
+ return this.db
211
+ .prepare(`SELECT *
212
+ FROM document_nodes
213
+ WHERE document_id = ?
214
+ ORDER BY node_level, parent_node_id, sort_order, created_at`)
215
+ .all(documentId).map(nodeFromRow);
216
+ }
217
+ getNode(nodeId) {
218
+ const row = this.db.prepare(`SELECT * FROM document_nodes WHERE node_id = ?`).get(nodeId);
219
+ if (row === undefined) {
220
+ throw new Error(`Document node not found: ${nodeId}`);
221
+ }
222
+ return nodeFromRow(row);
223
+ }
224
+ createNode(nodeId, input) {
225
+ this.db
226
+ .prepare(`INSERT INTO document_nodes
227
+ (node_id, document_id, parent_node_id, node_level, node_role_code, title, toc_visibility, numbering_policy_code, numbering_override, sort_order, metadata_json)
228
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
229
+ .run(nodeId, input.documentId, input.parentNodeId ?? null, input.nodeLevel, input.nodeRoleCode ?? "body", input.title, input.tocVisibility ?? "inherit", input.numberingPolicyCode ?? "inherit", input.numberingOverride ?? null, input.sortOrder ?? this.nextNodeSortOrder(input.documentId, input.parentNodeId), jsonValue(input.metadata));
230
+ return this.getNode(nodeId);
231
+ }
232
+ nextNodeSortOrder(documentId, parentNodeId) {
233
+ const row = this.db
234
+ .prepare(`SELECT COALESCE(MAX(sort_order), 0) + 10 AS next_sort_order
235
+ FROM document_nodes
236
+ WHERE document_id = ?
237
+ AND ((parent_node_id IS NULL AND ? IS NULL) OR parent_node_id = ?)`)
238
+ .get(documentId, parentNodeId ?? null, parentNodeId ?? null);
239
+ return row.next_sort_order;
240
+ }
241
+ getContentByNodeId(nodeId) {
242
+ const row = this.db.prepare(`SELECT * FROM document_contents WHERE node_id = ?`).get(nodeId);
243
+ return row === undefined ? undefined : contentFromRow(row);
244
+ }
245
+ getContent(contentId) {
246
+ const row = this.db.prepare(`SELECT * FROM document_contents WHERE content_id = ?`).get(contentId);
247
+ if (row === undefined) {
248
+ throw new Error(`Document content not found: ${contentId}`);
249
+ }
250
+ return contentFromRow(row);
251
+ }
252
+ createContent(contentId, documentId, nodeId, metadata) {
253
+ this.db
254
+ .prepare(`INSERT INTO document_contents
255
+ (content_id, document_id, node_id, metadata_json)
256
+ VALUES (?, ?, ?, ?)`)
257
+ .run(contentId, documentId, nodeId, jsonValue(metadata));
258
+ return this.getContent(contentId);
259
+ }
260
+ listBlocks(contentId) {
261
+ return this.db
262
+ .prepare(`SELECT * FROM document_blocks WHERE content_id = ? ORDER BY sort_order, created_at`)
263
+ .all(contentId).map(blockFromRow);
264
+ }
265
+ getBlock(blockId) {
266
+ const row = this.db.prepare(`SELECT * FROM document_blocks WHERE block_id = ?`).get(blockId);
267
+ if (row === undefined) {
268
+ throw new Error(`Document block not found: ${blockId}`);
269
+ }
270
+ return blockFromRow(row);
271
+ }
272
+ addBlock(blockId, input) {
273
+ this.db
274
+ .prepare(`INSERT INTO document_blocks
275
+ (block_id, content_id, block_type_code, sort_order, content_text, content_json, metadata_json)
276
+ VALUES (?, ?, ?, ?, ?, ?, ?)`)
277
+ .run(blockId, input.contentId, input.blockTypeCode, input.sortOrder ?? this.nextBlockSortOrder(input.contentId), input.contentText ?? null, jsonValue(input.contentJson), jsonValue(input.metadata));
278
+ return this.getBlock(blockId);
279
+ }
280
+ updateBlock(input) {
281
+ this.db
282
+ .prepare(`UPDATE document_blocks
283
+ SET content_text = COALESCE(?, content_text),
284
+ content_json = COALESCE(?, content_json),
285
+ metadata_json = COALESCE(?, metadata_json),
286
+ updated_at = CURRENT_TIMESTAMP
287
+ WHERE block_id = ?`)
288
+ .run(input.contentText ?? null, jsonValue(input.contentJson), jsonValue(input.metadata), input.blockId);
289
+ return this.getBlock(input.blockId);
290
+ }
291
+ nextBlockSortOrder(contentId) {
292
+ const row = this.db
293
+ .prepare(`SELECT COALESCE(MAX(sort_order), 0) + 10 AS next_sort_order FROM document_blocks WHERE content_id = ?`)
294
+ .get(contentId);
295
+ return row.next_sort_order;
296
+ }
297
+ createAnnotation(annotationId, input) {
298
+ const actor = normalizeActor(input.author);
299
+ this.db
300
+ .prepare(`INSERT INTO document_annotations
301
+ (annotation_id, document_id, target_type_code, target_id, note_text, author_type_code, author_id, author_name, metadata_json)
302
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`)
303
+ .run(annotationId, input.documentId, input.targetTypeCode, input.targetId, input.noteText, actor.type, actor.id ?? null, actor.name ?? null, jsonValue(input.metadata));
304
+ return this.getAnnotation(annotationId);
305
+ }
306
+ getAnnotation(annotationId) {
307
+ const row = this.db.prepare(`SELECT * FROM document_annotations WHERE annotation_id = ?`).get(annotationId);
308
+ if (row === undefined) {
309
+ throw new Error(`Document annotation not found: ${annotationId}`);
310
+ }
311
+ return annotationFromRow(row);
312
+ }
313
+ resolveAnnotation(annotationId) {
314
+ this.db
315
+ .prepare(`UPDATE document_annotations
316
+ SET status_code = 'resolved',
317
+ resolved_at = CURRENT_TIMESTAMP,
318
+ updated_at = CURRENT_TIMESTAMP
319
+ WHERE annotation_id = ?`)
320
+ .run(annotationId);
321
+ return this.getAnnotation(annotationId);
322
+ }
323
+ createRevision(input) {
324
+ const actor = normalizeActor(input.actor);
325
+ const revisionNo = this.nextRevisionNo(input.documentId);
326
+ this.db
327
+ .prepare(`INSERT INTO document_revisions
328
+ (revision_id, document_id, revision_no, revision_title, revision_reason, document_status_code, created_by_type_code, created_by_id, created_by_name, metadata_json)
329
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
330
+ .run(input.revisionId, input.documentId, revisionNo, input.title, input.reason ?? null, input.status, actor.type, actor.id ?? null, actor.name ?? null, jsonValue(input.metadata));
331
+ return this.getRevision(input.revisionId);
332
+ }
333
+ getRevision(revisionId) {
334
+ const row = this.db.prepare(`SELECT * FROM document_revisions WHERE revision_id = ?`).get(revisionId);
335
+ if (row === undefined) {
336
+ throw new Error(`Document revision not found: ${revisionId}`);
337
+ }
338
+ return revisionFromRow(row);
339
+ }
340
+ nextRevisionNo(documentId) {
341
+ const row = this.db
342
+ .prepare(`SELECT COALESCE(MAX(revision_no), 0) + 1 AS next_revision_no FROM document_revisions WHERE document_id = ?`)
343
+ .get(documentId);
344
+ return row.next_revision_no;
345
+ }
346
+ createChangeEvent(input) {
347
+ const actor = normalizeActor(input.actor);
348
+ const row = this.db
349
+ .prepare(`SELECT COALESCE(MAX(sequence_no), 0) + 1 AS sequence_no FROM document_change_events WHERE revision_id = ?`)
350
+ .get(input.revisionId);
351
+ this.db
352
+ .prepare(`INSERT INTO document_change_events
353
+ (event_id, revision_id, document_id, sequence_no, target_type_code, target_id, change_type_code, change_reason, changed_by_type_code, changed_by_id, changed_by_name, metadata_json)
354
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
355
+ .run(input.eventId, input.revisionId, input.documentId, row.sequence_no, input.targetType, input.targetId, input.changeType, input.reason ?? null, actor.type, actor.id ?? null, actor.name ?? null, jsonValue(input.metadata));
356
+ }
357
+ createVersion(input) {
358
+ const actor = normalizeActor(input.actor);
359
+ const versionNo = this.nextVersionNo(input.documentId);
360
+ this.db
361
+ .prepare(`INSERT INTO document_versions
362
+ (version_id, document_id, revision_id, version_no, version_label, snapshot_type_code, document_status_code, snapshot_json, created_by_type_code, created_by_id, created_by_name)
363
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
364
+ .run(input.versionId, input.documentId, input.revisionId, versionNo, input.versionLabel ?? null, input.snapshotType, input.status, jsonValue(input.snapshot), actor.type, actor.id ?? null, actor.name ?? null);
365
+ return this.getVersion(input.versionId);
366
+ }
367
+ getVersion(versionId) {
368
+ const row = this.db.prepare(`SELECT * FROM document_versions WHERE version_id = ?`).get(versionId);
369
+ if (row === undefined) {
370
+ throw new Error(`Document version not found: ${versionId}`);
371
+ }
372
+ return versionFromRow(row);
373
+ }
374
+ nextVersionNo(documentId) {
375
+ const row = this.db
376
+ .prepare(`SELECT COALESCE(MAX(version_no), 0) + 1 AS next_version_no FROM document_versions WHERE document_id = ?`)
377
+ .get(documentId);
378
+ return row.next_version_no;
379
+ }
380
+ }
381
+ export function normalizeActor(actor) {
382
+ return {
383
+ type: actor?.type ?? "user",
384
+ id: actor?.id,
385
+ name: actor?.name
386
+ };
387
+ }
388
+ //# sourceMappingURL=repositories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.js","sourceRoot":"","sources":["../src/repositories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { DocumentRepository } from "./repositories.js";
2
+ import type { AddBlockInput, CreateAnnotationInput, CreateDocumentInput, CreateDraftInput, CreateNodeInput, DocumentActor, DocumentBlockRecord, DocumentRecord, DocumentServiceOptions, DocumentSnapshotType, DocumentTocNode, TransitionInput, UpdateBlockInput, ValidationResult } from "./types.js";
3
+ export declare class DocumentService {
4
+ private readonly ownsDatabase;
5
+ private readonly db;
6
+ private readonly repository;
7
+ constructor(options?: DocumentServiceOptions);
8
+ close(): void;
9
+ createDocument(input: CreateDocumentInput): DocumentRecord;
10
+ getDocument(documentId: string): DocumentRecord;
11
+ createNode(input: CreateNodeInput): ReturnType<DocumentRepository["createNode"]>;
12
+ listNodes(documentId: string): ReturnType<DocumentRepository["listNodes"]>;
13
+ getDocumentToc(documentId: string): DocumentTocNode[];
14
+ ensureContent(nodeId: string): ReturnType<DocumentRepository["getContent"]>;
15
+ addBlock(input: AddBlockInput): DocumentBlockRecord;
16
+ updateBlock(input: UpdateBlockInput): DocumentBlockRecord;
17
+ listBlocks(contentId: string): DocumentBlockRecord[];
18
+ createAnnotation(input: CreateAnnotationInput): ReturnType<DocumentRepository["createAnnotation"]>;
19
+ resolveAnnotation(annotationId: string, actor?: DocumentActor): ReturnType<DocumentRepository["resolveAnnotation"]>;
20
+ requestReview(input: TransitionInput): ReturnType<DocumentRepository["createVersion"]>;
21
+ approveDocument(input: TransitionInput): ReturnType<DocumentRepository["createVersion"]>;
22
+ publishDocument(input: TransitionInput): ReturnType<DocumentRepository["createVersion"]>;
23
+ createVersionSnapshot(input: TransitionInput & {
24
+ snapshotType?: DocumentSnapshotType;
25
+ }): ReturnType<DocumentRepository["createVersion"]>;
26
+ createDraftFromDocument(input: CreateDraftInput): DocumentRecord;
27
+ validateDocument(documentId: string): ValidationResult;
28
+ private transitionWithVersion;
29
+ private createRevisionWithEvent;
30
+ private createSnapshot;
31
+ private cloneNodes;
32
+ private cloneContentsAndBlocks;
33
+ }
34
+ export declare function createDocumentService(options?: DocumentServiceOptions): DocumentService;
35
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAkB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EAEpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAqCpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEpC,OAAO,GAAE,sBAA2B;IAMhD,KAAK,IAAI,IAAI;IAMb,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc;IAQ1D,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc;IAI/C,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAKhF,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAK1E,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE;IAsCrD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAU3E,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB;IAKnD,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB;IAIzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAKpD,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAmBlG,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IAmBnH,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAItF,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAIxF,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAIxF,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG;QAAE,YAAY,CAAC,EAAE,oBAAoB,CAAA;KAAE,GAAG,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAoCxI,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,GAAG,cAAc;IAgChE,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAItD,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,sBAAsB;CAqB/B;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAE3F"}