@soddong/agentic-domain-document 0.7.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 (110) hide show
  1. package/.tbls.yml +201 -0
  2. package/CHANGELOG.md +75 -0
  3. package/README.md +342 -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/import-profile.d.ts +48 -0
  42. package/dist/import-profile.d.ts.map +1 -0
  43. package/dist/import-profile.js +35 -0
  44. package/dist/import-profile.js.map +1 -0
  45. package/dist/index.d.ts +17 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +15 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/markdown-importer.d.ts +14 -0
  50. package/dist/markdown-importer.d.ts.map +1 -0
  51. package/dist/markdown-importer.js +446 -0
  52. package/dist/markdown-importer.js.map +1 -0
  53. package/dist/reader.d.ts +17 -0
  54. package/dist/reader.d.ts.map +1 -0
  55. package/dist/reader.js +332 -0
  56. package/dist/reader.js.map +1 -0
  57. package/dist/repositories.d.ts +118 -0
  58. package/dist/repositories.d.ts.map +1 -0
  59. package/dist/repositories.js +388 -0
  60. package/dist/repositories.js.map +1 -0
  61. package/dist/service.d.ts +35 -0
  62. package/dist/service.d.ts.map +1 -0
  63. package/dist/service.js +327 -0
  64. package/dist/service.js.map +1 -0
  65. package/dist/types.d.ts +280 -0
  66. package/dist/types.d.ts.map +1 -0
  67. package/dist/types.js +2 -0
  68. package/dist/types.js.map +1 -0
  69. package/dist/validators.d.ts +4 -0
  70. package/dist/validators.d.ts.map +1 -0
  71. package/dist/validators.js +255 -0
  72. package/dist/validators.js.map +1 -0
  73. package/docs/build.md +76 -0
  74. package/docs/configuration.md +34 -0
  75. package/docs/delivery.md +66 -0
  76. package/docs/operations.md +53 -0
  77. package/docs/publishing.md +69 -0
  78. package/docs/schema/generated/README.md +30 -0
  79. package/docs/schema/generated/document_annotations.md +119 -0
  80. package/docs/schema/generated/document_annotations.svg +60 -0
  81. package/docs/schema/generated/document_blocks.md +97 -0
  82. package/docs/schema/generated/document_blocks.svg +60 -0
  83. package/docs/schema/generated/document_change_events.md +135 -0
  84. package/docs/schema/generated/document_change_events.svg +88 -0
  85. package/docs/schema/generated/document_code_groups.md +70 -0
  86. package/docs/schema/generated/document_code_groups.svg +52 -0
  87. package/docs/schema/generated/document_codes.md +88 -0
  88. package/docs/schema/generated/document_codes.svg +52 -0
  89. package/docs/schema/generated/document_contents.md +87 -0
  90. package/docs/schema/generated/document_contents.svg +116 -0
  91. package/docs/schema/generated/document_documents.md +126 -0
  92. package/docs/schema/generated/document_documents.svg +222 -0
  93. package/docs/schema/generated/document_node_taxonomies.md +84 -0
  94. package/docs/schema/generated/document_node_taxonomies.svg +80 -0
  95. package/docs/schema/generated/document_node_taxonomy_levels.md +91 -0
  96. package/docs/schema/generated/document_node_taxonomy_levels.svg +52 -0
  97. package/docs/schema/generated/document_nodes.md +120 -0
  98. package/docs/schema/generated/document_nodes.svg +98 -0
  99. package/docs/schema/generated/document_revisions.md +107 -0
  100. package/docs/schema/generated/document_revisions.svg +116 -0
  101. package/docs/schema/generated/document_versions.md +126 -0
  102. package/docs/schema/generated/document_versions.svg +88 -0
  103. package/docs/schema/generated/schema.json +2534 -0
  104. package/docs/schema/generated/schema.mmd +170 -0
  105. package/docs/schema/generated/schema.svg +331 -0
  106. package/docs/schema/migrations.md +40 -0
  107. package/docs/usage.md +360 -0
  108. package/docs/validation-rules.md +69 -0
  109. package/package.json +30 -0
  110. package/src/database/migrations/0001_document_base.sql +753 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-profile.js","sourceRoot":"","sources":["../src/import-profile.ts"],"names":[],"mappings":"AAqDA,MAAM,CAAC,MAAM,4BAA4B,GAA0B;IACjE,WAAW,EAAE,kBAAkB;IAC/B,cAAc,EAAE,OAAO;IACvB,gBAAgB,EAAE,SAAS;IAC3B,YAAY,EAAE,SAAS;IACvB,oBAAoB,EAAE,CAAC;IACvB,aAAa,EAAE;QACb,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC;QAChB,mBAAmB,EAAE,SAAS;KAC/B;IACD,aAAa,EAAE;QACb,oBAAoB,EAAE,CAAC,iCAAiC,EAAE,qCAAqC,CAAC;QAChG,qBAAqB,EAAE,CAAC,kCAAkC,EAAE,sCAAsC,CAAC;QACnG,2BAA2B,EAAE,IAAI;QACjC,kCAAkC,EAAE,IAAI;QACxC,mCAAmC,EAAE,IAAI;KAC1C;IACD,WAAW,EAAE;QACX,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,IAAI;QACjB,sBAAsB,EAAE,MAAM;KAC/B;IACD,YAAY,EAAE;QACZ,cAAc,EAAE,KAAK;QACrB,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,aAAa;KAClC;IACD,aAAa,EAAE;QACb,gBAAgB,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC;QAC1D,uBAAuB,EAAE,IAAI;KAC9B;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ export declare const agenticDomainDocumentPackage: {
2
+ readonly name: "@soddong/agentic-domain-document";
3
+ readonly layer: "domain";
4
+ readonly logicalSchema: "document";
5
+ readonly sqliteTablePrefix: "document_";
6
+ };
7
+ export { DefaultMarkdownImportProfile } from "./import-profile.js";
8
+ export type { DocumentCaptionPolicy, DocumentDiagramPolicy, DocumentFigurePolicy, DocumentHeadingPolicy, DocumentImportProfile, DocumentTablePolicy, DocumentValidationProfile } from "./import-profile.js";
9
+ export { applyDocumentBaseMigration, initializeDocumentDatabase, listDocumentTables, openDocumentDatabase, resolveDocumentDatabasePath } from "./database.js";
10
+ export { createDocumentMarkdownImporter, DocumentMarkdownImporter } from "./markdown-importer.js";
11
+ export { DocumentRepository } from "./repositories.js";
12
+ export { createDocumentReader, DocumentReader } from "./reader.js";
13
+ export { createDocumentService, DocumentService } from "./service.js";
14
+ export { validateDocument } from "./validators.js";
15
+ export { agentContribution, assembleDocumentAgentContext, documentAgentContribution, documentAgentManifest, documentExampleResources, documentGuideResources, documentInstructionResources, documentResourceIndex, documentResourceSelection, documentResourceSelectionRules, documentSourceResources, documentValidationRuleResources, selectDocumentAgentResources } from "./agent/index.js";
16
+ export type { AddBlockInput, AnnotationStatus, CreateAnnotationInput, CreateDocumentInput, CreateDraftInput, CreateNodeInput, DocumentActor, DocumentActorType, DocumentAggregate, DocumentAnnotationRecord, DocumentBlockRecord, DocumentBlockSearchQuery, DocumentBlockSearchResult, DocumentBlockType, DocumentChangeType, DocumentContentRecord, DocumentDatabaseInitResult, DocumentDatabaseOptions, DocumentImportResult, DocumentMarkdownImporterOptions, DocumentMarkdownProjectionOptions, DocumentNodeRecord, DocumentQuery, DocumentReaderOptions, DocumentRecord, DocumentRevisionRecord, DocumentServiceOptions, DocumentSnapshotType, DocumentStatus, DocumentTargetType, DocumentTreeNode, DocumentTocNode, DocumentVersionRecord, ImportMarkdownChapterInput, ImportMarkdownDocumentInput, MarkdownImportPolicy, TocVisibility, TransitionInput, UpdateBlockInput, ValidationIssue, ValidationResult } from "./types.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B;;;;;CAK/B,CAAC;AAEX,OAAO,EACL,4BAA4B,EAC7B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,EACvB,+BAA+B,EAC/B,4BAA4B,EAC7B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,+BAA+B,EAC/B,iCAAiC,EACjC,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ export const agenticDomainDocumentPackage = {
2
+ name: "@soddong/agentic-domain-document",
3
+ layer: "domain",
4
+ logicalSchema: "document",
5
+ sqliteTablePrefix: "document_"
6
+ };
7
+ export { DefaultMarkdownImportProfile } from "./import-profile.js";
8
+ export { applyDocumentBaseMigration, initializeDocumentDatabase, listDocumentTables, openDocumentDatabase, resolveDocumentDatabasePath } from "./database.js";
9
+ export { createDocumentMarkdownImporter, DocumentMarkdownImporter } from "./markdown-importer.js";
10
+ export { DocumentRepository } from "./repositories.js";
11
+ export { createDocumentReader, DocumentReader } from "./reader.js";
12
+ export { createDocumentService, DocumentService } from "./service.js";
13
+ export { validateDocument } from "./validators.js";
14
+ export { agentContribution, assembleDocumentAgentContext, documentAgentContribution, documentAgentManifest, documentExampleResources, documentGuideResources, documentInstructionResources, documentResourceIndex, documentResourceSelection, documentResourceSelectionRules, documentSourceResources, documentValidationRuleResources, selectDocumentAgentResources } from "./agent/index.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,kCAAkC;IACxC,KAAK,EAAE,QAAQ;IACf,aAAa,EAAE,UAAU;IACzB,iBAAiB,EAAE,WAAW;CACtB,CAAC;AAEX,OAAO,EACL,4BAA4B,EAC7B,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,8BAA8B,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,EACvB,+BAA+B,EAC/B,4BAA4B,EAC7B,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { DocumentImportResult, DocumentMarkdownImporterOptions, ImportMarkdownChapterInput, ImportMarkdownDocumentInput } from "./types.js";
2
+ export declare class DocumentMarkdownImporter {
3
+ private readonly ownsDatabase;
4
+ private readonly db;
5
+ constructor(options?: DocumentMarkdownImporterOptions);
6
+ close(): void;
7
+ importMarkdownDocument(input: ImportMarkdownDocumentInput): DocumentImportResult;
8
+ importMarkdownChapter(input: ImportMarkdownChapterInput): DocumentImportResult;
9
+ private importItems;
10
+ private importHeading;
11
+ private importBlock;
12
+ }
13
+ export declare function createDocumentMarkdownImporter(options?: DocumentMarkdownImporterOptions): DocumentMarkdownImporter;
14
+ //# sourceMappingURL=markdown-importer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-importer.d.ts","sourceRoot":"","sources":["../src/markdown-importer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,oBAAoB,EACpB,+BAA+B,EAG/B,0BAA0B,EAC1B,2BAA2B,EAG5B,MAAM,YAAY,CAAC;AAsZpB,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;gBAE3B,OAAO,GAAE,+BAAoC;IAKzD,KAAK,IAAI,IAAI;IAMb,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,oBAAoB;IA0BhF,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,oBAAoB;IAuB9E,OAAO,CAAC,WAAW;IAmCnB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,WAAW;CA2BpB;AAED,wBAAgB,8BAA8B,CAAC,OAAO,GAAE,+BAAoC,GAAG,wBAAwB,CAEtH"}
@@ -0,0 +1,446 @@
1
+ import { openDocumentDatabase } from "./database.js";
2
+ import { DefaultMarkdownImportProfile } from "./import-profile.js";
3
+ import { createDocumentService } from "./service.js";
4
+ function isHeading(line) {
5
+ return line.match(/^(#{1,6})\s+(.+?)\s*$/);
6
+ }
7
+ function isImage(line) {
8
+ return line.match(/^!\[(.*?)\]\((.*?)\)\s*$/);
9
+ }
10
+ function isTableStart(lines, index) {
11
+ if (index + 1 >= lines.length) {
12
+ return false;
13
+ }
14
+ return lines[index].trim().startsWith("|") && /^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/.test(lines[index + 1]);
15
+ }
16
+ function isListLine(line) {
17
+ return /^\s*([-*]|\d+\.)\s+/.test(line);
18
+ }
19
+ function nextNonEmptyIndex(lines, index) {
20
+ for (let current = index; current < lines.length; current += 1) {
21
+ if (lines[current].trim().length > 0) {
22
+ return current;
23
+ }
24
+ }
25
+ return undefined;
26
+ }
27
+ function cleanHeadingTitle(title) {
28
+ return title.replace(/^#+\s*/, "").trim();
29
+ }
30
+ function splitCaptionBody(body) {
31
+ const separator = " - ";
32
+ const separatorIndex = body.indexOf(separator);
33
+ if (separatorIndex === -1) {
34
+ return { caption: body.trim() };
35
+ }
36
+ const caption = body.slice(0, separatorIndex).trim();
37
+ const captionSummary = body.slice(separatorIndex + separator.length).trim();
38
+ return captionSummary.length === 0 ? { caption } : { caption, captionSummary };
39
+ }
40
+ function escapeRegExp(value) {
41
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
42
+ }
43
+ function captionPatternToRegExp(pattern) {
44
+ const numberToken = "__AGENTIC_CAPTION_NUMBER__";
45
+ const titleToken = "__AGENTIC_CAPTION_TITLE__";
46
+ const summaryToken = "__AGENTIC_CAPTION_SUMMARY__";
47
+ const escaped = escapeRegExp(pattern)
48
+ .replaceAll("\\{number\\}", numberToken)
49
+ .replaceAll("\\{title\\}", titleToken)
50
+ .replaceAll("\\{summary\\}", summaryToken);
51
+ const expression = escaped
52
+ .replaceAll(numberToken, "(?<number>[0-9]+(?:[-.][0-9]+)*)")
53
+ .replaceAll(titleToken, "(?<caption>.+?)")
54
+ .replaceAll(summaryToken, "(?<captionSummary>.+)");
55
+ return new RegExp(`^${expression}$`, "i");
56
+ }
57
+ function parseCaptionByPatterns(line, kind, patterns) {
58
+ if (patterns === undefined || patterns.length === 0) {
59
+ return undefined;
60
+ }
61
+ const trimmed = line.trim();
62
+ for (const pattern of patterns) {
63
+ const match = trimmed.match(captionPatternToRegExp(pattern));
64
+ if (match?.groups === undefined) {
65
+ continue;
66
+ }
67
+ return {
68
+ kind,
69
+ label: kind,
70
+ number: match.groups.number,
71
+ caption: match.groups.caption.trim(),
72
+ captionSummary: match.groups.captionSummary?.trim(),
73
+ rawCaption: trimmed
74
+ };
75
+ }
76
+ return undefined;
77
+ }
78
+ function parseCaption(line, policy = DefaultMarkdownImportProfile.captionPolicy) {
79
+ const trimmed = line.trim();
80
+ const tableCaption = parseCaptionByPatterns(trimmed, "table", policy?.tableCaptionPatterns);
81
+ if (tableCaption !== undefined) {
82
+ return tableCaption;
83
+ }
84
+ const figureCaption = parseCaptionByPatterns(trimmed, "figure", policy?.figureCaptionPatterns);
85
+ if (figureCaption !== undefined) {
86
+ return figureCaption;
87
+ }
88
+ const match = trimmed.match(/^(표|Table|그림|Figure)\s+([0-9]+(?:[-.][0-9]+)*)(?:[.)])?\s*[.:]?\s+(.+)$/i);
89
+ if (match === null) {
90
+ return undefined;
91
+ }
92
+ const label = match[1];
93
+ const kind = label === "표" || label.toLocaleLowerCase() === "table" ? "table" : "figure";
94
+ const { caption, captionSummary } = splitCaptionBody(match[3]);
95
+ return {
96
+ kind,
97
+ label,
98
+ number: match[2],
99
+ caption,
100
+ captionSummary,
101
+ rawCaption: trimmed
102
+ };
103
+ }
104
+ function headingNodeLevel(markdownHeadingLevel, profile) {
105
+ const maxHeadingLevel = profile.headingPolicy?.maxHeadingLevel ?? 6;
106
+ const tocLevelLimit = profile.headingPolicy?.tocLevelLimit ?? profile.defaultTocLevelLimit ?? 3;
107
+ return Math.min(markdownHeadingLevel, maxHeadingLevel, tocLevelLimit);
108
+ }
109
+ function parseMarkdown(markdown, options) {
110
+ const lines = markdown.replace(/\r\n/g, "\n").split("\n");
111
+ const items = [];
112
+ let index = 0;
113
+ const captionPolicy = options.profile.captionPolicy;
114
+ while (index < lines.length) {
115
+ const line = lines[index];
116
+ const trimmed = line.trim();
117
+ if (trimmed.length === 0 || trimmed === "---") {
118
+ index += 1;
119
+ continue;
120
+ }
121
+ const heading = isHeading(line);
122
+ if (heading !== null) {
123
+ items.push({
124
+ kind: "heading",
125
+ level: headingNodeLevel(heading[1].length, options.profile),
126
+ title: cleanHeadingTitle(heading[2]),
127
+ lineStart: index + 1,
128
+ lineEnd: index + 1
129
+ });
130
+ index += 1;
131
+ continue;
132
+ }
133
+ const caption = parseCaption(trimmed, captionPolicy);
134
+ if (caption?.kind === "table" && captionPolicy?.bindTableCaptionBeforeTable !== false) {
135
+ const captionStart = index;
136
+ const tableIndex = nextNonEmptyIndex(lines, index + 1);
137
+ if (tableIndex !== undefined && isTableStart(lines, tableIndex)) {
138
+ const tableLines = [];
139
+ index = tableIndex;
140
+ while (index < lines.length && lines[index].trim().startsWith("|")) {
141
+ tableLines.push(lines[index]);
142
+ index += 1;
143
+ }
144
+ items.push({
145
+ kind: "block",
146
+ blockTypeCode: "table",
147
+ contentJson: parseTable(tableLines, caption, options.profile),
148
+ lineStart: captionStart + 1,
149
+ lineEnd: index
150
+ });
151
+ continue;
152
+ }
153
+ }
154
+ if (line.startsWith("```")) {
155
+ const language = line.slice(3).trim();
156
+ const start = index;
157
+ const codeLines = [];
158
+ index += 1;
159
+ while (index < lines.length && !lines[index].startsWith("```")) {
160
+ codeLines.push(lines[index]);
161
+ index += 1;
162
+ }
163
+ const end = index < lines.length ? index : Math.max(index - 1, start);
164
+ index += index < lines.length ? 1 : 0;
165
+ const notation = language === "mermaid" || language === "plantuml" ? language : undefined;
166
+ items.push(notation === undefined
167
+ ? {
168
+ kind: "block",
169
+ blockTypeCode: "code",
170
+ contentText: codeLines.join("\n"),
171
+ lineStart: start + 1,
172
+ lineEnd: end + 1
173
+ }
174
+ : {
175
+ kind: "block",
176
+ blockTypeCode: "diagram",
177
+ contentJson: {
178
+ notation,
179
+ sourceText: codeLines.join("\n")
180
+ },
181
+ lineStart: start + 1,
182
+ lineEnd: end + 1
183
+ });
184
+ continue;
185
+ }
186
+ if (isTableStart(lines, index)) {
187
+ const start = index;
188
+ const tableLines = [];
189
+ while (index < lines.length && lines[index].trim().startsWith("|")) {
190
+ tableLines.push(lines[index]);
191
+ index += 1;
192
+ }
193
+ items.push({
194
+ kind: "block",
195
+ blockTypeCode: "table",
196
+ contentJson: parseTable(tableLines, undefined, options.profile),
197
+ lineStart: start + 1,
198
+ lineEnd: index
199
+ });
200
+ continue;
201
+ }
202
+ const image = isImage(trimmed);
203
+ if (image !== null) {
204
+ let captionInfo = parseCaption(image[1], captionPolicy);
205
+ let lineEnd = index + 1;
206
+ const visibleCaptionIndex = captionPolicy?.bindVisibleFigureCaptionAfterImage === false ? undefined : nextNonEmptyIndex(lines, index + 1);
207
+ if (visibleCaptionIndex !== undefined) {
208
+ const visibleCaption = parseCaption(lines[visibleCaptionIndex], captionPolicy);
209
+ if (visibleCaption?.kind === "figure" && (captionInfo === undefined || visibleCaption.rawCaption === captionInfo.rawCaption)) {
210
+ captionInfo = captionInfo ?? visibleCaption;
211
+ if (captionPolicy?.removeDuplicateVisibleFigureCaption !== false) {
212
+ lineEnd = visibleCaptionIndex + 1;
213
+ }
214
+ }
215
+ }
216
+ items.push({
217
+ kind: "block",
218
+ blockTypeCode: "figure",
219
+ contentJson: {
220
+ altText: image[1],
221
+ sourcePath: image[2],
222
+ caption: captionInfo?.caption ?? image[1],
223
+ captionNumber: captionInfo?.number,
224
+ captionSummary: captionInfo?.captionSummary,
225
+ rawCaption: captionInfo?.rawCaption
226
+ },
227
+ lineStart: index + 1,
228
+ lineEnd
229
+ });
230
+ index = lineEnd;
231
+ continue;
232
+ }
233
+ if (trimmed.startsWith(">")) {
234
+ const start = index;
235
+ const quoteLines = [];
236
+ while (index < lines.length && lines[index].trim().startsWith(">")) {
237
+ quoteLines.push(lines[index].trim().replace(/^>\s?/, ""));
238
+ index += 1;
239
+ }
240
+ items.push({
241
+ kind: "block",
242
+ blockTypeCode: "quote",
243
+ contentText: quoteLines.join("\n").trim(),
244
+ lineStart: start + 1,
245
+ lineEnd: index
246
+ });
247
+ continue;
248
+ }
249
+ if (isListLine(line)) {
250
+ const start = index;
251
+ const listItems = [];
252
+ while (index < lines.length && isListLine(lines[index])) {
253
+ listItems.push({
254
+ text: lines[index].trim().replace(/^([-*]|\d+\.)\s+/, "")
255
+ });
256
+ index += 1;
257
+ }
258
+ items.push({
259
+ kind: "block",
260
+ blockTypeCode: "list",
261
+ contentJson: {
262
+ items: listItems
263
+ },
264
+ lineStart: start + 1,
265
+ lineEnd: index
266
+ });
267
+ continue;
268
+ }
269
+ const start = index;
270
+ const paragraphLines = [];
271
+ while (index < lines.length &&
272
+ lines[index].trim().length > 0 &&
273
+ isHeading(lines[index]) === null &&
274
+ !lines[index].startsWith("```") &&
275
+ !isTableStart(lines, index) &&
276
+ isImage(lines[index].trim()) === null &&
277
+ !lines[index].trim().startsWith(">") &&
278
+ !isListLine(lines[index])) {
279
+ paragraphLines.push(lines[index].trim());
280
+ index += 1;
281
+ }
282
+ items.push({
283
+ kind: "block",
284
+ blockTypeCode: "paragraph",
285
+ contentText: paragraphLines.join("\n").trim(),
286
+ lineStart: start + 1,
287
+ lineEnd: index
288
+ });
289
+ }
290
+ return items;
291
+ }
292
+ function parseTable(lines, caption, profile = DefaultMarkdownImportProfile) {
293
+ const rows = lines
294
+ .filter((line, index) => index !== 1)
295
+ .map((line) => line.trim().replace(/^\|/, "").replace(/\|$/, "").split("|").map((cell) => cell.trim()));
296
+ const headers = rows[0] ?? [];
297
+ const body = rows.slice(1);
298
+ const columns = headers.map((header, index) => ({
299
+ key: `column_${index + 1}`,
300
+ header,
301
+ valueType: profile.tablePolicy?.defaultColumnValueType ?? "text"
302
+ }));
303
+ return {
304
+ caption: caption?.caption,
305
+ captionNumber: caption?.number,
306
+ captionSummary: caption?.captionSummary,
307
+ rawCaption: caption?.rawCaption,
308
+ columns,
309
+ rows: body.map((cells) => Object.fromEntries(columns.map((column, index) => [column.key, cells[index] ?? ""]))),
310
+ markdown: lines.join("\n")
311
+ };
312
+ }
313
+ function sourceMetadata(sourcePath, item) {
314
+ return {
315
+ importedBy: "agentic-domain-document.markdown-importer",
316
+ sourceType: "markdown",
317
+ sourcePath,
318
+ sourceLineStart: item.lineStart,
319
+ sourceLineEnd: item.lineEnd
320
+ };
321
+ }
322
+ export class DocumentMarkdownImporter {
323
+ ownsDatabase;
324
+ db;
325
+ constructor(options = {}) {
326
+ this.ownsDatabase = options.database === undefined;
327
+ this.db = options.database ?? openDocumentDatabase(options);
328
+ }
329
+ close() {
330
+ if (this.ownsDatabase) {
331
+ this.db.close();
332
+ }
333
+ }
334
+ importMarkdownDocument(input) {
335
+ const run = this.db.transaction(() => {
336
+ const service = createDocumentService({ database: this.db });
337
+ const profile = input.profile ?? DefaultMarkdownImportProfile;
338
+ const document = service.createDocument({
339
+ title: input.title,
340
+ documentTypeCode: input.documentTypeCode ?? profile.documentTypeCode,
341
+ taxonomyCode: input.taxonomyCode ?? profile.taxonomyCode ?? profile.headingPolicy?.defaultTaxonomyCode ?? input.documentTypeCode,
342
+ tocLevelLimit: profile.defaultTocLevelLimit,
343
+ versionLabel: input.versionLabel,
344
+ author: input.author,
345
+ metadata: {
346
+ ...(typeof input.metadata === "object" && input.metadata !== null ? input.metadata : {}),
347
+ importedBy: "agentic-domain-document.markdown-importer",
348
+ importProfileCode: profile.profileCode,
349
+ importProfileVersion: profile.profileVersion,
350
+ sourceType: "markdown",
351
+ sourcePath: input.sourcePath
352
+ }
353
+ });
354
+ return this.importItems(document, parseMarkdown(input.markdown, { profile }), input.sourcePath, input.policy);
355
+ });
356
+ return run();
357
+ }
358
+ importMarkdownChapter(input) {
359
+ const run = this.db.transaction(() => {
360
+ const service = createDocumentService({ database: this.db });
361
+ const document = service.getDocument(input.documentId);
362
+ const profile = input.profile ?? DefaultMarkdownImportProfile;
363
+ const items = parseMarkdown(input.markdown, { profile });
364
+ if (!items.some((item) => item.kind === "heading")) {
365
+ items.unshift({
366
+ kind: "heading",
367
+ level: 1,
368
+ title: input.fallbackTitle ?? "Imported Chapter",
369
+ lineStart: 1,
370
+ lineEnd: 1
371
+ });
372
+ }
373
+ return this.importItems(document, items, input.sourcePath, input.policy);
374
+ });
375
+ return run();
376
+ }
377
+ importItems(document, items, sourcePath, policy) {
378
+ const service = createDocumentService({ database: this.db });
379
+ const state = {
380
+ documentId: document.documentId,
381
+ sourcePath,
382
+ createdNodes: [],
383
+ createdContents: [],
384
+ createdBlocks: [],
385
+ nodeStack: []
386
+ };
387
+ for (const item of items) {
388
+ if (item.kind === "heading") {
389
+ this.importHeading(service, state, item);
390
+ }
391
+ else {
392
+ this.importBlock(service, state, item);
393
+ }
394
+ }
395
+ const validation = policy?.validateAfterImport === false ? undefined : service.validateDocument(document.documentId);
396
+ return {
397
+ document,
398
+ nodes: state.createdNodes,
399
+ contents: state.createdContents,
400
+ blocks: state.createdBlocks,
401
+ validation
402
+ };
403
+ }
404
+ importHeading(service, state, heading) {
405
+ const parent = state.nodeStack[heading.level - 2];
406
+ const node = service.createNode({
407
+ documentId: state.documentId,
408
+ parentNodeId: parent?.nodeId,
409
+ nodeLevel: heading.level,
410
+ title: heading.title,
411
+ metadata: sourceMetadata(state.sourcePath, heading)
412
+ });
413
+ state.createdNodes.push(node);
414
+ state.nodeStack.length = heading.level - 1;
415
+ state.nodeStack[heading.level - 1] = node;
416
+ }
417
+ importBlock(service, state, block) {
418
+ let node = state.nodeStack[state.nodeStack.length - 1];
419
+ if (node === undefined) {
420
+ node = service.createNode({
421
+ documentId: state.documentId,
422
+ nodeLevel: 1,
423
+ title: "Imported Content",
424
+ metadata: sourceMetadata(state.sourcePath, block)
425
+ });
426
+ state.createdNodes.push(node);
427
+ state.nodeStack[0] = node;
428
+ }
429
+ const content = service.ensureContent(node.nodeId);
430
+ if (!state.createdContents.some((item) => item.contentId === content.contentId)) {
431
+ state.createdContents.push(content);
432
+ }
433
+ const createdBlock = service.addBlock({
434
+ contentId: content.contentId,
435
+ blockTypeCode: block.blockTypeCode,
436
+ contentText: block.contentText,
437
+ contentJson: block.contentJson,
438
+ metadata: sourceMetadata(state.sourcePath, block)
439
+ });
440
+ state.createdBlocks.push(createdBlock);
441
+ }
442
+ }
443
+ export function createDocumentMarkdownImporter(options = {}) {
444
+ return new DocumentMarkdownImporter(options);
445
+ }
446
+ //# sourceMappingURL=markdown-importer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-importer.js","sourceRoot":"","sources":["../src/markdown-importer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { DocumentAggregate, DocumentBlockSearchQuery, DocumentBlockSearchResult, DocumentMarkdownProjectionOptions, DocumentQuery, DocumentReaderOptions, DocumentRecord, DocumentTreeNode } from "./types.js";
2
+ export declare class DocumentReader {
3
+ private readonly ownsDatabase;
4
+ private readonly db;
5
+ private readonly repository;
6
+ constructor(options?: DocumentReaderOptions);
7
+ close(): void;
8
+ listDocuments(query?: DocumentQuery): DocumentRecord[];
9
+ getLatestDocument(query?: DocumentQuery): DocumentRecord | undefined;
10
+ getDocumentAggregate(documentId: string): DocumentAggregate;
11
+ getDocumentTree(documentId: string): DocumentTreeNode[];
12
+ findBlocks(documentId: string, query?: DocumentBlockSearchQuery): DocumentBlockSearchResult[];
13
+ toMarkdown(documentId: string, options?: DocumentMarkdownProjectionOptions): string;
14
+ private getNodePath;
15
+ }
16
+ export declare function createDocumentReader(options?: DocumentReaderOptions): DocumentReader;
17
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EAEjB,wBAAwB,EACxB,yBAAyB,EAEzB,iCAAiC,EAEjC,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAwLpB,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEpC,OAAO,GAAE,qBAA0B;IAM/C,KAAK,IAAI,IAAI;IAMb,aAAa,CAAC,KAAK,GAAE,aAAkB,GAAG,cAAc,EAAE;IAI1D,iBAAiB,CAAC,KAAK,GAAE,aAAkB,GAAG,cAAc,GAAG,SAAS;IAIxE,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAwB3D,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE;IA6CvD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,wBAA6B,GAAG,yBAAyB,EAAE;IAwDjG,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,iCAAsC,GAAG,MAAM;IAqDvF,OAAO,CAAC,WAAW;CAepB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAExF"}