python-hwpx-automation 6.0.3__py3-none-any.whl

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 (217) hide show
  1. hwpx_automation/__init__.py +61 -0
  2. hwpx_automation/__init__.pyi +27 -0
  3. hwpx_automation/__main__.py +8 -0
  4. hwpx_automation/agent_document.py +392 -0
  5. hwpx_automation/api.py +136 -0
  6. hwpx_automation/blind_eval.py +407 -0
  7. hwpx_automation/capabilities.py +110 -0
  8. hwpx_automation/compat.py +48 -0
  9. hwpx_automation/configuration.py +60 -0
  10. hwpx_automation/core/__init__.py +2 -0
  11. hwpx_automation/core/content.py +762 -0
  12. hwpx_automation/core/context.py +111 -0
  13. hwpx_automation/core/diff.py +53 -0
  14. hwpx_automation/core/document.py +37 -0
  15. hwpx_automation/core/formatting.py +513 -0
  16. hwpx_automation/core/handles.py +24 -0
  17. hwpx_automation/core/locations.py +205 -0
  18. hwpx_automation/core/locator.py +162 -0
  19. hwpx_automation/core/plan.py +680 -0
  20. hwpx_automation/core/resources.py +42 -0
  21. hwpx_automation/core/search.py +296 -0
  22. hwpx_automation/core/transactions.py +434 -0
  23. hwpx_automation/core/txn.py +48 -0
  24. hwpx_automation/document_state.py +95 -0
  25. hwpx_automation/errors.py +174 -0
  26. hwpx_automation/execution_lock.py +15 -0
  27. hwpx_automation/fastmcp_adapter.py +672 -0
  28. hwpx_automation/form_fill.py +1177 -0
  29. hwpx_automation/form_output_models.py +223 -0
  30. hwpx_automation/handlers/__init__.py +2 -0
  31. hwpx_automation/handlers/_shared.py +377 -0
  32. hwpx_automation/handlers/agent_document.py +257 -0
  33. hwpx_automation/handlers/authoring.py +750 -0
  34. hwpx_automation/handlers/content_edit.py +1078 -0
  35. hwpx_automation/handlers/form_fill.py +607 -0
  36. hwpx_automation/handlers/layout_style.py +660 -0
  37. hwpx_automation/handlers/quality_render.py +566 -0
  38. hwpx_automation/handlers/read_export.py +1295 -0
  39. hwpx_automation/handlers/specialized.py +624 -0
  40. hwpx_automation/handlers/tracked_changes.py +589 -0
  41. hwpx_automation/handlers/workflow.py +105 -0
  42. hwpx_automation/hwp_converter.py +227 -0
  43. hwpx_automation/hwp_support.py +94 -0
  44. hwpx_automation/hwpx_ops.py +1439 -0
  45. hwpx_automation/identity.json +263 -0
  46. hwpx_automation/identity.py +18 -0
  47. hwpx_automation/ingest_adapters.py +85 -0
  48. hwpx_automation/markdown_plan.py +216 -0
  49. hwpx_automation/mcp_cli.py +29 -0
  50. hwpx_automation/metadata/tools_meta.py +40 -0
  51. hwpx_automation/mixed_form.py +3007 -0
  52. hwpx_automation/mutation_models.py +401 -0
  53. hwpx_automation/network_policy.py +232 -0
  54. hwpx_automation/office/__init__.py +14 -0
  55. hwpx_automation/office/agent/__init__.py +125 -0
  56. hwpx_automation/office/agent/_batch_verification.py +383 -0
  57. hwpx_automation/office/agent/blueprint/__init__.py +58 -0
  58. hwpx_automation/office/agent/blueprint/bundle.py +282 -0
  59. hwpx_automation/office/agent/blueprint/catalog.py +136 -0
  60. hwpx_automation/office/agent/blueprint/dump.py +520 -0
  61. hwpx_automation/office/agent/blueprint/mapping.py +312 -0
  62. hwpx_automation/office/agent/blueprint/model.py +722 -0
  63. hwpx_automation/office/agent/blueprint/native.py +621 -0
  64. hwpx_automation/office/agent/blueprint/replay.py +622 -0
  65. hwpx_automation/office/agent/catalog.py +252 -0
  66. hwpx_automation/office/agent/cli.py +647 -0
  67. hwpx_automation/office/agent/commands.py +1383 -0
  68. hwpx_automation/office/agent/document.py +801 -0
  69. hwpx_automation/office/agent/form_plan.py +1760 -0
  70. hwpx_automation/office/agent/model.py +808 -0
  71. hwpx_automation/office/agent/path.py +155 -0
  72. hwpx_automation/office/agent/query.py +230 -0
  73. hwpx_automation/office/agent/story.py +207 -0
  74. hwpx_automation/office/authoring/__init__.py +3542 -0
  75. hwpx_automation/office/authoring/advanced_generators.py +154 -0
  76. hwpx_automation/office/authoring/builder/__init__.py +52 -0
  77. hwpx_automation/office/authoring/builder/core.py +996 -0
  78. hwpx_automation/office/authoring/builder/report.py +195 -0
  79. hwpx_automation/office/authoring/design/__init__.py +30 -0
  80. hwpx_automation/office/authoring/design/_support.py +144 -0
  81. hwpx_automation/office/authoring/design/composer.py +282 -0
  82. hwpx_automation/office/authoring/design/harvest.py +305 -0
  83. hwpx_automation/office/authoring/design/plan.py +69 -0
  84. hwpx_automation/office/authoring/design/profile.py +88 -0
  85. hwpx_automation/office/authoring/design/profiles/application_form/fragments/body.xml +1 -0
  86. hwpx_automation/office/authoring/design/profiles/application_form/fragments/heading.xml +1 -0
  87. hwpx_automation/office/authoring/design/profiles/application_form/fragments/info_table.xml +1 -0
  88. hwpx_automation/office/authoring/design/profiles/application_form/fragments/title.xml +1 -0
  89. hwpx_automation/office/authoring/design/profiles/application_form/profile.json +25 -0
  90. hwpx_automation/office/authoring/design/profiles/application_form/template.hwpx +0 -0
  91. hwpx_automation/office/authoring/design/profiles/home_notice/fragments/body.xml +1 -0
  92. hwpx_automation/office/authoring/design/profiles/home_notice/fragments/heading.xml +1 -0
  93. hwpx_automation/office/authoring/design/profiles/home_notice/fragments/title.xml +1 -0
  94. hwpx_automation/office/authoring/design/profiles/home_notice/profile.json +24 -0
  95. hwpx_automation/office/authoring/design/profiles/home_notice/template.hwpx +0 -0
  96. hwpx_automation/office/authoring/design/profiles/official_notice/fragments/body.xml +1 -0
  97. hwpx_automation/office/authoring/design/profiles/official_notice/fragments/heading.xml +1 -0
  98. hwpx_automation/office/authoring/design/profiles/official_notice/fragments/info_table.xml +1 -0
  99. hwpx_automation/office/authoring/design/profiles/official_notice/fragments/title.xml +1 -0
  100. hwpx_automation/office/authoring/design/profiles/official_notice/profile.json +25 -0
  101. hwpx_automation/office/authoring/design/profiles/official_notice/template.hwpx +0 -0
  102. hwpx_automation/office/authoring/design/profiles/report/fragments/body.xml +1 -0
  103. hwpx_automation/office/authoring/design/profiles/report/fragments/heading.xml +1 -0
  104. hwpx_automation/office/authoring/design/profiles/report/fragments/info_table.xml +1 -0
  105. hwpx_automation/office/authoring/design/profiles/report/fragments/title.xml +1 -0
  106. hwpx_automation/office/authoring/design/profiles/report/profile.json +25 -0
  107. hwpx_automation/office/authoring/design/profiles/report/template.hwpx +0 -0
  108. hwpx_automation/office/authoring/design/validator.py +107 -0
  109. hwpx_automation/office/authoring/presets/__init__.py +22 -0
  110. hwpx_automation/office/authoring/presets/proposal.py +538 -0
  111. hwpx_automation/office/authoring/report_parser.py +141 -0
  112. hwpx_automation/office/authoring/style_profile.py +437 -0
  113. hwpx_automation/office/authoring/template_analyzer.py +657 -0
  114. hwpx_automation/office/compliance/__init__.py +38 -0
  115. hwpx_automation/office/compliance/official_lint.py +478 -0
  116. hwpx_automation/office/compliance/pii.py +388 -0
  117. hwpx_automation/office/document_ops/__init__.py +13 -0
  118. hwpx_automation/office/document_ops/comparison.py +62 -0
  119. hwpx_automation/office/document_ops/mail_merge.py +73 -0
  120. hwpx_automation/office/document_ops/redline.py +35 -0
  121. hwpx_automation/office/evalplan/__init__.py +36 -0
  122. hwpx_automation/office/evalplan/runtime.py +2762 -0
  123. hwpx_automation/office/exam/__init__.py +44 -0
  124. hwpx_automation/office/exam/compose.py +282 -0
  125. hwpx_automation/office/exam/ir.py +44 -0
  126. hwpx_automation/office/exam/measure.py +163 -0
  127. hwpx_automation/office/exam/parser.py +150 -0
  128. hwpx_automation/office/exam/profile.py +123 -0
  129. hwpx_automation/office/form_fill/__init__.py +66 -0
  130. hwpx_automation/office/form_fill/classification.py +108 -0
  131. hwpx_automation/office/form_fill/fill_residue.py +242 -0
  132. hwpx_automation/office/form_fill/fit/__init__.py +36 -0
  133. hwpx_automation/office/form_fill/fit/apply.py +24 -0
  134. hwpx_automation/office/form_fill/fit/engine.py +24 -0
  135. hwpx_automation/office/form_fill/fit/measure.py +50 -0
  136. hwpx_automation/office/form_fill/fit/policy.py +28 -0
  137. hwpx_automation/office/form_fill/fit/report.py +28 -0
  138. hwpx_automation/office/form_fill/fit/seal.py +457 -0
  139. hwpx_automation/office/form_fill/fit/wordbox.py +1343 -0
  140. hwpx_automation/office/form_fill/guidance.py +704 -0
  141. hwpx_automation/office/form_fill/quality.py +961 -0
  142. hwpx_automation/office/form_fill/split_run.py +333 -0
  143. hwpx_automation/office/form_fill/template_formfit.py +656 -0
  144. hwpx_automation/office/house_style/__init__.py +196 -0
  145. hwpx_automation/office/house_style/composition.py +68 -0
  146. hwpx_automation/office/house_style/data/bank.json +625 -0
  147. hwpx_automation/office/house_style/data/genres.json +43 -0
  148. hwpx_automation/office/quality/__init__.py +14 -0
  149. hwpx_automation/office/quality/page_guard.py +277 -0
  150. hwpx_automation/office/rendering/__init__.py +145 -0
  151. hwpx_automation/office/rendering/_hancom_open_rate.ps1 +374 -0
  152. hwpx_automation/office/rendering/_refresh_hwpx_mac.applescript +162 -0
  153. hwpx_automation/office/rendering/_render_hwpx.ps1 +72 -0
  154. hwpx_automation/office/rendering/_render_hwpx_mac.applescript +249 -0
  155. hwpx_automation/office/rendering/block_splits.py +76 -0
  156. hwpx_automation/office/rendering/detectors.py +151 -0
  157. hwpx_automation/office/rendering/diff.py +153 -0
  158. hwpx_automation/office/rendering/fixture_corpus.py +215 -0
  159. hwpx_automation/office/rendering/oracle.py +909 -0
  160. hwpx_automation/office/rendering/page_qa.py +245 -0
  161. hwpx_automation/office/rendering/qa_contracts.py +293 -0
  162. hwpx_automation/office/rendering/qa_metrics.py +241 -0
  163. hwpx_automation/office/rendering/worker.py +290 -0
  164. hwpx_automation/office/utilities/__init__.py +12 -0
  165. hwpx_automation/office/utilities/table_compute.py +477 -0
  166. hwpx_automation/ops_services/__init__.py +1 -0
  167. hwpx_automation/ops_services/_border_fill.py +283 -0
  168. hwpx_automation/ops_services/composition.py +55 -0
  169. hwpx_automation/ops_services/content_layout.py +322 -0
  170. hwpx_automation/ops_services/context.py +213 -0
  171. hwpx_automation/ops_services/form_fields.py +557 -0
  172. hwpx_automation/ops_services/media.py +178 -0
  173. hwpx_automation/ops_services/memo_style.py +477 -0
  174. hwpx_automation/ops_services/package_validation.py +166 -0
  175. hwpx_automation/ops_services/planning.py +201 -0
  176. hwpx_automation/ops_services/preview_export.py +585 -0
  177. hwpx_automation/ops_services/read_query.py +601 -0
  178. hwpx_automation/ops_services/save_policy.py +604 -0
  179. hwpx_automation/ops_services/tables.py +539 -0
  180. hwpx_automation/ops_services/transactions.py +616 -0
  181. hwpx_automation/preview_output_models.py +69 -0
  182. hwpx_automation/public-modules.json +206 -0
  183. hwpx_automation/py.typed +1 -0
  184. hwpx_automation/quality.py +351 -0
  185. hwpx_automation/quality_generation.py +725 -0
  186. hwpx_automation/runtime.py +321 -0
  187. hwpx_automation/runtime_services.py +100 -0
  188. hwpx_automation/server.py +259 -0
  189. hwpx_automation/storage.py +747 -0
  190. hwpx_automation/tool_bindings.py +170 -0
  191. hwpx_automation/tool_contract.py +982 -0
  192. hwpx_automation/upstream.py +755 -0
  193. hwpx_automation/utils/__init__.py +2 -0
  194. hwpx_automation/utils/helpers.py +29 -0
  195. hwpx_automation/visual_qa.py +667 -0
  196. hwpx_automation/workflow/__init__.py +55 -0
  197. hwpx_automation/workflow/adapters.py +482 -0
  198. hwpx_automation/workflow/dispatcher.py +213 -0
  199. hwpx_automation/workflow/models.py +243 -0
  200. hwpx_automation/workflow/policy.py +198 -0
  201. hwpx_automation/workflow/render_contracts.py +173 -0
  202. hwpx_automation/workflow/render_metrics.py +196 -0
  203. hwpx_automation/workflow/render_queue.py +482 -0
  204. hwpx_automation/workflow/render_security.py +172 -0
  205. hwpx_automation/workflow/render_transport.py +369 -0
  206. hwpx_automation/workflow/rendering.py +206 -0
  207. hwpx_automation/workflow/service.py +758 -0
  208. hwpx_automation/workflow/state_machine.py +65 -0
  209. hwpx_automation/workflow/store.py +747 -0
  210. hwpx_automation/workspace.py +1694 -0
  211. python_hwpx_automation-6.0.3.dist-info/METADATA +279 -0
  212. python_hwpx_automation-6.0.3.dist-info/RECORD +217 -0
  213. python_hwpx_automation-6.0.3.dist-info/WHEEL +5 -0
  214. python_hwpx_automation-6.0.3.dist-info/entry_points.txt +3 -0
  215. python_hwpx_automation-6.0.3.dist-info/licenses/LICENSE +178 -0
  216. python_hwpx_automation-6.0.3.dist-info/licenses/NOTICE +14 -0
  217. python_hwpx_automation-6.0.3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,279 @@
