kordoc 4.0.0 → 4.0.2

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 (44) hide show
  1. package/dist/{-URVKBXYK.js → -XMKVL3NX.js} +11 -7
  2. package/dist/{chunk-IA5UZZKV.js → chunk-3IYQYBUF.js} +2 -2
  3. package/dist/{chunk-THZVBYHE.js → chunk-67RANGFQ.js} +3 -3
  4. package/dist/{chunk-JUJEKFUF.js → chunk-6SD4X5PT.js} +3 -3
  5. package/dist/{chunk-7ETIIYGI.js → chunk-6YIYFWO2.js} +2 -2
  6. package/dist/{chunk-PGWAF755.js → chunk-AHWRAGXN.js} +477 -89
  7. package/dist/chunk-AHWRAGXN.js.map +1 -0
  8. package/dist/{chunk-DVUNWK6W.js → chunk-IKBIIEVJ.js} +2 -2
  9. package/dist/{chunk-ZKG6SBHV.js → chunk-STMLZDKR.js} +2 -2
  10. package/dist/{chunk-EBSCV3JC.cjs → chunk-WN7LZHII.cjs} +2 -2
  11. package/dist/{chunk-EBSCV3JC.cjs.map → chunk-WN7LZHII.cjs.map} +1 -1
  12. package/dist/cli.js +72 -14
  13. package/dist/cli.js.map +1 -1
  14. package/dist/index.cjs +730 -342
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +93 -6
  17. package/dist/index.d.ts +93 -6
  18. package/dist/index.js +472 -84
  19. package/dist/index.js.map +1 -1
  20. package/dist/mcp.js +60 -14
  21. package/dist/mcp.js.map +1 -1
  22. package/dist/{parser-NXHY37WH.js → parser-2Q2YKEJG.js} +2 -2
  23. package/dist/{parser-LHUO6UUA.js → parser-3HM2VYKK.js} +3 -3
  24. package/dist/{parser-6TV6JKHF.cjs → parser-6AYYGX6J.cjs} +14 -14
  25. package/dist/{parser-6TV6JKHF.cjs.map → parser-6AYYGX6J.cjs.map} +1 -1
  26. package/dist/render-W4VCJE6N.js +10 -0
  27. package/dist/seal-DRPTNHOP.js +10 -0
  28. package/dist/{watch-PNXTAWDR.js → watch-6OHF727O.js} +7 -7
  29. package/package.json +1 -1
  30. package/dist/chunk-PGWAF755.js.map +0 -1
  31. package/dist/render-T5O6QHBJ.js +0 -10
  32. package/dist/seal-7KNR5WFH.js +0 -10
  33. /package/dist/{-URVKBXYK.js.map → -XMKVL3NX.js.map} +0 -0
  34. /package/dist/{chunk-IA5UZZKV.js.map → chunk-3IYQYBUF.js.map} +0 -0
  35. /package/dist/{chunk-THZVBYHE.js.map → chunk-67RANGFQ.js.map} +0 -0
  36. /package/dist/{chunk-JUJEKFUF.js.map → chunk-6SD4X5PT.js.map} +0 -0
  37. /package/dist/{chunk-7ETIIYGI.js.map → chunk-6YIYFWO2.js.map} +0 -0
  38. /package/dist/{chunk-DVUNWK6W.js.map → chunk-IKBIIEVJ.js.map} +0 -0
  39. /package/dist/{chunk-ZKG6SBHV.js.map → chunk-STMLZDKR.js.map} +0 -0
  40. /package/dist/{parser-NXHY37WH.js.map → parser-2Q2YKEJG.js.map} +0 -0
  41. /package/dist/{parser-LHUO6UUA.js.map → parser-3HM2VYKK.js.map} +0 -0
  42. /package/dist/{render-T5O6QHBJ.js.map → render-W4VCJE6N.js.map} +0 -0
  43. /package/dist/{seal-7KNR5WFH.js.map → seal-DRPTNHOP.js.map} +0 -0
  44. /package/dist/{watch-PNXTAWDR.js.map → watch-6OHF727O.js.map} +0 -0
package/dist/index.d.cts CHANGED
@@ -604,11 +604,11 @@ type GaejosikSizeOverrides = Partial<{
604
604
  * 프리셋 해석). 실제 XML 조립은 generator.ts가 한다.
