hap-cli 0.8.9__tar.gz → 0.8.10__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.
- {hap_cli-0.8.9 → hap_cli-0.8.10}/MANIFEST.in +1 -1
- {hap_cli-0.8.9 → hap_cli-0.8.10}/PKG-INFO +1 -1
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/__init__.py +1 -1
- hap_cli-0.8.10/hap_cli/commands/app_creator_cmd.py +137 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/_hapmeta/__init__.py +10 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/_hapmeta/worksheet_templates.py +679 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/charts.py +585 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/cleanup.py +104 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/compiler.py +313 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/config.py +158 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/design/design.schema.json +3756 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/errors.py +67 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/examples/minimal.design.json +565 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/executor.py +191 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/fields.py +607 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/hap.py +160 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/merge.py +49 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/recording/console.py +95 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/recording/jsonl.py +41 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/recording/mirror.py +45 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/recording/report.py +165 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/schema.py +905 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/INSTRUCTIONS.md +149 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/__init__.py +21 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/cli.py +85 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/executor.py +335 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/resources/attachments.json +28 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/resources/sample.docx +0 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/resources/sample.pdf +0 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/resources/sample_images.json +522 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/seed/template.py +194 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/selftest.py +1677 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/smoke.py +96 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/steps.py +1524 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/store.py +384 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/validate.py +130 -0
- hap_cli-0.8.10/hap_cli/core/app_creator/workflow_dsl.py +799 -0
- hap_cli-0.8.10/hap_cli/core/control_type_codes.py +210 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/__init__.py +1 -1
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/editspec.py +4 -4
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/workflow_node_dsl.py +14 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/hap_cli.py +2 -0
- hap_cli-0.8.10/hap_cli/tests/test_app_creator.py +119 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli.egg-info/PKG-INFO +1 -1
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli.egg-info/SOURCES.txt +42 -4
- hap_cli-0.8.10/live_tests/__init__.py +16 -0
- hap_cli-0.8.10/live_tests/recording/__init__.py +4 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/setup.py +6 -1
- {hap_cli-0.8.9 → hap_cli-0.8.10}/README.md +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/app_live_tests/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/app_live_tests/__main__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/app_live_tests/config.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/app_live_tests/harness.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/app_live_tests/smoke.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/app_live_tests/state.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/README.md +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/README_CN.md +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/__main__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/app_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/app_editor_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/auth_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/calendar_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/chart_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/chat_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/chatbot_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/config_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/contact_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/department_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/group_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/icon_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/instance_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/node_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/optionset_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/page_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/post_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/record_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/region_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/role_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/update_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/upload_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/v3_registry.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/workflow_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/commands/worksheet_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/context.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/action_spec_adapter.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/app.py +0 -0
- {hap_cli-0.8.9/live_tests → hap_cli-0.8.10/hap_cli/core/app_creator}/__init__.py +0 -0
- {hap_cli-0.8.9/hap_cli/core → hap_cli-0.8.10/hap_cli/core/app_creator/_hapmeta}/control_type_codes.py +0 -0
- {hap_cli-0.8.9/live_tests → hap_cli-0.8.10/hap_cli/core/app_creator}/recording/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/auth.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/calendar_mod.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/chart.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/chat.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/chatbot.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/cli_access.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/contact.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/department.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/_hapmeta/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/_hapmeta/control_type_codes.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/apply.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/componentlower.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/errors.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/fieldlower.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/jsonschema_mini.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/models.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/ops.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/planner.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/editor/reader.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/field_normalizer.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/field_spec_adapter.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/filter_translator.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/flow_node.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/global_meta.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/group.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/icon_index.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/instance.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/logger.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/optionset.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/page.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/post.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/record.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/response_crypto.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/role.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/role_perm_builder.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/session.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/token_crypto.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/update.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/upload.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/v3/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/v3/dispatcher.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/v3/render.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/v3/schema.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/view_spec_adapter.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/workflow.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/worksheet.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/core/worksheet_templates.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/i18n.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/locale/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/locale/messages.json +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/locale/messages.schema.json +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/conftest.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_app_editor.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_app_export_usage.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_auth_prerelease.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_bug_036430.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_chart.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_cli_access.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_config_cmd.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_core.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_destructive_confirm_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_full_e2e.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_global_meta.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_i18n.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_instance_history_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_approval.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_approval_actions.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_calendar.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_destructive.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_misc.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_post.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_social.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_v3.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_workflow.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_integration_worksheet_extra.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_multi_profile.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_org_approval_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_org_id_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_org_id_docs.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_parameter_conventions.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_parameter_mapping_registry.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_record_batch_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_record_field_alias.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_record_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_semantic_types_registry.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_update.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_v3_api_schema_loader.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_v3_dispatcher.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_v3_registry_coverage.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_v3_session.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_v3_yaml_translation.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_workflow_list_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_workflow_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_worksheet_crud_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/tests/test_worksheet_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/utils/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/utils/formatting.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/utils/options.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli/utils/parameter_mapping.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli.egg-info/dependency_links.txt +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli.egg-info/entry_points.txt +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli.egg-info/requires.txt +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/hap_cli.egg-info/top_level.txt +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/__main__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/_wftest.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/charts.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/cleanup.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/compiler.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/config.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/errors.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/executor.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/fields.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/hap.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/recording/console.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/recording/jsonl.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/recording/mirror.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/recording/report.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/schema.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/seed/__init__.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/seed/cli.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/seed/executor.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/seed/template.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/selftest.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/smoke.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/step.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/steps.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/store.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/live_tests/workflow_dsl.py +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/setup.cfg +0 -0
- {hap_cli-0.8.9/skills → hap_cli-0.8.10/skills/cli}/hap-cli-app-editor/scripts/editspec/component.schema.json +0 -0
- {hap_cli-0.8.9/skills → hap_cli-0.8.10/skills/cli}/hap-cli-app-editor/scripts/editspec/custom-action.schema.json +0 -0
- {hap_cli-0.8.9/skills → hap_cli-0.8.10/skills/cli}/hap-cli-app-editor/scripts/editspec/envelope.schema.json +0 -0
- {hap_cli-0.8.9/skills → hap_cli-0.8.10/skills/cli}/hap-cli-app-editor/scripts/editspec/field.schema.json +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/INDEX.json +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/add_member_to_role.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/batch_delete_records.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/create_optionset.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/create_role.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/delete_optionset.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/delete_record.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/delete_role.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/delete_worksheet.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_app_info.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_app_knowledge_list.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_app_worksheets_list.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_optionset_list.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_details.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_discussions.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_list.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_logs.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_pivot_data.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_relations.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_share_link.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_regions.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_role_details.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/get_role_list.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/knowledge_search.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/leave_all_roles.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/remove_member_from_role.yaml +0 -0
- {hap_cli-0.8.9 → hap_cli-0.8.10}/sources/v3-api-schema/update_optionset.yaml +0 -0
|
@@ -15,4 +15,4 @@ recursive-include hap_cli/locale *.json
|
|
|
15
15
|
# edit-spec schemas are canonical in the hap-cli-app-editor skill; ship them
|
|
16
16
|
# in the sdist so setup.py's build step can mirror them into
|
|
17
17
|
# hap_cli/core/editor/editspec/ for the ``hap app-editor`` runtime loader.
|
|
18
|
-
recursive-include skills/hap-cli-app-editor/scripts/editspec *.json
|
|
18
|
+
recursive-include skills/cli/hap-cli-app-editor/scripts/editspec *.json
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"""CLI commands for building a whole HAP app from a design document
|
|
2
|
+
(``hap app-creator``).
|
|
3
|
+
|
|
4
|
+
Thin Click layer over the app-creator engine in
|
|
5
|
+
``hap_cli.core.app_creator``: validate a design locally, build the whole
|
|
6
|
+
app end-to-end, merge split design parts, and seed sample data. The engine
|
|
7
|
+
is an ID-free, logical-name design compiler — it turns one design document
|
|
8
|
+
into a real app (worksheets, views, roles, workflows, pages, AI assistants)
|
|
9
|
+
and captures every created id beside the design file.
|
|
10
|
+
|
|
11
|
+
Each subcommand is a thin wrapper: it reconstructs the argument list the
|
|
12
|
+
engine entry point expects and delegates, propagating the engine's exit
|
|
13
|
+
code. The engine streams its own progress and writes a run report next to
|
|
14
|
+
the design document; that rich console output IS the command's output, so
|
|
15
|
+
these commands are human-oriented and do not reshape their result for
|
|
16
|
+
``--json`` mode. (Every call the engine makes back into the ``hap`` CLI is
|
|
17
|
+
its own isolated ``--json`` invocation — see ``core/app_creator/hap.py``.)
|
|
18
|
+
"""
|
|
19
|
+
import click
|
|
20
|
+
|
|
21
|
+
from hap_cli.core.app_creator import cleanup as cleanup_mod
|
|
22
|
+
from hap_cli.core.app_creator import merge as merge_mod
|
|
23
|
+
from hap_cli.core.app_creator import smoke as build_mod
|
|
24
|
+
from hap_cli.core.app_creator import validate as validate_mod
|
|
25
|
+
from hap_cli.core.app_creator.seed import cli as seed_cli
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@click.group("app-creator", help="Build a complete HAP app from a design "
|
|
29
|
+
"document — validate, build, and seed.")
|
|
30
|
+
def app_creator():
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@app_creator.command("validate")
|
|
35
|
+
@click.argument("designs", nargs=-1, required=True,
|
|
36
|
+
type=click.Path(exists=True, dir_okay=False))
|
|
37
|
+
def app_creator_validate(designs):
|
|
38
|
+
"""Validate one or more design documents locally before building.
|
|
39
|
+
|
|
40
|
+
Checks structure (required fields, enums, types, relation display
|
|
41
|
+
modes) and confirms every icon is a real catalogue icon. Multiple
|
|
42
|
+
files are merged into one document first, so cross-file references by
|
|
43
|
+
logical name are checked too. No app is created.
|
|
44
|
+
"""
|
|
45
|
+
raise SystemExit(validate_mod.main(list(designs)))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@app_creator.command("build")
|
|
49
|
+
@click.argument("designs", nargs=-1, required=True,
|
|
50
|
+
type=click.Path(exists=True, dir_okay=False))
|
|
51
|
+
def app_creator_build(designs):
|
|
52
|
+
"""Build a whole app end-to-end from one or more design documents.
|
|
53
|
+
|
|
54
|
+
Runs once, start to finish: multiple files are merged first, then the
|
|
55
|
+
app and all its elements are created against your current organization.
|
|
56
|
+
A step that fails mid-run is recorded and the build keeps going; the
|
|
57
|
+
created app is kept. Prints the new app id and writes a run report next
|
|
58
|
+
to the design document.
|
|
59
|
+
"""
|
|
60
|
+
raise SystemExit(build_mod.main(list(designs)))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@app_creator.command("merge")
|
|
64
|
+
@click.argument("parts", nargs=-1, required=True,
|
|
65
|
+
type=click.Path(exists=True, dir_okay=False))
|
|
66
|
+
@click.option("--out", "out", required=True,
|
|
67
|
+
type=click.Path(dir_okay=False),
|
|
68
|
+
help="Path to write the merged design document.")
|
|
69
|
+
def app_creator_merge(parts, out):
|
|
70
|
+
"""Merge several design parts into one combined design document.
|
|
71
|
+
|
|
72
|
+
Validates the combined document as a whole before writing it. Use this
|
|
73
|
+
when you want the merged file saved to disk; build and validate already
|
|
74
|
+
accept multiple parts directly.
|
|
75
|
+
"""
|
|
76
|
+
raise SystemExit(merge_mod.main([*parts, "--out", out]))
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@app_creator.command("seed-template")
|
|
80
|
+
@click.argument("app_id")
|
|
81
|
+
@click.option("--out", "out", type=click.Path(dir_okay=False),
|
|
82
|
+
help="Output path for the fill template "
|
|
83
|
+
"(default: the app's design folder).")
|
|
84
|
+
def app_creator_seed_template(app_id, out):
|
|
85
|
+
"""Emit a sample-data fill template for a built app.
|
|
86
|
+
|
|
87
|
+
Reads the app's live worksheet structure and writes a template listing
|
|
88
|
+
every writable field per worksheet — author your sample data against it,
|
|
89
|
+
then load it with ``seed``.
|
|
90
|
+
"""
|
|
91
|
+
argv = [app_id]
|
|
92
|
+
if out:
|
|
93
|
+
argv += ["--out", out]
|
|
94
|
+
raise SystemExit(seed_cli.template_main(argv))
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
@app_creator.command("seed")
|
|
98
|
+
@click.argument("app_id")
|
|
99
|
+
@click.argument("data_file", required=False,
|
|
100
|
+
type=click.Path(exists=True, dir_okay=False))
|
|
101
|
+
@click.option("--trigger-workflow", is_flag=True, default=False,
|
|
102
|
+
help="Fire workflows on each created record (off by default).")
|
|
103
|
+
def app_creator_seed(app_id, data_file, trigger_workflow):
|
|
104
|
+
"""Load authored sample data into a built app.
|
|
105
|
+
|
|
106
|
+
Writes records worksheet by worksheet in dependency order, resolves
|
|
107
|
+
cross-record references, and records the created row ids. Defaults to
|
|
108
|
+
the sample-data file in the app's design folder.
|
|
109
|
+
"""
|
|
110
|
+
argv = [app_id]
|
|
111
|
+
if data_file:
|
|
112
|
+
argv.append(data_file)
|
|
113
|
+
if trigger_workflow:
|
|
114
|
+
argv.append("--trigger-workflow")
|
|
115
|
+
raise SystemExit(seed_cli.seed_main(argv))
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
@app_creator.command("cleanup")
|
|
119
|
+
@click.argument("app_id")
|
|
120
|
+
@click.option("--destroy", is_flag=True, default=False,
|
|
121
|
+
help="Also delete the local design files (full removal); "
|
|
122
|
+
"by default they are kept.")
|
|
123
|
+
@click.option("--yes", "-y", is_flag=True, default=False,
|
|
124
|
+
help="Skip the confirmation prompt.")
|
|
125
|
+
def app_creator_cleanup(app_id, destroy, yes):
|
|
126
|
+
"""Delete a built app and archive its captured artifacts.
|
|
127
|
+
|
|
128
|
+
Deletes the app from your organization. By default the local design
|
|
129
|
+
files are kept (only generated artifacts are archived) so the app can
|
|
130
|
+
be rebuilt later; pass ``--destroy`` to remove the design folder too.
|
|
131
|
+
"""
|
|
132
|
+
argv = [app_id]
|
|
133
|
+
if destroy:
|
|
134
|
+
argv.append("--destroy")
|
|
135
|
+
if yes:
|
|
136
|
+
argv.append("--yes")
|
|
137
|
+
raise SystemExit(cleanup_mod.main(argv))
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""Vendored, stdlib-only copies of the two hap_cli helpers the build
|
|
2
|
+
pipeline needs to construct field-control wire payloads locally.
|
|
3
|
+
|
|
4
|
+
The published skill must NOT depend on the ``hap_cli`` Python package being
|
|
5
|
+
importable — it may only shell out to the ``hap`` binary and run its own
|
|
6
|
+
bundled files. These modules are byte-faithful copies of
|
|
7
|
+
``hap_cli/core/control_type_codes.py`` and
|
|
8
|
+
``hap_cli/core/worksheet_templates.py`` with their one cross-module import
|
|
9
|
+
made relative. Keep them in sync if the upstream wire format changes.
|
|
10
|
+
"""
|