python-hwpx-automation 6.5.1__tar.gz → 6.6.4__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.6.4}/PKG-INFO +13 -12
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/README.md +11 -10
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/pyproject.toml +2 -2
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/capabilities.py +56 -1
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/fastmcp_adapter.py +26 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/form_fill.py +26 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/quality_render.py +11 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/hwpx_ops.py +8 -0
- python_hwpx_automation-6.6.4/src/hwpx_automation/identity.json +263 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/form_fields.py +26 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/public-modules.json +5 -4
- python_hwpx_automation-6.6.4/src/hwpx_automation/resources.py +139 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/runtime.py +3 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/server.py +1 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/tool_bindings.py +1 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/tool_contract.py +15 -12
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4/src/python_hwpx_automation.egg-info}/PKG-INFO +13 -12
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/python_hwpx_automation.egg-info/SOURCES.txt +1 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/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 → python_hwpx_automation-6.6.4}/LICENSE +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/MANIFEST.in +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/NOTICE +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/setup.cfg +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/__init__.pyi +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/__main__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/agent_document.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/api.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/blind_eval.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/compat.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/configuration.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/content.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/context.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/diff.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/document.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/formatting.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/handles.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/locations.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/locator.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/plan.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/resources.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/search.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/transactions.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/core/txn.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/document_state.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/errors.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/execution_lock.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/form_fill.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/form_output_models.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/_shared.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/agent_document.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/authoring.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/content_edit.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/layout_style.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/read_export.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/specialized.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/tracked_changes.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/handlers/workflow.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/hwp_converter.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/hwp_support.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/identity.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ingest_adapters.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/markdown_plan.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/mcp_cli.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/metadata/tools_meta.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/mixed_form.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/mutation_models.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/network_policy.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/_batch_verification.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/blueprint/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/blueprint/bundle.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/blueprint/catalog.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/blueprint/dump.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/blueprint/mapping.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/blueprint/model.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/blueprint/native.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/blueprint/replay.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/catalog.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/cli.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/commands.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/document.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/form_plan.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/model.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/path.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/query.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/agent/story.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/advanced_generators.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/builder/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/builder/core.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/builder/report.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/_support.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/composer.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/harvest.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/plan.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profile.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/body.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/heading.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/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.6.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/fragments/title.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/profile.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/application_form/template.hwpx +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/body.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/heading.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/fragments/title.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/profile.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/home_notice/template.hwpx +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/body.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/heading.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/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.6.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/fragments/title.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/profile.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/official_notice/template.hwpx +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/body.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/heading.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/info_table.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/report/fragments/title.xml +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/report/profile.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/profiles/report/template.hwpx +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/design/validator.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/presets/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/presets/proposal.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/report_parser.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/style_profile.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/authoring/template_analyzer.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/charting/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/compliance/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/compliance/official_lint.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/compliance/pii.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/document_ops/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/document_ops/comparison.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/document_ops/mail_merge.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/document_ops/redline.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/evalplan/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/evalplan/runtime.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/exam/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/exam/compose.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/exam/ir.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/exam/measure.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/exam/parser.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/exam/profile.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/classification.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fill_residue.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fit/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fit/apply.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fit/engine.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fit/measure.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fit/policy.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fit/report.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fit/seal.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/fit/wordbox.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/guidance.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/quality.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/split_run.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/form_fill/template_formfit.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/house_style/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/house_style/composition.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/house_style/data/bank.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/house_style/data/genres.json +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/house_style/org_chart.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/quality/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/quality/page_guard.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/_hancom_open_rate.ps1 +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/_refresh_hwpx_mac.applescript +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/_render_hwpx.ps1 +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/_render_hwpx_mac.applescript +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/block_splits.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/detectors.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/diff.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/fixture_corpus.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/oracle.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/page_qa.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/qa_contracts.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/qa_metrics.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/rendering/worker.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/utilities/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/office/utilities/table_compute.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/_border_fill.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/composition.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/content_layout.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/context.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/media.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/memo_style.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/package_validation.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/planning.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/preview_export.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/read_query.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/save_policy.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/tables.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/ops_services/transactions.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/preview_output_models.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/py.typed +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/quality.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/quality_generation.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/runtime_services.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/storage.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/upstream.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/utils/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/utils/helpers.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/visual_qa.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/__init__.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/adapters.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/dispatcher.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/models.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/policy.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/render_contracts.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/render_metrics.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/render_queue.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/render_security.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/render_transport.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/rendering.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/service.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/state_machine.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workflow/store.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/hwpx_automation/workspace.py +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/python_hwpx_automation.egg-info/dependency_links.txt +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/src/python_hwpx_automation.egg-info/entry_points.txt +0 -0
- {python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/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.6.4
|
|
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.6.0
|
|
24
24
|
Requires-Dist: pydantic<3,>=2.11
|
|
25
25
|
Requires-Dist: cryptography>=42.0
|
|
26
26
|
Requires-Dist: anyio>=4.0
|
|
@@ -74,16 +74,17 @@ Dynamic: license-file
|
|
|
74
74
|
|
|
75
75
|
<!-- release-state: release-approved -->
|
|
76
76
|
> [!NOTE]
|
|
77
|
-
> 이
|
|
78
|
-
>
|
|
79
|
-
>
|
|
80
|
-
>
|
|
81
|
-
> `
|
|
82
|
-
>
|
|
83
|
-
>
|
|
84
|
-
>
|
|
85
|
-
>
|
|
86
|
-
>
|
|
77
|
+
> 이 소스 트리는 **아직 공개되지 않은 6.6.4 후보**입니다(에이전트 계약 표면:
|
|
78
|
+
> `run_edit_plan` 선언적 편집 계획 실행기 + MCP resources +
|
|
79
|
+
> `describe_capabilities` 확장, 134 도구, core 바닥 5.6.0). 현재 공개
|
|
80
|
+
> 트레인은 여전히 `python-hwpx 5.5.0 → python-hwpx-automation 6.5.1 → hwpx-plugin 1.5.0`
|
|
81
|
+
> (계약 `f61d2c60c0aa0413`)이며, 후보는 core·automation
|
|
82
|
+
> PyPI와 plugin GitHub
|
|
83
|
+
> Release·marketplace·실제 marketplace 설치까지 확인한 뒤에만 승격합니다.
|
|
84
|
+
> 기존 5.x 설치는 별도 발행된 `hwpx-mcp-server 5.1.1`이 보호합니다. 절차와
|
|
85
|
+
> 상태 머신: [릴리스 runbook](docs/release-runbook.md)
|
|
86
|
+
> 현재 상태는 release-approved입니다 — 원격 진실(3스택·marketplace 설치) 관찰 전까지
|
|
87
|
+
> currentPublic은 그대로입니다.
|
|
87
88
|
|
|
88
89
|
[python-hwpx](https://github.com/airmang/python-hwpx) 엔진 위에서 문서 저작·
|
|
89
90
|
양식 채움·시험지 조판·안전한 에이전트 워크플로를 제공하는 응용 계층입니다.
|
|
@@ -14,16 +14,17 @@
|
|
|
14
14
|
|
|
15
15
|
<!-- release-state: release-approved -->
|
|
16
16
|
> [!NOTE]
|
|
17
|
-
> 이
|
|
18
|
-
>
|
|
19
|
-
>
|
|
20
|
-
>
|
|
21
|
-
> `
|
|
22
|
-
>
|
|
23
|
-
>
|
|
24
|
-
>
|
|
25
|
-
>
|
|
26
|
-
>
|
|
17
|
+
> 이 소스 트리는 **아직 공개되지 않은 6.6.4 후보**입니다(에이전트 계약 표면:
|
|
18
|
+
> `run_edit_plan` 선언적 편집 계획 실행기 + MCP resources +
|
|
19
|
+
> `describe_capabilities` 확장, 134 도구, core 바닥 5.6.0). 현재 공개
|
|
20
|
+
> 트레인은 여전히 `python-hwpx 5.5.0 → python-hwpx-automation 6.5.1 → hwpx-plugin 1.5.0`
|
|
21
|
+
> (계약 `f61d2c60c0aa0413`)이며, 후보는 core·automation
|
|
22
|
+
> PyPI와 plugin GitHub
|
|
23
|
+
> Release·marketplace·실제 marketplace 설치까지 확인한 뒤에만 승격합니다.
|
|
24
|
+
> 기존 5.x 설치는 별도 발행된 `hwpx-mcp-server 5.1.1`이 보호합니다. 절차와
|
|
25
|
+
> 상태 머신: [릴리스 runbook](docs/release-runbook.md)
|
|
26
|
+
> 현재 상태는 release-approved입니다 — 원격 진실(3스택·marketplace 설치) 관찰 전까지
|
|
27
|
+
> currentPublic은 그대로입니다.
|
|
27
28
|
|
|
28
29
|
[python-hwpx](https://github.com/airmang/python-hwpx) 엔진 위에서 문서 저작·
|
|
29
30
|
양식 채움·시험지 조판·안전한 에이전트 워크플로를 제공하는 응용 계층입니다.
|
|
@@ -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.6.4"
|
|
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.6.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.6.4}/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.6.4}/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
|
|
{python_hwpx_automation-6.5.1 → python_hwpx_automation-6.6.4}/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.6.0",
|
|
9
|
+
"canonicalDistribution": "python-hwpx-automation",
|
|
10
|
+
"canonicalAutomation": "6.6.4",
|
|
11
|
+
"compatibilityDistribution": "hwpx-mcp-server",
|
|
12
|
+
"compatibility": "6.6.4",
|
|
13
|
+
"plugin": "1.6.0",
|
|
14
|
+
"contractHash": "19898dba41495c47"
|
|
15
|
+
},
|
|
16
|
+
"currentPublic": {
|
|
17
|
+
"pythonHwpx": "5.5.0",
|
|
18
|
+
"primaryDistribution": "python-hwpx-automation",
|
|
19
|
+
"primaryApplication": "6.5.1",
|
|
20
|
+
"plugin": "1.5.0",
|
|
21
|
+
"contractHash": "f61d2c60c0aa0413"
|
|
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
|
+
}
|
|
@@ -151,6 +151,32 @@ class FormFieldService:
|
|
|
151
151
|
result, document, resolved, dry_run=dry_run
|
|
152
152
|
)
|
|
153
153
|
|
|
154
|
+
def run_edit_plan(
|
|
155
|
+
self,
|
|
156
|
+
plan: dict[str, Any],
|
|
157
|
+
*,
|
|
158
|
+
dry_run: bool = False,
|
|
159
|
+
) -> dict[str, Any]:
|
|
160
|
+
"""선언적 편집 계획(hwpx.edit-plan/v1)을 core 실행기로 위임한다.
|
|
161
|
+
|
|
162
|
+
원자성(전 step 성공+최종 검증 후 단 1회 쓰기, 실패 시 무접촉)은 core
|
|
163
|
+
`hwpx.plan`이 소유한다 — 여기서는 typed 오류 어휘로만 감싼다. 실행
|
|
164
|
+
실패는 예외가 아니라 ok=False 리포트로 돌아온다(failedStepId 참조).
|
|
165
|
+
"""
|
|
166
|
+
|
|
167
|
+
from hwpx.plan import PlanValidationError, apply_edit_plan
|
|
168
|
+
|
|
169
|
+
try:
|
|
170
|
+
report = apply_edit_plan(plan, dry_run=dry_run)
|
|
171
|
+
except PlanValidationError as exc:
|
|
172
|
+
raise self._context._new_error(
|
|
173
|
+
"EDIT_PLAN_INVALID",
|
|
174
|
+
exc.message,
|
|
175
|
+
details=exc.to_dict(),
|
|
176
|
+
hint=exc.suggestion,
|
|
177
|
+
) from exc
|
|
178
|
+
return report.to_dict()
|
|
179
|
+
|
|
154
180
|
def apply_table_ops(
|
|
155
181
|
self,
|
|
156
182
|
path: str,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "python-hwpx-automation.public-modules/v1",
|
|
3
3
|
"scope": "All Python modules shipped by the canonical 6.x distribution. Base-public modules must import without the optional MCP SDK; the five adapter modules require the mcp extra by design.",
|
|
4
|
-
"moduleCount":
|
|
5
|
-
"moduleSha256": "
|
|
6
|
-
"basePublicModuleCount":
|
|
7
|
-
"basePublicModuleSha256": "
|
|
4
|
+
"moduleCount": 180,
|
|
5
|
+
"moduleSha256": "4000174b39f93c6f8fd8e03420e58f1552ae2a37dd7b3d2b4716e654e66eac38",
|
|
6
|
+
"basePublicModuleCount": 175,
|
|
7
|
+
"basePublicModuleSha256": "6ebeb5b691f132b21a544122df3b825f4b708251fe8d3c22f2cc7c9947a84635",
|
|
8
8
|
"basePublicModules": [
|
|
9
9
|
"hwpx_automation",
|
|
10
10
|
"hwpx_automation.__main__",
|
|
@@ -158,6 +158,7 @@
|
|
|
158
158
|
"hwpx_automation.preview_output_models",
|
|
159
159
|
"hwpx_automation.quality",
|
|
160
160
|
"hwpx_automation.quality_generation",
|
|
161
|
+
"hwpx_automation.resources",
|
|
161
162
|
"hwpx_automation.runtime_services",
|
|
162
163
|
"hwpx_automation.storage",
|
|
163
164
|
"hwpx_automation.tool_contract",
|