python-hwpx-automation 6.5.1__tar.gz → 6.7.1__tar.gz
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.
- {python_hwpx_automation-6.5.1/src/python_hwpx_automation.egg-info → python_hwpx_automation-6.7.1}/PKG-INFO +9 -10
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/README.md +7 -8
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/pyproject.toml +2 -2
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/capabilities.py +56 -1
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/fastmcp_adapter.py +26 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/form_fill.py +26 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/quality_render.py +11 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/specialized.py +48 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/hwpx_ops.py +8 -0
- python_hwpx_automation-6.7.1/src/hwpx_automation/identity.json +263 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/wordbox.py +1 -1
- python_hwpx_automation-6.7.1/src/hwpx_automation/office/house_style/data/genres.json +484 -0
- python_hwpx_automation-6.7.1/src/hwpx_automation/office/house_style/gianmun.py +293 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/form_fields.py +26 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/public-modules.json +6 -4
- python_hwpx_automation-6.7.1/src/hwpx_automation/resources.py +139 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/runtime.py +3 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/server.py +3 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/tool_bindings.py +3 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/tool_contract.py +16 -13
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1/src/python_hwpx_automation.egg-info}/PKG-INFO +9 -10
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/SOURCES.txt +2 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/requires.txt +1 -1
- python_hwpx_automation-6.5.1/src/hwpx_automation/identity.json +0 -263
- python_hwpx_automation-6.5.1/src/hwpx_automation/office/house_style/data/genres.json +0 -43
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/LICENSE +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/MANIFEST.in +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/NOTICE +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/setup.cfg +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/__init__.pyi +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/__main__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/agent_document.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/api.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/blind_eval.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/compat.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/configuration.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/content.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/context.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/diff.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/document.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/formatting.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/handles.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/locations.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/locator.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/plan.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/resources.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/search.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/transactions.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/core/txn.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/document_state.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/errors.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/execution_lock.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/form_fill.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/form_output_models.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/_shared.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/agent_document.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/authoring.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/content_edit.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/layout_style.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/read_export.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/tracked_changes.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/handlers/workflow.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/hwp_converter.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/hwp_support.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/identity.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ingest_adapters.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/markdown_plan.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/mcp_cli.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/metadata/tools_meta.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/mixed_form.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/mutation_models.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/network_policy.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/_batch_verification.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/bundle.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/catalog.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/dump.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/mapping.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/model.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/native.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/blueprint/replay.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/catalog.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/cli.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/commands.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/document.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/form_plan.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/model.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/path.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/query.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/agent/story.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/advanced_generators.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/builder/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/builder/core.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/builder/report.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/_support.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/composer.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/harvest.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/plan.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profile.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/body.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/heading.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/info_table.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/title.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/profile.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/application_form/template.hwpx +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/body.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/heading.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/title.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/profile.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/home_notice/template.hwpx +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/body.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/heading.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/info_table.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/title.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/profile.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/official_notice/template.hwpx +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/body.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/heading.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/info_table.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/title.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/profile.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/profiles/report/template.hwpx +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/design/validator.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/presets/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/presets/proposal.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/report_parser.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/style_profile.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/authoring/template_analyzer.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/charting/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/compliance/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/compliance/official_lint.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/compliance/pii.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/document_ops/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/document_ops/comparison.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/document_ops/mail_merge.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/document_ops/redline.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/evalplan/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/evalplan/runtime.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/compose.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/ir.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/measure.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/parser.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/exam/profile.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/classification.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fill_residue.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/apply.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/engine.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/measure.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/policy.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/report.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/fit/seal.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/guidance.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/quality.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/split_run.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/form_fill/template_formfit.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/house_style/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/house_style/composition.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/house_style/data/bank.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/house_style/org_chart.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/quality/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/quality/page_guard.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/_hancom_open_rate.ps1 +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/_refresh_hwpx_mac.applescript +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/_render_hwpx.ps1 +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/_render_hwpx_mac.applescript +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/block_splits.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/detectors.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/diff.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/fixture_corpus.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/oracle.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/page_qa.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/qa_contracts.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/qa_metrics.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/rendering/worker.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/utilities/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/office/utilities/table_compute.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/_border_fill.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/composition.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/content_layout.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/context.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/media.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/memo_style.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/package_validation.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/planning.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/preview_export.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/read_query.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/save_policy.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/tables.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/ops_services/transactions.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/preview_output_models.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/py.typed +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/quality.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/quality_generation.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/runtime_services.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/storage.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/upstream.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/utils/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/utils/helpers.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/visual_qa.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/adapters.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/dispatcher.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/models.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/policy.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_contracts.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_metrics.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_queue.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_security.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/render_transport.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/rendering.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/service.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/state_machine.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workflow/store.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/workspace.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/dependency_links.txt +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/entry_points.txt +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/python_hwpx_automation.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-hwpx-automation
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.7.1
|
|
4
4
|
Summary: Task-oriented HWPX document automation for Python, with an optional MCP adapter.
|
|
5
5
|
Author: Kohkyuhyun
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -20,7 +20,7 @@ Requires-Python: >=3.10
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
License-File: NOTICE
|
|
23
|
-
Requires-Dist: python-hwpx<6,>=5.
|
|
23
|
+
Requires-Dist: python-hwpx<6,>=5.7.0
|
|
24
24
|
Requires-Dist: pydantic<3,>=2.11
|
|
25
25
|
Requires-Dist: cryptography>=42.0
|
|
26
26
|
Requires-Dist: anyio>=4.0
|
|
@@ -74,14 +74,13 @@ Dynamic: license-file
|
|
|
74
74
|
|
|
75
75
|
<!-- release-state: release-approved -->
|
|
76
76
|
> [!NOTE]
|
|
77
|
-
> 이
|
|
78
|
-
>
|
|
79
|
-
>
|
|
80
|
-
>
|
|
81
|
-
>
|
|
82
|
-
>
|
|
83
|
-
>
|
|
84
|
-
> Release·marketplace·실제 marketplace 설치까지 확인한 뒤 승격했으며, 기존
|
|
77
|
+
> 이 소스 트리는 **아직 공개되지 않은 6.7.1 후보**입니다(양식개체·기안문 장르:
|
|
78
|
+
> 체크박스 저작 프리미티브와 `compose_official_draft`/`compose_simple_draft`,
|
|
79
|
+
> 136 도구, core 바닥 5.7.0). 현재 공개 트레인은 여전히
|
|
80
|
+
> `python-hwpx 5.6.0 → python-hwpx-automation 6.6.4 → hwpx-plugin 1.6.0`
|
|
81
|
+
> (계약 `19898dba41495c47`)입니다.
|
|
82
|
+
> 후보는 core·automation PyPI와 plugin GitHub
|
|
83
|
+
> Release·marketplace·실제 marketplace 설치까지 확인한 뒤에만 승격하며, 기존
|
|
85
84
|
> 5.x 설치는 별도 발행된 `hwpx-mcp-server 5.1.1`이 보호합니다. 절차와 상태
|
|
86
85
|
> 머신: [릴리스 runbook](docs/release-runbook.md)
|
|
87
86
|
|
|
@@ -14,14 +14,13 @@
|
|
|
14
14
|
|
|
15
15
|
<!-- release-state: release-approved -->
|
|
16
16
|
> [!NOTE]
|
|
17
|
-
> 이
|
|
18
|
-
>
|
|
19
|
-
>
|
|
20
|
-
>
|
|
21
|
-
>
|
|
22
|
-
>
|
|
23
|
-
>
|
|
24
|
-
> Release·marketplace·실제 marketplace 설치까지 확인한 뒤 승격했으며, 기존
|
|
17
|
+
> 이 소스 트리는 **아직 공개되지 않은 6.7.1 후보**입니다(양식개체·기안문 장르:
|
|
18
|
+
> 체크박스 저작 프리미티브와 `compose_official_draft`/`compose_simple_draft`,
|
|
19
|
+
> 136 도구, core 바닥 5.7.0). 현재 공개 트레인은 여전히
|
|
20
|
+
> `python-hwpx 5.6.0 → python-hwpx-automation 6.6.4 → hwpx-plugin 1.6.0`
|
|
21
|
+
> (계약 `19898dba41495c47`)입니다.
|
|
22
|
+
> 후보는 core·automation PyPI와 plugin GitHub
|
|
23
|
+
> Release·marketplace·실제 marketplace 설치까지 확인한 뒤에만 승격하며, 기존
|
|
25
24
|
> 5.x 설치는 별도 발행된 `hwpx-mcp-server 5.1.1`이 보호합니다. 절차와 상태
|
|
26
25
|
> 머신: [릴리스 runbook](docs/release-runbook.md)
|
|
27
26
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-hwpx-automation"
|
|
7
|
-
version = "6.
|
|
7
|
+
version = "6.7.1"
|
|
8
8
|
description = "Task-oriented HWPX document automation for Python, with an optional MCP adapter."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Kohkyuhyun" }]
|
|
@@ -29,7 +29,7 @@ dependencies = [
|
|
|
29
29
|
# the bounded major here is what makes "no valid install has two declarers"
|
|
30
30
|
# true rather than hopeful, and prevents the next core major from silently
|
|
31
31
|
# breaking an already-published automation line.
|
|
32
|
-
"python-hwpx>=5.
|
|
32
|
+
"python-hwpx>=5.7.0,<6", # HWPX object model, OXML/OPC, format-native primitives
|
|
33
33
|
|
|
34
34
|
"pydantic>=2.11,<3",
|
|
35
35
|
"cryptography>=42.0",
|
{python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/capabilities.py
RENAMED
|
@@ -107,4 +107,59 @@ def tool_domain(name: str) -> str | None:
|
|
|
107
107
|
return None
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
def core_self_description() -> dict[str, Any]:
|
|
111
|
+
"""설치된 core의 `hwpx.capabilities/v1` 자기서술 — 없으면 정직 degrade.
|
|
112
|
+
|
|
113
|
+
core 5.6+가 제공한다. 구버전 core 위에서는 없다는 사실 자체를 보고하지,
|
|
114
|
+
자기서술을 지어내지 않는다.
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
try:
|
|
118
|
+
from hwpx.experimental import describe_capabilities as core_caps
|
|
119
|
+
except ImportError:
|
|
120
|
+
return {
|
|
121
|
+
"available": False,
|
|
122
|
+
"reason": (
|
|
123
|
+
"installed python-hwpx does not expose hwpx.capabilities "
|
|
124
|
+
"(needs >= 5.6.0)"
|
|
125
|
+
),
|
|
126
|
+
}
|
|
127
|
+
report = dict(core_caps())
|
|
128
|
+
report["available"] = True
|
|
129
|
+
return report
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def render_oracle_availability() -> dict[str, Any]:
|
|
133
|
+
"""실한컴 렌더 오라클 가용성 — **무실행 프로브만**(세션·렌더 발사 없음).
|
|
134
|
+
|
|
135
|
+
resolve_oracle 캐스케이드(Windows COM → Mac GUI → Null; STRUCTURAL_ONLY는
|
|
136
|
+
Null 단락)와 imaging/pymupdf 프로브를 그대로 보고한다. available=False는
|
|
137
|
+
결함이 아니라 이 환경의 사실이며, 그때 render 게이트는 renderChecked=false
|
|
138
|
+
로 정직하게 degrade한다.
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
from .office.rendering import detectors, diff
|
|
142
|
+
from .office.rendering.oracle import resolve_oracle
|
|
143
|
+
|
|
144
|
+
oracle = resolve_oracle()
|
|
145
|
+
try:
|
|
146
|
+
available = bool(oracle.available())
|
|
147
|
+
except Exception:
|
|
148
|
+
available = False
|
|
149
|
+
return {
|
|
150
|
+
"oracle": type(oracle).__name__,
|
|
151
|
+
"available": available,
|
|
152
|
+
"imaging": bool(detectors.imaging_available()),
|
|
153
|
+
"pymupdf": bool(diff.pymupdf_available()),
|
|
154
|
+
"note": "probe-only — 어떤 렌더 세션도 시작하지 않는다",
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
__all__ = [
|
|
159
|
+
"DOMAINS",
|
|
160
|
+
"build_capability_report",
|
|
161
|
+
"core_self_description",
|
|
162
|
+
"coverage_against",
|
|
163
|
+
"render_oracle_availability",
|
|
164
|
+
"tool_domain",
|
|
165
|
+
]
|
{python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/fastmcp_adapter.py
RENAMED
|
@@ -616,6 +616,32 @@ def register_canonical_tool(
|
|
|
616
616
|
return _register(mcp, name=name, func=func, description=description, meta=meta)
|
|
617
617
|
|
|
618
618
|
|
|
619
|
+
def register_canonical_resource(
|
|
620
|
+
mcp: Any,
|
|
621
|
+
*,
|
|
622
|
+
uri: str,
|
|
623
|
+
name: str,
|
|
624
|
+
description: str,
|
|
625
|
+
mime_type: str,
|
|
626
|
+
func: Callable[[], str],
|
|
627
|
+
) -> None:
|
|
628
|
+
"""Register one canonical read-only resource through the public SDK hook.
|
|
629
|
+
|
|
630
|
+
이 어댑터가 유일한 FastMCP 호환 seam이라는 계약(모듈 docstring)은 리소스
|
|
631
|
+
표면에도 그대로 적용된다 — 다른 모듈은 이 함수를 부르지, SDK의
|
|
632
|
+
``resource`` 데코레이터를 직접 만지지 않는다.
|
|
633
|
+
"""
|
|
634
|
+
|
|
635
|
+
try:
|
|
636
|
+
mcp.resource(uri, name=name, description=description, mime_type=mime_type)(
|
|
637
|
+
func
|
|
638
|
+
)
|
|
639
|
+
except Exception as exc: # pragma: no cover - SDK 계약 위반은 등록 시점 하드 실패
|
|
640
|
+
raise FastMcpAdapterError(
|
|
641
|
+
f"failed to register canonical resource {uri!r}: {exc}"
|
|
642
|
+
) from exc
|
|
643
|
+
|
|
644
|
+
|
|
619
645
|
def snapshot_runtime_tools(mcp: Any) -> Mapping[str, FastMcpToolSnapshot]:
|
|
620
646
|
"""Return an insertion-ordered, read-only snapshot of the live registry."""
|
|
621
647
|
|
|
@@ -136,6 +136,32 @@ def apply_template_formfit(
|
|
|
136
136
|
)
|
|
137
137
|
|
|
138
138
|
|
|
139
|
+
def run_edit_plan(
|
|
140
|
+
plan: dict,
|
|
141
|
+
dry_run: bool = False,
|
|
142
|
+
) -> dict:
|
|
143
|
+
"""선언적 편집 계획(hwpx.edit-plan/v1)을 all-or-nothing으로 실행합니다.
|
|
144
|
+
|
|
145
|
+
plan.steps는 기존 바이트-스플라이스 op 이름 그대로(fill_cells·
|
|
146
|
+
apply_table_ops·apply_body_ops·paragraph_patch·recolor_runs_by_color·
|
|
147
|
+
strip_runs_by_color·strip_trailing_table_captions)를 지시합니다. 실행은
|
|
148
|
+
정적 선검증→전 체인 인메모리→최종 open-safety 검증→단 1회 원자 쓰기 —
|
|
149
|
+
중간 step 실패 시 output·source는 바이트 불변이고 ok=false 리포트
|
|
150
|
+
(failedStepId·step error)가 돌아옵니다. dry_run=true는 동일 체인을 전부
|
|
151
|
+
실행하되 쓰기만 생략합니다(미리보기=실행 정의상 동일). 반환은
|
|
152
|
+
hwpx.plan-report/v1(step별+원본→최종 mutation-report/v1 실측 사영 포함).
|
|
153
|
+
스키마는 hwpx://schemas/edit-plan-v1 리소스로 구독 가능합니다."""
|
|
154
|
+
|
|
155
|
+
resolved = dict(plan) if plan else {}
|
|
156
|
+
for key in ("source", "output", "journalPath"):
|
|
157
|
+
value = resolved.get(key)
|
|
158
|
+
if isinstance(value, str) and value:
|
|
159
|
+
resolved[key] = resolve_path(value)
|
|
160
|
+
if not dry_run:
|
|
161
|
+
quality_contract.assert_write_capability()
|
|
162
|
+
return RUNTIME_SERVICES.ops.run_edit_plan(resolved, dry_run=dry_run)
|
|
163
|
+
|
|
164
|
+
|
|
139
165
|
def apply_table_ops(
|
|
140
166
|
filename: str,
|
|
141
167
|
ops: list[TableOperation],
|
|
@@ -258,6 +258,17 @@ def describe_capabilities(domain: str | None = None) -> dict:
|
|
|
258
258
|
advanced=advanced,
|
|
259
259
|
registry_validation=validation,
|
|
260
260
|
)
|
|
261
|
+
# additive(6.6): core 자기서술·오라클 가용성·리소스 카탈로그를 합성한다 —
|
|
262
|
+
# 자기서술 도구를 둘로 쪼개지 않는다(진실 이원화 방지).
|
|
263
|
+
from ..capabilities import core_self_description, render_oracle_availability
|
|
264
|
+
from ..resources import CANONICAL_RESOURCES
|
|
265
|
+
|
|
266
|
+
report["core"] = core_self_description()
|
|
267
|
+
report["renderOracle"] = render_oracle_availability()
|
|
268
|
+
report["resources"] = [
|
|
269
|
+
{"uri": spec.uri, "name": spec.name, "mimeType": spec.mime_type}
|
|
270
|
+
for spec in CANONICAL_RESOURCES
|
|
271
|
+
]
|
|
261
272
|
return report
|
|
262
273
|
|
|
263
274
|
|
|
@@ -27,6 +27,12 @@ from ..office.house_style import load_bank, load_genres
|
|
|
27
27
|
from ..office.house_style.composition import (
|
|
28
28
|
compose_section_chip as compose_house_section_chip,
|
|
29
29
|
)
|
|
30
|
+
from ..office.house_style.gianmun import (
|
|
31
|
+
HIDDEN_LABELS as HOUSE_HIDDEN_LABELS,
|
|
32
|
+
SHOWN_LABELS as HOUSE_SHOWN_LABELS,
|
|
33
|
+
compose_official_draft as compose_house_official_draft,
|
|
34
|
+
compose_simple_draft as compose_house_simple_draft,
|
|
35
|
+
)
|
|
30
36
|
from ..office.house_style.org_chart import lower_boxed_org_chart
|
|
31
37
|
from ..office.document_ops import (
|
|
32
38
|
build_mail_merge as build_hwpx_mail_merge,
|
|
@@ -246,6 +252,48 @@ def add_boxed_org_chart(
|
|
|
246
252
|
return _with_save_verification(result, verification)
|
|
247
253
|
|
|
248
254
|
|
|
255
|
+
def compose_official_draft(plan: dict) -> dict:
|
|
256
|
+
"""일반기안문(별지 제1호서식)을 범용 document_plan block으로 합성합니다.
|
|
257
|
+
|
|
258
|
+
「행정업무의 운영 및 혁신에 관한 규정 시행규칙」 별지 제1호서식의 공개
|
|
259
|
+
구조를 두문/본문/결문 순서로 낮춥니다. 파일은 쓰지 않습니다 — 반환 blocks를
|
|
260
|
+
document_plan에 넣어 create_document_from_plan으로 생성하십시오.
|
|
261
|
+
|
|
262
|
+
규정에서 오는 계약 3가지: ①결재란 칸 수는 approvers 목록 길이입니다
|
|
263
|
+
(규칙 제7조제4항 — 서명·전결 표시를 하지 않는 사람의 서명란은 만들지
|
|
264
|
+
않습니다). ②행정기관명·발신명·기안자/검토자/결재권자·직위(직급) 서명·
|
|
265
|
+
주소·공개 구분 등의 용어(라벨)는 인쇄하지 않고 값만 적습니다(서식 비고).
|
|
266
|
+
③선택 항목에 체크박스 개체를 쓰지 않습니다 — 별표 4 제10호가 `[ ]`+√
|
|
267
|
+
텍스트를 규정합니다. 내부결재문서는 internal_only=true로 발신명의를
|
|
268
|
+
생략합니다."""
|
|
269
|
+
blocks = compose_house_official_draft(plan)
|
|
270
|
+
return {
|
|
271
|
+
"blocks": blocks,
|
|
272
|
+
"genre": "official_draft",
|
|
273
|
+
"next_tool": "validate_document_plan",
|
|
274
|
+
"labelPolicy": {
|
|
275
|
+
"hidden": list(HOUSE_HIDDEN_LABELS),
|
|
276
|
+
"shown": list(HOUSE_SHOWN_LABELS),
|
|
277
|
+
},
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
def compose_simple_draft(plan: dict) -> dict:
|
|
282
|
+
"""간이기안문(별지 제2호서식)을 범용 document_plan block으로 합성합니다.
|
|
283
|
+
|
|
284
|
+
보고서·계획서·검토서 등 발신할 필요가 없는 **내부결재문서 전용**입니다
|
|
285
|
+
(규칙 제3조제3항 — 시행문으로 변환할 수 없습니다). 일반기안문과 달리
|
|
286
|
+
두문·발신명의·시행/접수·주소가 없고, 문서등록 블록과 결재란이 상단에,
|
|
287
|
+
제목·(선택)요약설명문·작성일·작성기관이 그 아래 중앙에 옵니다. 결재란 칸
|
|
288
|
+
수는 approvers 목록 길이입니다(규칙 제7조제4항)."""
|
|
289
|
+
blocks = compose_house_simple_draft(plan)
|
|
290
|
+
return {
|
|
291
|
+
"blocks": blocks,
|
|
292
|
+
"genre": "simple_draft",
|
|
293
|
+
"next_tool": "validate_document_plan",
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
|
|
249
297
|
def compose_section_chip(
|
|
250
298
|
number: str,
|
|
251
299
|
title: str,
|
{python_hwpx_automation-6.5.1 → python_hwpx_automation-6.7.1}/src/hwpx_automation/hwpx_ops.py
RENAMED
|
@@ -939,6 +939,14 @@ class HwpxOps:
|
|
|
939
939
|
publication_sink=publication_sink,
|
|
940
940
|
)
|
|
941
941
|
|
|
942
|
+
def run_edit_plan(
|
|
943
|
+
self,
|
|
944
|
+
plan: Dict[str, Any],
|
|
945
|
+
*,
|
|
946
|
+
dry_run: bool = False,
|
|
947
|
+
) -> Dict[str, Any]:
|
|
948
|
+
return self._services.form_fields.run_edit_plan(plan, dry_run=dry_run)
|
|
949
|
+
|
|
942
950
|
def apply_table_ops(
|
|
943
951
|
self,
|
|
944
952
|
path: str,
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "python-hwpx-automation.identity/v1",
|
|
3
|
+
"product": "python-hwpx-automation",
|
|
4
|
+
"releaseMajor": 6,
|
|
5
|
+
"releaseState": {
|
|
6
|
+
"status": "release-approved",
|
|
7
|
+
"candidate": {
|
|
8
|
+
"pythonHwpx": "5.7.0",
|
|
9
|
+
"canonicalDistribution": "python-hwpx-automation",
|
|
10
|
+
"canonicalAutomation": "6.7.1",
|
|
11
|
+
"compatibilityDistribution": "hwpx-mcp-server",
|
|
12
|
+
"compatibility": "6.7.1",
|
|
13
|
+
"plugin": "1.7.0",
|
|
14
|
+
"contractHash": "98510af22d13899c"
|
|
15
|
+
},
|
|
16
|
+
"currentPublic": {
|
|
17
|
+
"pythonHwpx": "5.6.0",
|
|
18
|
+
"primaryDistribution": "python-hwpx-automation",
|
|
19
|
+
"primaryApplication": "6.6.4",
|
|
20
|
+
"plugin": "1.6.0",
|
|
21
|
+
"contractHash": "19898dba41495c47"
|
|
22
|
+
},
|
|
23
|
+
"promotionGate": "Three states are mandatory: unreleased-candidate while auditing; release-approved only after separate owner approval and while currentPublic still names the previously observed coherent stack; released only in a follow-up commit after remote truth is observed for core, canonical automation, the compatibility distribution, the plugin GitHub release, the marketplace entry, and a real marketplace install. The automation tag workflow publishes only release-approved, leaves currentPublic unchanged, and hands an attached receipt to plugin publication."
|
|
24
|
+
},
|
|
25
|
+
"identifiers": [
|
|
26
|
+
{
|
|
27
|
+
"surface": "repository",
|
|
28
|
+
"value": "airmang/python-hwpx-automation",
|
|
29
|
+
"classification": "canonical"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"surface": "distribution",
|
|
33
|
+
"value": "python-hwpx-automation",
|
|
34
|
+
"classification": "canonical"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"surface": "import-namespace",
|
|
38
|
+
"value": "hwpx_automation",
|
|
39
|
+
"classification": "canonical"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"surface": "task-console",
|
|
43
|
+
"value": "hwpx",
|
|
44
|
+
"classification": "canonical"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"surface": "mcp-console",
|
|
48
|
+
"value": "hwpx-automation-mcp",
|
|
49
|
+
"classification": "canonical"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"surface": "fastmcp-server-info-name",
|
|
53
|
+
"value": "python-hwpx-automation",
|
|
54
|
+
"classification": "canonical"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"surface": "host-config-key",
|
|
58
|
+
"value": "hwpx",
|
|
59
|
+
"classification": "host-local-alias"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"surface": "environment-prefix",
|
|
63
|
+
"value": "HWPX_AUTOMATION_",
|
|
64
|
+
"classification": "canonical"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"surface": "distribution",
|
|
68
|
+
"value": "hwpx-mcp-server",
|
|
69
|
+
"classification": "compatibility"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"surface": "import-namespace",
|
|
73
|
+
"value": "hwpx_mcp_server",
|
|
74
|
+
"classification": "compatibility"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"surface": "mcp-console",
|
|
78
|
+
"value": "hwpx-mcp-server",
|
|
79
|
+
"classification": "compatibility"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"surface": "environment-prefix",
|
|
83
|
+
"value": "HWPX_MCP_",
|
|
84
|
+
"classification": "compatibility"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"surface": "capability-version-field",
|
|
88
|
+
"value": "versions.automation",
|
|
89
|
+
"classification": "canonical"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"surface": "capability-version-field",
|
|
93
|
+
"value": "versions.mcp",
|
|
94
|
+
"classification": "compatibility-preserved"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"surface": "capability-floor-field",
|
|
98
|
+
"value": "minAutomationVersion",
|
|
99
|
+
"classification": "canonical"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"surface": "capability-floor-field",
|
|
103
|
+
"value": "minMcpVersion",
|
|
104
|
+
"classification": "compatibility-preserved"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"surface": "contract-floor-constant",
|
|
108
|
+
"value": "MIN_AUTOMATION_VERSION",
|
|
109
|
+
"classification": "canonical"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"surface": "contract-floor-constant",
|
|
113
|
+
"value": "MIN_MCP_VERSION",
|
|
114
|
+
"classification": "compatibility-preserved"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"surface": "protocol-error-schema",
|
|
118
|
+
"value": "hwpx.mcp-error/v1",
|
|
119
|
+
"classification": "compatibility-preserved"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"surface": "frozen-receipt-schema",
|
|
123
|
+
"value": "hwpx-mcp.authoring-runtime-owner/v1",
|
|
124
|
+
"classification": "compatibility-preserved"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"surface": "frozen-receipt-schema",
|
|
128
|
+
"value": "hwpx-mcp.compliance-quality-utilities-owner/v1",
|
|
129
|
+
"classification": "compatibility-preserved"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"surface": "frozen-receipt-schema",
|
|
133
|
+
"value": "hwpx-mcp.document-operations-owner/v1",
|
|
134
|
+
"classification": "compatibility-preserved"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"surface": "frozen-receipt-schema",
|
|
138
|
+
"value": "hwpx-mcp.evalplan-runtime-owner/v1",
|
|
139
|
+
"classification": "compatibility-preserved"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"surface": "frozen-receipt-schema",
|
|
143
|
+
"value": "hwpx-mcp.exam-runtime-owner/v1",
|
|
144
|
+
"classification": "compatibility-preserved"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"surface": "frozen-receipt-schema",
|
|
148
|
+
"value": "hwpx-mcp.form-fill-runtime-owner/v1",
|
|
149
|
+
"classification": "compatibility-preserved"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"surface": "frozen-receipt-schema",
|
|
153
|
+
"value": "hwpx-mcp.form-fill-runtime-parity/v1",
|
|
154
|
+
"classification": "compatibility-preserved"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"surface": "frozen-receipt-schema",
|
|
158
|
+
"value": "hwpx-mcp.visual-runtime-owner/v1",
|
|
159
|
+
"classification": "compatibility-preserved"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"surface": "frozen-parity-receipt-field",
|
|
163
|
+
"value": "mcpRuntimeMembers",
|
|
164
|
+
"classification": "compatibility-preserved"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"surface": "workflow-state-environment",
|
|
168
|
+
"value": "HWPX_AUTOMATION_WORKFLOW_STORE",
|
|
169
|
+
"classification": "canonical"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"surface": "workflow-state-environment",
|
|
173
|
+
"value": "HWPX_WORKFLOW_STORE",
|
|
174
|
+
"classification": "compatibility-preserved"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"surface": "workflow-state-path",
|
|
178
|
+
"value": "${XDG_STATE_HOME:-~/.local/state}/hwpx-mcp-server/workflows.sqlite3",
|
|
179
|
+
"classification": "compatibility-preserved"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"surface": "render-queue-principal",
|
|
183
|
+
"value": "hwpx-mcp-server",
|
|
184
|
+
"classification": "compatibility-preserved"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"surface": "render-integration-environment",
|
|
188
|
+
"value": "HWPX_RENDER_QUEUE_ROOT",
|
|
189
|
+
"classification": "integration-preserved"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"surface": "render-integration-environment",
|
|
193
|
+
"value": "HWPX_RENDER_QUEUE_URL",
|
|
194
|
+
"classification": "integration-preserved"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"surface": "render-integration-environment",
|
|
198
|
+
"value": "HWPX_RENDER_QUEUE_SECRET",
|
|
199
|
+
"classification": "integration-preserved"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"surface": "render-integration-environment",
|
|
203
|
+
"value": "HWPX_RENDER_TRANSPORT_AUTH",
|
|
204
|
+
"classification": "integration-preserved"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"surface": "render-integration-environment",
|
|
208
|
+
"value": "HWPX_RENDER_CA_FILE",
|
|
209
|
+
"classification": "integration-preserved"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"surface": "render-integration-environment",
|
|
213
|
+
"value": "HWPX_RENDER_CLIENT_CERT_FILE",
|
|
214
|
+
"classification": "integration-preserved"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"surface": "render-integration-environment",
|
|
218
|
+
"value": "HWPX_RENDER_CLIENT_KEY_FILE",
|
|
219
|
+
"classification": "integration-preserved"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"surface": "workflow-security-environment",
|
|
223
|
+
"value": "HWPX_WORKFLOW_ENCRYPTION_KEY",
|
|
224
|
+
"classification": "capability-preserved"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"surface": "oracle-capability-environment",
|
|
228
|
+
"value": "HWPX_ORACLE_STRUCTURAL_ONLY",
|
|
229
|
+
"classification": "capability-preserved"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"surface": "oracle-capability-environment",
|
|
233
|
+
"value": "HWPX_ORACLE_BUDGET_SECONDS",
|
|
234
|
+
"classification": "capability-preserved"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"surface": "plugin-integration-environment",
|
|
238
|
+
"value": "HWPX_SKILL_VERSION",
|
|
239
|
+
"classification": "integration-preserved"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"surface": "plugin-integration-environment",
|
|
243
|
+
"value": "HWPX_PLUGIN_ROOT",
|
|
244
|
+
"classification": "integration-preserved"
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
"compatibilityPolicy": {
|
|
248
|
+
"supportedThroughMajor": 6,
|
|
249
|
+
"removalNotBeforeMajor": 7,
|
|
250
|
+
"minimumPublicNoticeDays": 90,
|
|
251
|
+
"requiresObservedUsageWindow": true,
|
|
252
|
+
"requiresSeparateOwnerApproval": true,
|
|
253
|
+
"statePathMigrationInMajor6": false
|
|
254
|
+
},
|
|
255
|
+
"notes": {
|
|
256
|
+
"hostConfigKey": "The key is a host-local alias, not the MCP protocol identity.",
|
|
257
|
+
"environmentPrecedence": "HWPX_AUTOMATION_* wins; HWPX_MCP_* remains a 6.x fallback.",
|
|
258
|
+
"preservedWireIdentifiers": "The public hwpx.mcp-error/v1 schema, versions.mcp/minMcpVersion/MIN_MCP_VERSION aliases, frozen hwpx-mcp.* architecture receipt IDs, and mcpRuntimeMembers parity-receipt field remain exact in 6.x. They are compatibility identifiers, not statements that MCP owns the automation product.",
|
|
259
|
+
"preservedIntegrationEnvironment": "Product-neutral HWPX_RENDER_*, HWPX_WORKFLOW_ENCRYPTION_KEY, HWPX_ORACLE_*, HWPX_SKILL_VERSION, and HWPX_PLUGIN_ROOT names do not encode the former MCP product identity. They remain unchanged and are not aliases in the HWPX_AUTOMATION_ transition.",
|
|
260
|
+
"statePath": "HWPX_AUTOMATION_WORKFLOW_STORE wins over the prior HWPX_WORKFLOW_STORE override; the existing hwpx-mcp-server on-disk default remains in 6.x to avoid silent workflow loss.",
|
|
261
|
+
"renderQueuePrincipal": "The signed queue principal remains hwpx-mcp-server in 6.x so queued work and worker authorization do not split during the rename."
|
|
262
|
+
}
|
|
263
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
"""Word/glyph-box geometry oracle for form-fill verification
|
|
2
|
+
"""Word/glyph-box geometry oracle for form-fill verification.
|
|
3
3
|
|
|
4
4
|
The faithful renderer for HWPX is Hancom (Constitution IV); there is no free
|
|
5
5
|
headless one. Rather than drive the Hancom GUI on every check, this module makes
|