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,255 @@
1
+ const TEXT_BLOCK_TYPES = new Set(["paragraph", "quote", "code", "callout"]);
2
+ const JSON_BLOCK_TYPES = new Set(["table", "figure", "diagram", "list"]);
3
+ const DIAGRAM_NOTATIONS = new Set(["mermaid", "plantuml", "drawio", "svg"]);
4
+ function isRecord(value) {
5
+ return value !== null && typeof value === "object" && !Array.isArray(value);
6
+ }
7
+ function nonEmptyString(value) {
8
+ return typeof value === "string" && value.trim().length > 0;
9
+ }
10
+ function issue(input) {
11
+ return {
12
+ severity: input.severity ?? "error",
13
+ ruleId: input.ruleId,
14
+ targetType: input.targetType,
15
+ targetId: input.targetId,
16
+ message: input.message,
17
+ details: input.details
18
+ };
19
+ }
20
+ function parseJson(value) {
21
+ if (typeof value !== "string" || value.length === 0) {
22
+ return undefined;
23
+ }
24
+ return JSON.parse(value);
25
+ }
26
+ function getDocument(db, documentId) {
27
+ return db.prepare(`SELECT * FROM document_documents WHERE document_id = ?`).get(documentId);
28
+ }
29
+ function listNodes(db, documentId) {
30
+ return db.prepare(`SELECT * FROM document_nodes WHERE document_id = ? ORDER BY node_level, sort_order`).all(documentId).map((row) => ({
31
+ nodeId: row.node_id,
32
+ documentId: row.document_id,
33
+ parentNodeId: typeof row.parent_node_id === "string" ? row.parent_node_id : undefined,
34
+ nodeLevel: row.node_level,
35
+ nodeRoleCode: row.node_role_code,
36
+ title: row.title,
37
+ tocVisibility: row.toc_visibility,
38
+ numberingPolicyCode: row.numbering_policy_code,
39
+ numberingOverride: typeof row.numbering_override === "string" ? row.numbering_override : undefined,
40
+ sortOrder: row.sort_order,
41
+ createdAt: row.created_at,
42
+ updatedAt: row.updated_at,
43
+ metadata: parseJson(row.metadata_json)
44
+ }));
45
+ }
46
+ function listBlocks(db, documentId) {
47
+ return db
48
+ .prepare(`SELECT b.*
49
+ FROM document_blocks b
50
+ JOIN document_contents c ON c.content_id = b.content_id
51
+ WHERE c.document_id = ?
52
+ ORDER BY c.node_id, b.sort_order`)
53
+ .all(documentId).map((row) => ({
54
+ blockId: row.block_id,
55
+ contentId: row.content_id,
56
+ blockTypeCode: row.block_type_code,
57
+ sortOrder: row.sort_order,
58
+ contentText: typeof row.content_text === "string" ? row.content_text : undefined,
59
+ contentJson: parseJson(row.content_json),
60
+ createdAt: row.created_at,
61
+ updatedAt: row.updated_at,
62
+ metadata: parseJson(row.metadata_json)
63
+ }));
64
+ }
65
+ function hasTaxonomyLevel(db, taxonomyId, level) {
66
+ const row = db
67
+ .prepare(`SELECT taxonomy_level_id FROM document_node_taxonomy_levels WHERE taxonomy_id = ? AND node_level = ?`)
68
+ .get(taxonomyId, level);
69
+ return row !== undefined;
70
+ }
71
+ function listDepth(value, depth = 1) {
72
+ if (value === null || typeof value !== "object") {
73
+ return depth;
74
+ }
75
+ const record = value;
76
+ const children = Array.isArray(record.children) ? record.children : Array.isArray(record.items) ? record.items : [];
77
+ if (children.length === 0) {
78
+ return depth;
79
+ }
80
+ return Math.max(...children.map((child) => listDepth(child, depth + 1)));
81
+ }
82
+ function validateBlockPayload(block) {
83
+ const issues = [];
84
+ if (TEXT_BLOCK_TYPES.has(block.blockTypeCode) && (block.contentText === undefined || block.contentText.trim() === "")) {
85
+ issues.push(issue({
86
+ ruleId: "DOCUMENT.BLOCK.TEXT_REQUIRED",
87
+ targetType: "block",
88
+ targetId: block.blockId,
89
+ message: `${block.blockTypeCode} block은 contentText가 필요합니다.`
90
+ }));
91
+ }
92
+ if (JSON_BLOCK_TYPES.has(block.blockTypeCode) && block.contentJson === undefined) {
93
+ issues.push(issue({
94
+ ruleId: "DOCUMENT.BLOCK.JSON_REQUIRED",
95
+ targetType: "block",
96
+ targetId: block.blockId,
97
+ message: `${block.blockTypeCode} block은 contentJson이 필요합니다.`
98
+ }));
99
+ }
100
+ if (block.blockTypeCode === "diagram" && block.contentJson !== undefined) {
101
+ const notation = isRecord(block.contentJson) ? block.contentJson.notation : undefined;
102
+ if (typeof notation !== "string" || !DIAGRAM_NOTATIONS.has(notation)) {
103
+ issues.push(issue({
104
+ ruleId: "DOCUMENT.BLOCK.DIAGRAM_NOTATION",
105
+ targetType: "block",
106
+ targetId: block.blockId,
107
+ message: "diagram block은 mermaid, plantuml, drawio, svg 중 하나의 notation이 필요합니다.",
108
+ details: { notation }
109
+ }));
110
+ }
111
+ if (isRecord(block.contentJson) && !nonEmptyString(block.contentJson.sourceText) && !nonEmptyString(block.contentJson.sourcePath) && !nonEmptyString(block.contentJson.path)) {
112
+ issues.push(issue({
113
+ ruleId: "DOCUMENT.BLOCK.DIAGRAM_SOURCE",
114
+ targetType: "block",
115
+ targetId: block.blockId,
116
+ message: "diagram block은 sourceText, sourcePath, path 중 하나가 필요합니다."
117
+ }));
118
+ }
119
+ }
120
+ if (block.blockTypeCode === "table" && block.contentJson !== undefined) {
121
+ const columns = isRecord(block.contentJson) ? block.contentJson.columns : undefined;
122
+ const rows = isRecord(block.contentJson) ? block.contentJson.rows : undefined;
123
+ if (!Array.isArray(columns) || columns.length === 0) {
124
+ issues.push(issue({
125
+ ruleId: "DOCUMENT.BLOCK.TABLE_COLUMNS",
126
+ targetType: "block",
127
+ targetId: block.blockId,
128
+ message: "table block은 하나 이상의 column이 필요합니다."
129
+ }));
130
+ }
131
+ if (!Array.isArray(rows)) {
132
+ issues.push(issue({
133
+ ruleId: "DOCUMENT.BLOCK.TABLE_ROWS",
134
+ targetType: "block",
135
+ targetId: block.blockId,
136
+ message: "table block은 rows 배열이 필요합니다."
137
+ }));
138
+ }
139
+ if (isRecord(block.contentJson) && !nonEmptyString(block.contentJson.caption) && !nonEmptyString(block.contentJson.rawCaption)) {
140
+ issues.push(issue({
141
+ ruleId: "DOCUMENT.BLOCK.TABLE_CAPTION",
142
+ severity: "warning",
143
+ targetType: "block",
144
+ targetId: block.blockId,
145
+ message: "table block에 caption이 없습니다."
146
+ }));
147
+ }
148
+ }
149
+ if (block.blockTypeCode === "figure" && block.contentJson !== undefined && isRecord(block.contentJson)) {
150
+ if (!nonEmptyString(block.contentJson.sourcePath) && !nonEmptyString(block.contentJson.path)) {
151
+ issues.push(issue({
152
+ ruleId: "DOCUMENT.BLOCK.FIGURE_SOURCE",
153
+ targetType: "block",
154
+ targetId: block.blockId,
155
+ message: "figure block은 sourcePath 또는 path가 필요합니다."
156
+ }));
157
+ }
158
+ if (!nonEmptyString(block.contentJson.caption) && !nonEmptyString(block.contentJson.rawCaption) && !nonEmptyString(block.contentJson.altText)) {
159
+ issues.push(issue({
160
+ ruleId: "DOCUMENT.BLOCK.FIGURE_CAPTION",
161
+ severity: "warning",
162
+ targetType: "block",
163
+ targetId: block.blockId,
164
+ message: "figure block에 caption 또는 altText가 없습니다."
165
+ }));
166
+ }
167
+ }
168
+ if (block.blockTypeCode === "list" && block.contentJson !== undefined) {
169
+ const depth = listDepth(block.contentJson);
170
+ if (depth > 3) {
171
+ issues.push(issue({
172
+ ruleId: "DOCUMENT.BLOCK.LIST_DEPTH",
173
+ targetType: "block",
174
+ targetId: block.blockId,
175
+ message: "list block의 중첩 깊이는 3을 넘을 수 없습니다.",
176
+ details: { depth }
177
+ }));
178
+ }
179
+ }
180
+ return issues;
181
+ }
182
+ export function validateDocument(db, documentId) {
183
+ const document = getDocument(db, documentId);
184
+ if (document === undefined) {
185
+ return {
186
+ valid: false,
187
+ issues: [
188
+ issue({
189
+ ruleId: "DOCUMENT.EXISTS",
190
+ targetType: "document",
191
+ targetId: documentId,
192
+ message: "문서를 찾을 수 없습니다."
193
+ })
194
+ ]
195
+ };
196
+ }
197
+ const taxonomyId = document.taxonomy_id;
198
+ const issues = [];
199
+ const nodes = listNodes(db, documentId);
200
+ const nodeById = new Map(nodes.map((node) => [node.nodeId, node]));
201
+ for (const node of nodes) {
202
+ if (!hasTaxonomyLevel(db, taxonomyId, node.nodeLevel)) {
203
+ issues.push(issue({
204
+ ruleId: "DOCUMENT.NODE.TAXONOMY_LEVEL",
205
+ targetType: "node",
206
+ targetId: node.nodeId,
207
+ message: `taxonomy에 정의되지 않은 node level입니다: ${node.nodeLevel}`,
208
+ details: { nodeLevel: node.nodeLevel, taxonomyId }
209
+ }));
210
+ }
211
+ if (node.parentNodeId !== undefined) {
212
+ const parent = nodeById.get(node.parentNodeId);
213
+ if (parent === undefined) {
214
+ issues.push(issue({
215
+ ruleId: "DOCUMENT.NODE.PARENT_EXISTS",
216
+ targetType: "node",
217
+ targetId: node.nodeId,
218
+ message: "상위 node를 찾을 수 없습니다.",
219
+ details: { parentNodeId: node.parentNodeId }
220
+ }));
221
+ }
222
+ else if (node.nodeLevel <= parent.nodeLevel) {
223
+ issues.push(issue({
224
+ ruleId: "DOCUMENT.NODE.PARENT_LEVEL",
225
+ targetType: "node",
226
+ targetId: node.nodeId,
227
+ message: "하위 node level은 상위 node level보다 커야 합니다.",
228
+ details: { parentLevel: parent.nodeLevel, nodeLevel: node.nodeLevel }
229
+ }));
230
+ }
231
+ let ancestor = parent;
232
+ while (ancestor !== undefined) {
233
+ if (ancestor.tocVisibility === "exclude" && node.tocVisibility === "include") {
234
+ issues.push(issue({
235
+ ruleId: "DOCUMENT.TOC.EXCLUDED_ANCESTOR",
236
+ targetType: "node",
237
+ targetId: node.nodeId,
238
+ message: "상위 node가 TOC에서 제외된 경우 하위 node만 TOC에 포함할 수 없습니다.",
239
+ details: { ancestorNodeId: ancestor.nodeId }
240
+ }));
241
+ break;
242
+ }
243
+ ancestor = ancestor.parentNodeId === undefined ? undefined : nodeById.get(ancestor.parentNodeId);
244
+ }
245
+ }
246
+ }
247
+ for (const block of listBlocks(db, documentId)) {
248
+ issues.push(...validateBlockPayload(block));
249
+ }
250
+ return {
251
+ valid: issues.every((validationIssue) => validationIssue.severity !== "error"),
252
+ issues
253
+ };
254
+ }
255
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
package/docs/build.md ADDED
@@ -0,0 +1,55 @@
1
+ # agentic-domain-document 개발 및 빌드 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 구축 담당자가 `agentic-domain-document` 패키지를 개발, 빌드, 로컬 검증하기 위해 알아야 하는 내용을 정리합니다.
6
+
7
+ ## 2. 패키지 정보
8
+
9
+ | 항목 | 값 |
10
+ | --- | --- |
11
+ | package | `agentic-domain-document` |
12
+ | current version | `0.1.0` |
13
+ | layer | Domain |
14
+ | workspace | `packages/agentic-domain-document` |
15
+
16
+ ## 3. 소스 구조
17
+
18
+ ```text
19
+ packages/agentic-domain-document/
20
+ package.json
21
+ README.md
22
+ CHANGELOG.md
23
+ tsconfig.json
24
+ src/
25
+ index.ts
26
+ docs/
27
+ usage.md
28
+ configuration.md
29
+ build.md
30
+ publishing.md
31
+ delivery.md
32
+ operations.md
33
+ schema/
34
+ generated/
35
+ migrations.md
36
+ ```
37
+
38
+ ## 4. 개발 검증
39
+
40
+ repository root에서 실행합니다.
41
+
42
+ ```bash
43
+ npm run build --workspace agentic-domain-document
44
+ npm run typecheck --workspace agentic-domain-document
45
+ npm pack --workspace agentic-domain-document --dry-run --cache /private/tmp/agentic-npm-cache
46
+ ```
47
+
48
+ ## 5. Iteration 1 예정 검증
49
+
50
+ Document DB migration이 추가되면 다음 검증을 추가합니다.
51
+
52
+ ```bash
53
+ npm run schema:doc:agentic-domain-document
54
+ npm run dev:test:agentic-domain-document
55
+ ```
@@ -0,0 +1,34 @@
1
+ # agentic-domain-document 설정 원칙
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `agentic-domain-document`가 직접 소유하는 설정과 consumer project가 소유해야 하는 설정을 구분합니다.
6
+
7
+ ## 2. 원칙
8
+
9
+ `agentic-domain-document`는 환경별 runtime 값을 직접 소유하지 않습니다.
10
+
11
+ ```text
12
+ agentic-domain-document
13
+ - document domain schema
14
+ - migration
15
+ - repository/service/validator
16
+ - fixture
17
+ - docs
18
+
19
+ consumer project
20
+ - runtime database path
21
+ - registry URL
22
+ - authentication
23
+ - environment variables
24
+ ```
25
+
26
+ ## 3. DB 기준
27
+
28
+ | 구분 | 기준 |
29
+ | --- | --- |
30
+ | logical schema | `document` |
31
+ | SQLite table prefix | `document_` |
32
+ | PostgreSQL mapping | 향후 별도 프로세스에서 적용 |
33
+
34
+ SQLite table prefix는 로컬 SQLite에 schema namespace가 없기 때문에 사용합니다.
@@ -0,0 +1,50 @@
1
+ # agentic-domain-document Delivery 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `agentic-domain-document` 패키지를 구축 환경에서 운영환경으로 전달할 때 필요한 package-specific delivery 기준을 정의합니다.
6
+
7
+ ## 2. Delivery 범위
8
+
9
+ | 구분 | 포함 여부 | 설명 |
10
+ | --- | --- | --- |
11
+ | npm package publish | 포함 | hosted registry에 배포 |
12
+ | 운영환경 install 검증 | 포함 | group/proxy registry 기준 설치 확인 |
13
+ | source repository 전체 전달 | 제외 | npm package 기준 전달 |
14
+ | 인증 정보 전달 | 제외 | 환경별 `.npmrc` 또는 보안 정책으로 관리 |
15
+ | registry URL 하드코딩 | 제외 | 환경 설정으로 제공 |
16
+
17
+ ## 3. Package에 포함되는 파일
18
+
19
+ Iteration 0 배포 패키지는 다음 파일을 포함해야 합니다.
20
+
21
+ ```text
22
+ package/
23
+ package.json
24
+ README.md
25
+ CHANGELOG.md
26
+ dist/
27
+ index.js
28
+ index.d.ts
29
+ docs/
30
+ usage.md
31
+ configuration.md
32
+ build.md
33
+ publishing.md
34
+ delivery.md
35
+ operations.md
36
+ schema/
37
+ migrations.md
38
+ ```
39
+
40
+ ## 4. 운영환경 전달 기준
41
+
42
+ 운영환경에는 다음 정보만 전달합니다.
43
+
44
+ ```text
45
+ - package name: agentic-domain-document
46
+ - install version: 0.1.0
47
+ - 운영환경 NPM group/proxy registry 설정 방법
48
+ - 설치 및 import 확인 절차
49
+ - 문제 발생 시 확인 항목
50
+ ```
@@ -0,0 +1,50 @@
1
+ # agentic-domain-document 운영환경 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 운영환경 담당자 또는 사용자가 `agentic-domain-document`를 설치하고 기본 import 상태를 확인하는 절차를 정의합니다.
6
+
7
+ ## 2. 운영환경 전제
8
+
9
+ | 항목 | 기준 |
10
+ | --- | --- |
11
+ | 네트워크 | Private Network / VDI |
12
+ | 외부 인터넷 | 사용 불가 |
13
+ | NPM Registry | 내부 NPM Registry proxy/group 사용 |
14
+ | package | `agentic-domain-document` |
15
+
16
+ ## 3. Registry 확인
17
+
18
+ ```bash
19
+ npm config get registry
20
+ ```
21
+
22
+ 운영환경에서는 내부 group/proxy registry가 출력되어야 합니다.
23
+
24
+ ## 4. 설치
25
+
26
+ ```bash
27
+ npm install agentic-domain-document@0.6.0
28
+ ```
29
+
30
+ ## 5. 실행 확인
31
+
32
+ ```bash
33
+ node -e "import('agentic-domain-document').then(m => console.log(m.agenticDomainDocumentPackage.logicalSchema))"
34
+ ```
35
+
36
+ 기대 결과:
37
+
38
+ ```text
39
+ document
40
+ ```
41
+
42
+ ## 6. 장애 확인
43
+
44
+ | 증상 | 확인 |
45
+ | --- | --- |
46
+ | package not found | 운영환경 group/proxy registry에 package가 노출되었는지 확인 |
47
+ | authentication required | 사용자 홈 `.npmrc` 인증 정보 확인 |
48
+ | public npm 접근 시도 | `npm config get registry` 결과 확인 |
49
+ | import 실패 | `node_modules/agentic-domain-document/dist/index.js` 존재 여부 확인 |
50
+ | 버전 불일치 | `npm view agentic-domain-document version` 결과 확인 |
@@ -0,0 +1,69 @@
1
+ # agentic-domain-document Publishing 매뉴얼
2
+
3
+ ## 1. 목적
4
+
5
+ 본 문서는 `agentic-domain-document` 패키지를 NPM Registry에 publish하는 절차를 정의합니다.
6
+
7
+ ## 2. 전제
8
+
9
+ | 항목 | 기준 |
10
+ | --- | --- |
11
+ | package | `agentic-domain-document` |
12
+ | current version | `0.1.0` |
13
+ | workspace | `packages/agentic-domain-document` |
14
+ | publish registry | 구축 환경에서 제공 |
15
+ | install registry | 운영환경 또는 검증 환경에서 제공 |
16
+
17
+ ## 3. Publish 전 검증
18
+
19
+ repository root에서 실행합니다.
20
+
21
+ ```bash
22
+ npm run build --workspace agentic-domain-document
23
+ npm run typecheck --workspace agentic-domain-document
24
+ npm pack --workspace agentic-domain-document --dry-run --cache /private/tmp/agentic-npm-cache
25
+ ```
26
+
27
+ ## 4. Publish
28
+
29
+ `package.json`에는 registry URL을 고정하지 않습니다.
30
+
31
+ ```bash
32
+ npm publish --workspace agentic-domain-document --registry="${NPM_PUBLISH_REGISTRY_URL}"
33
+ ```
34
+
35
+ Windows PowerShell:
36
+
37
+ ```powershell
38
+ npm publish --workspace agentic-domain-document --registry="$env:NPM_PUBLISH_REGISTRY_URL"
39
+ ```
40
+
41
+ ## 5. Publish 검증
42
+
43
+ ```bash
44
+ npm view agentic-domain-document version --registry="${NPM_INSTALL_REGISTRY_URL}"
45
+ ```
46
+
47
+ 기대 결과:
48
+
49
+ ```text
50
+ 0.1.0
51
+ ```
52
+
53
+ ## 6. 사용자 프로젝트 설치 검증
54
+
55
+ ```bash
56
+ TEST_DIR=/private/tmp/agentic-domain-document-consumer-test
57
+ rm -rf "$TEST_DIR"
58
+ mkdir -p "$TEST_DIR"
59
+ cd "$TEST_DIR"
60
+ npm init -y
61
+ npm install agentic-domain-document@0.6.0 --registry="${NPM_INSTALL_REGISTRY_URL}" --prefer-online
62
+ node -e "import('agentic-domain-document').then(m => console.log(m.agenticDomainDocumentPackage.logicalSchema))"
63
+ ```
64
+
65
+ 기대 결과:
66
+
67
+ ```text
68
+ document
69
+ ```
@@ -0,0 +1,30 @@
1
+ # agentic-domain-document
2
+
3
+ ## Description
4
+
5
+ Agentic Platform document domain database.
6
+
7
+ ## Tables
8
+
9
+ | Name | Columns | Comment | Type |
10
+ | ----------------------------------------------------------------- | ------- | ---------------------------------------------------------------- | ----- |
11
+ | [document_code_groups](document_code_groups.md) | 7 | 코드 그룹을 정의한다. | table |
12
+ | [document_codes](document_codes.md) | 9 | 코드 그룹별 코드 값을 정의한다. | table |
13
+ | [document_node_taxonomies](document_node_taxonomies.md) | 9 | 문서 유형별 node level 해석 정책을 정의한다. | table |
14
+ | [document_node_taxonomy_levels](document_node_taxonomy_levels.md) | 9 | taxonomy별 node level 라벨, 번호 정책, counter scope를 정의한다. | table |
15
+ | [document_documents](document_documents.md) | 15 | 문서 단위 메타데이터, 작성자, taxonomy, 상태를 관리한다. | table |
16
+ | [document_nodes](document_nodes.md) | 13 | 문서의 계층 node tree를 관리한다. | table |
17
+ | [document_contents](document_contents.md) | 6 | 특정 document node에 붙는 block collection을 관리한다. | table |
18
+ | [document_blocks](document_blocks.md) | 9 | 문서 본문 표현 block을 관리한다. | table |
19
+ | [document_annotations](document_annotations.md) | 14 | 문서 본문 밖의 note annotation을 관리한다. | table |
20
+ | [document_revisions](document_revisions.md) | 11 | 하나 이상의 변경 이벤트를 묶는 의미 있는 변경 단위를 관리한다. | table |
21
+ | [document_change_events](document_change_events.md) | 13 | revision에 속하는 로그성 변경 이벤트를 관리한다. | table |
22
+ | [document_versions](document_versions.md) | 13 | 검토/승인/배포 기준본 snapshot을 관리한다. | table |
23
+
24
+ ## Relations
25
+
26
+ ![er](schema.svg)
27
+
28
+ ---
29
+
30
+ > Generated by [tbls](https://github.com/k1LoW/tbls)