1
+ Metadata-Version: 2.4
2
+ Name: python-hwpx-automation
3
+ Version: 6.0.3
4
+ Summary: Task-oriented HWPX document automation for Python, with an optional MCP adapter.
5
+ Author: Kohkyuhyun
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/airmang/python-hwpx-automation
8
+ Project-URL: Issues, https://github.com/airmang/python-hwpx-automation/issues
9
+ Keywords: hwpx,hancom,document-automation,workflow,mcp,ai-agent
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Requires-Python: >=3.10
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ License-File: NOTICE
18
+ Requires-Dist: python-hwpx<6,>=5.0.0
19
+ Requires-Dist: pydantic<3,>=2.11
20
+ Requires-Dist: cryptography>=42.0
21
+ Requires-Dist: anyio>=4.0
22
+ Requires-Dist: tomli>=2.0; python_version < "3.11"
23
+ Provides-Extra: mcp
24
+ Requires-Dist: mcp==1.28.1; extra == "mcp"
25
+ Provides-Extra: hwp
26
+ Requires-Dist: olefile>=0.47; extra == "hwp"
27
+ Provides-Extra: http
28
+ Requires-Dist: uvicorn>=0.30; extra == "http"
29
+ Provides-Extra: ingest
30
+ Requires-Dist: markitdown[docx,pdf,xlsx]<0.2,>=0.1.6; extra == "ingest"
31
+ Provides-Extra: oracle
32
+ Requires-Dist: pymupdf>=1.24; extra == "oracle"
33
+ Requires-Dist: pillow>=10.0; extra == "oracle"
34
+ Requires-Dist: numpy>=1.26; extra == "oracle"
35
+ Provides-Extra: vision
36
+ Requires-Dist: pymupdf>=1.24; extra == "vision"
37
+ Requires-Dist: pillow>=10.0; extra == "vision"
38
+ Requires-Dist: numpy>=1.26; extra == "vision"
39
+ Provides-Extra: test
40
+ Requires-Dist: pytest>=8.0; extra == "test"
41
+ Requires-Dist: build>=1.2; extra == "test"
42
+ Requires-Dist: packaging>=23.0; extra == "test"
43
+ Requires-Dist: pytest-cov>=5.0; extra == "test"
44
+ Requires-Dist: jsonschema>=4.22; extra == "test"
45
+ Requires-Dist: pyyaml>=6.0; extra == "test"
46
+ Requires-Dist: olefile>=0.47; extra == "test"
47
+ Requires-Dist: uvicorn>=0.30; extra == "test"
48
+ Requires-Dist: numpy>=1.26; extra == "test"
49
+ Requires-Dist: pillow>=10.0; extra == "test"
50
+ Requires-Dist: ruff>=0.12; extra == "test"
51
+ Provides-Extra: typecheck
52
+ Requires-Dist: mypy<3,>=1.10; extra == "typecheck"
53
+ Requires-Dist: pyright<2,>=1.1.390; extra == "typecheck"
54
+ Dynamic: license-file
55
+
56
+ <p align="center">
57
+ <h1 align="center">python-hwpx-automation</h1>
58
+ <p align="center">
59
+ <strong>HWPX 저작·양식 채움·업무 워크플로를 위한 Python 자동화 계층</strong>
60
+ </p>
61
+ <p align="center">
62
+ <a href="https://pypi.org/project/python-hwpx-automation/"><img src="https://img.shields.io/pypi/v/python-hwpx-automation?color=blue&label=PyPI" alt="PyPI"></a>
63
+ <a href="https://pepy.tech/project/python-hwpx-automation"><img src="https://static.pepy.tech/badge/python-hwpx-automation/month" alt="Downloads"></a>
64
+ <a href="https://pypi.org/project/python-hwpx-automation/"><img src="https://img.shields.io/pypi/pyversions/python-hwpx-automation" alt="Python"></a>
65
+ <a href="https://github.com/airmang/python-hwpx-automation/actions/workflows/tests.yml"><img src="https://img.shields.io/github/actions/workflow/status/airmang/python-hwpx-automation/tests.yml?branch=main&label=tests" alt="Tests"></a>
66
+ <a href="https://github.com/airmang/python-hwpx-automation/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue" alt="License"></a>
67
+ </p>
68
+ </p>
69
+
70
+ <!-- release-state: release-approved -->
71
+ > [!WARNING]
72
+ > **릴리스 상태 — `release-approved`: 6.0.3 train 발행이 승인되어 진행
73
+ > 중입니다(2026-07-28).** 이 checkout은
74
+ > `python-hwpx 5.0.1 → python-hwpx-automation 6.0.3 → hwpx-plugin 1.0.0`
75
+ > train과 계약 해시 `0ce938371f0b55a6`을 설명하지만, **원격 truth는 아직
76
+ > 관찰 전**입니다. 마지막으로 plugin 설치까지 함께 검증한 완전한 공개
77
+ > 트레인은 여전히
78
+ > `python-hwpx 4.2.0 → hwpx-mcp-server 5.1.0 → hwpx-plugin 0.8.0`,
79
+ > 계약 해시 `429cb6706323e762`입니다. 아래 canonical 설치 명령은 발행
80
+ > readback이 끝나기 전에는 공개 설치로 간주하지 마세요.
81
+ > 상태 승격은 `unreleased-candidate → release-approved → released` 세 단계이며,
82
+ > `released`와 current-public 좌표는 core·canonical·compatibility와 plugin GitHub
83
+ > Release·marketplace·실제 marketplace 설치까지 3스택 전체 원격 정본을 관찰한 뒤
84
+ > 후속 commit에서만 바꿉니다. 절차는
85
+ > [릴리스 상태 runbook](docs/release-runbook.md)에 있습니다.
86
+
87
+ [python-hwpx](https://github.com/airmang/python-hwpx)의 format/object-model 위에서
88
+ 저작·양식 채움·시험지 조판·평가계획·안전한 에이전트 워크플로를 제공합니다.
89
+ 기본 설치는 MCP SDK 없이 Python API와 `hwpx` CLI를 사용할 수 있습니다.
90
+ [모델 컨텍스트 프로토콜(MCP)](https://modelcontextprotocol.io)은 `[mcp]` extra로
91
+ 추가하는 선택 어댑터입니다.
92
+
93
+ 한컴오피스도 Windows도 필요하지 않으므로 **ChatGPT 채팅 환경에서도 HWPX
94
+ 문서를 다룰 수 있습니다.** 파이썬이 도는 곳이면 저작·양식 채움 워크플로가
95
+ 그대로 동작합니다.
96
+
97
+ | 계층 | 저장소 | 정본 책임 |
98
+ |---|---|---|
99
+ | Core | [`python-hwpx`](https://github.com/airmang/python-hwpx) | HWPX package/object model·OPC/OXML·직렬화·재사용 primitive |
100
+ | Automation | [`python-hwpx-automation`](https://github.com/airmang/python-hwpx-automation) | Python 자동화·워크플로·profile/policy·렌더·선택형 MCP adapter |
101
+ | Judgment | [`hwpx-plugins`](https://github.com/airmang/hwpx-plugins) | 에이전트 intent/genre 판단·ambiguity 처리·plugin/skill 가이드 |
102
+
103
+ 이 저장소는 위 표의 Automation 정본입니다.
104
+
105
+ ## Python 자동화 시작하기 (6.0 후보)
106
+
107
+ ```bash
108
+ pip install python-hwpx-automation
109
+ ```
110
+
111
+ ```python
112
+ from hwpx_automation import create_document_from_plan
113
+
114
+ document = create_document_from_plan(
115
+ {
116
+ "schemaVersion": "hwpx.document_plan.v1",
117
+ "title": "회의 결과",
118
+ "blocks": [{"type": "paragraph", "text": "결정 사항"}],
119
+ }
120
+ )
121
+ document.save_to_path("meeting-result.hwpx")
122
+ ```
123
+
124
+ `python -m hwpx_automation --help`와 `hwpx help`는 같은 task CLI를 실행합니다.
125
+
126
+ ## MCP 어댑터 시작하기 (6.0 후보)
127
+
128
+ ```bash
129
+ pip install "python-hwpx-automation[mcp]"
130
+ hwpx-automation-mcp
131
+ ```
132
+
133
+ 6.x 호환 기간에는 `pip install hwpx-mcp-server`와 `hwpx-mcp-server`도
134
+ 동작합니다. 옛 distribution/import/console 제거는 7.0 이전에는 하지 않으며,
135
+ 최소 90일 공개 관찰과 별도 오너 승인이 필요합니다.
136
+
137
+ MCP 클라이언트 설정 파일에 아래 블록 하나면 `hwpx` 서버를 잡습니다 — Claude Desktop은
138
+ `claude_desktop_config.json`, VS Code는 `.vscode/mcp.json`(키가 `mcpServers` 대신 `servers`),
139
+ Gemini CLI는 `~/.gemini/settings.json`, Cursor·Windsurf는 각 에디터의 MCP 설정 파일입니다.
140
+
141
+ ```json
142
+ {
143
+ "mcpServers": {
144
+ "hwpx": {
145
+ "command": "uvx",
146
+ "args": [
147
+ "--from",
148
+ "python-hwpx-automation[mcp]==6.0.3",
149
+ "hwpx-automation-mcp"
150
+ ],
151
+ "env": {
152
+ "HWPX_AUTOMATION_WORKSPACE_ROOTS": "[\"~/Documents\"]"
153
+ }
154
+ }
155
+ }
156
+ }
157
+ ```
158
+
159
+ `HWPX_AUTOMATION_WORKSPACE_ROOTS`에는 문서가 있는 폴더(절대경로 또는 `~`)를 지정하세요. Windows는
160
+ `"[\"C:\\\\hwpx\"]"`처럼 씁니다. 값을 비워 두면 서버는 실행 위치(cwd)를 root로 쓰려 하지만,
161
+ Claude Desktop 같은 GUI 클라이언트는 서버를 시스템 디렉터리(Windows `C:\Windows\System32`,
162
+ macOS `/`)에서 띄우므로 이런 degenerate cwd는 거부되고 모든 문서 경로가 막힙니다. 그래서 처음부터
163
+ 이 값을 설정하는 것을 권장합니다. 나머지 옵션은 [환경 변수](#환경-변수) 표를 참고하세요.
164
+
165
+ > 비-HWPX 문서(PDF/DOCX/XLSX/HTML/TXT)를 `document_to_markdown`으로 읽으려면
166
+ > `pip install "python-hwpx-automation[ingest]"`(또는 옛 이름 `"hwpx-mcp-server[ingest]"`)로
167
+ > MarkItDown adapter를 함께 설치합니다.
168
+ > 요구 사항: `Python >= 3.10` · `python-hwpx >= 5.0.0`.
169
+
170
+ ## 무엇을 하나
171
+
172
+ 기본 모드에서 다수의 HWPX 도구를 제공하며, 고급 모드(`HWPX_AUTOMATION_ADVANCED=1`)에서 점검·검증용 도구가 추가됩니다.
173
+
174
+ - **읽기·탐색** — `get_document_info`, `get_document_map`(아웃라인·표 지도·앵커를 한 호출로), `find_text` (저장하지 않음)
175
+ - **검색·치환·편집** — `search_and_replace`, `apply_document_commands`(이종 편집 원자 적용·dry-run·롤백·멱등키), `add_tracked_edit`(변경 추적)
176
+ - **표·양식 채움** — `analyze_form_fill` → `apply_form_fill` → `verify_form_fill` 바이트 보존 트랜잭션, `table_compute`(합계·소계)
177
+ - **문서 생성·공문** — 선언형 `create_document_from_plan`, `inspect_official_document_style`(행정 규정 lint), `mail_merge`
178
+ - **서식·그림·생성기** — `set_paragraph_format`·`set_page_setup`, `insert_picture`, 사진대지·명패·조직도
179
+ - **프리뷰·추출·복구·진단** — `render_preview`(HTML/PNG 자기검증), `hwpx_to_markdown`, `repair_hwpx`, `mcp_server_health`
180
+
181
+ 자세한 내용: [사용 사례](docs/use-cases.md) · [스킬 우선 워크플로](docs/skill-first-workflows.md)
182
+
183
+ ### 하나의 흐름부터
184
+
185
+ 처음부터 모든 도구를 외울 필요는 없습니다. 보통 아래 하나로 시작합니다.
186
+
187
+ 1. **읽기** — `get_document_info` → `get_document_outline`/`get_document_text` → `find_text`, `get_table_map`으로 필요한 부분만. (저장하지 않음)
188
+ 2. **안전 수정** — `copy_document`로 사본 생성 → 읽기 도구로 대상 확인 → `search_and_replace`, `set_table_cell_text` 같은 전문 도구나 `apply_document_commands`로 가장 작은 변경 → 다시 읽어 확인 → 검토가 끝난 복사본을 handoff.
189
+
190
+ 핵심은 **copy first · smallest edit · re-read after edits**입니다.
191
+
192
+ ## 안전과 품질 게이트
193
+
194
+ - **read first** — 먼저 읽기 도구로 문서를 파악합니다.
195
+ - **copy before risky edits** — 결과물을 보존해야 하면 `copy_document`를 먼저 호출합니다.
196
+ - **mutating tools persist immediately** — 수정 도구는 호출 즉시 저장되므로 검토용은 복사본에서 작업합니다.
197
+ - **explicit handoff uses the reviewed copy** — 납품·handoff는 검토가 끝난 복사본 파일 기준입니다.
198
+
199
+ 모델은 operation/plan만 보내고 raw XML을 직접 편집하지 않습니다. 일반 저장 경로는 python-hwpx의
200
+ 단일 `SavePipeline` 게이트를 통과해 무결성·XML·OPC/ID·열림안전을 검사하고, `quality`에 따라
201
+ `visualComplete` 블록(`ok`·`status`·`errorCodes`)을 응답에 실으며, 게이트가 실패하면 아무것도 쓰지 않고
202
+ 소유 후보만 원복합니다. capability handshake가 core/automation/plugin
203
+ 버전+해시 skew를 fail-closed로 차단합니다. 6.x 응답의 `versions.mcp`와
204
+ `minMcpVersion`은 기존 소비자를 위한 alias로만 유지됩니다.
205
+ 같은 이유로 `MIN_MCP_VERSION`, 공개 오류 schema `hwpx.mcp-error/v1`,
206
+ 동결된 architecture receipt ID `hwpx-mcp.*`, parity receipt 필드
207
+ `mcpRuntimeMembers`도 6.x에서 정확히 보존합니다. canonical 표기는
208
+ `versions.automation`·`minAutomationVersion`·`MIN_AUTOMATION_VERSION`이며,
209
+ 보존된 MCP 철자는 제품 소유권이 아니라 wire/receipt 호환 식별자입니다.
210
+ 보안 상세는 [하드닝 가이드](docs/hardening_guide_ko.md)에 있습니다.
211
+
212
+ > **위치 계약** — `paragraph_index`는 본문 직속 문단의 0-based 인덱스입니다. 표 안 문단은 여기 섞지 않고
213
+ > `{"kind":"table_cell_paragraph","table_index":0,"row":0,"col":1,"cell_paragraph_index":0}` 같은 `location`
214
+ > 객체로 지정하며, `get_table_map`/`find_text`가 반환한 값을 그대로 넘길 수 있습니다.
215
+
216
+ ## 환경 변수
217
+
218
+ | 변수 | 설명 | 기본값 |
219
+ |---|---|---|
220
+ | `HWPX_AUTOMATION_WORKSPACE_ROOTS` | 허용할 workspace 절대경로의 JSON 배열(복수 root 지원). 상대경로는 첫 root 기준 | unset → 프로세스 cwd. degenerate cwd는 `WORKSPACE_ROOT_INVALID`로 거부 |
221
+ | `HWPX_AUTOMATION_MAX_CHARS` | 텍스트 반환 도구 기본 최대 길이 | `10000` |
222
+ | `HWPX_AUTOMATION_AUTOBACKUP` | `1`이면 저장 전 `.bak` 백업 생성 | `1` |
223
+ | `HWPX_AUTOMATION_ADVANCED` | `1`이면 고급 도구 활성화 | `0` |
224
+ | `HWPX_AUTOMATION_FETCH_TIMEOUT_SECONDS` | URL 기반 HWPX fetch timeout | `20.0` |
225
+ | `HWPX_AUTOMATION_ALLOW_PRIVATE_NETWORK` | `1`이면 신뢰된 사설/루프백 HTTPS 대상 허용. 링크로컬·metadata·예약 주소는 계속 차단 | `0` |
226
+ | `HWPX_AUTOMATION_QUALITY` | 전역 기본 저장 게이트 정책(`transparent`/`strict`). 도구별 `quality`가 우선 | `transparent` |
227
+ | `HWPX_AUTOMATION_REQUIRE_CAPABILITY` | `0`이면 capability skew fail-closed를 끔(진단/전문가용) | `1` |
228
+ | `HWPX_AUTOMATION_WORKFLOW_STORE` | durable workflow SQLite 경로. 기존 `HWPX_WORKFLOW_STORE`보다 우선 | 기존 6.x 상태 경로 |
229
+ | `LOG_LEVEL` | 로그 레벨 | `INFO` |
230
+
231
+ 동일 suffix의 기존 `HWPX_MCP_*` 키는 6.x 동안 fallback으로 유지됩니다.
232
+ 두 키가 함께 있으면 `HWPX_AUTOMATION_*`이 우선합니다. workflow DB의 기존
233
+ `.../hwpx-mcp-server/workflows.sqlite3` 기본 경로도 6.x에서는 데이터 유실을
234
+ 막기 위해 그대로 사용합니다.
235
+
236
+ 제품-neutral integration/capability 키는 옛 MCP 제품명을 담지 않으므로 이름을
237
+ 바꾸지 않습니다.
238
+
239
+ | 분류 | 보존하는 정확한 키 |
240
+ |---|---|
241
+ | render integration | `HWPX_RENDER_QUEUE_ROOT`, `HWPX_RENDER_QUEUE_URL`, `HWPX_RENDER_QUEUE_SECRET`, `HWPX_RENDER_TRANSPORT_AUTH`, `HWPX_RENDER_CA_FILE`, `HWPX_RENDER_CLIENT_CERT_FILE`, `HWPX_RENDER_CLIENT_KEY_FILE` |
242
+ | workflow security | `HWPX_WORKFLOW_ENCRYPTION_KEY` |
243
+ | oracle capability | `HWPX_ORACLE_STRUCTURAL_ONLY`, `HWPX_ORACLE_BUDGET_SECONDS` |
244
+ | plugin integration | `HWPX_SKILL_VERSION`, `HWPX_PLUGIN_ROOT` |
245
+
246
+ 이 키들은 `integration-preserved` 또는 `capability-preserved` 정본이며
247
+ `HWPX_AUTOMATION_*` alias를 새로 만들지 않습니다.
248
+
249
+ 경로는 기본적으로 workspace 밖 traversal과 symlink escape를 거부하고, URL 입력은 HTTPS·공개 IP만
250
+ 허용합니다. 원자 rename을 제공하지 않는 호스트의 동시성 주의사항은 [하드닝 가이드](docs/hardening_guide_ko.md)를 보세요.
251
+
252
+ ## 기여하기
253
+
254
+ [good first issue](https://github.com/airmang/python-hwpx-automation/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) ·
255
+ [마일스톤](https://github.com/airmang/python-hwpx-automation/milestones) ·
256
+ [Discussions](https://github.com/airmang/python-hwpx-automation/discussions) ·
257
+ [CONTRIBUTING](CONTRIBUTING.md) ·
258
+ [CHANGELOG](CHANGELOG.md)
259
+
260
+ ```bash
261
+ python -m pip install -e ".[test]" # 테스트 의존성
262
+ python -m pytest -q # 전체 테스트
263
+ python scripts/run_conformance.py run \
264
+ --tier structural --check tests/conformance/golden/structural.json
265
+ # 공개 합성 코퍼스를 다시 만들 때만:
266
+ python scripts/conformance_corpus_build.py
267
+ ```
268
+
269
+ ## 감사의 말
270
+
271
+ 코어 라이브러리 [python-hwpx](https://github.com/airmang/python-hwpx) 위에서 동작하며, 아래 공개 표준·프로젝트에 빚지고 있습니다.
272
+
273
+ - **[OWPML — 개방형 워드프로세서 마크업 언어 (KS X 6101)](https://www.kssn.net/search/stddetail.do?itemNo=K001010119985)** — HWPX가 기반하는 한국 산업 표준
274
+ - **[hancom-io/hwpx-owpml-model](https://github.com/hancom-io/hwpx-owpml-model)** — OWPML 요소 구조 참조 모델 · **[neolord0/hwpxlib](https://github.com/neolord0/hwpxlib)** — 오라클 샘플 코퍼스
275
+ - **[edwardkim/rhwp](https://github.com/edwardkim/rhwp)** — 멱등성·검증 게이트 설계 영감
276
+
277
+ ## License · Maintainer
278
+
279
+ Apache-2.0 ([LICENSE](LICENSE) · [NOTICE](NOTICE)) — **Kohkyuhyun** [@airmang](https://github.com/airmang) · [kokyuhyun@hotmail.com](mailto:kokyuhyun@hotmail.com)
@@ -0,0 +1,217 @@
1
+ hwpx_automation/__init__.py,sha256=cP3hnu-uFB11_xx70uLrVaO5qYkERnZEPycDrykIfcM,1666
2
+ hwpx_automation/__init__.pyi,sha256=CUvi-wb42-vogxUUxFB21uBW8snLMINkpCZzWYpUpPs,964
3
+ hwpx_automation/__main__.py,sha256=L3gcZM4iu1ZsuY3FD7XGKl6Cg7hWL5ySaxt7c-ASd_E,210
4
+ hwpx_automation/agent_document.py,sha256=-_i9sANJ_wuNriO1SNeo95q6_HGTo5bL-a6aVkUpjRU,12478
5
+ hwpx_automation/api.py,sha256=iNNuzgWRtWK0NAtlLtp0U8qIFCu3zd1ES0Ya3LO2jTQ,3902
6
+ hwpx_automation/blind_eval.py,sha256=cSaGeIwZx-5swd8ebltcyz3p1i7afgDo9-QtN9ut_xg,18892
7
+ hwpx_automation/capabilities.py,sha256=mghTQdsnhVYOuzU0dpCP7OpjEwqaH9fA8NdfOa1ZFOA,3694
8
+ hwpx_automation/compat.py,sha256=c08KFbs1IzbXAZbVAUOzuoWoR8BXnBad313rL8e-WcM,1582
9
+ hwpx_automation/configuration.py,sha256=kZmkeDPTDgvl1l-QMkdD2vg4rwZsvfk9pMESrpgoMPI,1371
10
+ hwpx_automation/document_state.py,sha256=18ihSR9i062BaVnni24BEBUPyDIBVwPvKGWFMIVDmjw,2979
11
+ hwpx_automation/errors.py,sha256=gkLLie0xWuHGaxZpf8DMy6Ul-J2tUa3vuqeAd-8x26g,10511
12
+ hwpx_automation/execution_lock.py,sha256=-KEYeY7iNaGVV6MwKHA7uacmnLkm_BPzSODLLGnBgMY,459
13
+ hwpx_automation/fastmcp_adapter.py,sha256=Nmui6XnB5Ud4X0xqnzUBXJiyDL1LphNG6nLfd7UQsaQ,27006
14
+ hwpx_automation/form_fill.py,sha256=1V2Mi5lBNS-JHXjQE8foPlJCM21FwAl60DTWESZv9qY,46724
15
+ hwpx_automation/form_output_models.py,sha256=qRNtqNjsmTynMWRU6p7SWIfcqglWyAxffmOubXZmKrM,7537
16
+ hwpx_automation/hwp_converter.py,sha256=6i1dVntfbAl1esGicvIhquJKDldg0PxGaIdfiE2VzK8,7611
17
+ hwpx_automation/hwp_support.py,sha256=EbM5PQiK9QDJDwFhA1dCxh3I7-5wst5pJXgcr4VK3tY,3371
18
+ hwpx_automation/hwpx_ops.py,sha256=bYzo7RHecssueYjxlG9Pj57VzKtRKE6RPv69RTnf-aM,48559
19
+ hwpx_automation/identity.json,sha256=ymqzFIWKJ7tqJF2ufCX4C1bZ0Kzeq2Bkt-aCdFtiQZw,9004
20
+ hwpx_automation/identity.py,sha256=g62OiZ_Bvo3wL8NCHFPmAEfwDSJY4AG_cc6aBipU9zI,473
21
+ hwpx_automation/ingest_adapters.py,sha256=7Lm1Pc__tPKdso0rRORLyy1pmUScr8VVmnTnleSYMXo,2726
22
+ hwpx_automation/markdown_plan.py,sha256=n2H_vhRM-el6Y5KLi21tz-4WzK78-wlE8i8hsUVWu2Y,6886
23
+ hwpx_automation/mcp_cli.py,sha256=rgLgj4bhOyYMHCpSGMy-KgryVieH4nFbV1Y4sV98Slo,798
24
+ hwpx_automation/mixed_form.py,sha256=jmBcIgly3hGxN_viYXEi6PIEVim1qWeUfr-sd2LFNMk,108614
25
+ hwpx_automation/mutation_models.py,sha256=SEIZYPxlp2FvnFClOsWS08KWBIL7kiMsvX1n6STpJTE,11690
26
+ hwpx_automation/network_policy.py,sha256=ZemScVr_7w1XbAtuBjVVhO3XMiditjyn5FzQjcaER40,7512
27
+ hwpx_automation/preview_output_models.py,sha256=eKreT-GLLxsUnz3I7nqRjAvMOwbBAbHJsACSVPr5ma0,2490
28
+ hwpx_automation/public-modules.json,sha256=JwRGFiAsWpoV0VLpLGKHgiF0kQManMsWXZwpWiPbxFg,8876
29
+ hwpx_automation/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
30
+ hwpx_automation/quality.py,sha256=D4S1Zx57V2yEzLPADGk9n_PxuNnxgC5Qw0gnu_72AEQ,13052
31
+ hwpx_automation/quality_generation.py,sha256=YqQh7n8lN2y58AAwOEAd7WYIv1EFCTF9pqazNDgn_BA,30065
32
+ hwpx_automation/runtime.py,sha256=lgOK27SrksfApQUkuDrcLg8eW8tqA9839f668s-BEYc,11441
33
+ hwpx_automation/runtime_services.py,sha256=E74uv1RWasAF93hk-g1zIcWZVvgsOB1nL77zmTmFhYM,3567
34
+ hwpx_automation/server.py,sha256=nbo_Cu4cYxI0ViWUf2JrSwEDVP7xhkQnlmk3ISi7--U,11743
35
+ hwpx_automation/storage.py,sha256=LsIZpp5nc3E9MlG3Wwmewr-527vjO8UDA0w7P2Mgkt8,28969
36
+ hwpx_automation/tool_bindings.py,sha256=GGSwbBvIp3DreiPhbqWo2TssAPU3DjMypUnFjgVQ0fA,9292
37
+ hwpx_automation/tool_contract.py,sha256=q0scfwQrUbrST5R2e2rf5VR0hdhiynoSxa4jfvytJT0,38303
38
+ hwpx_automation/upstream.py,sha256=AuegV0eNtZCXExQvi6cNh_j8YM9dLR8fpITbyNl5Rdk,25175
39
+ hwpx_automation/visual_qa.py,sha256=ei2WnH0YvXrCQKa0WmnxaWNX_whRQfSLyDoClEHk0Qs,29813
40
+ hwpx_automation/workspace.py,sha256=exroccZ_RVepwwjU4Eiz_oOg1Bt85KQIJaH8JTE_H-c,66876
41
+ hwpx_automation/core/__init__.py,sha256=OHgM3he4rGageZEFB4iNv2ni7c6mr1xNNVfMGO1bzz4,74
42
+ hwpx_automation/core/content.py,sha256=ppwROSxoQjbi1iDXbskcbdzZr7U5I5ci9m7-fa8U0nQ,29077
43
+ hwpx_automation/core/context.py,sha256=cG6XC5TpCB-_D8QDnqRsOwpxdstQWfb0gtmYBDzNV50,2966
44
+ hwpx_automation/core/diff.py,sha256=9_YLUyO88Yepvq-Hdr35fakjJ0plc1Krkc0IErMvGMo,1522
45
+ hwpx_automation/core/document.py,sha256=_7jLJOfU4WdVnOk9tqzhk-bnVqE95-PYueUskCsUT5M,1179
46
+ hwpx_automation/core/formatting.py,sha256=vDL9VHpOC11cSVjO-jtzSVQqoKmyWE1xA1RYiYXfwIA,15753
47
+ hwpx_automation/core/handles.py,sha256=v7HCAW2cWVu3OarPiDFRSixNncP1FIVRcTIPp5MeWAA,705
48
+ hwpx_automation/core/locations.py,sha256=FVbgLhGka9jaUeU2lG8illML15cxi31ouWP05oQBzI4,7634
49
+ hwpx_automation/core/locator.py,sha256=Q3CfVniPaMSXQ2ABV0JXmTNROkHtKZLz5VR4mCmlJs8,5122
50
+ hwpx_automation/core/plan.py,sha256=sNFIko5USDhvs7NA_gy4hSUV40q4vIQTc_dZ2d-nFXE,22744
51
+ hwpx_automation/core/resources.py,sha256=PNPhcGEwq4BrRdMrytgIfeT2_4nrDFB9z97OfxCaQBc,1198
52
+ hwpx_automation/core/search.py,sha256=OmUs0wLPxMrmkhbBiiiQQC-YKG8zjz4bHvJbmCae_eU,12280
53
+ hwpx_automation/core/transactions.py,sha256=wViQxRy0FPlPQKtDZSeFSKxjnK632RtQYN7XI5bRrlU,16452
54
+ hwpx_automation/core/txn.py,sha256=gXbv3JFRnYnWY3L57YeTdpFyQaBBMlvLd-dix7NVFog,1449
55
+ hwpx_automation/handlers/__init__.py,sha256=iLzNXNd-ernCvKTi4V8h2XzvFDoM4biZp34KIL0fgsg,83
56
+ hwpx_automation/handlers/_shared.py,sha256=DShvk2vhvtc6Ufy-gVol_S9yP-u_2Gj-iuxArQVne4o,13009
57
+ hwpx_automation/handlers/agent_document.py,sha256=4ZtJOIxFrimYoIAPgVXH8jMUmT4xDzMCBct9wuiAYkA,8195
58
+ hwpx_automation/handlers/authoring.py,sha256=7qcFFViTUZQyjhpvNbE6zD8QOsMpDOOMTV8sUKV9MZs,26209
59
+ hwpx_automation/handlers/content_edit.py,sha256=en9xjvKZWEq1yUE_RdM4dPNYFSJLT5peI2Lxjv1qLHA,35756
60
+ hwpx_automation/handlers/form_fill.py,sha256=FMYJZ3cU8HTWA37uNd5uN-gzi0_7eL_N_bhgd3Sh1U4,19986
61
+ hwpx_automation/handlers/layout_style.py,sha256=Zw9BkHEuATEUnpbtp16SjryzQC6MeTVt8M-FW_7O4uY,22427
62
+ hwpx_automation/handlers/quality_render.py,sha256=fl-NEdEYnCl0WeJg-PbvmPIqVK4P6x8OPYqyeFDW-Hg,21941
63
+ hwpx_automation/handlers/read_export.py,sha256=mewYmvfTA0ZHvc4A1kIJYBDegk6VpYYj3xi78Cwnyos,44713
64
+ hwpx_automation/handlers/specialized.py,sha256=8VU4s3HcpkYMGhcepTX19wLNIs-fdjpfglnBUmu6K8s,23051
65
+ hwpx_automation/handlers/tracked_changes.py,sha256=d4l4AyRJdiZ_Q0UkPoxTwgrO-yNgZdGHVFA_tyjVBPM,20152
66
+ hwpx_automation/handlers/workflow.py,sha256=xjkuocWyFKFFdPYX2sQDxtwyGZwn1hqX2SZ6e-TpIBI,2988
67
+ hwpx_automation/metadata/tools_meta.py,sha256=5WVKUSjUZ0IL2LKi_QBNJtaShSkE2zGsciwlxKB0qwY,933
68
+ hwpx_automation/office/__init__.py,sha256=yxkHAe77b1InlWmoAUD8cDxPbs7RB196Dkch0HSKJR8,325
69
+ hwpx_automation/office/agent/__init__.py,sha256=jMMxl9cvGrRtdX669yNmLzrk_CK3UlhXGjXQHy4ERpo,3400
70
+ hwpx_automation/office/agent/_batch_verification.py,sha256=WRK6pnfv3QMBm5G8oH1paIlYvkQ3OdgMtJk2CJXh5tw,15060
71
+ hwpx_automation/office/agent/catalog.py,sha256=jGznYSSmVIQZTCVxBX_CTdOe8nfjIRHpoe5oxleI0AA,9260
72
+ hwpx_automation/office/agent/cli.py,sha256=jnQ8MUm203dLJnRFpUqqj5Q2AnhiT7OEGaYKHsqSFGQ,24933
73
+ hwpx_automation/office/agent/commands.py,sha256=IYVNBmcBoQ88BoEUkZIyuWdHa0eiBylTIihRHB3ZdSc,56894
74
+ hwpx_automation/office/agent/document.py,sha256=aN2nh4f_CjeOlAd61Nk6oBDvLRIBYHkukiGtCANNaCQ,33977
75
+ hwpx_automation/office/agent/form_plan.py,sha256=LKFjtxgQUBOrROKhfvVupMjhJ5QBfmx_sWOyc5mJGJE,67500
76
+ hwpx_automation/office/agent/model.py,sha256=LZnsu5mbgxWxVSyWDADMEwhn4lod28yaFxwC4rndW2s,31671
77
+ hwpx_automation/office/agent/path.py,sha256=ui0gtBmgmwOrgZIgl9uZVofx22dMrVxIPkRu2p-lPQ4,5794
78
+ hwpx_automation/office/agent/query.py,sha256=m4h_vRAnYAGMmh9j85hovuSIMjRwsAfIp2LY428KoGo,7907
79
+ hwpx_automation/office/agent/story.py,sha256=Y0UEzIgJU6xO8K0aGfSw6B-49MwcxD6EypdVtGIyp34,6871
80
+ hwpx_automation/office/agent/blueprint/__init__.py,sha256=72KfSaJOcJcR66TjoLpKUUZve55c0JM2E1Zs1PfilA8,1507
81
+ hwpx_automation/office/agent/blueprint/bundle.py,sha256=K9-lcCgx2j1EsHzdP0cFn3ejn-YcLQ1NnNiPZNjq25Q,11544
82
+ hwpx_automation/office/agent/blueprint/catalog.py,sha256=D2ax7gQxhoqqtL70LWjcUME6I9TMb2Q7MqR48c19_tc,4669
83
+ hwpx_automation/office/agent/blueprint/dump.py,sha256=HgEMr5dI5ozXwZn9tH-2IlFtWphxT_qz7hlZmSn49MU,21745
84
+ hwpx_automation/office/agent/blueprint/mapping.py,sha256=bzSYbTrNEumBkP74nEY5M20-BEC4rBGCRvo3QZNQKxc,12761
85
+ hwpx_automation/office/agent/blueprint/model.py,sha256=7CegZTyVxFtzeDXHQrAogwS5Hf-MEBSEzcarUl1gNbE,31204
86
+ hwpx_automation/office/agent/blueprint/native.py,sha256=8gzuYlNXUk8MsYexlnEpRGfUBF88GCS_8pk87fKeBz4,28822
87
+ hwpx_automation/office/agent/blueprint/replay.py,sha256=03VPFnO_WQip0txrlCYexOz0s5sxhklkOdmB3asVMI8,24084
88
+ hwpx_automation/office/authoring/__init__.py,sha256=SVy5dKS4cnjbUCN_7hONxS7nPrOJE33Cue3mh0_yiOc,130081
89
+ hwpx_automation/office/authoring/advanced_generators.py,sha256=ucUNnT2Pkto2jiyCU5_c1abbiskO65WOimgH0l-3Tv0,5164
90
+ hwpx_automation/office/authoring/report_parser.py,sha256=Z4y8yANrZUNP6gXyAuhvG1RG9D6M0GcVsdTOwqbZ61M,4651
91
+ hwpx_automation/office/authoring/style_profile.py,sha256=IHwmTQDXcqwaAxn9z7eqW00cw69HdAY_n8jsN2CNHLM,17220
92
+ hwpx_automation/office/authoring/template_analyzer.py,sha256=vOmj39C-lBG6K1yd528wzf-tuGqqZZMfZQpn9-8HXVQ,23817
93
+ hwpx_automation/office/authoring/builder/__init__.py,sha256=8tcxClbeuNle_R_2nDAauyy518OCegG8qVPjwIKRUZA,849
94
+ hwpx_automation/office/authoring/builder/core.py,sha256=Y30bL5oBk_0iInVj2IqoqwXQZTKX8JOcjo9n6faT87s,36050
95
+ hwpx_automation/office/authoring/builder/report.py,sha256=nPzxADknM1oT4mS908uUU_WVZgtcW_HBpaIUnnMPgcI,8269
96
+ hwpx_automation/office/authoring/design/__init__.py,sha256=JpJRF6Z21H4x8mx2j-jKP-1kijQ05aP-BMgICpLcdnE,1101
97
+ hwpx_automation/office/authoring/design/_support.py,sha256=7P7UijR9e1ptkzBEBdwyMfDtBSiXXNvpXHiTIc2Dg44,4633
98
+ hwpx_automation/office/authoring/design/composer.py,sha256=Wr8H-BSCxYEkqmHsT_2056S1WL-eyV6yGNZF4vPE5Dc,10883
99
+ hwpx_automation/office/authoring/design/harvest.py,sha256=5PGQ-Mz5ENdlnEH0dSyc0qOJIqjbVhSnVTVzBQAqRyc,10583
100
+ hwpx_automation/office/authoring/design/plan.py,sha256=1MpaLaa_qQwSfLdjsC-vWmfBCHWOX3rCF3pZdtRz8hw,2279
101
+ hwpx_automation/office/authoring/design/profile.py,sha256=XdDEypDwhr8jz7ctGIpQ-JcjF_9sCG7kXCGv5ov5UZI,2782
102
+ hwpx_automation/office/authoring/design/validator.py,sha256=f7Wr8asamnh2yjvVQefvQRsJQvJhLNqImuvDgf-iLRQ,3464
103
+ hwpx_automation/office/authoring/design/profiles/application_form/profile.json,sha256=QUzDRIwHarv5STzFbVHuZqnFkdBE44ZNUVEhhnDlM0I,810
104
+ hwpx_automation/office/authoring/design/profiles/application_form/template.hwpx,sha256=970gIURI1u5coAbQWPLZxK7okEBTB6-CV8NZChbM_YA,22376
105
+ hwpx_automation/office/authoring/design/profiles/application_form/fragments/body.xml,sha256=a93VW8s0Eh2PvcbftnTH2qjOUBNReewmowbmvLVoqaE,550
106
+ hwpx_automation/office/authoring/design/profiles/application_form/fragments/heading.xml,sha256=p9e0IX6L0SYlAhNAGC252pELqoU8Zv-MWE9jz9XLmt0,207
107
+ hwpx_automation/office/authoring/design/profiles/application_form/fragments/info_table.xml,sha256=rLlCeWTEIAwK3v-5KU1CGR2dq4zdECG8HEugfG4ecd4,5727
108
+ hwpx_automation/office/authoring/design/profiles/application_form/fragments/title.xml,sha256=wL2RusOksJ8Z0MBkbOfiQ5krmSkcvo1sMdM1pP8yasI,216
109
+ hwpx_automation/office/authoring/design/profiles/home_notice/profile.json,sha256=u-Hz3AYZqqf313cv2qtHbo79AhoEb8KQgb2ROLzZOps,524
110
+ hwpx_automation/office/authoring/design/profiles/home_notice/template.hwpx,sha256=TZeOV77NrhB9kVdUasXweKSSlQylqbI3zQTd-UDekfQ,9507
111
+ hwpx_automation/office/authoring/design/profiles/home_notice/fragments/body.xml,sha256=A8M2S1fe7QIdyl5KK0tg6HjbksBD5hioOl8tOM25if0,212
112
+ hwpx_automation/office/authoring/design/profiles/home_notice/fragments/heading.xml,sha256=FWPCjuAbsR7j6qYVd1-8c0sxyo6JDY5vkM-LV3ZWzEw,215
113
+ hwpx_automation/office/authoring/design/profiles/home_notice/fragments/title.xml,sha256=6BybxZE8h4h370iB-ZJzM7fKqw1M_Y_J_TGuTzXEIRM,214
114
+ hwpx_automation/office/authoring/design/profiles/official_notice/profile.json,sha256=pk3aFFW7d35SNwxhFXuj4GYHFxMMpGHS1JjdYIdmeaM,595
115
+ hwpx_automation/office/authoring/design/profiles/official_notice/template.hwpx,sha256=y84XEouqC9SMVW7hMucsiYBp9zg2OdzlIgVy0i81Nr8,10343
116
+ hwpx_automation/office/authoring/design/profiles/official_notice/fragments/body.xml,sha256=nEWh0GQfbtOKpu3NkjULZ72t7va7rNHxU4QG0LN6OLg,213
117
+ hwpx_automation/office/authoring/design/profiles/official_notice/fragments/heading.xml,sha256=OUlxKAhHt3Dg55HMyZ-4C1L36dLx_1Ta-MFezipsQhI,207
118
+ hwpx_automation/office/authoring/design/profiles/official_notice/fragments/info_table.xml,sha256=oJJTfykyeg693Kv9jzj8wn1VT9pGOoHYX44_rGcdCj0,5104
119
+ hwpx_automation/office/authoring/design/profiles/official_notice/fragments/title.xml,sha256=Sge2TlPrlmXkSooX3gkbDxiF099_NQ7Xeth08HOTtUQ,205
120
+ hwpx_automation/office/authoring/design/profiles/report/profile.json,sha256=7mR5kiCgY20KTmhvPHTfw_bu4wZUcqnsuvRl8x5ZAeg,615
121
+ hwpx_automation/office/authoring/design/profiles/report/template.hwpx,sha256=LL0ySwNopCcDkca1ude0UUjkhW3gYhNI_N2mJ3AFBWQ,12869
122
+ hwpx_automation/office/authoring/design/profiles/report/fragments/body.xml,sha256=aBtpX0lUcNr8SwCQLpf5y2CGe3uC_A3PwwseijmFFuQ,203
123
+ hwpx_automation/office/authoring/design/profiles/report/fragments/heading.xml,sha256=W1UpXp0_WYuO5WwpK5CvetRRNpAwutCJxxg1NabH7y4,233
124
+ hwpx_automation/office/authoring/design/profiles/report/fragments/info_table.xml,sha256=M9-Bweo9Wi291KgxvovrfHhSd0Pq6PIcOUlW79FXeYE,6065
125
+ hwpx_automation/office/authoring/design/profiles/report/fragments/title.xml,sha256=Mk0jfkfiWPr-CJUywqBDD_frjlnAMad2GwiNQLqc5nw,261
126
+ hwpx_automation/office/authoring/presets/__init__.py,sha256=I3gSJDT2tuvxXbw3FOmI3CnbxvjDMPZfppyg6OlMHOI,535
127
+ hwpx_automation/office/authoring/presets/proposal.py,sha256=ouRVatVO8MZG5Zwt3Cyh6dwoq0n0ISWPwXH6VKsaFLk,21179
128
+ hwpx_automation/office/compliance/__init__.py,sha256=Z4dHVSGCkhD6AL4RFeZAOSQT91tUhS18CpHfu7SOyY8,771
129
+ hwpx_automation/office/compliance/official_lint.py,sha256=9iszI4CAAEMGdPCOhmQ6XonO1jc1XE2BJXMHgv9hIvY,18600
130
+ hwpx_automation/office/compliance/pii.py,sha256=YEzMdTZF68zhyL5BVX6D9Dx95I5g3vUrCK7LMfrbhWg,12616
131
+ hwpx_automation/office/document_ops/__init__.py,sha256=vLrzq-8NLPcVKQWyiNP_66jmWIVshYSdBVO1Jzc0hBI,416
132
+ hwpx_automation/office/document_ops/comparison.py,sha256=92nvgg5nB3FsANNFgEhQpoXtQRN1SNq0A_XGn6zTI-Y,1636
133
+ hwpx_automation/office/document_ops/mail_merge.py,sha256=-Y2VqwtN1QM4AVBrNV7JOGPomyZVJVr81_DUkxtbWwY,2174
134
+ hwpx_automation/office/document_ops/redline.py,sha256=EZj2NwQiFF9Y3Ojh8tv37CGhgO6-wGs5ASIqxV1rZSA,1299
135
+ hwpx_automation/office/evalplan/__init__.py,sha256=WbN5PWUZfJfEmMtE_tIro3-nLOCyHCsssYPMUrIERI0,783
136
+ hwpx_automation/office/evalplan/runtime.py,sha256=qbZ-YSWKAEOiphsvopvukd7n9xcKT_RcStUnI_fRUpU,131521
137
+ hwpx_automation/office/exam/__init__.py,sha256=y__Bm5B7cPO2RLF969n9dYZ3peZVUK_3v24O7uYieWw,1077
138
+ hwpx_automation/office/exam/compose.py,sha256=sHshSroR3HtSK3PFLIDm_K9iCipOx5niZxlhCqa9Un0,9999
139
+ hwpx_automation/office/exam/ir.py,sha256=A9cJtDuk7btPDL0bLGeIq44Basi8_Oo0z4_q0KB4mDI,1324
140
+ hwpx_automation/office/exam/measure.py,sha256=1kWZoylbKISoBdC3aZP4UTEoKHSG8p9lW6ObWaHLSwk,5852
141
+ hwpx_automation/office/exam/parser.py,sha256=FwGMG8GF2Wvh3mVC5_1raLvGUBMpGr57-mWewBaeP8I,5087
142
+ hwpx_automation/office/exam/profile.py,sha256=NlvZCdEPEV7o8dwsmrOA2MlHRZQXGfRvFHCrRClVIfk,4142
143
+ hwpx_automation/office/form_fill/__init__.py,sha256=l6VdhtVWcj2r3cGu0T8bQLqNkR9TiOZlPQNlsD3NVLo,1389
144
+ hwpx_automation/office/form_fill/classification.py,sha256=TLSa8bypjpacYdyzMo4k0i5qw1ilj70Pp3wW5KLLlVA,3604
145
+ hwpx_automation/office/form_fill/fill_residue.py,sha256=IKs7iMz21RfAhZPsAJhFJU2ebusUPxY-hQExqMOu4Yc,8937
146
+ hwpx_automation/office/form_fill/guidance.py,sha256=APin4DFz1nc7xi-DxVY1bXd98gZwN4iTIMeBlCp29rA,28189
147
+ hwpx_automation/office/form_fill/quality.py,sha256=yuHcXEEm1hxvwtH_Q8hFbOEP4TFm7K32r3MsUDy00KU,36194
148
+ hwpx_automation/office/form_fill/split_run.py,sha256=qPzEE2mvtKphDt9eHGtDtodnaTWzbWWIYMImKh81lm8,9921
149
+ hwpx_automation/office/form_fill/template_formfit.py,sha256=lBjN3cs5Mzqf95HAT3qWOz0oEpCDBZ89ZgtilReNJ48,23787
150
+ hwpx_automation/office/form_fill/fit/__init__.py,sha256=WY8xiT0Boyx_pGyAk9mbeNkMAO4hdfwumP927QbWia0,875
151
+ hwpx_automation/office/form_fill/fit/apply.py,sha256=lZjIRMkjdOKeBWJabBOyTQe6qbX1-P9xzXxZxnZhAcU,949
152
+ hwpx_automation/office/form_fill/fit/engine.py,sha256=m3TrTo1-ADyQ4-iYkxJEPucJCtXfG3HbML4i41CvM4w,942
153
+ hwpx_automation/office/form_fill/fit/measure.py,sha256=Si3iUkZdtcnIKVRfXKRRNi1AvY75OV5nvKT5akT9AIE,1545
154
+ hwpx_automation/office/form_fill/fit/policy.py,sha256=kCJloO0Wvis_RzlnfcmEhu7UmJkzxkaljY4pEz6xOIk,1002
155
+ hwpx_automation/office/form_fill/fit/report.py,sha256=e0RmkITbki5IYBoOnv9DBZSYlOcPKJ5hmf45BPyBwaA,1018
156
+ hwpx_automation/office/form_fill/fit/seal.py,sha256=pA58Sj7x4fPF3z8s7ysB8vpc8aD775RRLYx6qObEBwQ,17725
157
+ hwpx_automation/office/form_fill/fit/wordbox.py,sha256=fLIo66RtKhgGw8IZoSzcxLnLkVhJrMBuHdEWPpmsUmE,51997
158
+ hwpx_automation/office/house_style/__init__.py,sha256=JPc55DGvPCODMJhLbD_tRHQ35zaVkE28GvWxjC6NlSQ,5788
159
+ hwpx_automation/office/house_style/composition.py,sha256=HJr8Q3e-EXpCNXR9Ab_s7IIh-RKJn24xWgfovAMlwjc,1976
160
+ hwpx_automation/office/house_style/data/bank.json,sha256=AYkyCCBqH0WKIx-AkgfrUkhk8IziGC_G8heUmcJ8uqo,19953
161
+ hwpx_automation/office/house_style/data/genres.json,sha256=scZgG-CgrJTMiQrTZ8M01lEeqMyYjtcO2lPFkx8rzns,3047
162
+ hwpx_automation/office/quality/__init__.py,sha256=zfnSsl-Rr_H-zq_PiYAonyvpHmBKnqgXtcElbX7rUdo,269
163
+ hwpx_automation/office/quality/page_guard.py,sha256=_1Jf3DRIzNewx2GkFEb-0I2D6EHBPPmEbjnTFMen-SE,9694
164
+ hwpx_automation/office/rendering/__init__.py,sha256=qZo-RdIRIDstZ2KbHpdLY80J7U-4O4vSYRgVSbjDwIg,4439
165
+ hwpx_automation/office/rendering/_hancom_open_rate.ps1,sha256=stgE7ID2DuIpHWZHi414hmPuvPKnbecPO-oLrFWYBSg,16016
166
+ hwpx_automation/office/rendering/_refresh_hwpx_mac.applescript,sha256=N26GN5hYjXUwhh_LYI-wt3DWTFwshUX4hBpCDrODEXc,4684
167
+ hwpx_automation/office/rendering/_render_hwpx.ps1,sha256=r7bUPQvMMwVhz5YiUIEZPSAO18GbPPfnaK8iZb67d3w,2412
168
+ hwpx_automation/office/rendering/_render_hwpx_mac.applescript,sha256=6iCabMkPmuXmff6ydb7UfF7QKEhFD2JSM86S9R9535s,8807
169
+ hwpx_automation/office/rendering/block_splits.py,sha256=a9cqD3Tz6Z89phDNaOqw3vqv8u1_2QBk4ZzgbbUZelo,2028
170
+ hwpx_automation/office/rendering/detectors.py,sha256=k7t79nWIBSqStNNdwPohmUG2zwr12Mz-JG22jHlsGdA,4825
171
+ hwpx_automation/office/rendering/diff.py,sha256=LCUwPCPaBsCvfMVSJPJMKpJ-3p8zET5jYRnRSvieaXE,5721
172
+ hwpx_automation/office/rendering/fixture_corpus.py,sha256=fqx9rRwLCBZ0unhgWCm8V-_xs5597AbBdiDaW5ey5M8,7595
173
+ hwpx_automation/office/rendering/oracle.py,sha256=l-SFDSGa29pOtGeerMLNEZ8n4mAp8wrHYyp8Od_Qr6E,35971
174
+ hwpx_automation/office/rendering/page_qa.py,sha256=BG5kqboMg7SyAi6tAi78LYq1ZmRh30uo72JpPN4Hk2Q,7352
175
+ hwpx_automation/office/rendering/qa_contracts.py,sha256=1cjoiRTAWgi7NgE8SPc6bKxdoUfKx9nyou1mgC47TxY,10506
176
+ hwpx_automation/office/rendering/qa_metrics.py,sha256=ijskhoieoEGk4bwos70XAvA8qDVTOOu4CJUH783cB9w,9859
177
+ hwpx_automation/office/rendering/worker.py,sha256=mgT7aO8KfN_j-s5Ck0AVkzpykVYp_vViqRNqdRoTEas,10270
178
+ hwpx_automation/office/utilities/__init__.py,sha256=GGjNEiBIrdtXy6Bvi90ormPY2XfY-8mktNvjBsh9WPc,269
179
+ hwpx_automation/office/utilities/table_compute.py,sha256=A1BVn_of8f54lRgo5hYrmTqRoa5xpJA4Um2a0lmhifw,16311
180
+ hwpx_automation/ops_services/__init__.py,sha256=OUtolsBwPX7kzfmOmanHZK98HFU5ylYwmjCw8czMo2I,86
181
+ hwpx_automation/ops_services/_border_fill.py,sha256=2ruoojd7xLvbC829O95mYnE75RgjbAHcYRZ0HymTMWw,9143
182
+ hwpx_automation/ops_services/composition.py,sha256=xMWDquck6Ii8YQlUZwS3oW5F753FgN64tbSv8O32xWA,1944
183
+ hwpx_automation/ops_services/content_layout.py,sha256=NihkhsUXJZSZ5cc-0KLZ7mTyVT9GW5b9fq1_Pbqkv_4,10892
184
+ hwpx_automation/ops_services/context.py,sha256=9-p-uQ9KtG7NlZfK64gCDiU0ZwobeYApBqb3x4EAdUM,8397
185
+ hwpx_automation/ops_services/form_fields.py,sha256=nCXU_f2ozWxEgCeTRunQ-uuOmOAFpJiOLl3xjcghU98,23276
186
+ hwpx_automation/ops_services/media.py,sha256=8WhL5K1MvoNgnxHj4NdVtp_Y3NYX_8k1UR4g81MJZDg,6198
187
+ hwpx_automation/ops_services/memo_style.py,sha256=G1LLaS8mHWzCyWihORonFXunIO0tiTFFYUU35etgucw,15783
188
+ hwpx_automation/ops_services/package_validation.py,sha256=Wd425FytD_4k7KjekcxeExBc7Y4oHtaOeI-hhJLvAeM,6239
189
+ hwpx_automation/ops_services/planning.py,sha256=_ZNerdBZ_DERzSsJ5WMJF5Z6xgl6yHjbgJNIuXxSGy8,6625
190
+ hwpx_automation/ops_services/preview_export.py,sha256=1NAQT3j1Ej98MIv4pCDDnYd83w4tTemHmoFWTidRWHw,23504
191
+ hwpx_automation/ops_services/read_query.py,sha256=hy2ZooaoMGmxClfCNC-qA1b8W6H7jU2AmOxugYgL9kg,23174
192
+ hwpx_automation/ops_services/save_policy.py,sha256=wy9gUN6Eezrljk8BAimAMDbEybnFYIwpdDrKc92rlNU,23018
193
+ hwpx_automation/ops_services/tables.py,sha256=Cm18M9cpE0BXcU2vGbN3XyARJ94UlE2y8pACOTun0LA,19235
194
+ hwpx_automation/ops_services/transactions.py,sha256=9fSoUFibrSjhfVm8-No789BUwTa3-EMII9Bbof_lgYc,26310
195
+ hwpx_automation/utils/__init__.py,sha256=MIE-UrcJ-Trz80UxicViKiGCXNqe3L5lC1f0acVZwUM,65
196
+ hwpx_automation/utils/helpers.py,sha256=nTuzGdXmhDJFODSs2pQZNNOdvrKeU457rJq4Vo3W5cY,762
197
+ hwpx_automation/workflow/__init__.py,sha256=AH-k3SlSD4mqnqh7jLXFr-he5BUwMqO00XyTDFQNBkA,1361
198
+ hwpx_automation/workflow/adapters.py,sha256=58GYOMrdPMDFaBhMzx3bm0XmBhk5UWrJ1Bhy1uGSpcs,19697
199
+ hwpx_automation/workflow/dispatcher.py,sha256=bMa2JAUlfsMOT8BN2odp2MGCXgEroKBAEw0q1QwoYZ0,8690
200
+ hwpx_automation/workflow/models.py,sha256=W9-s6w9jC76EjTh56bTuxkTrxnWs7Ci6cQjoGTj-YEI,8038
201
+ hwpx_automation/workflow/policy.py,sha256=0BNYlXhc_hQQxqVEMXtW2azopELyJsXWDdWKe9p-15c,8426
202
+ hwpx_automation/workflow/render_contracts.py,sha256=81Vbn9VDuE6KcQm_b28xxRkMg63FuoJhJNEL9gmwNyY,7481
203
+ hwpx_automation/workflow/render_metrics.py,sha256=D0QqQ7XqZwPTsUhBqmrqTyKCaIWX0XVh2X0XhHd23ns,7192
204
+ hwpx_automation/workflow/render_queue.py,sha256=XJ1BOU8yYLnmpKtOFxbnucOv_p3e7HbKcAMOHbT_Nq4,22243
205
+ hwpx_automation/workflow/render_security.py,sha256=9Hj8Xf0jEqocE6rmqEvKtzaNWg1QGPammBYG0p3RFtY,6438
206
+ hwpx_automation/workflow/render_transport.py,sha256=s1X2KKp1y9a_cMYe6b1-DmbUltO7EwwdiDwebySAXHo,13819
207
+ hwpx_automation/workflow/rendering.py,sha256=MAuL3vSS0vfo-R8ws55E52ddnBrtoYmYikTCG7Z0aLQ,6872
208
+ hwpx_automation/workflow/service.py,sha256=k48J2KILuuAN-JVCqQn7w040L58u-YSJ78uFnPQPoxw,35483
209
+ hwpx_automation/workflow/state_machine.py,sha256=8nFj3WPoqBj0H2j9WRbdAUCT7tm3q_ieQsaEX7LPnE4,2230
210
+ hwpx_automation/workflow/store.py,sha256=S2BTR5g21WgFYfi8ZwvgWQCv7wxUSA8ttlMS9-zNeoU,31663
211
+ python_hwpx_automation-6.0.3.dist-info/licenses/LICENSE,sha256=_ubz4wv-BkkT3l3gu-QuH7JGeVjuRYGZoZK95eNsCHU,9688
212
+ python_hwpx_automation-6.0.3.dist-info/licenses/NOTICE,sha256=B6vl9SzBdZ0LlAeEd89Q3P6r_rlXZWD6ZJK6Ntz3s6A,644
213
+ python_hwpx_automation-6.0.3.dist-info/METADATA,sha256=P4PWiZUC_T4jU1ZOB_WvKczvxeq1xVVYOEV25O8nP-k,15917
214
+ python_hwpx_automation-6.0.3.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
215
+ python_hwpx_automation-6.0.3.dist-info/entry_points.txt,sha256=6YDtwFKwyk9BNTR_iCVV0XTwtDRVwENVNvv3wHM81KQ,114
216
+ python_hwpx_automation-6.0.3.dist-info/top_level.txt,sha256=jQZZqF1u9rVIJvragSUf8HCHkm0gFVaCViNDZEKfh1A,16
217
+ python_hwpx_automation-6.0.3.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ hwpx = hwpx_automation.office.agent.cli:main
3
+ hwpx-automation-mcp = hwpx_automation.mcp_cli:main