agent-safety-oss 1.5.0 → 1.6.1

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 (82) hide show
  1. package/CHANGELOG.md +51 -194
  2. package/README.md +163 -388
  3. package/build/capability-registry.js +2 -2
  4. package/build/capability-registry.js.map +1 -1
  5. package/build/cli.js +12 -2
  6. package/build/cli.js.map +1 -1
  7. package/build/lib/api-client.js +1 -1
  8. package/build/lib/api-client.js.map +1 -1
  9. package/build/lib/article-iri-map.d.ts.map +1 -1
  10. package/build/lib/article-iri-map.js +56 -8
  11. package/build/lib/article-iri-map.js.map +1 -1
  12. package/build/lib/graph-nodes-loader.js +2 -2
  13. package/build/lib/graph-nodes-loader.js.map +1 -1
  14. package/build/lib/input-validator.js +1 -1
  15. package/build/lib/input-validator.js.map +1 -1
  16. package/build/lib/law-body-extractor.js +3 -3
  17. package/build/lib/law-body-extractor.js.map +1 -1
  18. package/build/lib/safety-laws-loader.d.ts +1 -0
  19. package/build/lib/safety-laws-loader.d.ts.map +1 -1
  20. package/build/lib/safety-laws-loader.js +48 -15
  21. package/build/lib/safety-laws-loader.js.map +1 -1
  22. package/build/lib/site-profile.js +1 -1
  23. package/build/lib/site-profile.js.map +1 -1
  24. package/build/ontology/graph/nodes/activities/chemical_handling.jsonld +1 -1
  25. package/build/ontology/graph/nodes/activities/contractor_management.jsonld +1 -1
  26. package/build/ontology/graph/nodes/activities/hazardous_chemical_work.jsonld +1 -1
  27. package/build/ontology/graph/nodes/applicabilities/hazard_factor_exposed.jsonld +1 -1
  28. package/build/ontology/graph/nodes/penalties//354/202/260/354/225/210/353/262/225-/302/247167.jsonld +1 -1
  29. package/build/ontology/graph/nodes/sources/msds.jsonld +1 -1
  30. package/build/ontology/safety-laws//352/261/264/354/204/244/352/270/260/354/210/240/354/247/204/355/235/245/353/262/225-/354/213/234/355/226/211/352/267/234/354/271/231.md +45 -0
  31. package/build/ontology/safety-laws//352/261/264/354/204/244/352/270/260/354/210/240/354/247/204/355/235/245/353/262/225-/354/213/234/355/226/211/353/240/271.md +40 -0
  32. package/build/ontology/safety-laws//352/261/264/354/204/244/352/270/260/354/210/240/354/247/204/355/235/245/353/262/225.md +46 -0
  33. package/build/ontology/safety-laws//354/202/260/354/227/205/354/225/210/354/240/204/353/263/264/352/261/264/353/262/225.md +35 -3
  34. package/build/ontology/skeleton/skeleton.jsonld +8 -8
  35. package/build/tool-registry.js +3 -3
  36. package/build/tool-registry.js.map +1 -1
  37. package/build/tools/analyze-work-context.js +2 -2
  38. package/build/tools/analyze-work-context.js.map +1 -1
  39. package/build/tools/assemble-doc-context.d.ts.map +1 -1
  40. package/build/tools/assemble-doc-context.js +4 -1
  41. package/build/tools/assemble-doc-context.js.map +1 -1
  42. package/build/tools/generate-safety-document.d.ts.map +1 -1
  43. package/build/tools/generate-safety-document.js +106 -18
  44. package/build/tools/generate-safety-document.js.map +1 -1
  45. package/build/tools/list-core-safety-laws.js +1 -1
  46. package/build/tools/list-core-safety-laws.js.map +1 -1
  47. package/build/tools/preview-review.js +2 -2
  48. package/build/tools/preview-review.js.map +1 -1
  49. package/build/tools/query-delegation-chain.js +2 -2
  50. package/build/tools/query-delegation-chain.js.map +1 -1
  51. package/build/tools/query-legal-basis.js +1 -1
  52. package/build/tools/query-legal-basis.js.map +1 -1
  53. package/build/tools/render-a2ui-form.js +20 -20
  54. package/build/tools/render-a2ui-form.js.map +1 -1
  55. package/build/tools/request-field-help.js +2 -2
  56. package/build/tools/request-field-help.js.map +1 -1
  57. package/build/tools/review-safety-document.d.ts.map +1 -1
  58. package/build/tools/review-safety-document.js +81 -95
  59. package/build/tools/review-safety-document.js.map +1 -1
  60. package/build/tools/suggest-controls-for-hazard.js +2 -2
  61. package/build/tools/suggest-controls-for-hazard.js.map +1 -1
  62. package/build/tools/verify-safety-basis.d.ts.map +1 -1
  63. package/build/tools/verify-safety-basis.js +86 -3
  64. package/build/tools/verify-safety-basis.js.map +1 -1
  65. package/build/version.d.ts +1 -1
  66. package/build/version.js +1 -1
  67. package/build/viewer.d.ts +6 -0
  68. package/build/viewer.d.ts.map +1 -0
  69. package/build/viewer.js +1949 -0
  70. package/build/viewer.js.map +1 -0
  71. package/docs/ARCHITECTURE.md +89 -92
  72. package/docs/DATA_SOURCES.md +34 -1
  73. package/docs/IDENTITY.md +2 -2
  74. package/docs/INVENTORY.md +8 -6
  75. package/docs/JSONLD-AUTHORING-GUIDE.md +2 -2
  76. package/docs/OPERATIONAL-ONTOLOGY.md +1 -1
  77. package/docs/SETUP_CLAUDE_DESKTOP.md +4 -4
  78. package/docs/SETUP_CODEX.md +1 -1
  79. package/docs/assets/viewer-form.png +0 -0
  80. package/examples/README.md +6 -2
  81. package/package.json +6 -5
  82. package/README-EN.md +0 -220
