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
package/docs/usage.md
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
# agentic-domain-document 사용 매뉴얼
|
|
2
|
+
|
|
3
|
+
## 1. 목적
|
|
4
|
+
|
|
5
|
+
본 문서는 `agentic-domain-document` 패키지 사용자가 패키지의 책임과 현재 사용 가능 범위를 이해하기 위한 문서입니다.
|
|
6
|
+
|
|
7
|
+
`Adoc`은 `agentic-domain-document`가 관리하는 Agentic Document의 공식 약칭입니다. Adoc은 Document, Node, Content, Block 단위로 관리되며, Adoc Tree와 Adoc Markdown Projection으로 조회할 수 있습니다.
|
|
8
|
+
|
|
9
|
+
## 2. 현재 상태
|
|
10
|
+
|
|
11
|
+
Iteration 1에서는 패키지 skeleton, Continuous Publish/Delivery 기반, Document DB schema, 최소 Repository/Service/Validator API를 제공합니다.
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
포함:
|
|
15
|
+
- package metadata
|
|
16
|
+
- TypeScript entrypoint
|
|
17
|
+
- 기본 문서
|
|
18
|
+
- build/typecheck/pack dry-run 검증
|
|
19
|
+
- Document/TOC Node/Content/Typed Block migration
|
|
20
|
+
- repository/service/validator
|
|
21
|
+
- reader/query API
|
|
22
|
+
- table/figure/diagram 복원을 포함한 기본 Adoc Markdown Projection
|
|
23
|
+
- table/figure caption binding을 포함한 Markdown 기반 전체 문서/챕터 import
|
|
24
|
+
- fixture/dev-test
|
|
25
|
+
|
|
26
|
+
제외:
|
|
27
|
+
- CLI
|
|
28
|
+
- Agent adapter
|
|
29
|
+
- 본격 Rendering lifecycle
|
|
30
|
+
- Artifact Standard 연계
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 3. 설치
|
|
34
|
+
|
|
35
|
+
운영환경에서는 내부 NPM Registry proxy/group을 통해 설치합니다.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install agentic-domain-document@0.6.0
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
registry를 명시해야 하는 경우:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install agentic-domain-document@0.6.0 --registry=운영환경_NPM_GROUP_REGISTRY_URL
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 4. 기본 import 확인
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import { agenticDomainDocumentPackage } from "agentic-domain-document";
|
|
51
|
+
|
|
52
|
+
console.log(agenticDomainDocumentPackage.logicalSchema);
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
기대 결과:
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
document
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 5. 기본 사용 흐름
|
|
62
|
+
|
|
63
|
+
`agentic-domain-document`는 domain package이므로 CLI가 아니라 TypeScript API로 사용합니다.
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import { createDocumentService } from "agentic-domain-document";
|
|
67
|
+
|
|
68
|
+
const service = createDocumentService({
|
|
69
|
+
databasePath: ".agentic/platform.sqlite"
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
const document = service.createDocument({
|
|
74
|
+
title: "아키텍처 명세서",
|
|
75
|
+
documentTypeCode: "architecture_specification",
|
|
76
|
+
taxonomyCode: "architecture_specification",
|
|
77
|
+
author: {
|
|
78
|
+
type: "user",
|
|
79
|
+
id: "u001",
|
|
80
|
+
name: "작성자"
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const part = service.createNode({
|
|
85
|
+
documentId: document.documentId,
|
|
86
|
+
nodeLevel: 1,
|
|
87
|
+
title: "Part I"
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const chapter = service.createNode({
|
|
91
|
+
documentId: document.documentId,
|
|
92
|
+
parentNodeId: part.nodeId,
|
|
93
|
+
nodeLevel: 2,
|
|
94
|
+
title: "문서 개요"
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
const content = service.ensureContent(chapter.nodeId);
|
|
98
|
+
|
|
99
|
+
service.addBlock({
|
|
100
|
+
contentId: content.contentId,
|
|
101
|
+
blockTypeCode: "paragraph",
|
|
102
|
+
contentText: "이 장에서는 문서의 목적과 범위를 설명합니다."
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const toc = service.getDocumentToc(document.documentId);
|
|
106
|
+
const validation = service.validateDocument(document.documentId);
|
|
107
|
+
|
|
108
|
+
console.log(toc);
|
|
109
|
+
console.log(validation.valid);
|
|
110
|
+
} finally {
|
|
111
|
+
service.close();
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## 6. 상태 전이와 version snapshot
|
|
116
|
+
|
|
117
|
+
문서 상태 전이는 Service API에서 수행합니다.
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
service.requestReview({
|
|
121
|
+
documentId,
|
|
122
|
+
reason: "검토 요청",
|
|
123
|
+
versionLabel: "0.1-review"
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
service.approveDocument({
|
|
127
|
+
documentId,
|
|
128
|
+
reason: "검토 완료",
|
|
129
|
+
versionLabel: "0.1-approved"
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
service.publishDocument({
|
|
133
|
+
documentId,
|
|
134
|
+
reason: "배포 승인",
|
|
135
|
+
versionLabel: "1.0.0"
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
`draft` 상태의 변경은 revision/event를 남기지 않습니다. `in_review` 이후 상태 전이와 annotation 처리는 revision/event/version으로 기록합니다.
|
|
140
|
+
|
|
141
|
+
`approved` 또는 `published` 문서를 수정해야 할 경우 직접 수정하지 않고 새 draft를 생성합니다.
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
const draft = service.createDraftFromDocument({
|
|
145
|
+
sourceDocumentId: publishedDocumentId,
|
|
146
|
+
title: "아키텍처 명세서 개정 초안",
|
|
147
|
+
versionLabel: "1.1-draft"
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Revision, change event, version, annotation 관련 일시 컬럼은 프로젝트 공통 시간 처리 기준을 따릅니다.
|
|
152
|
+
|
|
153
|
+
```text
|
|
154
|
+
- DB 저장 기준은 UTC입니다.
|
|
155
|
+
- SQLite timezone 없는 DATETIME 문자열은 UTC로 해석합니다.
|
|
156
|
+
- 사용자에게 표시하는 변경 일시와 문서 이력 일시는 기본 KST 기준입니다.
|
|
157
|
+
- 일자 단위 문서 이력 조회가 필요하면 KST calendar boundary를 UTC SQL boundary로 변환해 조회합니다.
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## 7. CLI 기준
|
|
161
|
+
|
|
162
|
+
## 7. Adoc 조회와 Markdown Projection
|
|
163
|
+
|
|
164
|
+
Adoc 조회는 직접 SQL보다 `DocumentReader`를 우선 사용합니다.
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
import { createDocumentReader } from "agentic-domain-document";
|
|
168
|
+
|
|
169
|
+
const reader = createDocumentReader({
|
|
170
|
+
databasePath: ".agentic/platform.sqlite"
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
try {
|
|
174
|
+
const document = reader.getLatestDocument({
|
|
175
|
+
documentTypeCode: "architecture_specification"
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
if (document !== undefined) {
|
|
179
|
+
const tree = reader.getDocumentTree(document.documentId);
|
|
180
|
+
const matches = reader.findBlocks(document.documentId, {
|
|
181
|
+
contains: "Contract API"
|
|
182
|
+
});
|
|
183
|
+
const markdown = reader.toMarkdown(document.documentId, {
|
|
184
|
+
includeFrontmatter: true,
|
|
185
|
+
includeNodeAnchors: true,
|
|
186
|
+
includeBlockAnchors: true
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
console.log(tree);
|
|
190
|
+
console.log(matches);
|
|
191
|
+
console.log(markdown);
|
|
192
|
+
}
|
|
193
|
+
} finally {
|
|
194
|
+
reader.close();
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Adoc Markdown Projection은 조회용 파생물입니다.
|
|
199
|
+
|
|
200
|
+
```text
|
|
201
|
+
- source of truth는 Adoc의 Document/Node/Content/Block 상태입니다.
|
|
202
|
+
- Markdown Projection을 직접 수정하지 않습니다.
|
|
203
|
+
- 수정은 DocumentService 또는 후속 DocumentWriter API로 수행합니다.
|
|
204
|
+
- 수정 후 Projection을 다시 생성해 확인합니다.
|
|
205
|
+
- Projection은 table, figure, diagram block을 기본 Markdown으로 복원합니다.
|
|
206
|
+
- Markdown/PDF/PPTX/HTML render lifecycle은 agentic-capability-render 책임입니다.
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 8. CLI 기준
|
|
210
|
+
|
|
211
|
+
## 8. Adoc Markdown Import
|
|
212
|
+
|
|
213
|
+
Adoc 작성의 1차 import 대상은 Markdown입니다. Markdown Import는 전체 문서 생성과 챕터 append를 지원합니다.
|
|
214
|
+
|
|
215
|
+
```ts
|
|
216
|
+
import { createDocumentMarkdownImporter } from "agentic-domain-document";
|
|
217
|
+
|
|
218
|
+
const importer = createDocumentMarkdownImporter({
|
|
219
|
+
databasePath: ".agentic/platform.sqlite"
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
try {
|
|
223
|
+
const documentResult = importer.importMarkdownDocument({
|
|
224
|
+
title: "아키텍처 명세서",
|
|
225
|
+
documentTypeCode: "architecture_specification",
|
|
226
|
+
taxonomyCode: "architecture_specification",
|
|
227
|
+
markdown,
|
|
228
|
+
sourcePath: "chapters/chapter-01.md",
|
|
229
|
+
policy: {
|
|
230
|
+
validateAfterImport: true
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
importer.importMarkdownChapter({
|
|
235
|
+
documentId: documentResult.document.documentId,
|
|
236
|
+
markdown: chapterMarkdown,
|
|
237
|
+
sourcePath: "chapters/chapter-02.md",
|
|
238
|
+
policy: {
|
|
239
|
+
validateAfterImport: true
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
} finally {
|
|
243
|
+
importer.close();
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Markdown Import 기준:
|
|
248
|
+
|
|
249
|
+
```text
|
|
250
|
+
- import 결과는 draft Adoc으로 관리합니다.
|
|
251
|
+
- import는 Document/Node/Content/Block을 생성합니다.
|
|
252
|
+
- sourcePath와 source line metadata를 node/block metadata에 남깁니다.
|
|
253
|
+
- `표 N. 제목 - 요약` caption은 다음 Markdown table block에 결합합니다.
|
|
254
|
+
- image alt 또는 visible `그림 N. 제목 - 요약` caption은 figure block에 결합합니다.
|
|
255
|
+
- image alt와 visible caption이 동일하면 visible caption을 별도 paragraph로 import하지 않습니다.
|
|
256
|
+
- mermaid/plantuml fenced code는 diagram block으로 import합니다.
|
|
257
|
+
- import 후 validateDocument를 실행할 수 있습니다.
|
|
258
|
+
- BlockFlow YAML, PDF/PPTX/HTML, merge/reconcile은 1차 범위에서 제외합니다.
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
참조 아키텍처 명세서 Markdown import 검증:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
npm run dev:test:agentic-domain-document:reference-markdown
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## 9. CLI 기준
|
|
268
|
+
|
|
269
|
+
`agentic-domain-document`는 domain package이므로 Iteration 1에서는 별도 CLI를 제공하지 않습니다.
|
|
270
|
+
|
|
271
|
+
CLI가 필요한 기능은 후속 iteration에서 application package 또는 runtime command로 노출할지 검토합니다.
|
|
272
|
+
|
|
273
|
+
## 10. Document Agent 리소스
|
|
274
|
+
|
|
275
|
+
`agentic-domain-document`는 문서 작성 agent가 사용할 resource contribution을 제공합니다.
|
|
276
|
+
|
|
277
|
+
```ts
|
|
278
|
+
import { documentAgentContribution } from "agentic-domain-document";
|
|
279
|
+
|
|
280
|
+
console.log(documentAgentContribution.manifest.agentId);
|
|
281
|
+
console.log(documentAgentContribution.resourceIndex?.instructions.length);
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Agent manifest, routing, capability, resource index, instruction, guide, example, validation rule, source mapping은 TypeScript inline 문자열이 아니라 `agent/` 리소스를 원천으로 관리합니다.
|
|
285
|
+
|
|
286
|
+
```text
|
|
287
|
+
agent/
|
|
288
|
+
agent.manifest.json
|
|
289
|
+
routing.json
|
|
290
|
+
resource-index.json
|
|
291
|
+
capabilities/
|
|
292
|
+
document-authoring.json
|
|
293
|
+
document-block.json
|
|
294
|
+
document-toc.json
|
|
295
|
+
document-validation.json
|
|
296
|
+
instructions/
|
|
297
|
+
00-runtime-behavior.md
|
|
298
|
+
10-scope-and-boundary.md
|
|
299
|
+
20-task-procedures.md
|
|
300
|
+
30-must-and-must-not.md
|
|
301
|
+
guides/
|
|
302
|
+
10-document-authoring-guide.md
|
|
303
|
+
20-domain-boundary-guide.md
|
|
304
|
+
30-authoring-policy-guide.md
|
|
305
|
+
40-toc-authoring-guide.md
|
|
306
|
+
50-content-block-guide.md
|
|
307
|
+
51-paragraph-authoring-guide.md
|
|
308
|
+
52-table-authoring-guide.md
|
|
309
|
+
53-diagram-figure-authoring-guide.md
|
|
310
|
+
70-korean-writing-style-guide.md
|
|
311
|
+
validation/
|
|
312
|
+
document-validation-rules.md
|
|
313
|
+
examples/
|
|
314
|
+
examples.md
|
|
315
|
+
document-quality-examples.md
|
|
316
|
+
sources/
|
|
317
|
+
reference-mapping.md
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
TS contribution은 `agent/` 리소스를 로드하고 export합니다. Runtime/router는 manifest를 기준으로 agent를 선택하고, 선택된 contribution의 instruction, guide, example, validation rule, source mapping을 resource index 기준으로 조립할 수 있습니다.
|
|
321
|
+
|
|
322
|
+
`resource-index.json`의 `resourceGroups.order`는 리소스 분류 간 적용 순서를 나타냅니다.
|
|
323
|
+
|
|
324
|
+
| 순서 | 분류 | 의미 |
|
|
325
|
+
| --- | --- | --- |
|
|
326
|
+
| 1 | instruction | Agent가 반드시 따르는 작동 규칙 |
|
|
327
|
+
| 2 | guide | 작성 품질을 높이는 상세 기준 |
|
|
328
|
+
| 3 | example | 좋은 예, 나쁜 예, payload 예시 |
|
|
329
|
+
| 4 | validation_rule | 기계적으로 검증 가능한 기준 |
|
|
330
|
+
| 5 | source_mapping | 규칙의 출처와 반영 근거 |
|
|
331
|
+
|
|
332
|
+
각 분류 안의 개별 파일 순서는 각 resource의 `priority`로 관리합니다.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# agentic-domain-document Validation Rules
|
|
2
|
+
|
|
3
|
+
## 1. 목적
|
|
4
|
+
|
|
5
|
+
본 문서는 `agentic-domain-document`의 validator가 확인하는 rule을 설명합니다.
|
|
6
|
+
|
|
7
|
+
Validator는 DB 제약조건만으로 표현하기 어려운 문서 도메인 규칙을 확인합니다. DB는 기본 무결성, 타입, JSON 유효성, FK를 담당하고, validator는 taxonomy, TOC 정책, block payload 구조 같은 도메인 규칙을 담당합니다.
|
|
8
|
+
|
|
9
|
+
## 2. Rule 목록
|
|
10
|
+
|
|
11
|
+
| Rule ID | Severity | 대상 | 설명 |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
| `DOCUMENT.EXISTS` | error | document | 검증 대상 문서가 존재해야 합니다. |
|
|
14
|
+
| `DOCUMENT.NODE.TAXONOMY_LEVEL` | error | node | node level은 문서 taxonomy에 정의되어 있어야 합니다. |
|
|
15
|
+
| `DOCUMENT.NODE.PARENT_EXISTS` | error | node | parent node가 지정된 경우 실제 parent node가 존재해야 합니다. |
|
|
16
|
+
| `DOCUMENT.NODE.PARENT_LEVEL` | error | node | 하위 node level은 상위 node level보다 커야 합니다. |
|
|
17
|
+
| `DOCUMENT.TOC.EXCLUDED_ANCESTOR` | error | node | 상위 node가 TOC에서 제외된 경우 하위 node만 TOC에 포함할 수 없습니다. |
|
|
18
|
+
| `DOCUMENT.BLOCK.TEXT_REQUIRED` | error | block | `paragraph`, `quote`, `code`, `callout` block은 `contentText`가 필요합니다. |
|
|
19
|
+
| `DOCUMENT.BLOCK.JSON_REQUIRED` | error | block | `table`, `figure`, `diagram`, `list` block은 `contentJson`이 필요합니다. |
|
|
20
|
+
| `DOCUMENT.BLOCK.DIAGRAM_NOTATION` | error | block | `diagram` block은 `mermaid`, `plantuml`, `drawio`, `svg` 중 하나의 notation이 필요합니다. |
|
|
21
|
+
| `DOCUMENT.BLOCK.DIAGRAM_SOURCE` | error | block | `diagram` block은 `sourceText`, `sourcePath`, `path` 중 하나가 필요합니다. |
|
|
22
|
+
| `DOCUMENT.BLOCK.TABLE_COLUMNS` | error | block | `table` block은 하나 이상의 column이 필요합니다. |
|
|
23
|
+
| `DOCUMENT.BLOCK.TABLE_ROWS` | error | block | `table` block은 rows 배열이 필요합니다. |
|
|
24
|
+
| `DOCUMENT.BLOCK.TABLE_CAPTION` | warning | block | `table` block에 caption이 없으면 경고합니다. |
|
|
25
|
+
| `DOCUMENT.BLOCK.FIGURE_SOURCE` | error | block | `figure` block은 `sourcePath` 또는 `path`가 필요합니다. |
|
|
26
|
+
| `DOCUMENT.BLOCK.FIGURE_CAPTION` | warning | block | `figure` block에 caption 또는 altText가 없으면 경고합니다. |
|
|
27
|
+
| `DOCUMENT.BLOCK.LIST_DEPTH` | error | block | `list` block의 중첩 깊이는 3을 넘을 수 없습니다. |
|
|
28
|
+
|
|
29
|
+
## 3. 적용 방식
|
|
30
|
+
|
|
31
|
+
Service API 사용자는 다음 방식으로 문서 전체 정합성을 확인합니다.
|
|
32
|
+
|
|
33
|
+
```ts
|
|
34
|
+
const validation = service.validateDocument(documentId);
|
|
35
|
+
|
|
36
|
+
if (!validation.valid) {
|
|
37
|
+
console.log(validation.issues);
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
반환 형식:
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
interface ValidationResult {
|
|
45
|
+
valid: boolean;
|
|
46
|
+
issues: ValidationIssue[];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface ValidationIssue {
|
|
50
|
+
ruleId: string;
|
|
51
|
+
severity: "error" | "warning";
|
|
52
|
+
targetType: "document" | "node" | "content" | "block" | "annotation";
|
|
53
|
+
targetId: string;
|
|
54
|
+
message: string;
|
|
55
|
+
details?: unknown;
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 4. 제외 범위
|
|
60
|
+
|
|
61
|
+
Iteration 1 validator는 다음을 강하게 검증하지 않습니다.
|
|
62
|
+
|
|
63
|
+
| 제외 항목 | 사유 |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `schemaRef` 대상 존재 여부 | `artifact-standard` 패키지 미구현 상태에서 강결합을 피합니다. |
|
|
66
|
+
| table column schema 상세 검증 | column/row 존재 여부만 확인하고 상세 schema는 산출물 서식 표준 패키지에서 담당할 가능성이 큽니다. |
|
|
67
|
+
| caption 번호 계산 | rendering 단계에서 표시 정책으로 처리합니다. |
|
|
68
|
+
| render 결과 검증 | render capability의 책임입니다. |
|
|
69
|
+
| full diff 정합성 | document domain은 revision/event/version anchor만 관리합니다. |
|
package/package.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agentic-domain-document",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "Agentic Platform document domain package",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"agent",
|
|
12
|
+
"README.md",
|
|
13
|
+
"CHANGELOG.md",
|
|
14
|
+
".tbls.yml",
|
|
15
|
+
"docs",
|
|
16
|
+
"src/database/migrations"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc -p tsconfig.json",
|
|
20
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
21
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"agentic-capability-agent-client": "^0.4.0",
|
|
25
|
+
"better-sqlite3": "^12.11.1"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/better-sqlite3": "^7.6.13"
|
|
29
|
+
}
|
|
30
|
+
}
|