@shundoo-ai/dsh-cosmic 1.0.19 → 1.0.21
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.
- package/cordis.patch.yml +5 -5
- package/package.json +1 -1
- package/skills/cosmic-build/CHANGELOG.md +4 -0
- package/skills/cosmic-build/LOCAL-PATCHES.md +91 -40
- package/skills/cosmic-build/SKILL.md +46 -13
- package/skills/cosmic-build/assets/platform-report-filters/TypedReportFilterFields.java +169 -0
- package/skills/cosmic-build/assets/platform-report-filters/platform.patch +98 -0
- package/skills/cosmic-build/assets/report-algo-benchmark/ReportAlgoBenchmark.java +48 -0
- package/skills/cosmic-build/assets/report-algo-benchmark/ReportBenchmarkLogFactory.java +7 -0
- package/skills/cosmic-build/examples/java-rules/CosmicEntryQuery.java +26 -0
- package/skills/cosmic-build/examples/java-rules/CosmicReportAggregation.java +35 -0
- package/skills/cosmic-build/examples/java-rules/CosmicReportFilters.java +77 -0
- package/skills/cosmic-build/examples/java-rules/CosmicTimeAdapter.java +25 -0
- package/skills/cosmic-build/examples/java-rules/CosmicTimeAdapterCheck.java +26 -0
- package/skills/cosmic-build/knowledge/cosmic/platform/api/algo/GroupbyDataSet.md +47 -0
- package/skills/cosmic-build/knowledge/cosmic/platform/api/entity/report/FilterInfo.md +12 -12
- package/skills/cosmic-build/knowledge/cosmic/platform/api/entity/report/FilterItemInfo.md +2 -0
- package/skills/cosmic-build/knowledge/cosmic/platform/form-plugin.md +2 -4
- package/skills/cosmic-build/knowledge/cosmic/platform/java-type-contracts.md +11 -2
- package/skills/cosmic-build/knowledge/cosmic/platform/list-plugin.md +18 -14
- package/skills/cosmic-build/knowledge/cosmic/platform/operation-plugin.md +4 -4
- package/skills/cosmic-build/knowledge/cosmic/platform/reportlistdata-plugin.md +17 -9
- package/skills/cosmic-build/knowledge/cosmic/platform/scenes/operation/cross-entity-aggregate-writeback.md +2 -0
- package/skills/cosmic-build/knowledge/cosmic/platform/scenes/operation/pre-post-operation.md +15 -7
- package/skills/cosmic-build/knowledge/cosmic/platform/sdk/sdk-algo.md +24 -68
- package/skills/cosmic-build/knowledge/cosmic/platform/workflow-plugin.md +2 -7
- package/skills/cosmic-build/references/application-context.md +35 -1
- package/skills/cosmic-build/references/common-reference.md +1 -1
- package/skills/cosmic-build/references/compile-guide.md +55 -68
- package/skills/cosmic-build/references/delivery.md +59 -7
- package/skills/cosmic-build/references/execution-contract.md +38 -0
- package/skills/cosmic-build/references/form-discovery.md +7 -1
- package/skills/cosmic-build/references/java-plugin-delivery.md +32 -162
- package/skills/cosmic-build/references/operation-dispatch.md +17 -0
- package/skills/cosmic-build/references/plugin-handoff-input.md +131 -0
- package/skills/cosmic-build/references/plugin-runtime-routing.md +1 -1
- package/skills/cosmic-build/references/report-filter-contract.md +78 -0
- package/skills/cosmic-build/references/sdk-inspection.md +23 -0
- package/skills/cosmic-build/schemas/data-model-authoring.schema.json +2 -3
- package/skills/cosmic-build/scripts/_http_client.py +55 -55
- package/skills/cosmic-build/scripts/appconfig_load.py +2 -2
- package/skills/cosmic-build/scripts/apply_report_filter_extension.py +39 -0
- package/skills/cosmic-build/scripts/bootstrap_cosmic_context.py +37 -2
- package/skills/cosmic-build/scripts/compile_plugin_source.py +279 -156
- package/skills/cosmic-build/scripts/execution_binding.py +40 -0
- package/skills/cosmic-build/scripts/inspect_platform_sdk.py +169 -0
- package/skills/cosmic-build/scripts/kd_api.py +23 -22
- package/skills/cosmic-build/scripts/kd_auth.py +1 -1
- package/skills/cosmic-build/scripts/kd_env_loader.py +19 -10
- package/skills/cosmic-build/scripts/kd_token_cache.py +2 -2
- package/skills/cosmic-build/scripts/kingscript_sdk_sync.py +350 -0
- package/skills/cosmic-build/scripts/kingscript_source_gate.py +11 -8
- package/skills/cosmic-build/scripts/platform_api_contract.py +246 -11
- package/skills/cosmic-build/scripts/plugin_corpus/build_index.py +403 -0
- package/skills/cosmic-build/scripts/plugin_corpus/jvm_classfile.py +281 -0
- package/skills/cosmic-build/scripts/plugin_corpus/measure_api_usage.py +446 -0
- package/skills/cosmic-build/scripts/plugin_source_gate.py +48 -7
- package/skills/cosmic-build/scripts/plugin_target_sdk.py +45 -0
- package/skills/cosmic-build/scripts/prepare_plugin_handoff.py +493 -47
- package/skills/cosmic-build/scripts/preview_url.py +35 -6
- package/skills/cosmic-build/scripts/query_plugin_handoff.py +250 -0
- package/skills/cosmic-build/scripts/register_plugins.py +28 -2
- package/skills/cosmic-build/scripts/render_output_cards.py +42 -9
- package/skills/cosmic-build/scripts/report_algo_benchmark.py +46 -0
- package/skills/cosmic-build/scripts/run.py +2 -2
- package/skills/cosmic-build/scripts/sync_generated_locale_assets.py +43 -0
- package/skills/cosmic-build/scripts/test/fixtures/ReportSdkCheck.java +64 -0
- package/skills/cosmic-build/scripts/test/fixtures/java_context_booking_native.json +541 -0
- package/skills/cosmic-build/scripts/test/test_add_rule_business_contract.py +85 -14
- package/skills/cosmic-build/scripts/test/test_batch5_drift_governance.py +12 -3
- package/skills/cosmic-build/scripts/test/test_build_meta_order.py +0 -16
- package/skills/cosmic-build/scripts/test/test_cli_continuation.py +87 -0
- package/skills/cosmic-build/scripts/test/test_compile_plugin_source.py +224 -3
- package/skills/cosmic-build/scripts/test/test_control_authoring.py +123 -4
- package/skills/cosmic-build/scripts/test/test_cosmic_sdk_examples.py +141 -0
- package/skills/cosmic-build/scripts/test/test_data_model_contract.py +30 -5
- package/skills/cosmic-build/scripts/test/test_delivery_stage_boundary.py +2 -10
- package/skills/cosmic-build/scripts/test/test_dym_sync_background.py +11 -0
- package/skills/cosmic-build/scripts/test/test_dynamic_form_metadata_only_contract.py +59 -1
- package/skills/cosmic-build/scripts/test/test_guide_skeleton_contract.py +87 -43
- package/skills/cosmic-build/scripts/test/test_inspect_platform_sdk.py +71 -0
- package/skills/cosmic-build/scripts/test/test_kd_api.py +67 -19
- package/skills/cosmic-build/scripts/test/test_kingscript_sdk_sync.py +221 -0
- package/skills/cosmic-build/scripts/test/test_kingscript_source_gate.py +10 -0
- package/skills/cosmic-build/scripts/test/test_list_configuration_closure.py +18 -0
- package/skills/cosmic-build/scripts/test/test_long_session_regressions.py +116 -0
- package/skills/cosmic-build/scripts/test/test_mcp_cli.py +524 -0
- package/skills/cosmic-build/scripts/test/test_modeling_input_recovery.py +141 -0
- package/skills/cosmic-build/scripts/test/test_open_world_cli_catalog.py +36 -2
- package/skills/cosmic-build/scripts/test/test_platform_api_contract.py +161 -1
- package/skills/cosmic-build/scripts/test/test_plugin_business_contract.py +91 -0
- package/skills/cosmic-build/scripts/test/test_plugin_corpus.py +195 -0
- package/skills/cosmic-build/scripts/test/test_plugin_handoff.py +346 -1
- package/skills/cosmic-build/scripts/test/test_plugin_target_sdk.py +70 -0
- package/skills/cosmic-build/scripts/test/test_preview_url.py +44 -1
- package/skills/cosmic-build/scripts/test/test_property_batch.py +22 -0
- package/skills/cosmic-build/scripts/test/test_property_input_discovery.py +13 -11
- package/skills/cosmic-build/scripts/test/test_query_plugin_handoff.py +160 -0
- package/skills/cosmic-build/scripts/test/test_register_plugins.py +31 -1
- package/skills/cosmic-build/scripts/test/test_render_output_cards.py +50 -4
- package/skills/cosmic-build/scripts/test/test_report_business_contract.py +27 -0
- package/skills/cosmic-build/scripts/test/test_report_doc_contract_sync.py +5 -4
- package/skills/cosmic-build/scripts/test/test_report_sdk_optimization.py +36 -0
- package/skills/cosmic-build/scripts/test/test_rule_batch_evidence.py +1 -1
- package/skills/cosmic-build/scripts/test/test_rule_domain_contract.py +20 -0
- package/skills/cosmic-build/scripts/test/test_rule_function_formula.py +16 -6
- package/skills/cosmic-build/scripts/test/test_skill_entry_contract.py +1 -0
- package/skills/cosmic-build/scripts/test/test_test_environment.py +45 -0
- package/skills/cosmic-build/scripts/test/test_verify_plugin_loading.py +79 -0
- package/skills/cosmic-build/scripts/test_environment.py +49 -0
- package/skills/cosmic-build/scripts/verify_plugin_loading.py +71 -0
- package/skills/cosmic-build/skills/cosmic-coding-impl/SKILL.md +86 -162
- package/skills/cosmic-build/skills/cosmic-coding-script/ATTRIBUTION.md +1 -1
- package/skills/cosmic-build/skills/cosmic-coding-script/SKILL.md +45 -14
- package/skills/cosmic-build/skills/cosmic-coding-script/references/kwc-controller-authoring.md +6 -0
- package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/README.md +29 -19
- package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/docs//350/204/232/346/234/254SDK.md +3 -4
- package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/indexes/package-index.md +1 -1
- package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/strategy.md +27 -18
- package/skills/cosmic-build/skills/cosmic-meta-api/SKILL.md +11 -17
- package/skills/cosmic-build/skills/cosmic-meta-api/apis/ai_meta.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/apis/app_menu.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/apis/meta_log.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/control-authoring.json +45 -4
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/form-control-traits.json +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/layout-ui.json +18 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/menu-publish.json +8 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/property-batch.json +7 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/property-input-index.json +3 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/report-write-contracts.json +1 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/rule-domain.json +37 -5
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/rule-event-contract.json +24 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/run-build-meta.json +61 -12
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/dropdown-menu.schema.json +69 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/report-write.schema.json +2 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/rule-set.schema.json +1 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/rule-write.schema.json +14 -7
- package/skills/cosmic-build/skills/cosmic-meta-api/docs/api-summary.md +2 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/app-action/SKILL.md +6 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/develop/SKILL.md +1 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/export/SKILL.md +5 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/init/SKILL.md +13 -36
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/pdm/SKILL.md +8 -9
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/pdm/scripts/config.json.example +5 -15
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/reset/SKILL.md +6 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/usage/SKILL.md +20 -148
- package/skills/cosmic-build/skills/cosmic-meta-api/modules/verify/SKILL.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/build_receipts.py +171 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_apps.py +25 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_controls.py +55 -21
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_fields.py +10 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_formactions.py +63 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_forms.py +59 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_listui.py +8 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_metaops.py +36 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_plugins.py +115 -90
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_properties.py +666 -4
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_rules.py +1415 -87
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/commands.py +6 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/config.py +28 -15
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/execution_errors.py +40 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/formatters.py +32 -5
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/property_policy_contract.py +6 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/report_ops.py +113 -17
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/reset.py +3 -3
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/rule_contract.py +107 -26
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/build_meta_order.py +50 -49
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/cosmic_api.py +856 -150
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/field_decorator.py +47 -14
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_build_receipt_resume.py +374 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_cli_failure_contract.py +24 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_creation_identity_boundary.py +4 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_dropdown_menu_contract.py +382 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_existing_form_ui.py +0 -25
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_field_decorator.py +50 -6
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_functional_group_resolution.py +83 -16
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_identity_template_resolution.py +103 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_plugin_contract.py +28 -2
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_readback_derivation.py +22 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_typed_filters.py +65 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_rule_write_closure.py +1041 -15
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_run_batch_post_build_recovery.py +65 -0
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_run_batch_verification_evidence.py +17 -0
- package/skills/cosmic-build/skills/cosmic-meta-knowledge/generation/api-param-checklist.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-knowledge/generation/rule-modeling-guide.md +7 -4
- package/skills/cosmic-build/skills/cosmic-meta-modeling/SKILL.md +61 -13
- package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/app-menu/SKILL.md +8 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/formtemplate/SKILL.md +5 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/formtemplate/dynamic-form-artifact-schema.md +5 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/report/SKILL.md +21 -9
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-entity-graphs.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-storage-constraints.md +5 -3
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-ui-composition.md +6 -3
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/creation-recovery.md +13 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/references/parse-core.md +3 -0
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/data_model_contract.py +6 -1
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/data_model_emit.py +135 -87
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/field_type_registry.py +11 -1
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/isv_resolver.py +1 -3
- package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/report_validator.py +29 -0
- package/skills/cosmic-build/skills/cosmic-meta-modifier/SKILL.md +4 -2
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/context/SKILL.md +2 -2
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/execute/SKILL.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/SKILL.md +5 -4
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/operation-write.md +6 -2
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/validation.md +2 -0
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/SKILL.md +20 -5
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/complex-apis.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/policy-grammar.md +4 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/report-op/SKILL.md +9 -0
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/SKILL.md +61 -4
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/raw-rule-authoring.md +3 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/rule-actions.md +2 -2
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/rule-reference.md +6 -6
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/state.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/unit/SKILL.md +6 -3
- package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/verify/usage-guide.md +4 -4
- package/skills/cosmic-build/skills/cosmic-meta-modifier/references/list-filter-modification.md +4 -1
- package/skills/cosmic-build/skills/cosmic-meta-ui/SKILL.md +9 -1
- package/skills/cosmic-build/skills/cosmic-meta-ui/modules/button/SKILL.md +3 -0
- package/skills/cosmic-build/skills/mcp-server/SKILL.md +210 -0
- package/skills/cosmic-build/skills/mcp-server/scripts/mcp_cli.py +431 -0
- package/skills/cosmic-build/skills/openapi-gen/SKILL.md +3 -3
- package/skills/cosmic-build/skills/openapi-gen/scripts/api/gen_runner.py +2 -2
- package/skills/cosmic-dev-best-practices/references/bill-dev-convention.md +19 -9
- package/skills/cosmic-dev-best-practices/references/cosmic-meta-api.md +14 -11
- package/skills/cosmic-dev-best-practices/references/design-examples/basedata-design-example.md +1 -1
- package/skills/cosmic-dev-best-practices/references/design-examples/bill-design-example.md +1 -1
- package/skills/cosmic-dev-best-practices/references/elements/AssistantField.md +1 -1
- package/skills/cosmic-dev-best-practices/references/elements/BasedataField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/BasedataPropField.md +3 -3
- package/skills/cosmic-dev-best-practices/references/elements/CreaterField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/CurrencyField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/CustomerField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/FlexField.md +1 -1
- package/skills/cosmic-dev-best-practices/references/elements/MaterielField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/OrgField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/SupplierField.md +2 -2
- package/skills/cosmic-dev-best-practices/references/elements/UnitField.md +1 -1
- package/skills/cosmic-dev-best-practices/references/elements/UserField.md +3 -3
- package/skills/cosmic-dev-best-practices/references/elements/common-field-property-conventions.md +16 -11
- package/skills/cosmic-dev-best-practices/references/layout-control-convention.md +5 -4
- package/skills/erp-analysis/references/delivery-contract.md +4 -2
- package/skills/erp-analysis/templates/AGENTS.template.md +1 -1
- package/skills/cosmic-build/skills/cosmic-meta-api/scripts/.dsh/cosmic/.kd/config.json +0 -21
|
@@ -66,6 +66,24 @@ def _entity_type(*property_keys: str) -> dict:
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
|
|
69
|
+
def test_list_baseline_failure_preserves_failed_api_response():
|
|
70
|
+
failure = {"status": False, "errorCode": "406",
|
|
71
|
+
"message": "FullMetadataApiService not find"}
|
|
72
|
+
with mock.patch.object(LISTUI, "_resolve_form_id", return_value="FORM-ID"), \
|
|
73
|
+
mock.patch.object(LISTUI, "do_list_elements", return_value={"status": True, "data": []}), \
|
|
74
|
+
mock.patch.object(LISTUI, "do_get_form_schema", return_value=_schema([])), \
|
|
75
|
+
mock.patch.object(LISTUI, "do_load_full_metadata", return_value=failure), \
|
|
76
|
+
mock.patch.object(LISTUI, "do_get_entity_type", return_value=_entity_type("number")), \
|
|
77
|
+
mock.patch.object(METAOPS, "do_modify_meta") as write:
|
|
78
|
+
result = LISTUI.do_configure_list(
|
|
79
|
+
{}, "token", "demo", {"columns": [{"fieldKey": "number"}]},
|
|
80
|
+
)
|
|
81
|
+
assert result["errorCode"] == "LIST_CONFIGURATION_BASELINE_FAILED"
|
|
82
|
+
assert result["data"]["failedReads"] == {"loadFullMetadata": failure}
|
|
83
|
+
assert result["data"]["writeAttempted"] is False
|
|
84
|
+
write.assert_not_called()
|
|
85
|
+
|
|
86
|
+
|
|
69
87
|
def test_runtime_entity_keys_include_nested_entry_properties() -> None:
|
|
70
88
|
result = {
|
|
71
89
|
"status": True,
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""Regression cases from batch creation and reference-field repair, without platform writes."""
|
|
2
|
+
import json
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
import subprocess
|
|
5
|
+
import sys
|
|
6
|
+
from unittest.mock import patch
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
|
|
10
|
+
ROOT = Path(__file__).resolve().parents[2]
|
|
11
|
+
SCRIPTS = ROOT / "skills/cosmic-meta-api/scripts"
|
|
12
|
+
sys.path.insert(0, str(SCRIPTS))
|
|
13
|
+
from build_meta_order import collect_build_dependencies, partition_build_wave, plan_build_waves, validate_ref_bill_owner
|
|
14
|
+
from _core import cmd_formactions
|
|
15
|
+
from _core.cmd_fields import _qf_resolve_target_entity
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_failed_unrelated_root_does_not_block_healthy_descendants(tmp_path):
|
|
19
|
+
paths = []
|
|
20
|
+
for name, target in [("customer", None), ("broken", None), ("invoice", "customer"),
|
|
21
|
+
("blocked", "broken"), ("payment", "invoice"), ("blocked_child", "blocked")]:
|
|
22
|
+
path = tmp_path / (name + ".json")
|
|
23
|
+
path.write_text(json.dumps({"entities": [{"type": "BillEntity", "bizName": name,
|
|
24
|
+
"fields": [{"dataType": "RefBillField", "refBillTargetNumber": target}] if target else []}]}))
|
|
25
|
+
paths.append(str(path))
|
|
26
|
+
graph = collect_build_dependencies(paths)
|
|
27
|
+
waves = plan_build_waves(paths, dependencies=graph)
|
|
28
|
+
succeeded = {paths[0]}
|
|
29
|
+
ready, blocked = partition_build_wave(waves[1], graph, succeeded)
|
|
30
|
+
assert ready == [paths[2]]
|
|
31
|
+
assert blocked[0]["blockedByArtifacts"] == [paths[1]]
|
|
32
|
+
assert blocked[0]["writeAttempted"] is False
|
|
33
|
+
succeeded.update(ready)
|
|
34
|
+
ready, blocked = partition_build_wave(waves[2], graph, succeeded)
|
|
35
|
+
assert ready == [paths[4]]
|
|
36
|
+
assert blocked[0]["blockedByArtifacts"] == [paths[3]]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@pytest.mark.parametrize("entity_type, fails", [("BaseEntity", True), ("BillEntity", False)])
|
|
40
|
+
def test_unsupported_deferred_owner_fails_before_shell_creation(entity_type, fails):
|
|
41
|
+
artifact = {"entities": [{"type": entity_type, "fields": [{"dataType": "RefBillField"}]}]}
|
|
42
|
+
assert bool(validate_ref_bill_owner(artifact)) is fails
|
|
43
|
+
assert artifact["entities"][0]["fields"] # preflight does not remove the failed field
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@pytest.mark.parametrize("locale", ["", ".locales/zh"])
|
|
47
|
+
def test_reference_batch_validates_offline_in_both_locales(tmp_path, locale):
|
|
48
|
+
fields = [{"name": "客户", "bizWord": "customer", "fieldType": "BasedataField",
|
|
49
|
+
"reference": {"mode": "platform", "formNumber": "sample_customer"}},
|
|
50
|
+
{"name": "类别", "bizWord": "category", "fieldType": "AssistantField", "asstTypeId": "12345"}]
|
|
51
|
+
entry = ROOT / locale / "skills/cosmic-meta-api/scripts/cosmic_api.py"
|
|
52
|
+
result = subprocess.run([sys.executable, str(entry), "--stdout", "addField", "--form-name", "offline",
|
|
53
|
+
"--project-root", str(tmp_path), "--fields", json.dumps(fields), "--validate-only"], capture_output=True, text=True)
|
|
54
|
+
assert result.returncode == 0, result.stdout + result.stderr
|
|
55
|
+
assert json.loads(result.stdout)["data"]["validated"] == 2
|
|
56
|
+
assert "authenticated" not in result.stderr
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
@pytest.mark.parametrize("locale", ["", ".locales/zh"])
|
|
60
|
+
def test_condition_aliases_parse_before_platform_access(locale):
|
|
61
|
+
entry = ROOT / locale / "skills/cosmic-meta-api/scripts/cosmic_api.py"
|
|
62
|
+
result = subprocess.run([sys.executable, str(entry), "--stdout", "setMustInputCondition",
|
|
63
|
+
"--form-name", "offline", "--element", "目标", "--condition-field", "来源", "--operator", "equals"],
|
|
64
|
+
capture_output=True, text=True)
|
|
65
|
+
receipt = json.loads(result.stdout)
|
|
66
|
+
assert receipt["errorCode"] == "CLI_ARGUMENT_ERROR"
|
|
67
|
+
assert receipt["message"] == "--value is required with this --operator"
|
|
68
|
+
assert "authenticated" not in result.stderr
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def test_batch_forwards_same_reference_options_as_single_field():
|
|
72
|
+
prepared = {"status": True, "data": {"phase": "ready", "success": True}}
|
|
73
|
+
fields = [{"name": "客户", "bizWord": "customer", "fieldType": "BasedataField", "basedata": "sample_customer"}]
|
|
74
|
+
with patch.object(cmd_formactions, "do_add_field", return_value={"status": True, "data": {"verified": True}}) as write:
|
|
75
|
+
result = cmd_formactions.do_add_fields({}, "token", "form", fields, _prepared=prepared)
|
|
76
|
+
assert result["status"] is True
|
|
77
|
+
assert write.call_args.kwargs["basedata"] == "sample_customer"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def test_invalid_later_reference_prevents_all_batch_writes():
|
|
81
|
+
fields = [{"name": "备注", "bizWord": "note"}, {"name": "引用", "bizWord": "ref",
|
|
82
|
+
"fieldType": "BasedataField", "reference": {"mode": "local", "formNumber": "missing"}}]
|
|
83
|
+
with patch.object(cmd_formactions, "do_prepare_form_mutation_target") as prepare:
|
|
84
|
+
with pytest.raises(ValueError, match="reference requires"):
|
|
85
|
+
cmd_formactions.do_add_fields({}, "token", "form", fields)
|
|
86
|
+
prepare.assert_not_called()
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def test_entity_selector_accepts_exact_key_without_fuzzy_matching():
|
|
90
|
+
rows = [{"entityKey": "sample_lines", "entityName": "明细", "entityType": "EntryEntity"}]
|
|
91
|
+
assert _qf_resolve_target_entity(None, False, "sample_lines", rows, "form")[0] == "sample_lines"
|
|
92
|
+
rows.append({"entityKey": "other", "entityName": "sample_lines", "entityType": "EntryEntity"})
|
|
93
|
+
assert _qf_resolve_target_entity(None, False, "sample_lines", rows, "form")[1]["status"] == "ambiguous"
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def test_delete_dependency_finds_rule_actions_and_ignores_descriptions():
|
|
97
|
+
metadata = {"Rules": [{"_Type_": "BizRule", "Id": "rule-id", "Description": "sample_unrelated",
|
|
98
|
+
"TrueActions": [{"_Type_": "TakeBasePropertyAction", "Expression": [{"_Type_": "TakeValueId",
|
|
99
|
+
"TargetField": "sample_level", "SrcField": "sample_parent.level"}]}]}]}
|
|
100
|
+
result = cmd_formactions.rule_delete_dependencies(metadata, [{"fieldKey": "sample_level"}, {"fieldKey": "sample_unrelated"}])
|
|
101
|
+
assert len(result) == 1 and result[0]["ruleId"] == "rule-id"
|
|
102
|
+
assert result[0]["targetField"] == "sample_level"
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def test_deleting_field_used_by_rule_stops_before_mutation():
|
|
106
|
+
prepared = {"status": True, "data": {"phase": "ready", "success": True,
|
|
107
|
+
"editableTarget": {"formId": "id", "formNumber": "form", "appRoot": "/app/test"}}}
|
|
108
|
+
listed = {"status": True, "data": [{"key": "sample_level", "name": "等级", "parentKey": "form"}]}
|
|
109
|
+
metadata = {"status": True, "data": {"Rules": [{"_Type_": "BizRule", "Id": "rule", "TriggerField": "sample_level"}]}}
|
|
110
|
+
with patch.object(cmd_formactions, "do_prepare_form_mutation_target", return_value=prepared), \
|
|
111
|
+
patch.object(cmd_formactions, "do_list_elements", return_value=listed), \
|
|
112
|
+
patch.object(cmd_formactions, "do_load_full_metadata", return_value=metadata), \
|
|
113
|
+
patch.object(cmd_formactions, "do_modify_meta") as write:
|
|
114
|
+
result = cmd_formactions.do_remove_field({}, "token", "form", "等级")
|
|
115
|
+
assert result["errorCode"] == "FIELD_DELETE_DEPENDENCY_BLOCKED"
|
|
116
|
+
write.assert_not_called()
|