package/CHANGELOG.md CHANGED
@@ -5,240 +5,97 @@ All notable changes to `agent-safety-oss` are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [1.5.0] — 2026-05-24
9
-
10
- **🎯 양방향 온톨로지 그래프 통합 — 실무 가용 수준 달성**. 사용자 본질 기획 ("트리 → 그래프 → LLM 도메인 전문성 자동 활용") 의 결정적 진전.
11
-
12
- ### Added — 3-단계 양방향 그래프 enrichment (ADR 004)
13
-
14
- - **Stage 1** `scripts/etl/enrich-guide-legal-edges.ts` — 1,039 KOSHA Guide 본문 전수 정규식 파싱 → art:* IRI 매핑 → `legalBasis` edge 자동 박제. **+1,550 신규 edge** (legalBasis 약 400 → 1,967). dangling 0 (가지 조문 29건 skip — audit:strict 회귀 차단).
15
- - **Stage 2** `scripts/etl/enrich-article-reverse-edges.ts` — Stage 1 결과 역방향 인덱싱 → 각 art:* 노드의 `legalBasisOf` edge 박제. **+1,550 신규 edge** / 법령 조문 → 가이드 발견 가능 비율 **0% → 29.6%** (387/1,306).
16
- - **Stage 3** `scripts/etl/enrich-document-guidedby.ts` — 법정문서 45개 (guidedBy 미보유) ↔ KOSHA Guide 자동 매핑. legalBasis traversal (의미적 정확성) + docId 키워드 fallback. **+131 신규 guidedBy edge** / 법정문서 guidedBy 보유율 **53% → 100%** (51/96 → 96/96).
17
- - **Stage 4** `src/tools/assemble-doc-context.ts` 강화 — `koshaGuides` 결과 필드 신설. docNode.guidedBy traversal → 각 가이드 메타 (guideNo / title / category / bodyAvailable) 자동 노출. LLM 이 자연어 요청만으로 적용 가이드 즉시 발견.
18
- - **ADR** `decisions/004-bidirectional-graph-enrichment.md` — 결정/대안/결과 박제.
19
-
20
- ### Verification — 시나리오별 KOSHA Guide 자동 발견 (assemble_doc_context 호출)
21
-
22
- | 시나리오 (사용자 자연어 요청 매핑) | 강화 전 | 강화 후 |
23
- |---|:---:|:---:|
24
- | daily_tbm (오늘 TBM 만들어줘) | 0 | **5** |
25
- | ad_hoc_risk_assessment (수시 위험성평가) | 0 | **14** |
26
- | industrial_accident_report (산재보고) | 0 | **4** |
27
- | ppe_register (보호구 대장) | 0 | **5** |
28
- | monthly_education_log (월간 교육) | 0 | **5** |
29
-
30
- - 그래프 총 엣지: 29,730 → **32,961** (+3,231 신규 의미 edge)
31
- - audit:strict / verify-graph: ✅ PASS (dangling 0, DAG cycle 0, critical 누락 0)
32
- - mcp:test:smoke 22/22 PASS, mcp:test:graph reasoning/consistency/effect PASS
33
- - docs:check 16개 문서 정합 (자동 marker 갱신)
34
-
35
- ### Impact (사용자 본질 기획 달성)
8
+ ## [1.6.1] — 2026-06-10
36
9
 
37
- - **A2UI 빈칸 자동 채움 100%** 안전관리자가 열면 가이드/법령/위험/통제 모두 자동 표시 (CLI 미숙련 사용자 부담 해소).
38
- - **LLM 환각 차단 강화** — 그래프 SSoT 에서 가이드 IRI 인용 → 임의 가이드명 생성 차단.
39
- - **트리 → 그래프 변환 본질 효과 실현** — LLM 이 도메인 전문성을 그래프 traversal 로 자동 활용.
10
+ 문서를 처음 보는 기준으로 다시 정리하고, 도구가 표시하는 버전 오류를 바로잡았습니다.
40
11
 
41
- ---
42
-
43
- ## [1.4.2] — 2026-05-23
44
-
45
- `inspect` CLI 신설 (`doctor` 의 정식 이름) + KOSHA Guide 본문 전수 회복 (1,037 → 1,039) + ADR 003 Doc Drift Prevention (marker + sync-docs + docs:check + pre-commit).
12
+ ### 수정
46
13
 
47
- ### Added ADR 003 (Doc Drift Prevention)
14
+ - 런타임이 표시하는 버전(`src/version.ts`)이 v1.5.0 으로 남아 있던 문제를 바로잡았습니다. MCP 서버 선언·CLI 배너·프로젝트 정보 조회가 이제 실제 패키지 버전을 표시합니다. 재발하지 않도록 release 전 자동 검사에 버전 일치 항목을 추가했습니다.
48
15
 
49
- 3-Layer Defense 로 9개 문서의 카운트 ↔ 코드 drift 를 구조적으로 차단:
16
+ ### 개선
50
17
 
