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
package/dist/reader.js ADDED
@@ -0,0 +1,332 @@
1
+ import { openDocumentDatabase } from "./database.js";
2
+ import { DocumentRepository } from "./repositories.js";
3
+ function sortNodes(nodes) {
4
+ return [...nodes].sort((a, b) => {
5
+ if (a.nodeLevel !== b.nodeLevel)
6
+ return a.nodeLevel - b.nodeLevel;
7
+ if ((a.parentNodeId ?? "") !== (b.parentNodeId ?? ""))
8
+ return (a.parentNodeId ?? "").localeCompare(b.parentNodeId ?? "");
9
+ if (a.sortOrder !== b.sortOrder)
10
+ return a.sortOrder - b.sortOrder;
11
+ return a.createdAt.localeCompare(b.createdAt);
12
+ });
13
+ }
14
+ function sortBlocks(blocks) {
15
+ return [...blocks].sort((a, b) => {
16
+ if (a.sortOrder !== b.sortOrder)
17
+ return a.sortOrder - b.sortOrder;
18
+ return a.createdAt.localeCompare(b.createdAt);
19
+ });
20
+ }
21
+ function headingPrefix(level) {
22
+ return "#".repeat(Math.min(Math.max(level, 1), 6));
23
+ }
24
+ function normalizeForSearch(value, caseSensitive) {
25
+ return caseSensitive ? value : value.toLocaleLowerCase();
26
+ }
27
+ function isRecord(value) {
28
+ return value !== null && typeof value === "object" && !Array.isArray(value);
29
+ }
30
+ function stringValue(value) {
31
+ return typeof value === "string" && value.trim().length > 0 ? value : undefined;
32
+ }
33
+ function captionText(value) {
34
+ if (typeof value === "string") {
35
+ return value.trim().length > 0 ? value : undefined;
36
+ }
37
+ if (isRecord(value)) {
38
+ return stringValue(value.text);
39
+ }
40
+ return undefined;
41
+ }
42
+ function captionLine(json) {
43
+ const rawCaption = stringValue(json.rawCaption);
44
+ if (rawCaption !== undefined) {
45
+ return rawCaption;
46
+ }
47
+ const caption = captionText(json.caption) ?? stringValue(json.altText);
48
+ if (caption === undefined) {
49
+ return undefined;
50
+ }
51
+ const captionSummary = stringValue(json.captionSummary);
52
+ return captionSummary === undefined ? caption : `${caption} - ${captionSummary}`;
53
+ }
54
+ function escapeTableCell(value) {
55
+ return String(value ?? "").replaceAll("|", "\\|").replace(/\s+/g, " ").trim();
56
+ }
57
+ function renderTableBlock(json) {
58
+ const columns = Array.isArray(json.columns) ? json.columns : [];
59
+ const rows = Array.isArray(json.rows) ? json.rows : [];
60
+ if (columns.length === 0) {
61
+ return stringValue(json.markdown);
62
+ }
63
+ const columnKeys = columns.map((column, index) => (isRecord(column) ? stringValue(column.key) ?? `column_${index + 1}` : `column_${index + 1}`));
64
+ const headers = columns.map((column, index) => (isRecord(column) ? stringValue(column.header) ?? columnKeys[index] : columnKeys[index]));
65
+ const lines = [];
66
+ const caption = captionLine(json);
67
+ if (caption !== undefined) {
68
+ lines.push(caption);
69
+ lines.push("");
70
+ }
71
+ lines.push(`| ${headers.map(escapeTableCell).join(" | ")} |`);
72
+ lines.push(`| ${headers.map(() => "---").join(" | ")} |`);
73
+ for (const row of rows) {
74
+ if (Array.isArray(row)) {
75
+ lines.push(`| ${columnKeys.map((_, index) => escapeTableCell(row[index])).join(" | ")} |`);
76
+ continue;
77
+ }
78
+ if (isRecord(row)) {
79
+ lines.push(`| ${columnKeys.map((key) => escapeTableCell(row[key])).join(" | ")} |`);
80
+ }
81
+ }
82
+ return lines.join("\n");
83
+ }
84
+ function renderFigureBlock(json) {
85
+ const sourcePath = stringValue(json.sourcePath) ?? stringValue(json.path);
86
+ const caption = captionLine(json);
87
+ const altText = caption ?? stringValue(json.altText) ?? "figure";
88
+ if (sourcePath === undefined) {
89
+ return caption;
90
+ }
91
+ return caption === undefined ? `![${altText}](${sourcePath})` : `![${altText}](${sourcePath})\n\n${caption}`;
92
+ }
93
+ function renderDiagramBlock(json) {
94
+ const sourceText = stringValue(json.sourceText);
95
+ const notation = stringValue(json.notation);
96
+ if (sourceText !== undefined) {
97
+ return `\`\`\`${notation ?? ""}\n${sourceText}\n\`\`\``;
98
+ }
99
+ return renderFigureBlock(json);
100
+ }
101
+ function renderJsonBlock(block) {
102
+ if (!isRecord(block.contentJson)) {
103
+ return undefined;
104
+ }
105
+ if (block.blockTypeCode === "table") {
106
+ return renderTableBlock(block.contentJson);
107
+ }
108
+ if (block.blockTypeCode === "figure") {
109
+ return renderFigureBlock(block.contentJson);
110
+ }
111
+ if (block.blockTypeCode === "diagram") {
112
+ return renderDiagramBlock(block.contentJson);
113
+ }
114
+ if (block.blockTypeCode === "list" && Array.isArray(block.contentJson.items)) {
115
+ return block.contentJson.items
116
+ .map((item) => {
117
+ if (typeof item === "string") {
118
+ return `- ${item}`;
119
+ }
120
+ if (isRecord(item)) {
121
+ return `- ${stringValue(item.text) ?? ""}`.trimEnd();
122
+ }
123
+ return undefined;
124
+ })
125
+ .filter((item) => item !== undefined && item.trim().length > 1)
126
+ .join("\n");
127
+ }
128
+ return undefined;
129
+ }
130
+ function blockText(block, includeJsonBlocks) {
131
+ if (block.contentText !== undefined) {
132
+ return block.contentText;
133
+ }
134
+ if (includeJsonBlocks && block.contentJson !== undefined) {
135
+ return `\`\`\`json\n${JSON.stringify(block.contentJson, null, 2)}\n\`\`\``;
136
+ }
137
+ return "";
138
+ }
139
+ function renderBlock(block, options) {
140
+ const lines = [];
141
+ if (options.includeBlockAnchors) {
142
+ lines.push(`<!-- blockId: ${block.blockId} blockType: ${block.blockTypeCode} -->`);
143
+ }
144
+ const text = (block.contentText ?? renderJsonBlock(block) ?? blockText(block, options.includeJsonBlocks)).trim();
145
+ if (text.length > 0) {
146
+ lines.push(text);
147
+ }
148
+ return lines.join("\n");
149
+ }
150
+ export class DocumentReader {
151
+ ownsDatabase;
152
+ db;
153
+ repository;
154
+ constructor(options = {}) {
155
+ this.ownsDatabase = options.database === undefined;
156
+ this.db = options.database ?? openDocumentDatabase(options);
157
+ this.repository = new DocumentRepository(this.db);
158
+ }
159
+ close() {
160
+ if (this.ownsDatabase) {
161
+ this.db.close();
162
+ }
163
+ }
164
+ listDocuments(query = {}) {
165
+ return this.repository.listDocuments(query);
166
+ }
167
+ getLatestDocument(query = {}) {
168
+ return this.repository.getLatestDocument(query);
169
+ }
170
+ getDocumentAggregate(documentId) {
171
+ const document = this.repository.getDocument(documentId);
172
+ const nodes = sortNodes(this.repository.listNodes(documentId));
173
+ const contents = [];
174
+ const blocks = [];
175
+ for (const node of nodes) {
176
+ const content = this.repository.getContentByNodeId(node.nodeId);
177
+ if (content === undefined) {
178
+ continue;
179
+ }
180
+ contents.push(content);
181
+ blocks.push(...this.repository.listBlocks(content.contentId));
182
+ }
183
+ return {
184
+ document,
185
+ nodes,
186
+ contents,
187
+ blocks: sortBlocks(blocks)
188
+ };
189
+ }
190
+ getDocumentTree(documentId) {
191
+ const aggregate = this.getDocumentAggregate(documentId);
192
+ const contentByNodeId = new Map(aggregate.contents.map((content) => [content.nodeId, content]));
193
+ const blocksByContentId = new Map();
194
+ for (const block of aggregate.blocks) {
195
+ const content = aggregate.contents.find((item) => item.contentId === block.contentId);
196
+ if (content === undefined) {
197
+ continue;
198
+ }
199
+ const current = blocksByContentId.get(content.contentId) ?? [];
200
+ current.push(block);
201
+ blocksByContentId.set(content.contentId, current);
202
+ }
203
+ const childrenByParentId = new Map();
204
+ const roots = [];
205
+ for (const node of aggregate.nodes) {
206
+ if (node.parentNodeId === undefined) {
207
+ roots.push(node);
208
+ continue;
209
+ }
210
+ const children = childrenByParentId.get(node.parentNodeId) ?? [];
211
+ children.push(node);
212
+ childrenByParentId.set(node.parentNodeId, children);
213
+ }
214
+ const build = (node) => {
215
+ const content = contentByNodeId.get(node.nodeId);
216
+ const children = sortNodes(childrenByParentId.get(node.nodeId) ?? []).map(build);
217
+ return {
218
+ node,
219
+ content,
220
+ blocks: content === undefined ? [] : sortBlocks(blocksByContentId.get(content.contentId) ?? []),
221
+ children
222
+ };
223
+ };
224
+ return sortNodes(roots).map(build);
225
+ }
226
+ findBlocks(documentId, query = {}) {
227
+ const aggregate = this.getDocumentAggregate(documentId);
228
+ const contentById = new Map(aggregate.contents.map((content) => [content.contentId, content]));
229
+ const nodeById = new Map(aggregate.nodes.map((node) => [node.nodeId, node]));
230
+ const caseSensitive = query.caseSensitive ?? false;
231
+ const contains = query.contains === undefined ? undefined : normalizeForSearch(query.contains, caseSensitive);
232
+ const nodeTitleContains = query.nodeTitleContains === undefined ? undefined : normalizeForSearch(query.nodeTitleContains, caseSensitive);
233
+ const results = [];
234
+ for (const block of aggregate.blocks) {
235
+ if (query.blockTypeCode !== undefined && block.blockTypeCode !== query.blockTypeCode) {
236
+ continue;
237
+ }
238
+ const content = contentById.get(block.contentId);
239
+ if (content === undefined) {
240
+ continue;
241
+ }
242
+ const node = nodeById.get(content.nodeId);
243
+ if (node === undefined) {
244
+ continue;
245
+ }
246
+ if (query.nodeId !== undefined && node.nodeId !== query.nodeId) {
247
+ continue;
248
+ }
249
+ if (contains !== undefined && !normalizeForSearch(blockText(block, true), caseSensitive).includes(contains)) {
250
+ continue;
251
+ }
252
+ const nodePath = this.getNodePath(node, nodeById);
253
+ if (nodeTitleContains !== undefined &&
254
+ !nodePath.some((title) => normalizeForSearch(title, caseSensitive).includes(nodeTitleContains))) {
255
+ continue;
256
+ }
257
+ results.push({
258
+ document: aggregate.document,
259
+ node,
260
+ nodePath,
261
+ content,
262
+ block
263
+ });
264
+ if (query.limit !== undefined && results.length >= query.limit) {
265
+ break;
266
+ }
267
+ }
268
+ return results;
269
+ }
270
+ toMarkdown(documentId, options = {}) {
271
+ const document = this.repository.getDocument(documentId);
272
+ const tree = this.getDocumentTree(documentId);
273
+ const includeFrontmatter = options.includeFrontmatter ?? true;
274
+ const includeNodeAnchors = options.includeNodeAnchors ?? true;
275
+ const includeBlockAnchors = options.includeBlockAnchors ?? true;
276
+ const includeJsonBlocks = options.includeJsonBlocks ?? true;
277
+ const includeTitle = options.title ?? true;
278
+ const lines = [];
279
+ if (includeFrontmatter) {
280
+ lines.push("---");
281
+ lines.push(`documentId: "${document.documentId}"`);
282
+ lines.push(`title: "${document.title.replaceAll("\"", "\\\"")}"`);
283
+ lines.push("projection: \"Adoc Markdown Projection\"");
284
+ lines.push("sourceOfTruth: \"Agentic Document\"");
285
+ lines.push("editable: false");
286
+ lines.push("---");
287
+ lines.push("");
288
+ }
289
+ if (includeTitle) {
290
+ lines.push(`# ${document.title}`);
291
+ lines.push("");
292
+ }
293
+ const renderNode = (treeNode) => {
294
+ if (includeNodeAnchors) {
295
+ lines.push(`<!-- nodeId: ${treeNode.node.nodeId} -->`);
296
+ }
297
+ lines.push(`${headingPrefix(treeNode.node.nodeLevel + (includeTitle ? 1 : 0))} ${treeNode.node.title}`);
298
+ lines.push("");
299
+ for (const block of treeNode.blocks) {
300
+ const rendered = renderBlock(block, { includeBlockAnchors, includeJsonBlocks });
301
+ if (rendered.length > 0) {
302
+ lines.push(rendered);
303
+ lines.push("");
304
+ }
305
+ }
306
+ for (const child of treeNode.children) {
307
+ renderNode(child);
308
+ }
309
+ };
310
+ for (const root of tree) {
311
+ renderNode(root);
312
+ }
313
+ return `${lines.join("\n").trimEnd()}\n`;
314
+ }
315
+ getNodePath(node, nodeById) {
316
+ const path = [node.title];
317
+ let current = node;
318
+ while (current.parentNodeId !== undefined) {
319
+ const parent = nodeById.get(current.parentNodeId);
320
+ if (parent === undefined) {
321
+ break;
322
+ }
323
+ path.unshift(parent.title);
324
+ current = parent;
325
+ }
326
+ return path;
327
+ }
328
+ }
329
+ export function createDocumentReader(options = {}) {
330
+ return new DocumentReader(options);
331
+ }
332
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { AddBlockInput, CreateAnnotationInput, CreateDocumentInput, CreateNodeInput, DocumentActor, DocumentAnnotationRecord, DocumentBlockRecord, DocumentChangeType, DocumentContentRecord, DocumentQuery, DocumentRecord, DocumentRevisionRecord, DocumentSnapshotType, DocumentStatus, DocumentTargetType, DocumentVersionRecord, UpdateBlockInput } from "./types.js";
3
+ type Row = Record<string, unknown>;
4
+ declare function nodeFromRow(row: Row): {
5
+ nodeId: string;
6
+ documentId: string;
7
+ parentNodeId: string | undefined;
8
+ nodeLevel: number;
9
+ nodeRoleCode: string;
10
+ title: string;
11
+ tocVisibility: "inherit" | "include" | "exclude";
12
+ numberingPolicyCode: string;
13
+ numberingOverride: string | undefined;
14
+ sortOrder: number;
15
+ createdAt: string;
16
+ updatedAt: string;
17
+ metadata: unknown;
18
+ };
19
+ export declare class DocumentRepository {
20
+ private readonly db;
21
+ constructor(db: Database.Database);
22
+ findTaxonomyByCode(taxonomyCode: string): {
23
+ taxonomy_id: string;
24
+ default_toc_level_limit: number;
25
+ document_type_code: string;
26
+ };
27
+ createDocument(documentId: string, input: CreateDocumentInput, taxonomyId: string, documentTypeCode: string, tocLevelLimit: number): DocumentRecord;
28
+ insertDraftClone(documentId: string, source: DocumentRecord, input: {
29
+ title: string;
30
+ versionLabel?: string;
31
+ actor: Required<Pick<DocumentActor, "type">> & DocumentActor;
32
+ metadata?: unknown;
33
+ }): DocumentRecord;
34
+ getDocument(documentId: string): DocumentRecord;
35
+ listDocuments(query?: DocumentQuery): DocumentRecord[];
36
+ getLatestDocument(query?: DocumentQuery): DocumentRecord | undefined;
37
+ updateDocumentStatus(documentId: string, status: DocumentStatus, versionLabel?: string): DocumentRecord;
38
+ listNodes(documentId: string): {
39
+ nodeId: string;
40
+ documentId: string;
41
+ parentNodeId: string | undefined;
42
+ nodeLevel: number;
43
+ nodeRoleCode: string;
44
+ title: string;
45
+ tocVisibility: "inherit" | "include" | "exclude";
46
+ numberingPolicyCode: string;
47
+ numberingOverride: string | undefined;
48
+ sortOrder: number;
49
+ createdAt: string;
50
+ updatedAt: string;
51
+ metadata: unknown;
52
+ }[];
53
+ getNode(nodeId: string): {
54
+ nodeId: string;
55
+ documentId: string;
56
+ parentNodeId: string | undefined;
57
+ nodeLevel: number;
58
+ nodeRoleCode: string;
59
+ title: string;
60
+ tocVisibility: "inherit" | "include" | "exclude";
61
+ numberingPolicyCode: string;
62
+ numberingOverride: string | undefined;
63
+ sortOrder: number;
64
+ createdAt: string;
65
+ updatedAt: string;
66
+ metadata: unknown;
67
+ };
68
+ createNode(nodeId: string, input: CreateNodeInput): ReturnType<typeof nodeFromRow>;
69
+ nextNodeSortOrder(documentId: string, parentNodeId?: string): number;
70
+ getContentByNodeId(nodeId: string): DocumentContentRecord | undefined;
71
+ getContent(contentId: string): DocumentContentRecord;
72
+ createContent(contentId: string, documentId: string, nodeId: string, metadata?: unknown): DocumentContentRecord;
73
+ listBlocks(contentId: string): DocumentBlockRecord[];
74
+ getBlock(blockId: string): DocumentBlockRecord;
75
+ addBlock(blockId: string, input: AddBlockInput): DocumentBlockRecord;
76
+ updateBlock(input: UpdateBlockInput): DocumentBlockRecord;
77
+ nextBlockSortOrder(contentId: string): number;
78
+ createAnnotation(annotationId: string, input: CreateAnnotationInput): DocumentAnnotationRecord;
79
+ getAnnotation(annotationId: string): DocumentAnnotationRecord;
80
+ resolveAnnotation(annotationId: string): DocumentAnnotationRecord;
81
+ createRevision(input: {
82
+ revisionId: string;
83
+ documentId: string;
84
+ title: string;
85
+ reason?: string;
86
+ status: Exclude<DocumentStatus, "draft">;
87
+ actor?: DocumentActor;
88
+ metadata?: unknown;
89
+ }): DocumentRevisionRecord;
90
+ getRevision(revisionId: string): DocumentRevisionRecord;
91
+ nextRevisionNo(documentId: string): number;
92
+ createChangeEvent(input: {
93
+ eventId: string;
94
+ revisionId: string;
95
+ documentId: string;
96
+ targetType: DocumentTargetType;
97
+ targetId: string;
98
+ changeType: DocumentChangeType;
99
+ reason?: string;
100
+ actor?: DocumentActor;
101
+ metadata?: unknown;
102
+ }): void;
103
+ createVersion(input: {
104
+ versionId: string;
105
+ documentId: string;
106
+ revisionId: string;
107
+ versionLabel?: string;
108
+ snapshotType: DocumentSnapshotType;
109
+ status: Exclude<DocumentStatus, "draft">;
110
+ snapshot?: unknown;
111
+ actor?: DocumentActor;
112
+ }): DocumentVersionRecord;
113
+ getVersion(versionId: string): DocumentVersionRecord;
114
+ nextVersionNo(documentId: string): number;
115
+ }
116
+ export declare function normalizeActor(actor?: DocumentActor): Required<Pick<DocumentActor, "type">> & DocumentActor;
117
+ export {};
118
+ //# sourceMappingURL=repositories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.d.ts","sourceRoot":"","sources":["../src/repositories.ts"],"names":[],"mappings":"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"}