605
605
  */
606
606
 
607
- type GongmunPreset = "official" | "report" | "plan" | "notice" | "minutes" | "gaejosik";
607
+ type GongmunPreset = "official" | "report" | "plan" | "notice" | "minutes" | "gaejosik" | "press";
608
608
  type GongmunNumbering = "standard" | "report" | "gaejosik";
609
609
  type GongmunFont = "myeongjo" | "gothic";
610
610
  /** 프리셋 입력값 — 영문 키 또는 한글 별칭(기안문·보고서·계획서·통지·회의록 등) */
611
- type GongmunPresetInput = GongmunPreset | "기안문" | "시행문" | "공문" | "공문서" | "보고서" | "계획서" | "계획" | "통지" | "알림" | "안내" | "회의록" | "개조식" | "개조식보고서" | "정부보고서" | "정부표준개조식보고서";
611
+ type GongmunPresetInput = GongmunPreset | "기안문" | "시행문" | "공문" | "공문서" | "보고서" | "계획서" | "계획" | "통지" | "알림" | "안내" | "회의록" | "개조식" | "개조식보고서" | "정부보고서" | "정부표준개조식보고서" | "보도자료";
612
612
  /** 공문서 모드 옵션 (전부 선택 — 프리셋 기본값을 개별 override) */