51
- - **L1 (이미 v1.4.1)**: `docs/INVENTORY.md` 자동 생성. `inventory-data.ts` 분리로 카운트 산출 단일 진원지 확보.
52
- - **L2 신규**: `scripts/build/sync-docs.ts` 9개 문서의 `<!-- INV:키 -->값<!-- /INV:키 -->` marker 영역을 INVENTORY 산출값으로 자동 갱신. `npm run build` 시 generate-inventory 직후 자동 실행. (실제 marker 키 13종은 `inventory-data.ts` MARKER_MAP 참조)
53
- - **L3 신규**: `scripts/build/sync-docs.ts --check` (= `npm run docs:check`) marker 값과 INVENTORY 산출값을 비교 불일치 exit 1.
54
- - `.githooks/pre-commit` (husky 미사용, native git hook + `prepare` script 가 `core.hooksPath` 자동 설정)
55
- - `.github/workflows/ci.yml` CI step 추가
56
- - `npm test` 와 `prepublishOnly` 에 포함
57
- - **ADR**: `decisions/003-doc-drift-prevention.md` — alternatives 4종 비교 후 marker 방식 채택 사유 박제.
58
- - **marker 키 13종**: `KOSHA_BODY`/`KOSHA_META`/`KOSHA_FAILURES` · `TOOLS_TOTAL`/`KEYLESS`/`KEYREQ`/`PLACEHOLDER`/`ACTIVE` · `LAW_LAST_SYNC`/`LAW_ARTICLES` · `GRAPH_TOTAL`/`DOCUMENTS_TOTAL` · `VERSION`.
18
+ - README 처음 보는 기준으로 다시 정리했습니다 목차 추가, 여러 곳에 흩어져 있던 시작 방법·구성 요소 안내를 한 곳으로 통합, 브라우저 입력 폼 화면 캡처 추가.
19
+ - 공공 데이터 source 상세 매핑과 향후 추가 후보를 [docs/DATA_SOURCES.md](./docs/DATA_SOURCES.md) 정리했습니다.
20
+ - AI 코딩 도구(Claude Code·Codex CLI·Cursor 등) 공통 안내 파일 `AGENTS.md` 추가했습니다 외부 기여자가 어떤 도구를 쓰든 같은 규칙을 안내받습니다.
59
21
 
60
- ### Added`inspect` CLI
22
+ ## [1.6.0]2026-05-30
61
23
 
62
- - **`node build/cli.js inspect`** 시스템 정합성 점검의 정식 명령. `doctor` 는 v1.4.1 backward-compat alias 로 유지. (`docker inspect` / `kubectl inspect` 와 같은 "내부 구조 점검" 어휘 채택 "doctor" 의료 메타포로 의미가 부정확하다는 점 정정)
63
- - **KOSHA Guide 본문 ↔ 메타 차이 자동 검증** — `inspect` 와 `INVENTORY.md` 가 `src/ontology/graph/nodes/documents/guides/` (메타 1,039) 와 `src/ontology/kosha-guides/` (본문 1,039) 의 차이를 자동 검출. v1.4.2 에서 본문 = 메타 일치 회복.
64
- - **`scripts/audit/audit-kosha-guide-gaps.ts`** — KOSHA Guide 카테고리별 번호 시퀀스 갭 자동 audit. KOSHA 발행 패턴 진단용.
24
+ 브라우저 입력 폼을 명령어 줄로 띄울 있습니다설치도 빌드도 필요 없습니다.
65
25
 
66
- ### Fixed — KOSHA Guide 본문 2건 회복 (1,037 → 1,039)
26
+ ### 추가
67
27
 
68
- - **A-142-2018** (디에탄올아민에 대한 작업환경측정 분석 기술지침) + **T-25-2021** (시험동물 조직 전처리 포매 지침) 본문 회복.
69
- - 회복 메커니즘 정정: KOSHA OneAPI 15144147 응답의 `fileDownloadUrl` fileOrdrNo=5 (0 bytes) 가리켰던 v1.4.1 한계를 v1.4.2 에서 **동일 fileId 의 fileOrdrNo 전수 시도** 로 해소.
70
- - A-142-2018: fileOrdrNo=4 → PDF 506KB → kordoc 변환 → 528 line MD
71
- - T-25-2021: fileOrdrNo=4 → HWP 26KB (KOSHA portal 측 PDF 자체가 0 bytes) → kordoc HWP 변환 → 261 line MD
72
- - `_FAILURES.json` 풍부화 + history 박제 (failures 0건). v1.4.1 시점 등록 사유와 v1.4.2 해소 사유 모두 보존.
28
+ - **브라우저 입력 폼을 `npx` 줄로** `npx -y agent-safety-oss viewer` 입력하면 안전문서 입력 폼이 브라우저에 바로 열립니다. 이전엔 소스를 내려받아 빌드해야 했지만, 이제 Node.js 만 있으면 됩니다. AI 비서(Claude·Codex) 명령어가 익숙하지 않은 안전관리자·현장소장을 위한 가장 쉬운 경로입니다.
29
+ - **자동 브라우저 열기가 Windows·Linux 에서도 동작** 화면이 운영체제에 맞게 자동으로 열립니다 (이전 macOS 전용 OS 지원).
73
30
 
74
- ### Fixed — drift 8건 자동 정정 (marker 적용 시 발견)
31
+ ### 개선
75
32
 
