hap-cli 0.8.8__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.8 → hap_cli-0.8.10}/MANIFEST.in +1 -1
- {hap_cli-0.8.8 → hap_cli-0.8.10}/PKG-INFO +1 -1
- {hap_cli-0.8.8 → 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.8 → hap_cli-0.8.10}/hap_cli/commands/chart_cmd.py +7 -5
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/chatbot_cmd.py +2 -1
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/record_cmd.py +6 -3
- 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.8 → hap_cli-0.8.10}/hap_cli/core/chart.py +19 -1
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/chatbot.py +46 -9
- hap_cli-0.8.10/hap_cli/core/control_type_codes.py +210 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/__init__.py +1 -1
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/editspec.py +4 -4
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/record.py +90 -14
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/workflow_node_dsl.py +14 -0
- {hap_cli-0.8.8 → 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.8 → hap_cli-0.8.10}/hap_cli/tests/test_chart.py +78 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_core.py +148 -14
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli.egg-info/PKG-INFO +1 -1
- {hap_cli-0.8.8 → 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.8 → hap_cli-0.8.10}/setup.py +6 -1
- {hap_cli-0.8.8 → hap_cli-0.8.10}/README.md +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/app_live_tests/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/app_live_tests/__main__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/app_live_tests/config.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/app_live_tests/harness.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/app_live_tests/smoke.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/app_live_tests/state.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/README.md +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/README_CN.md +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/__main__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/app_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/app_editor_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/auth_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/calendar_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/chat_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/config_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/contact_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/department_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/group_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/icon_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/instance_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/node_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/optionset_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/page_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/post_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/region_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/role_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/update_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/upload_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/v3_registry.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/workflow_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/commands/worksheet_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/context.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/action_spec_adapter.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/app.py +0 -0
- {hap_cli-0.8.8/live_tests → hap_cli-0.8.10/hap_cli/core/app_creator}/__init__.py +0 -0
- {hap_cli-0.8.8/hap_cli/core → hap_cli-0.8.10/hap_cli/core/app_creator/_hapmeta}/control_type_codes.py +0 -0
- {hap_cli-0.8.8/live_tests → hap_cli-0.8.10/hap_cli/core/app_creator}/recording/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/auth.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/calendar_mod.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/chat.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/cli_access.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/contact.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/department.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/_hapmeta/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/_hapmeta/control_type_codes.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/apply.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/componentlower.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/errors.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/fieldlower.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/jsonschema_mini.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/models.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/ops.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/planner.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/editor/reader.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/field_normalizer.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/field_spec_adapter.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/filter_translator.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/flow_node.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/global_meta.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/group.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/icon_index.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/instance.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/logger.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/optionset.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/page.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/post.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/response_crypto.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/role.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/role_perm_builder.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/session.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/token_crypto.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/update.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/upload.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/v3/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/v3/dispatcher.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/v3/render.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/v3/schema.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/view_spec_adapter.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/workflow.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/worksheet.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/core/worksheet_templates.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/i18n.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/locale/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/locale/messages.json +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/locale/messages.schema.json +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/conftest.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_app_editor.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_app_export_usage.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_auth_prerelease.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_bug_036430.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_cli_access.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_config_cmd.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_destructive_confirm_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_full_e2e.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_global_meta.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_i18n.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_instance_history_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_approval.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_approval_actions.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_calendar.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_destructive.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_misc.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_post.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_social.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_v3.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_workflow.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_integration_worksheet_extra.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_multi_profile.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_org_approval_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_org_id_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_org_id_docs.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_parameter_conventions.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_parameter_mapping_registry.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_record_batch_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_record_field_alias.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_record_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_semantic_types_registry.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_update.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_v3_api_schema_loader.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_v3_dispatcher.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_v3_registry_coverage.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_v3_session.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_v3_yaml_translation.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_workflow_list_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_workflow_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_worksheet_crud_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/tests/test_worksheet_v3_semantic_cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/utils/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/utils/formatting.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/utils/options.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli/utils/parameter_mapping.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli.egg-info/dependency_links.txt +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli.egg-info/entry_points.txt +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli.egg-info/requires.txt +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/hap_cli.egg-info/top_level.txt +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/__main__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/_wftest.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/charts.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/cleanup.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/compiler.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/config.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/errors.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/executor.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/fields.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/hap.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/recording/console.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/recording/jsonl.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/recording/mirror.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/recording/report.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/schema.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/seed/__init__.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/seed/cli.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/seed/executor.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/seed/template.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/selftest.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/smoke.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/step.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/steps.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/store.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/live_tests/workflow_dsl.py +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/setup.cfg +0 -0
- {hap_cli-0.8.8/skills → hap_cli-0.8.10/skills/cli}/hap-cli-app-editor/scripts/editspec/component.schema.json +0 -0
- {hap_cli-0.8.8/skills → hap_cli-0.8.10/skills/cli}/hap-cli-app-editor/scripts/editspec/custom-action.schema.json +0 -0
- {hap_cli-0.8.8/skills → hap_cli-0.8.10/skills/cli}/hap-cli-app-editor/scripts/editspec/envelope.schema.json +0 -0
- {hap_cli-0.8.8/skills → hap_cli-0.8.10/skills/cli}/hap-cli-app-editor/scripts/editspec/field.schema.json +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/INDEX.json +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/add_member_to_role.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/batch_delete_records.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/create_optionset.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/create_role.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/delete_optionset.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/delete_record.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/delete_role.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/delete_worksheet.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_app_info.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_app_knowledge_list.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_app_worksheets_list.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_optionset_list.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_details.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_discussions.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_list.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_logs.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_pivot_data.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_relations.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_record_share_link.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_regions.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_role_details.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/get_role_list.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/knowledge_search.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/leave_all_roles.yaml +0 -0
- {hap_cli-0.8.8 → hap_cli-0.8.10}/sources/v3-api-schema/remove_member_from_role.yaml +0 -0
- {hap_cli-0.8.8 → 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))
|
|
@@ -22,12 +22,14 @@ def chart():
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
# Report-type enum values used by the MingDAO statistics module. The CLI
|
|
25
|
-
# accepts the integer directly so users can pass uncommon types
|
|
26
|
-
#
|
|
25
|
+
# accepts the integer directly so users can pass uncommon types without us
|
|
26
|
+
# having to enumerate every one. Note: there is NO type 4 — passing 4 is
|
|
27
|
+
# coerced to 10 (number) by the server, so it is omitted here (bug #036584).
|
|
27
28
|
_REPORT_TYPE_HINT = (
|
|
28
|
-
"Chart type (integer).
|
|
29
|
-
"1=column, 2=line, 3=pie,
|
|
30
|
-
"
|
|
29
|
+
"Chart type (integer). Values: "
|
|
30
|
+
"1=column, 2=line, 3=pie, 5=radar, 6=funnel, 7=dual-axis, 8=pivot, "
|
|
31
|
+
"9=region-map, 10=number, 11=bidirectional-bar, 12=scatter, "
|
|
32
|
+
"13=word-cloud, 14=gauge, 15=progress, 16=ranking, 17=world-map."
|
|
31
33
|
)
|
|
32
34
|
|
|
33
35
|
|
|
@@ -120,7 +120,8 @@ def chatbot_rename(ctx, app_id, chatbot_id, section_id, name, icon):
|
|
|
120
120
|
@click.option("--app-id", "-a", required=True, help="Application ID")
|
|
121
121
|
@org_id_option()
|
|
122
122
|
@click.option("--section-id", default="",
|
|
123
|
-
help="Section/group the assistant lives under.
|
|
123
|
+
help="Section/group the assistant lives under. Auto-detected "
|
|
124
|
+
"when omitted.")
|
|
124
125
|
@click.option("--permanent", is_flag=True, default=False,
|
|
125
126
|
help="Delete permanently instead of moving to the recycle bin.")
|
|
126
127
|
@click.option("--yes", "-y", is_flag=True, help="Skip confirmation")
|
|
@@ -156,9 +156,12 @@ def record_update(ctx, worksheet_id, row_id, field, fields_json, no_workflow):
|
|
|
156
156
|
Pass values either as repeated -f CONTROL_ID=VALUE pairs or as one
|
|
157
157
|
--fields-json array.
|
|
158
158
|
|
|
159
|
-
A sub-table value is
|
|
160
|
-
|
|
161
|
-
|
|
159
|
+
A sub-table value is a list of child rows, each a dict keyed by child
|
|
160
|
+
field name. Updates are incremental: a child row with a "rowid" key
|
|
161
|
+
edits that existing row in place (its id is kept and only the listed
|
|
162
|
+
fields change), a child row without a "rowid" adds a new row, and a
|
|
163
|
+
child row with "_delete": true removes that row. Rows you don't list
|
|
164
|
+
are left untouched. An empty list (or null) clears the sub-table.
|
|
162
165
|
"""
|
|
163
166
|
if field and fields_json:
|
|
164
167
|
raise click.UsageError("Pass exactly one of -f or --fields-json.")
|
|
@@ -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
|
+
"""
|