613
613
  interface GongmunOptions {
614
614
  /** 문서 종류 프리셋(영문 키 또는 한글 별칭). 기본 'official'(일반 기안문) */
@@ -619,7 +619,7 @@ interface GongmunOptions {
619
619
  bodyPt?: number;
620
620
  /** 본문 줄간격(%). 기본 160 (회의록 130) */
621
621
  lineSpacing?: number;
622
- /** 항목부호 체계. 'standard'=법정 8단계(1. 가. 1) …) / 'report'=보고서 불릿(□ ○ - ㆍ) / 'gaejosik'=개조식(□ ○ ㆍ + 부호별 폰트) */
622
+ /** 항목부호 체계. 'standard'=법정 8단계(1. 가. 1) …) / 'report'=보고서 불릿(□ ○ - ㆍ) / 'gaejosik'=개조식(□ ○ - ㆍ + 부호별 폰트) */
623
623
  numbering?: GongmunNumbering;
624
624
  /**
625
625
  * 표지 페이지(개조식 프리셋 기본 켜짐) — 첫 h1을 제목으로, 파랑 장식 바 + 날짜 + 기관명.
@@ -650,8 +650,9 @@ interface GongmunOptions {
650
650
  };
651
651
  /**
652
652
  * 요소별 글꼴 오버라이드 — 기관 표준 폰트 적용이나 미설치 폰트 대체용.
653
- * body=본문(개조식 ○·―) / heading=제목 계열(□·장헤더·표지·목차) / ref=※ 참고 / table=표 셀.
654
- * 개조식 외 프리셋은 body만 적용된다 (bodyFont보다 우선).
653
+ * body=본문(개조식 ○·-) / heading=제목 계열(□·장헤더·표지·목차) / ref=※ 참고 / table=표 셀.
654
+ * 실측 폰트 프리셋(개조식·보고서·계획서)은 네 역할 전부, 그 외 프리셋은 body만
655
+ * 적용된다 (bodyFont보다 우선).
655
656
  */
656
657
  fonts?: {
657
658
  body?: string;
@@ -669,6 +670,65 @@ interface GongmunOptions {
669
670
  approval?: string[];
670
671
  /** 본문 첫 페이지 제목 박스(개조식) — 목차 뒤 본문 시작에 제목 반복(실측 관행). 기본: 표지 있으면 켜짐 */
671
672
  bodyTitleBox?: boolean;
673
+ /**
674
+ * h2 섹션 제목 말머리 (비개조식 — 개조식 h2는 로마숫자 장 헤더가 대체).
675
+ * 'box'=□ 대항목(실측 보고서 양식 관행) / 'number'=아라비아 번호(1. 2. — 공고문 관행)
676
+ * / 'none'=말머리 없음. 기본: 보고서·계획서 'box', 공고문 'number', 그 외 'none'.
677
+ */
678
+ h2Marker?: "box" | "number" | "none";
679
+ /**
680
+ * 2단계 항목부호 — 'ㅇ'(이응, 전자결재 기안문·공고문 실측 지배) / '○'(원, 보고서
681
+ * 양식 계열 실측). 기본: notice·press 'ㅇ', 그 외 '○' (v4.1.0 실결재 60건 분포).
682
+ */
683
+ bullet2?: "ㅇ" | "○";
684
+ /**
685
+ * 단일 형제 항목 부호 생략(편람 규정: 항목이 하나면 부호 미부여). 기본 false —
686
+ * 부호 없는 계단 들여쓰기가 실무 눈에 더 어색하다(실무자 QA, v4.0.2).
687
+ * 규정 엄수가 필요하면 true.
688
+ */
689
+ suppressSingle?: boolean;
690
+ /** 기안문 두문 — 행정기관명·수신·경유·제목 (별지 제1호서식, official 전용) */
691
+ docHead?: {
692
+ org?: string;
693
+ to?: string;
694
+ via?: string;
695
+ title?: string;
696
+ };
697
+ /** 기안문 결문 — 발신명의·기안/검토/결재·시행/접수·주소·연락처·공개구분 (official 전용) */
698
+ docFoot?: {
699
+ sender?: string;
700
+ drafter?: string;
701
+ reviewer?: string;
702
+ approver?: string;
703
+ cooperator?: string;
704
+ docNum?: string;
705
+ receive?: string;
706
+ address?: string;
707
+ site?: string;
708
+ phone?: string;
709
+ fax?: string;
710
+ email?: string;
711
+ disclosure?: string;
712
+ };
713
+ /** 업무보고 우상단 보고정보 행 — "(보고일시, 보고자, 연락처)" (실측 t3: 휴먼명조 12pt RIGHT) */
714
+ reportInfo?: string;
715
+ /** 공고문 두문·결문 — 공고번호(본문 위)·날짜·발신명의(본문 아래 우측, 실측 바이오헬스 공고) */
716
+ noticeHead?: {
717
+ no?: string;
718
+ date?: string;
719
+ sender?: string;
720
+ };
721
+ /** 보도자료(press) 머리·담당 — 보도시점/배포 행·부제·담당 부서 표 */
722
+ press?: {
723
+ release?: string;
724
+ distribute?: string;
725
+ sub?: string[];
726
+ contact?: {
727
+ dept?: string;
728
+ manager?: string;
729
+ phone?: string;
730
+ };
731
+ };
672
732
  }
673
733
  /** 프리셋 별칭(한글/영문) → 내부 preset 키. CLI·라이브러리 공용 */
674
734
  declare const PRESET_ALIAS: Record<string, GongmunPreset>;
@@ -852,6 +912,33 @@ declare function isKnownFont(name: string): boolean;
852
912
  */
853
913
  declare function unknownFontWarnings(fonts: Record<string, string | undefined>): string[];
854
914
 
915
+ /**
916
+ * 공문서 표기법 검수기 — 「행정업무의 운영 및 혁신에 관한 규정」 시행규칙 및
917
+ * 행정안전부 행정업무운영 편람의 날짜·시간·금액·기호 표기법을 정규식으로 검사.
918
+ *
919
+ * 원전: jkf87/hwpx-skill gonmun_lint.py(2025 편람 기준 13룰)를 kordoc에 맞게 이식
920
+ * (v4.0.1). URL 쌍점 오탐 가드 등 일부 보강. 검사는 조언용이다 — 생성은 막지 않고
921
+ * 경고만 낸다 (A2 폰트경고와 같은 원칙). 별도 CLI `kordoc lint`는 error 시 exit 1.
922
+ */
923
+ interface GongmunLintFinding {
924
+ /** 1-based 줄 번호 */
925
+ line: number;
926
+ /** 걸린 원문 조각 */
927
+ match: string;
928
+ /** 규칙 코드 (DATE_NO_SPACE 등) */
929
+ rule: string;
930
+ severity: "error" | "warning";
931
+ message: string;
932
+ suggest?: string;
933
+ }
934
+ /**
935
+ * 텍스트(마크다운 포함) 표기법 검수. 마크다운 펜스 코드블록(``` ~ ```) 안은
936
+ * 건너뛴다 — 코드·URL이 날짜/쌍점 규칙에 오탐되는 것 방지.
937
+ */
938
+ declare function lintGongmunText(text: string): GongmunLintFinding[];
939
+ /** 검수 결과를 사람이 읽는 경고 문자열 배열로 — generate 경고 채널(A2와 동일)용 */
940
+ declare function gongmunLintWarnings(text: string, limit?: number): string[];
941
+
855
942
  /**
856
943
  * 한글 조판 텍스트 폭 계산 — 함초롬바탕(HCR Batang) 실측 advance 테이블
857
944
  *
@@ -1416,4 +1503,4 @@ interface FillFormOutput {
1416
1503
  */
1417
1504
  declare function fillForm(input: string | ArrayBuffer | Buffer, values: Record<string, FillInput>, outputFormat?: FillOutputFormat): Promise<FillFormOutput>;
1418
1505
 
1419
- export { type BlockCapability, type BlockCapabilityInfo, type BlockDiff, type BlockEdit, type BlockSourceRef, type BorderDef, type BorderFillDef, type BoundingBox, type CellCapability, type CellContext, type CellDiff, type CellProfile, type CharPrDef, type DiffChangeType, type DiffResult, type DocumentMetadata, type DocumentQualitySummary, type ErrorCode, type ExtractedImage, type FileType, type FillFormOutput, type FillInput, type FillOutputFormat, type FillResult, type FillValue, type FormField, type FormFieldSchema, type FormFieldType, type FormResult, type FormSchemaResult, type FormatProfile, type GongmunFont, type GongmunNumbering, type GongmunOptions, type GongmunPreset, type GongmunPresetInput, type HwpxFillResult, HwpxSession, type HwpxTheme, type IRBlock, type IRBlockType, type IRCell, type IRTable, type ImageData, type InlineStyle, type MarkdownToHwpxOptions, type MeasureOptions, type OcrProvider, type OutlineItem, PRESET_ALIAS, type PageMargin, type PageQuality, type ParseFailure, type ParseOptions, type ParseResult, type ParseSuccess, type ParseWarning, type PatchOptions, type PatchResult, type PatchSkip, type PlaceSealResult, type PrintOptions, type PrintPreset, type RenderSvgOptions, type RenderSvgResult, SPACE_EM_FIXED, SPACE_EM_FONT, type ScanCell, type ScanParaKind, type ScanParagraph, type ScanTable, type SealOp, type SealPlacement, type SectionScan, type SpliceEdit, type TRange, type TableProfile, VERSION, type ValidateIssue, type ValidateResult, ValueCursor, type WarningCode, type WatchOptions, type WrapMode, type WrapResult, applySplices, blocksToMarkdown, blocksToPdf, buildParagraphSplices, buildRangeSplices, charWidthEm1000, compare, detectFormat, detectOle2Format, detectZipFormat, diffBlocks, extractFormFields, extractFormSchema, fillForm, fillFormFields, fillHwpx, fillWithUniqueGuard, fitRatioForFewerLines, formatFillValue, hwpxToProfile, inferFieldType, isHwpxFile, isKnownFont, isLabelCell, isOldHwpFile, isPdfFile, isZipFile, markdownToHwpx, markdownToPdf, measureTextWidth, normalizeGongmunPreset, openHwpxDocument, parse, parseDocx, parseHwp, parseHwp3, parseHwpml, parseHwpx, parsePdf, parseXls, parseXlsx, patchHwp, patchHwpx, patchHwpxBlocks, placeSealHwpx, renderHtml, renderHwpxToSvg, scanSectionXml, simulateWrap, simulateWrapKeepWord, unknownFontWarnings, validateHwpx };
1506
+ export { type BlockCapability, type BlockCapabilityInfo, type BlockDiff, type BlockEdit, type BlockSourceRef, type BorderDef, type BorderFillDef, type BoundingBox, type CellCapability, type CellContext, type CellDiff, type CellProfile, type CharPrDef, type DiffChangeType, type DiffResult, type DocumentMetadata, type DocumentQualitySummary, type ErrorCode, type ExtractedImage, type FileType, type FillFormOutput, type FillInput, type FillOutputFormat, type FillResult, type FillValue, type FormField, type FormFieldSchema, type FormFieldType, type FormResult, type FormSchemaResult, type FormatProfile, type GongmunFont, type GongmunLintFinding, type GongmunNumbering, type GongmunOptions, type GongmunPreset, type GongmunPresetInput, type HwpxFillResult, HwpxSession, type HwpxTheme, type IRBlock, type IRBlockType, type IRCell, type IRTable, type ImageData, type InlineStyle, type MarkdownToHwpxOptions, type MeasureOptions, type OcrProvider, type OutlineItem, PRESET_ALIAS, type PageMargin, type PageQuality, type ParseFailure, type ParseOptions, type ParseResult, type ParseSuccess, type ParseWarning, type PatchOptions, type PatchResult, type PatchSkip, type PlaceSealResult, type PrintOptions, type PrintPreset, type RenderSvgOptions, type RenderSvgResult, SPACE_EM_FIXED, SPACE_EM_FONT, type ScanCell, type ScanParaKind, type ScanParagraph, type ScanTable, type SealOp, type SealPlacement, type SectionScan, type SpliceEdit, type TRange, type TableProfile, VERSION, type ValidateIssue, type ValidateResult, ValueCursor, type WarningCode, type WatchOptions, type WrapMode, type WrapResult, applySplices, blocksToMarkdown, blocksToPdf, buildParagraphSplices, buildRangeSplices, charWidthEm1000, compare, detectFormat, detectOle2Format, detectZipFormat, diffBlocks, extractFormFields, extractFormSchema, fillForm, fillFormFields, fillHwpx, fillWithUniqueGuard, fitRatioForFewerLines, formatFillValue, gongmunLintWarnings, hwpxToProfile, inferFieldType, isHwpxFile, isKnownFont, isLabelCell, isOldHwpFile, isPdfFile, isZipFile, lintGongmunText, markdownToHwpx, markdownToPdf, measureTextWidth, normalizeGongmunPreset, openHwpxDocument, parse, parseDocx, parseHwp, parseHwp3, parseHwpml, parseHwpx, parsePdf, parseXls, parseXlsx, patchHwp, patchHwpx, patchHwpxBlocks, placeSealHwpx, renderHtml, renderHwpxToSvg, scanSectionXml, simulateWrap, simulateWrapKeepWord, unknownFontWarnings, validateHwpx };
package/dist/index.d.ts CHANGED
@@ -604,11 +604,11 @@ type GaejosikSizeOverrides = Partial<{
604
604
  * 프리셋 해석). 실제 XML 조립은 generator.ts가 한다.
605
605
  */
606
606
 
607
- type GongmunPreset = "official" | "report" | "plan" | "notice" | "minutes" | "gaejosik";
607
+ type GongmunPreset = "official" | "report" | "plan" | "notice" | "minutes" | "gaejosik" | "press";
608
608
  type GongmunNumbering = "standard" | "report" | "gaejosik";
609
609
  type GongmunFont = "myeongjo" | "gothic";
610
610
  /** 프리셋 입력값 — 영문 키 또는 한글 별칭(기안문·보고서·계획서·통지·회의록 등) */
611
- type GongmunPresetInput = GongmunPreset | "기안문" | "시행문" | "공문" | "공문서" | "보고서" | "계획서" | "계획" | "통지" | "알림" | "안내" | "회의록" | "개조식" | "개조식보고서" | "정부보고서" | "정부표준개조식보고서";
611
+ type GongmunPresetInput = GongmunPreset | "기안문" | "시행문" | "공문" | "공문서" | "보고서" | "계획서" | "계획" | "통지" | "알림" | "안내" | "회의록" | "개조식" | "개조식보고서" | "정부보고서" | "정부표준개조식보고서" | "보도자료";
612
612
  /** 공문서 모드 옵션 (전부 선택 — 프리셋 기본값을 개별 override) */
613
613
  interface GongmunOptions {
614
614
  /** 문서 종류 프리셋(영문 키 또는 한글 별칭). 기본 'official'(일반 기안문) */
@@ -619,7 +619,7 @@ interface GongmunOptions {
619
619
  bodyPt?: number;
620
620
  /** 본문 줄간격(%). 기본 160 (회의록 130) */
621
621
  lineSpacing?: number;
622
- /** 항목부호 체계. 'standard'=법정 8단계(1. 가. 1) …) / 'report'=보고서 불릿(□ ○ - ㆍ) / 'gaejosik'=개조식(□ ○ ㆍ + 부호별 폰트) */
622
+ /** 항목부호 체계. 'standard'=법정 8단계(1. 가. 1) …) / 'report'=보고서 불릿(□ ○ - ㆍ) / 'gaejosik'=개조식(□ ○ - ㆍ + 부호별 폰트) */
623
623
  numbering?: GongmunNumbering;
624
624
  /**
625
625
  * 표지 페이지(개조식 프리셋 기본 켜짐) — 첫 h1을 제목으로, 파랑 장식 바 + 날짜 + 기관명.
@@ -650,8 +650,9 @@ interface GongmunOptions {
650
650
  };
651
651
  /**
652
652
  * 요소별 글꼴 오버라이드 — 기관 표준 폰트 적용이나 미설치 폰트 대체용.
653
- * body=본문(개조식 ○·―) / heading=제목 계열(□·장헤더·표지·목차) / ref=※ 참고 / table=표 셀.
654
- * 개조식 외 프리셋은 body만 적용된다 (bodyFont보다 우선).
653
+ * body=본문(개조식 ○·-) / heading=제목 계열(□·장헤더·표지·목차) / ref=※ 참고 / table=표 셀.
654
+ * 실측 폰트 프리셋(개조식·보고서·계획서)은 네 역할 전부, 그 외 프리셋은 body만
655
+ * 적용된다 (bodyFont보다 우선).
655
656
  */
656
657
  fonts?: {
657
658
  body?: string;
@@ -669,6 +670,65 @@ interface GongmunOptions {
669
670
  approval?: string[];
670
671
  /** 본문 첫 페이지 제목 박스(개조식) — 목차 뒤 본문 시작에 제목 반복(실측 관행). 기본: 표지 있으면 켜짐 */
671
672
  bodyTitleBox?: boolean;
673
+ /**
674
+ * h2 섹션 제목 말머리 (비개조식 — 개조식 h2는 로마숫자 장 헤더가 대체).
675
+ * 'box'=□ 대항목(실측 보고서 양식 관행) / 'number'=아라비아 번호(1. 2. — 공고문 관행)
676
+ * / 'none'=말머리 없음. 기본: 보고서·계획서 'box', 공고문 'number', 그 외 'none'.
677
+ */
678
+ h2Marker?: "box" | "number" | "none";
679
+ /**
680
+ * 2단계 항목부호 — 'ㅇ'(이응, 전자결재 기안문·공고문 실측 지배) / '○'(원, 보고서
681
+ * 양식 계열 실측). 기본: notice·press 'ㅇ', 그 외 '○' (v4.1.0 실결재 60건 분포).
682
+ */
683
+ bullet2?: "ㅇ" | "○";
684
+ /**
685
+ * 단일 형제 항목 부호 생략(편람 규정: 항목이 하나면 부호 미부여). 기본 false —
686
+ * 부호 없는 계단 들여쓰기가 실무 눈에 더 어색하다(실무자 QA, v4.0.2).
687
+ * 규정 엄수가 필요하면 true.
688
+ */
689
+ suppressSingle?: boolean;
690
+ /** 기안문 두문 — 행정기관명·수신·경유·제목 (별지 제1호서식, official 전용) */
691
+ docHead?: {
692
+ org?: string;
693
+ to?: string;
694
+ via?: string;
695
+ title?: string;
696
+ };
697
+ /** 기안문 결문 — 발신명의·기안/검토/결재·시행/접수·주소·연락처·공개구분 (official 전용) */
698
+ docFoot?: {
699
+ sender?: string;
700
+ drafter?: string;
701
+ reviewer?: string;
702
+ approver?: string;
703
+ cooperator?: string;
704
+ docNum?: string;
705
+ receive?: string;
706
+ address?: string;
707
+ site?: string;
708
+ phone?: string;
709
+ fax?: string;
710
+ email?: string;
711
+ disclosure?: string;
712
+ };
713
+ /** 업무보고 우상단 보고정보 행 — "(보고일시, 보고자, 연락처)" (실측 t3: 휴먼명조 12pt RIGHT) */
714
+ reportInfo?: string;
715
+ /** 공고문 두문·결문 — 공고번호(본문 위)·날짜·발신명의(본문 아래 우측, 실측 바이오헬스 공고) */
716
+ noticeHead?: {
717
+ no?: string;
718
+ date?: string;
719
+ sender?: string;
720
+ };
721
+ /** 보도자료(press) 머리·담당 — 보도시점/배포 행·부제·담당 부서 표 */
722
+ press?: {
723
+ release?: string;
724
+ distribute?: string;
725
+ sub?: string[];
726
+ contact?: {
727
+ dept?: string;
728
+ manager?: string;
729
+ phone?: string;
730
+ };
731
+ };
672
732
  }
673
733
  /** 프리셋 별칭(한글/영문) → 내부 preset 키. CLI·라이브러리 공용 */
674
734
  declare const PRESET_ALIAS: Record<string, GongmunPreset>;
@@ -852,6 +912,33 @@ declare function isKnownFont(name: string): boolean;
852
912
  */
853
913
  declare function unknownFontWarnings(fonts: Record<string, string | undefined>): string[];
854
914
 
915
+ /**
916
+ * 공문서 표기법 검수기 — 「행정업무의 운영 및 혁신에 관한 규정」 시행규칙 및
917
+ * 행정안전부 행정업무운영 편람의 날짜·시간·금액·기호 표기법을 정규식으로 검사.
918
+ *
919
+ * 원전: jkf87/hwpx-skill gonmun_lint.py(2025 편람 기준 13룰)를 kordoc에 맞게 이식
920
+ * (v4.0.1). URL 쌍점 오탐 가드 등 일부 보강. 검사는 조언용이다 — 생성은 막지 않고
921
+ * 경고만 낸다 (A2 폰트경고와 같은 원칙). 별도 CLI `kordoc lint`는 error 시 exit 1.
922
+ */
923
+ interface GongmunLintFinding {
924
+ /** 1-based 줄 번호 */
925
+ line: number;
926
+ /** 걸린 원문 조각 */
927
+ match: string;
928
+ /** 규칙 코드 (DATE_NO_SPACE 등) */
929
+ rule: string;
930
+ severity: "error" | "warning";
931
+ message: string;
932
+ suggest?: string;
933
+ }
934
+ /**
935
+ * 텍스트(마크다운 포함) 표기법 검수. 마크다운 펜스 코드블록(``` ~ ```) 안은
936
+ * 건너뛴다 — 코드·URL이 날짜/쌍점 규칙에 오탐되는 것 방지.
937
+ */
938
+ declare function lintGongmunText(text: string): GongmunLintFinding[];
939
+ /** 검수 결과를 사람이 읽는 경고 문자열 배열로 — generate 경고 채널(A2와 동일)용 */
940
+ declare function gongmunLintWarnings(text: string, limit?: number): string[];
941
+
855
942
  /**
856
943
  * 한글 조판 텍스트 폭 계산 — 함초롬바탕(HCR Batang) 실측 advance 테이블
857
944
  *
@@ -1416,4 +1503,4 @@ interface FillFormOutput {
1416
1503
  */
1417
1504
  declare function fillForm(input: string | ArrayBuffer | Buffer, values: Record<string, FillInput>, outputFormat?: FillOutputFormat): Promise<FillFormOutput>;
1418
1505
 
1419
- export { type BlockCapability, type BlockCapabilityInfo, type BlockDiff, type BlockEdit, type BlockSourceRef, type BorderDef, type BorderFillDef, type BoundingBox, type CellCapability, type CellContext, type CellDiff, type CellProfile, type CharPrDef, type DiffChangeType, type DiffResult, type DocumentMetadata, type DocumentQualitySummary, type ErrorCode, type ExtractedImage, type FileType, type FillFormOutput, type FillInput, type FillOutputFormat, type FillResult, type FillValue, type FormField, type FormFieldSchema, type FormFieldType, type FormResult, type FormSchemaResult, type FormatProfile, type GongmunFont, type GongmunNumbering, type GongmunOptions, type GongmunPreset, type GongmunPresetInput, type HwpxFillResult, HwpxSession, type HwpxTheme, type IRBlock, type IRBlockType, type IRCell, type IRTable, type ImageData, type InlineStyle, type MarkdownToHwpxOptions, type MeasureOptions, type OcrProvider, type OutlineItem, PRESET_ALIAS, type PageMargin, type PageQuality, type ParseFailure, type ParseOptions, type ParseResult, type ParseSuccess, type ParseWarning, type PatchOptions, type PatchResult, type PatchSkip, type PlaceSealResult, type PrintOptions, type PrintPreset, type RenderSvgOptions, type RenderSvgResult, SPACE_EM_FIXED, SPACE_EM_FONT, type ScanCell, type ScanParaKind, type ScanParagraph, type ScanTable, type SealOp, type SealPlacement, type SectionScan, type SpliceEdit, type TRange, type TableProfile, VERSION, type ValidateIssue, type ValidateResult, ValueCursor, type WarningCode, type WatchOptions, type WrapMode, type WrapResult, applySplices, blocksToMarkdown, blocksToPdf, buildParagraphSplices, buildRangeSplices, charWidthEm1000, compare, detectFormat, detectOle2Format, detectZipFormat, diffBlocks, extractFormFields, extractFormSchema, fillForm, fillFormFields, fillHwpx, fillWithUniqueGuard, fitRatioForFewerLines, formatFillValue, hwpxToProfile, inferFieldType, isHwpxFile, isKnownFont, isLabelCell, isOldHwpFile, isPdfFile, isZipFile, markdownToHwpx, markdownToPdf, measureTextWidth, normalizeGongmunPreset, openHwpxDocument, parse, parseDocx, parseHwp, parseHwp3, parseHwpml, parseHwpx, parsePdf, parseXls, parseXlsx, patchHwp, patchHwpx, patchHwpxBlocks, placeSealHwpx, renderHtml, renderHwpxToSvg, scanSectionXml, simulateWrap, simulateWrapKeepWord, unknownFontWarnings, validateHwpx };
1506
+ export { type BlockCapability, type BlockCapabilityInfo, type BlockDiff, type BlockEdit, type BlockSourceRef, type BorderDef, type BorderFillDef, type BoundingBox, type CellCapability, type CellContext, type CellDiff, type CellProfile, type CharPrDef, type DiffChangeType, type DiffResult, type DocumentMetadata, type DocumentQualitySummary, type ErrorCode, type ExtractedImage, type FileType, type FillFormOutput, type FillInput, type FillOutputFormat, type FillResult, type FillValue, type FormField, type FormFieldSchema, type FormFieldType, type FormResult, type FormSchemaResult, type FormatProfile, type GongmunFont, type GongmunLintFinding, type GongmunNumbering, type GongmunOptions, type GongmunPreset, type GongmunPresetInput, type HwpxFillResult, HwpxSession, type HwpxTheme, type IRBlock, type IRBlockType, type IRCell, type IRTable, type ImageData, type InlineStyle, type MarkdownToHwpxOptions, type MeasureOptions, type OcrProvider, type OutlineItem, PRESET_ALIAS, type PageMargin, type PageQuality, type ParseFailure, type ParseOptions, type ParseResult, type ParseSuccess, type ParseWarning, type PatchOptions, type PatchResult, type PatchSkip, type PlaceSealResult, type PrintOptions, type PrintPreset, type RenderSvgOptions, type RenderSvgResult, SPACE_EM_FIXED, SPACE_EM_FONT, type ScanCell, type ScanParaKind, type ScanParagraph, type ScanTable, type SealOp, type SealPlacement, type SectionScan, type SpliceEdit, type TRange, type TableProfile, VERSION, type ValidateIssue, type ValidateResult, ValueCursor, type WarningCode, type WatchOptions, type WrapMode, type WrapResult, applySplices, blocksToMarkdown, blocksToPdf, buildParagraphSplices, buildRangeSplices, charWidthEm1000, compare, detectFormat, detectOle2Format, detectZipFormat, diffBlocks, extractFormFields, extractFormSchema, fillForm, fillFormFields, fillHwpx, fillWithUniqueGuard, fitRatioForFewerLines, formatFillValue, gongmunLintWarnings, hwpxToProfile, inferFieldType, isHwpxFile, isKnownFont, isLabelCell, isOldHwpFile, isPdfFile, isZipFile, lintGongmunText, markdownToHwpx, markdownToPdf, measureTextWidth, normalizeGongmunPreset, openHwpxDocument, parse, parseDocx, parseHwp, parseHwp3, parseHwpml, parseHwpx, parsePdf, parseXls, parseXlsx, patchHwp, patchHwpx, patchHwpxBlocks, placeSealHwpx, renderHtml, renderHwpxToSvg, scanSectionXml, simulateWrap, simulateWrapKeepWord, unknownFontWarnings, validateHwpx };