76
- | 위치 | 기존 | 정정 |
77
- |---|---|---|
78
- | README.md "키 없이 동작 81개" | 81 | 85 (TOOLS_KEYLESS) |
79
- | README.md "패키지 버전" | 1.4.1 | 1.4.2 (VERSION) |
80
- | README-EN.md "Package version" | 1.4.1 | 1.4.2 |
81
- | README-EN.md "API key for 6 KOSHA Live tools" | 6 | 7 (TOOLS_KEYREQ) |
82
- | SECURITY.md "현재 안정판" | 1.4.1 | 1.4.2 |
83
- | SECURITY.md "KOSHA Guide 메타 (1,037 노드)" | 1,037 | 1,039 (메타 표현이 본문 카운트로 잘못 박힘) |
84
- | OPERATIONAL-ONTOLOGY.md "release" | v1.4.1 · 92 tools · 1,037 | 모두 marker 화 |
85
- | ARCHITECTURE.md "documents/guides/" | 1,037 (메타인데 본문 카운트) | 1,039 (메타) + 1,037 (본문 — v1.4.2 회복 후 1,039 자동 갱신) 분리 |
33
+ - 포트가 이미 사용 중일 다른 포트로 실행하는 방법을 안내합니다.
34
+ - Claude Desktop·Codex 설정 가이드의 옛 버전 표기를 정리했습니다.
86
35
 
87
- 향후 동일 종류 drift 는 pre-commit hook + CI 가 차단.
88
-
89
- ### Fixed — 외부 공개 기준 정밀 audit (README/examples/docs 전수)
90
-
91
- 추가 발견된 stale + 정정:
92
-
93
- | 위치 | 기존 | 정정 |
94
- |---|---|---|
95
- | README.md "현재 상태: v1.4.1 npm publish" | 1.4.1 (두 곳) | `VERSION` marker (현재값 자동 갱신) |
96
- | README.md "12+ source, 11개 도구" | 11 | 13 source (실측 표 row 수) |
97
- | README.md "운영 그래프 3,336 노드 / 29,642 엣지" | stale | 1단계 2,212 + 재귀 3,369 (KOSHA 1,039 포함) / 엣지 약 29,730 (audit 와 동일 산출) |
98
- | README.md "Control 45 / WorkActivity 41 / Hazard 38" | Control 45 stale | 50 정정 + marker |
99
- | README.md "들어 있는 것" 섹션 8건 카운트 | 일부 stale | 모두 marker 화 |
100
- | README-EN.md "Current Status" 표 5건 | 일부 stale | DOCID_MASTER/FORMS_*/GRAPH_*/CONTROLS marker |
101
- | IDENTITY.md "89개 MCP 도구" | 89 | `TOOLS_TOTAL` marker (당시 92) |
102
- | IDENTITY.md "Control 45개" | 45 | 50 marker |
103
- | IDENTITY.md "운영 그래프 3,336/29,642" | stale | 3,369 (재귀) / 29,730 marker |
104
- | OPERATIONAL-ONTOLOGY.md "Full graph 3,336 / edges 29,642" | stale | 3,369 / 29,730 marker + 1단계 분리 명시 |
105
- | ARCHITECTURE.md "132 formIds" | 하드코딩 | `FORMS_TOTAL` marker (당시 132) |
106
- | **examples/generate-tbm.sh, mcp-list-tools.sh, search-laws.sh** | **`agent-safety-oss-mcp`** (stale binary — 외부 사용자 100% 실행 실패) | **`npx -y agent-safety-oss`** (글로벌 미설치 환경도 동작) |
107
- | examples/README.md "89개 카탈로그 출력" | stale | "현재 수: docs/INVENTORY.md 참조 — 자동 산출" |
108
- | examples/mcp-list-tools.sh "도구 70개" 주석 | stale | INVENTORY.md 참조 안내 |
36
+ ## [1.5.0] 2026-05-24
109
37
 
110
- ### Added Inventory marker 11종 확장 + 산출 SSoT 분리
38
+ 안전 문서를 작성하면 관련 KOSHA 가이드와 법령 조항이 자동으로 따라붙습니다 일일이 찾을 필요가 없습니다.
111
39
 
112
- `scripts/build/inventory-data.ts` 신설 — `generate-inventory.ts` + `sync-docs.ts` 양쪽이 동일 산출 로직 사용. 신규 marker 키:
40
+ ### 추가
113
41
 
114
- - 그래프 노드 (1단계 vs 재귀 분리): `GRAPH_TOTAL` (재귀, KOSHA 1,039 포함) · `GRAPH_TOPLEVEL` (카테고리 직속) · `GRAPH_EDGES` (audit-graph-health EDGE_PROPS 31개 와 1:1 일치)
115
- - 핵심 그래프 객체: `GRAPH_ACTIVITIES` / `GRAPH_HAZARDS` / `GRAPH_CONTROLS`
116
- - 법정문서: `DOCID_MASTER` (legal-duty-master.json documents 카운트)
117
- - 양식: `FORMS_TOTAL` / `FORMS_HWP` / `FORMS_PDF` / `FORMS_XLSX` / `FORMS_MD`
118
- - 법령: `LAW_BUNDLE_COUNT`
42
+ - **가이드·법령 자동 연결** 문서(TBM·위험성평가·산업재해보고 ) 작성하면 관련 KOSHA 안전 가이드와 법령 근거를 자동으로 찾아 붙여줍니다.
43
+ - **양식 자동 채움** 문서 양식을 열면 관련 가이드·법령·위험요인·대책이 미리 채워진 상태로 시작합니다(빈 양식이 아니라).
119
44
 
