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.
- package/.tbls.yml +201 -0
- package/CHANGELOG.md +68 -0
- package/README.md +313 -0
- package/agent/agent.manifest.json +8 -0
- package/agent/capabilities/document-authoring.json +21 -0
- package/agent/capabilities/document-block.json +22 -0
- package/agent/capabilities/document-toc.json +21 -0
- package/agent/capabilities/document-validation.json +21 -0
- package/agent/examples/document-quality-examples.md +153 -0
- package/agent/examples/examples.md +172 -0
- package/agent/guides/10-document-authoring-guide.md +28 -0
- package/agent/guides/20-domain-boundary-guide.md +41 -0
- package/agent/guides/30-authoring-policy-guide.md +40 -0
- package/agent/guides/40-toc-authoring-guide.md +73 -0
- package/agent/guides/50-content-block-guide.md +57 -0
- package/agent/guides/51-paragraph-authoring-guide.md +68 -0
- package/agent/guides/52-table-authoring-guide.md +73 -0
- package/agent/guides/53-diagram-figure-authoring-guide.md +75 -0
- package/agent/guides/70-korean-writing-style-guide.md +65 -0
- package/agent/instructions/00-runtime-behavior.md +17 -0
- package/agent/instructions/10-scope-and-boundary.md +27 -0
- package/agent/instructions/20-task-procedures.md +69 -0
- package/agent/instructions/30-must-and-must-not.md +34 -0
- package/agent/resource-index.json +185 -0
- package/agent/resource-selection.json +205 -0
- package/agent/routing.json +34 -0
- package/agent/sources/reference-mapping.md +53 -0
- package/agent/validation/document-validation-rules.md +73 -0
- package/dist/agent/document-agent-contribution.d.ts +15 -0
- package/dist/agent/document-agent-contribution.d.ts.map +1 -0
- package/dist/agent/document-agent-contribution.js +39 -0
- package/dist/agent/document-agent-contribution.js.map +1 -0
- package/dist/agent/index.d.ts +2 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +2 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/database.d.ts +8 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +76 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown-importer.d.ts +14 -0
- package/dist/markdown-importer.d.ts.map +1 -0
- package/dist/markdown-importer.js +386 -0
- package/dist/markdown-importer.js.map +1 -0
- package/dist/reader.d.ts +17 -0
- package/dist/reader.d.ts.map +1 -0
- package/dist/reader.js +332 -0
- package/dist/reader.js.map +1 -0
- package/dist/repositories.d.ts +118 -0
- package/dist/repositories.d.ts.map +1 -0
- package/dist/repositories.js +388 -0
- package/dist/repositories.js.map +1 -0
- package/dist/service.d.ts +35 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +327 -0
- package/dist/service.js.map +1 -0
- package/dist/types.d.ts +276 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validators.d.ts +4 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +255 -0
- package/dist/validators.js.map +1 -0
- package/docs/build.md +55 -0
- package/docs/configuration.md +34 -0
- package/docs/delivery.md +50 -0
- package/docs/operations.md +50 -0
- package/docs/publishing.md +69 -0
- package/docs/schema/generated/README.md +30 -0
- package/docs/schema/generated/document_annotations.md +119 -0
- package/docs/schema/generated/document_annotations.svg +60 -0
- package/docs/schema/generated/document_blocks.md +97 -0
- package/docs/schema/generated/document_blocks.svg +60 -0
- package/docs/schema/generated/document_change_events.md +135 -0
- package/docs/schema/generated/document_change_events.svg +88 -0
- package/docs/schema/generated/document_code_groups.md +70 -0
- package/docs/schema/generated/document_code_groups.svg +52 -0
- package/docs/schema/generated/document_codes.md +88 -0
- package/docs/schema/generated/document_codes.svg +52 -0
- package/docs/schema/generated/document_contents.md +87 -0
- package/docs/schema/generated/document_contents.svg +116 -0
- package/docs/schema/generated/document_documents.md +126 -0
- package/docs/schema/generated/document_documents.svg +222 -0
- package/docs/schema/generated/document_node_taxonomies.md +84 -0
- package/docs/schema/generated/document_node_taxonomies.svg +80 -0
- package/docs/schema/generated/document_node_taxonomy_levels.md +91 -0
- package/docs/schema/generated/document_node_taxonomy_levels.svg +52 -0
- package/docs/schema/generated/document_nodes.md +120 -0
- package/docs/schema/generated/document_nodes.svg +98 -0
- package/docs/schema/generated/document_revisions.md +107 -0
- package/docs/schema/generated/document_revisions.svg +116 -0
- package/docs/schema/generated/document_versions.md +126 -0
- package/docs/schema/generated/document_versions.svg +88 -0
- package/docs/schema/generated/schema.json +2534 -0
- package/docs/schema/generated/schema.mmd +170 -0
- package/docs/schema/generated/schema.svg +331 -0
- package/docs/schema/migrations.md +40 -0
- package/docs/usage.md +332 -0
- package/docs/validation-rules.md +69 -0
- package/package.json +30 -0
- 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"}
|