120
- `countGraphEdges` 가 정규식 추정 (5,164) → audit-graph-health 와 동일한 JSON parse + EDGE_PROPS 카운트 (29,730) 로 정확화.
45
+ ### 개선
121
46
 
122
- ### Verification
47
+ - **근거 없는 인용 차단 강화** — 가이드·법령은 내장 지식에서 가져오므로, 존재하지 않는 가이드명·조문을 지어내지 않습니다.
123
48
 
124
- - `inspect` 출력: 본문 1039 · 메타 1039 (본문 = 메타 일치) · verified 14 / partial 960 / raw 65 / failed 0
125
- - TOOLS = CAPABILITY_REGISTRY = .jsonld = 92/92/92
126
- - `npm run docs:check` PASS (9개 문서 정합, 0 drift)
127
- - `npm run build` PASS (generate-inventory + sync-docs 통합)
128
- - pre-commit hook 차단 동작 검증 (drift 시뮬레이션 → exit 1 → `docs:sync` 자동 정정)
129
- - mcp:test:smoke 29/29 PASS
49
+ ---
130
50
 
131
- ### Added
51
+ ## [1.4.2] — 2026-05-23
132
52
 
133
- - **`node build/cli.js inspect`** 시스템 정합성 점검의 정식 명령. `doctor` 는 v1.4.1 backward-compat alias 로 유지. (`docker inspect` / `kubectl inspect` 와 같은 "내부 구조 점검" 어휘 채택 — "doctor" 가 의료 메타포로 의미가 부정확하다는 점 정정)
134
- - **KOSHA Guide 본문 ↔ 메타 차이 자동 검증** — `inspect` 와 `INVENTORY.md` 가 `src/ontology/graph/nodes/documents/guides/` (메타 1,039) 와 `src/ontology/kosha-guides/` (본문 1,037) 의 차이를 자동 검출하고 `_FAILURES.json` 과의 정합도 검증. drift 발생 시 ⚠️ 경고.
135
- - **`_FAILURES.json` 풍부화** — 미수집 가이드 2건의 제목 · 카테고리 · KOSHA OneAPI 측 사유 · 사용자 우회 경로 (KOSHA 자료마당 직접 검색) 명시.
136
- - **`scripts/audit/audit-kosha-guide-gaps.ts`** — KOSHA Guide 카테고리별 번호 시퀀스 갭 자동 audit. KOSHA 발행 패턴 진단용.
53
+ 빠졌던 KOSHA 가이드 2건을 채우고, 문서·예제의 잘못된 명령어를 바로잡았습니다.
137
54
 
138
- ### Fixed
55
+ ### 추가
139
56
 
140
- - README/README-EN KOSHA Guide 표기 `1,037 본문` 단일 표기에서 `본문 1,037 + 메타 1,039 (PDF 미제공 2건 명시)` 정정. 메타와 본문이 다르다는 사실을 정직 공개.
141
- - `_FAILURES.json` 의 "폐기 판정" 표현 정정 — 실제는 KOSHA OneAPI 측 PDF 응답 부재 (가이드 자체는 KOSHA 자료마당에 존재). 사용자가 직접 다운로드 가능한 경로 명시.
142
- - 미수집 가이드의 실체 박제 — A-142-2018 "디에탄올아민에 대한 작업환경측정 분석 기술지침" · T-25-2021 "시험동물 조직 전처리 및 포매 지침".
57
+ - **`inspect` 명령**설치한 시스템이 제대로 동작하는지(번들된 가이드·법령·도구가 온전한지) 번에 점검합니다. 기존 `doctor` 명령도 계속 있습니다.
143
58
 
144
- ### Verification
59
+ ### 수정
145
60
 
146
- - `inspect` 출력: 본문 1037 · 메타 1039 (본문 미수집 2: A-142-2018, T-25-2021) `_FAILURES.json` 등록 완료
147
- - TOOLS = CAPABILITY_REGISTRY = .jsonld = 92/92/92
148
- - mcp:test:smoke 29/29 PASS
61
+ - **빠졌던 KOSHA 가이드 2건 채움** "디에탄올아민에 대한 작업환경측정 분석 기술지침", "시험동물 조직 전처리 포매 지침" 본문이 이제 포함됩니다.
62
+ - **예제 스크립트 실행 오류 수정** 예제(TBM 생성·도구 목록·법령 검색)에 적힌 명령어가 옛 이름이라 그대로 실행하면 실패하던 문제를 바로잡았습니다.
63
+ - **문서 표기 정정** — 버전·항목 수 등 일부 문서의 오래된 표기를 실제 값으로 맞췄습니다.
149
64
 
150
65
  ## [1.4.1] — 2026-05-22
151
66
 
152
- 자동 inventory 생성과 doctor CLI 도입으로 문서 정확도와 시스템 진단 능력 강화. 카운트·표현 정정 거버넌스 명시 동반.
153
-
154
- ### Added
155
-
156
- - **`docs/INVENTORY.md` 자동 생성** (`scripts/build/generate-inventory.ts`) — `npm run build` 시 TOOLS · capability · KOSHA Guide · 법령 조문 · 양식 · 그래프 노드 카운트를 코드/데이터에서 직접 산출. 수동 표기 drift 차단.
157
- - **`doctor` CLI 명령** (`node build/cli.js doctor`) — 시스템 무결성 진단. 도구·Capability SSoT 정합 / 그래프 노드 / KOSHA Guide 추출 품질 / 법령 동기화 stale 경고 / 사용자 환경 (profile + API 키) 점검. `--json` 옵션.
158
- - **KOSHA Guide 추출 품질 등급 자동 분류** — verified / partial / raw (빈 `<table>` 잔재 기준).
159
- - **`SECURITY.md §6.1`** — AgentHQ 키 vs `DATA_GO_KR_KEY` 거버넌스 차이 비교표 + 라텔웍스 relay 운영 정책 4항 (영구 보관 X / 로그 redaction / 수익화 회수 없음 / 회수 사유 한정) 명시.
67
+ 시스템 진단 기능을 추가하고, 번들된 법령 범위를 정확히 표기했습니다.
160
68
 
161
- ### Fixed
69
+ ### 추가
162
70
 
163
- - **KOSHA Guide 본문 카운트 정정** 9개 문서 (`README` / `CHANGELOG` / `SECURITY` / `ARCHITECTURE` / `IDENTITY` / `DATA_SOURCES` / `CONTRIBUTING` / `README-EN` / `OPERATIONAL-ONTOLOGY`) 의 `1,039` → 실측 **`1,037`** (`kosha-guides/*.md` 직접 카운트 + `_FAILURES.json` 2건 분리). 향후 자동 inventory 가 SSoT.
164
- - **법령 본문 표현 정확화** — `"안전관리 법령 8개 본문"` → `"8건 핵심 조문 발췌 (산안법 10조 / 시행령 3조 / 시행규칙 4조 / 기준규칙 10조 / 중처법 7조 / 중처법시행령 13조 / 위평고시 23조 전문 / 건진법 §62 영역 4조 — 합계 약 77조, 전체 법령 아님)"`. 산안법 175조 中 5.7% 만 수록임을 명시. 개별 `safety-laws/*.md` 헤더는 이미 정직 명시, 최상위 README/IDENTITY 만 정정.
165
- - **라이선스 placeholder 도구 명시** — `search_sif_archive` / `list_construction_subtasks` 가 공공누리 변경금지 라이선스 준수용 의도된 placeholder 임을 INVENTORY 와 README 5초 진입 카드에 명시. **실질 활성 도구 90** (92 = 85 keyless + 7 키 필요 + 2 placeholder).
166
- - **npm publish 상태 안내 갱신** — `README` / `README-EN` / `SETUP_CLAUDE_DESKTOP` 의 "publish 전 (E404)" / "not yet published" 표현 제거. publish 완료 상태 반영.
71
+ - **`doctor` 명령**설치한 시스템이 제대로 동작하는지(도구·번들 가이드·법령 동기화 상태·내 환경 설정) 점검합니다.
167
72
 
168
- ### Verification
73
+ ### 수정
169
74
 
170
- - `mcp:test:smoke` 29/29 PASS
171
- - `test-active-graph-authoring-loop` 25/25 PASS
172
- - `doctor` 출력: TOOLS = CAPABILITY_REGISTRY = .jsonld = 92/92/92 · 그래프 2,212 · KOSHA 1,037 (verified 14 · partial 958 · raw 65 · failed 2) · 법령 최신 2026-05-18
173
- - INVENTORY.md 자동 생성 (133 lines) — `npm run build` 시 자동
75
+ - **번들 법령 범위 정확화** — "법령 8개 본문" 표현을 "8개 법령의 핵심 조문 발췌"로 바로잡았습니다. 산업안전보건법 등의 전체 조문이 아니라 안전관리 실무에 필요한 핵심 조항만 발췌해 담았다는 점을 분명히 했습니다.
76
+ - **항목 표기 정정** — 번들된 KOSHA 가이드·도구 수 등 일부 문서의 오래된 표기를 실제 값으로 맞췄습니다.
77
+ - **설치 안내 갱신** npm 공개 완료에 맞춰 "아직 공개 전" 같은 안내를 제거했습니다.
174
78
 
175
79
  ## [1.4.0] — 2026-05-21
176
80
 
177
- **Active Graph Authoring Loop + a2ui-demo viewer 격상 + 사용자 onboarding 이슈 5건 fix**
178
-
179
- 본 릴리스는 ADR 002 (Active Graph Authoring Loop) 도입과 ADR 001 (viewer 격상) 을 한 번에 묶고, 첫 publish 직후 발견된 사용자 onboarding 이슈 5건을 함께 해소한다.
180
-
181
- ### Added — Active Graph Authoring Loop (ADR 002)
182
-
183
- **A2UI ↔ LLM ↔ Graph 의 능동 루프** 도입. 사용자 입력이 LLM 의 도구 체이닝을 trigger 하고, 결과가 `updateComponents` 로 폼에 동적 push 되는 작성 보조 패턴.
184
-
185
- 신규 MCP 도구 4종 (총 88 → 92):
186
- - `request_field_help` — 필드 단위 동적 도움말 (inputGuide·examples·checkPoints + `_meta.writingGuide.fieldHints`/`commonMistakes`/`bestPractices` 결정론 조립). `currentValue` 가 있으면 추상명사·서명 누락 등 패턴 일치 경고.
187
- - `suggest_controls_for_hazard` — 위험요인 입력 → ERIC-PP 위계 (제거·대체·공학·관리·PPE) 정렬 통제대책 추천 (`mitigatedBy` 그래프 traversal).
188
- - `analyze_work_context` — 작업명·내용·조건 입력 → 위험·통제·법령·KOSHA Guide 종합 컨텍스트. `workConditions.depthM`/`heightM`/`confinedSpace` 등 조건 기반 §38·§42·§618 적용성 룰 자동 발동.
189
- - `preview_review` — 작성 중 부분 검토 (`scope: all|required-only|hallucination-only`). 최종 `review_safety_document` 와 직교 — 가드레일 vs 결재 직전 검증.
190
-
191
- `render_a2ui_form` 강화:
192
- - info-card 에 그래프 컨텍스트 inline (hazards/controls/relatedDocs/legalArticles/koshaGuides)
193
- - `_meta.writingGuide.commonMistakes`/`bestPractices` 를 신규 `guide-card` 로 노출
194
- - 필드별 `checkPoints` + `fieldHints` 동시 표시 (라벨 정규화 후 양방향 substring 매칭)
195
- - actions Row 에 6 액션 버튼 — analyze/controls/help/preview-review/assemble/submit
196
-
197
- 문서·인프라:
198
- - `decisions/002-active-graph-authoring-loop.md` — ADR 박제
199
- - `.specs/in-progress/2026-05-21-active-graph-authoring-loop.md` — EARS 요구사항·디자인·태스크
200
- - `scripts/test/test-active-graph-authoring-loop.ts` — 통합 시나리오 (daily_tbm + work_plan_excavation + 그래프 SSoT 일관성) 25 checks PASS
201
-
202
- ### Added — viewer 격상 (ADR 001)
203
-
204
- 데모 위치에 있던 A2UI 폼 viewer 를 운영 자원으로 격상. 비-개발자 안전관리자가 MCP host (Claude Desktop / Codex / MCP Inspector) 없이도 브라우저에서 직접 사용 가능.
205
-
206
- - 본문 생성 후 **MD 파일 다운로드** 버튼 (`{docId}-{YYYY-MM-DD}.md`) — 의존성 0 (Blob URL 만 사용)
207
- - `decisions/001-a2ui-viewer-promotion.md` — ADR 표준 도입
208
- - `.specs/` 디렉토리 — phase gate spec (`plans/` → `in-progress/` → `executed/`)
209
- - `render_a2ui_form` 도구 description / nextActions 에 viewer 가 동급 A2UI 호환 클라이언트로 등재
210
-
211
- ### Added — CLI DX 강화 (Issue #4)
212
-
213
- - `node build/cli.js tools --with-schema` — 각 도구의 `inputSchema` (properties · required · type · enum · description) JSON 출력
214
- - `node build/cli.js tools describe <toolName>` — 단일 도구 상세 (인터랙티브 형식 + 호출 예시 자동 생성)
215
- - `tools` 사람 가독 출력에 각 도구 **필수 필드 한 줄** 추가
216
- - 의존성 0 유지 — `zod-to-json-schema` 미사용, `src/lib/schema-introspection.ts` 자체 변환
81
+ 문서를 채워가는 동안 필요한 도움말·위험요인 대책·검토가 실시간으로 따라오고, MCP 프로그램 없이도 브라우저에서 바로 작성할 수 있습니다.
217
82
 
218
- ### Fixed
83
+ ### 추가
219
84
 
220
- - **Issue #3** CLI `--key "value"` 따옴표 string 자동 number coerce 되어 Zod `z.string()` 거부되던 회귀. `src/lib/schema-introspection.ts` 가 inputSchema 의 expected type (`string`/`number`/`boolean`/`array`/`object`/`enum`) 추출, `parseKeyValueArgs` 키별로 coerce 결정. 예: `--industryCode "41"` 이제 string `"41"` 로 보존됨.
221
- - **Issue #5**`get_incident_response_workflow` `dueAt` UTC 자정 파싱으로 KST(+09:00) 대비 9시간 빨라지던 회귀. 모든 일자 산술을 `+09:00` 기준으로 명시 + `2026-05-21 00:30 KST` 형식으로 명시 표시. 호출 시각 fallback 도 `kstToday()` 로 KST 기준 계산.
222
- - **Issue #5 lateral** — 같은 KST/UTC 회귀가 박혀 있던 **8곳 일괄 fix**. `src/lib/datetime-kst.ts` 공통 유틸 신설 (`kstToday`/`kstAddDays`/`kstDayDiff`/`parseKstDate`/`formatKstDate`/`kstIsoNow`). 적용처: `list_upcoming_duties` (asOf + 내일 fallback), `get_retention_status` (asOf), `generate_safety_document` (planDate fallback), `site-profile` (compileDate auto-fill), `input-validator` (TODAY 모듈 상수), `master-loader.computeNextDueDate` (compileDate + P{N}{D|M|Y} 산술), `trace-recorder` (활동 로그 일자), `local-storage.timestamp` (보관 timestamp 파일명). KST 새벽 0~9시 호출 시 "오늘"이 어제로 잘못 산정되던 회귀가 모든 시간 의존 도구에서 해소됨.
223
- - **Issue #6** — enum/필드명 자연어 alias 미지원. `src/lib/input-aliases.ts` 의 `aliasedEnum` / `withFieldAliases` 헬퍼 도입. `severity: fatality|death|사망 → fatal`, `critical|major|중상 → serious`, `light|slight|경상 → minor` 영문·한국어 alias 지원. `field_safety_briefing` 도 `topic`/`workName`/`작업명` 등을 `workOrTopic` 으로 자동 정규화.
224
- - **Issue #6 lateral** — 같은 패턴이 사용자 진입점 4곳에 추가 박힘 — 일괄 alias 확대. `INDUSTRY_ALIASES` (건설/건축/토목/제조/공장/서비스/기타 + 영문 변형) 가 `assess_my_obligations.industry` + `query_applicability.industry` 에 적용. `STAGE_ALIASES` (착공전/사전/시공중/진행/준공/완공 + before/during/after) 가 `get_construction_stage_duties.stage` 에 적용. `PERIOD_ALIASES` (주/주간/매주/월/월간/매월) 가 `generate_safety_report.period` + `list_safety_reports.period` 에 적용.
225
- - **Issue #7** — `register_site`/`register_person`/`register_contractor` 응답 텍스트에 사업자등록번호·대표자명 평문 노출. `src/lib/pii-masking.ts` 신설 — 표시용 text 만 마스킹 (`***-**-67890` / `J*** D**`), `structuredContent` 는 평문 유지 (파일 저장·재호출용). `get_site_profile` 출력에도 일괄 적용. (※ `company-key-tools` 는 이미 자체 `reveal=true` 마스킹 메커니즘 보유 — lateral 점검 결과 추가 작업 불필요.)
226
- - **결함 #1 (릴리즈 전 점검)** — `suggest_controls_for_hazard` 가 빈 문자열 / whitespace 입력에 silent fail (isError 미설정, 결과 없음). 명시적 거부 + `error: "empty_hazard"` + nextActions 안내.
227
- - **결함 #2 (릴리즈 전 점검)** — `analyze_work_context` 가 도메인 외 입력 (서비스/제조/화학공정 등) 에도 docId 의 기본 hazard/control 을 반환해 사용자가 비-건설 작업에 건설 매핑을 적용할 위험. `domainBoundary` 시그널 신설 — `scope.json` excluded 키워드 감지 + `matchedActivities + matchedWorktypes` 모두 0 일 때 응답 상단에 ⚠️ 도메인 경계 안내 + `structuredContent.domainBoundary` 노출.
85
+ - **작성 실시간 보조** 항목별 작성 도움말과 흔한 실수 안내, 위험요인을 넣으면 (제거·대체·공학적·관리적·보호구 순서로) 대책을 추천, 작업명·내용·조건을 넣으면 관련 위험·대책·법령·가이드를 번에 정리, 결재 문서를 미리 점검합니다.
86
+ - **브라우저에서 바로 작성** Claude Desktop 같은 별도 프로그램 없이도 브라우저에서 안전 문서를 작성하고, 완성 본문을 파일(.md)로 내려받을 있습니다. (PDF로 바꾸는 방법도 안내에 추가)
228
87
 
229
- ### Breaking
230
- - npm script `mcp:demo:viewer` → `mcp:viewer` 로 변경
231
- - `a2ui-demo/` 폴더 제거 — JSONL 정적 시연 기능은 운영 viewer (`npm run mcp:viewer`) 로 통합
232
- - `scripts/dev/demo-a2ui-viewer.ts` → `scripts/dev/viewer-server.ts` 로 리네임
88
+ ### 수정
233
89
 
234
- ### Documentation
235
- - README / README-ENviewer 본격 사용법 + PDF 변환 가이드 (Pandoc / 한컴오피스 / Typora 안내)
236
- - `viewer-server.ts` 주석데모 표현 제거, 운영 위치 명시
237
- - README badge `tools` 88 92
90
+ - **새벽 시간대 날짜 오류 수정** — 자정~오전 9시 사이에 쓰면 "오늘"이 어제로 잡혀 작성일·기한이 하루 어긋나던 문제를 모든 도구에서 바로잡았습니다(한국 시각 기준).
91
+ - **자연어로 입력 가능**"사망/중상/경상", "건설/제조/서비스", "착공전/시공중/준공", "주간/월간" 같은 한국어(또는 영문) 표현을 그대로 입력해도 알아듣습니다.
92
+ - **개인정보 보호**현장·인원·협력사 등록 결과 화면에 사업자등록번호·대표자명이 그대로 보이던 것을 가려서 표시합니다(저장·재사용에는 원본 유지).
93
+ - **잘못된 입력 처리 개선** 위험요인을 비워서 대책을 요청하면 조용히 빈 결과를 주던 문제를 바로잡았고, 건설 외 작업(서비스·화학공정 등)을 넣으면 "이 도구의 적용 범위 밖"이라고 안내합니다.
238
94
 
239
- ### Rationale
95
+ ### 호환성 (Breaking)
240
96
 
241
- 본질 우선순위 (사용자 황룡 2026-05-21 명시): **(1) 온톨로지 그래프 기반 작성 보조와 가이드라인 (2) 완성 문서 검토 (3) A2UI 가 작성자에게 필요한 정보를 능동적으로 가져올 수 있도록 LLM 과 연결**. ADR 002 가 세 본질을 동시 충족. ADR 001 의 viewer 격상은 14,000 안전관리자 (SAM 5,400사) 도달 — Agent_HQ PHILOSOPHY §9 의 Human fallback / 직원 역할 항목 해소. 이슈 5건 fix 는 npm publish 사용자 onboarding 마찰 직접 해소.
97
+ - 브라우저 작성 화면 실행 명령이 `npm run mcp:demo:viewer` `npm run mcp:viewer` 바뀌었습니다.
98
+ - 정적 시연용 `a2ui-demo/` 폴더는 제거되고, 그 기능은 위 브라우저 작성 화면으로 통합되었습니다.
242
99
 
243
100
  ## [1.3.1] — 2026-05-20
244
101