@shundoo-ai/dsh-cosmic 1.0.18 → 1.0.20

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.
Files changed (246) hide show
  1. package/cordis.patch.yml +21 -43
  2. package/package.json +1 -1
  3. package/skills/cosmic-build/CHANGELOG.md +4 -0
  4. package/skills/cosmic-build/LOCAL-PATCHES.md +76 -40
  5. package/skills/cosmic-build/SKILL.md +46 -13
  6. package/skills/cosmic-build/assets/platform-report-filters/TypedReportFilterFields.java +169 -0
  7. package/skills/cosmic-build/assets/platform-report-filters/platform.patch +98 -0
  8. package/skills/cosmic-build/assets/report-algo-benchmark/ReportAlgoBenchmark.java +48 -0
  9. package/skills/cosmic-build/assets/report-algo-benchmark/ReportBenchmarkLogFactory.java +7 -0
  10. package/skills/cosmic-build/examples/java-rules/CosmicEntryQuery.java +26 -0
  11. package/skills/cosmic-build/examples/java-rules/CosmicReportAggregation.java +35 -0
  12. package/skills/cosmic-build/examples/java-rules/CosmicReportFilters.java +77 -0
  13. package/skills/cosmic-build/examples/java-rules/CosmicTimeAdapter.java +25 -0
  14. package/skills/cosmic-build/examples/java-rules/CosmicTimeAdapterCheck.java +26 -0
  15. package/skills/cosmic-build/knowledge/cosmic/platform/api/algo/GroupbyDataSet.md +47 -0
  16. package/skills/cosmic-build/knowledge/cosmic/platform/api/entity/report/FilterInfo.md +12 -12
  17. package/skills/cosmic-build/knowledge/cosmic/platform/api/entity/report/FilterItemInfo.md +2 -0
  18. package/skills/cosmic-build/knowledge/cosmic/platform/form-plugin.md +2 -4
  19. package/skills/cosmic-build/knowledge/cosmic/platform/java-type-contracts.md +11 -2
  20. package/skills/cosmic-build/knowledge/cosmic/platform/list-plugin.md +18 -14
  21. package/skills/cosmic-build/knowledge/cosmic/platform/operation-plugin.md +4 -4
  22. package/skills/cosmic-build/knowledge/cosmic/platform/reportlistdata-plugin.md +17 -9
  23. package/skills/cosmic-build/knowledge/cosmic/platform/scenes/operation/cross-entity-aggregate-writeback.md +2 -0
  24. package/skills/cosmic-build/knowledge/cosmic/platform/scenes/operation/pre-post-operation.md +15 -7
  25. package/skills/cosmic-build/knowledge/cosmic/platform/sdk/sdk-algo.md +24 -68
  26. package/skills/cosmic-build/knowledge/cosmic/platform/workflow-plugin.md +2 -7
  27. package/skills/cosmic-build/references/application-context.md +35 -1
  28. package/skills/cosmic-build/references/common-reference.md +1 -1
  29. package/skills/cosmic-build/references/compile-guide.md +55 -68
  30. package/skills/cosmic-build/references/delivery.md +59 -7
  31. package/skills/cosmic-build/references/execution-contract.md +38 -0
  32. package/skills/cosmic-build/references/form-discovery.md +7 -1
  33. package/skills/cosmic-build/references/java-plugin-delivery.md +32 -162
  34. package/skills/cosmic-build/references/operation-dispatch.md +17 -0
  35. package/skills/cosmic-build/references/plugin-handoff-input.md +131 -0
  36. package/skills/cosmic-build/references/plugin-runtime-routing.md +1 -1
  37. package/skills/cosmic-build/references/report-filter-contract.md +78 -0
  38. package/skills/cosmic-build/references/sdk-inspection.md +23 -0
  39. package/skills/cosmic-build/schemas/data-model-authoring.schema.json +2 -3
  40. package/skills/cosmic-build/scripts/_http_client.py +55 -55
  41. package/skills/cosmic-build/scripts/appconfig_load.py +2 -2
  42. package/skills/cosmic-build/scripts/apply_report_filter_extension.py +39 -0
  43. package/skills/cosmic-build/scripts/bootstrap_cosmic_context.py +37 -2
  44. package/skills/cosmic-build/scripts/compile_plugin_source.py +279 -156
  45. package/skills/cosmic-build/scripts/execution_binding.py +40 -0
  46. package/skills/cosmic-build/scripts/inspect_platform_sdk.py +169 -0
  47. package/skills/cosmic-build/scripts/kd_api.py +23 -22
  48. package/skills/cosmic-build/scripts/kd_auth.py +1 -1
  49. package/skills/cosmic-build/scripts/kd_env_loader.py +19 -10
  50. package/skills/cosmic-build/scripts/kd_token_cache.py +2 -2
  51. package/skills/cosmic-build/scripts/kingscript_sdk_sync.py +350 -0
  52. package/skills/cosmic-build/scripts/kingscript_source_gate.py +11 -8
  53. package/skills/cosmic-build/scripts/platform_api_contract.py +246 -11
  54. package/skills/cosmic-build/scripts/plugin_corpus/build_index.py +403 -0
  55. package/skills/cosmic-build/scripts/plugin_corpus/jvm_classfile.py +281 -0
  56. package/skills/cosmic-build/scripts/plugin_corpus/measure_api_usage.py +446 -0
  57. package/skills/cosmic-build/scripts/plugin_source_gate.py +48 -7
  58. package/skills/cosmic-build/scripts/plugin_target_sdk.py +45 -0
  59. package/skills/cosmic-build/scripts/prepare_plugin_handoff.py +493 -47
  60. package/skills/cosmic-build/scripts/preview_url.py +35 -6
  61. package/skills/cosmic-build/scripts/query_plugin_handoff.py +250 -0
  62. package/skills/cosmic-build/scripts/register_plugins.py +28 -2
  63. package/skills/cosmic-build/scripts/render_output_cards.py +42 -9
  64. package/skills/cosmic-build/scripts/report_algo_benchmark.py +46 -0
  65. package/skills/cosmic-build/scripts/run.py +2 -2
  66. package/skills/cosmic-build/scripts/sync_generated_locale_assets.py +43 -0
  67. package/skills/cosmic-build/scripts/test/fixtures/ReportSdkCheck.java +64 -0
  68. package/skills/cosmic-build/scripts/test/fixtures/java_context_booking_native.json +541 -0
  69. package/skills/cosmic-build/scripts/test/test_add_rule_business_contract.py +85 -14
  70. package/skills/cosmic-build/scripts/test/test_batch5_drift_governance.py +12 -3
  71. package/skills/cosmic-build/scripts/test/test_build_meta_order.py +0 -16
  72. package/skills/cosmic-build/scripts/test/test_cli_continuation.py +87 -0
  73. package/skills/cosmic-build/scripts/test/test_compile_plugin_source.py +224 -3
  74. package/skills/cosmic-build/scripts/test/test_control_authoring.py +123 -4
  75. package/skills/cosmic-build/scripts/test/test_cosmic_sdk_examples.py +141 -0
  76. package/skills/cosmic-build/scripts/test/test_data_model_contract.py +30 -5
  77. package/skills/cosmic-build/scripts/test/test_delivery_stage_boundary.py +2 -10
  78. package/skills/cosmic-build/scripts/test/test_dym_sync_background.py +11 -0
  79. package/skills/cosmic-build/scripts/test/test_dynamic_form_metadata_only_contract.py +59 -1
  80. package/skills/cosmic-build/scripts/test/test_guide_skeleton_contract.py +87 -43
  81. package/skills/cosmic-build/scripts/test/test_inspect_platform_sdk.py +71 -0
  82. package/skills/cosmic-build/scripts/test/test_kd_api.py +67 -19
  83. package/skills/cosmic-build/scripts/test/test_kingscript_sdk_sync.py +221 -0
  84. package/skills/cosmic-build/scripts/test/test_kingscript_source_gate.py +10 -0
  85. package/skills/cosmic-build/scripts/test/test_list_configuration_closure.py +18 -0
  86. package/skills/cosmic-build/scripts/test/test_long_session_regressions.py +116 -0
  87. package/skills/cosmic-build/scripts/test/test_mcp_cli.py +524 -0
  88. package/skills/cosmic-build/scripts/test/test_modeling_input_recovery.py +141 -0
  89. package/skills/cosmic-build/scripts/test/test_open_world_cli_catalog.py +36 -2
  90. package/skills/cosmic-build/scripts/test/test_platform_api_contract.py +161 -1
  91. package/skills/cosmic-build/scripts/test/test_plugin_business_contract.py +91 -0
  92. package/skills/cosmic-build/scripts/test/test_plugin_corpus.py +195 -0
  93. package/skills/cosmic-build/scripts/test/test_plugin_handoff.py +346 -1
  94. package/skills/cosmic-build/scripts/test/test_plugin_target_sdk.py +70 -0
  95. package/skills/cosmic-build/scripts/test/test_preview_url.py +44 -1
  96. package/skills/cosmic-build/scripts/test/test_property_batch.py +22 -0
  97. package/skills/cosmic-build/scripts/test/test_property_input_discovery.py +13 -11
  98. package/skills/cosmic-build/scripts/test/test_query_plugin_handoff.py +160 -0
  99. package/skills/cosmic-build/scripts/test/test_register_plugins.py +31 -1
  100. package/skills/cosmic-build/scripts/test/test_render_output_cards.py +50 -4
  101. package/skills/cosmic-build/scripts/test/test_report_business_contract.py +27 -0
  102. package/skills/cosmic-build/scripts/test/test_report_doc_contract_sync.py +5 -4
  103. package/skills/cosmic-build/scripts/test/test_report_sdk_optimization.py +36 -0
  104. package/skills/cosmic-build/scripts/test/test_rule_batch_evidence.py +1 -1
  105. package/skills/cosmic-build/scripts/test/test_rule_domain_contract.py +20 -0
  106. package/skills/cosmic-build/scripts/test/test_rule_function_formula.py +16 -6
  107. package/skills/cosmic-build/scripts/test/test_skill_entry_contract.py +1 -0
  108. package/skills/cosmic-build/scripts/test/test_test_environment.py +45 -0
  109. package/skills/cosmic-build/scripts/test/test_verify_plugin_loading.py +79 -0
  110. package/skills/cosmic-build/scripts/test_environment.py +49 -0
  111. package/skills/cosmic-build/scripts/verify_plugin_loading.py +71 -0
  112. package/skills/cosmic-build/skills/cosmic-coding-impl/SKILL.md +86 -162
  113. package/skills/cosmic-build/skills/cosmic-coding-script/ATTRIBUTION.md +1 -1
  114. package/skills/cosmic-build/skills/cosmic-coding-script/SKILL.md +45 -14
  115. package/skills/cosmic-build/skills/cosmic-coding-script/references/kwc-controller-authoring.md +6 -0
  116. package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/README.md +29 -19
  117. package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/docs//350/204/232/346/234/254SDK.md +3 -4
  118. package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/indexes/package-index.md +1 -1
  119. package/skills/cosmic-build/skills/cosmic-coding-script/references/sdk/strategy.md +27 -18
  120. package/skills/cosmic-build/skills/cosmic-meta-api/SKILL.md +11 -17
  121. package/skills/cosmic-build/skills/cosmic-meta-api/apis/ai_meta.md +1 -1
  122. package/skills/cosmic-build/skills/cosmic-meta-api/apis/app_menu.md +1 -1
  123. package/skills/cosmic-build/skills/cosmic-meta-api/apis/meta_log.md +1 -1
  124. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/control-authoring.json +45 -4
  125. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/form-control-traits.json +1 -1
  126. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/layout-ui.json +18 -0
  127. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/menu-publish.json +8 -2
  128. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/property-batch.json +7 -0
  129. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/property-input-index.json +3 -3
  130. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/report-write-contracts.json +1 -0
  131. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/rule-domain.json +37 -5
  132. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/rule-event-contract.json +24 -3
  133. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/cli/run-build-meta.json +61 -12
  134. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/dropdown-menu.schema.json +69 -0
  135. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/report-write.schema.json +2 -1
  136. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/rule-set.schema.json +1 -0
  137. package/skills/cosmic-build/skills/cosmic-meta-api/contracts/schema/rule-write.schema.json +14 -7
  138. package/skills/cosmic-build/skills/cosmic-meta-api/docs/api-summary.md +2 -2
  139. package/skills/cosmic-build/skills/cosmic-meta-api/modules/app-action/SKILL.md +6 -3
  140. package/skills/cosmic-build/skills/cosmic-meta-api/modules/develop/SKILL.md +1 -2
  141. package/skills/cosmic-build/skills/cosmic-meta-api/modules/export/SKILL.md +5 -6
  142. package/skills/cosmic-build/skills/cosmic-meta-api/modules/init/SKILL.md +13 -36
  143. package/skills/cosmic-build/skills/cosmic-meta-api/modules/pdm/SKILL.md +8 -9
  144. package/skills/cosmic-build/skills/cosmic-meta-api/modules/pdm/scripts/config.json.example +5 -15
  145. package/skills/cosmic-build/skills/cosmic-meta-api/modules/reset/SKILL.md +6 -6
  146. package/skills/cosmic-build/skills/cosmic-meta-api/modules/usage/SKILL.md +20 -148
  147. package/skills/cosmic-build/skills/cosmic-meta-api/modules/verify/SKILL.md +1 -1
  148. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/build_receipts.py +171 -0
  149. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_apps.py +25 -6
  150. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_controls.py +55 -21
  151. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_fields.py +10 -3
  152. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_formactions.py +63 -6
  153. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_forms.py +59 -2
  154. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_listui.py +8 -0
  155. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_metaops.py +36 -1
  156. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_plugins.py +115 -90
  157. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_properties.py +666 -4
  158. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/cmd_rules.py +1415 -87
  159. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/commands.py +6 -1
  160. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/config.py +28 -15
  161. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/execution_errors.py +40 -0
  162. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/formatters.py +32 -5
  163. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/property_policy_contract.py +6 -0
  164. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/report_ops.py +113 -17
  165. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/reset.py +3 -3
  166. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/_core/rule_contract.py +107 -26
  167. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/build_meta_order.py +50 -49
  168. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/cosmic_api.py +856 -150
  169. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/field_decorator.py +47 -14
  170. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_build_receipt_resume.py +374 -0
  171. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_cli_failure_contract.py +24 -0
  172. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_creation_identity_boundary.py +4 -2
  173. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_dropdown_menu_contract.py +382 -0
  174. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_existing_form_ui.py +0 -25
  175. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_field_decorator.py +50 -6
  176. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_functional_group_resolution.py +83 -16
  177. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_identity_template_resolution.py +103 -0
  178. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_plugin_contract.py +28 -2
  179. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_readback_derivation.py +22 -0
  180. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_report_typed_filters.py +65 -0
  181. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_rule_write_closure.py +1041 -15
  182. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_run_batch_post_build_recovery.py +65 -0
  183. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/test/test_run_batch_verification_evidence.py +17 -0
  184. package/skills/cosmic-build/skills/cosmic-meta-knowledge/generation/api-param-checklist.md +1 -1
  185. package/skills/cosmic-build/skills/cosmic-meta-knowledge/generation/rule-modeling-guide.md +7 -4
  186. package/skills/cosmic-build/skills/cosmic-meta-modeling/SKILL.md +61 -13
  187. package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/app-menu/SKILL.md +8 -0
  188. package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/formtemplate/SKILL.md +5 -0
  189. package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/formtemplate/dynamic-form-artifact-schema.md +5 -0
  190. package/skills/cosmic-build/skills/cosmic-meta-modeling/modules/report/SKILL.md +21 -9
  191. package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-entity-graphs.md +1 -1
  192. package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-storage-constraints.md +5 -3
  193. package/skills/cosmic-build/skills/cosmic-meta-modeling/references/authoring-ui-composition.md +6 -3
  194. package/skills/cosmic-build/skills/cosmic-meta-modeling/references/creation-recovery.md +13 -0
  195. package/skills/cosmic-build/skills/cosmic-meta-modeling/references/parse-core.md +3 -0
  196. package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/data_model_contract.py +6 -1
  197. package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/data_model_emit.py +135 -87
  198. package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/field_type_registry.py +11 -1
  199. package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/isv_resolver.py +1 -3
  200. package/skills/cosmic-build/skills/cosmic-meta-modeling/scripts/report_validator.py +29 -0
  201. package/skills/cosmic-build/skills/cosmic-meta-modifier/SKILL.md +4 -2
  202. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/context/SKILL.md +2 -2
  203. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/execute/SKILL.md +1 -1
  204. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/SKILL.md +5 -4
  205. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/operation-write.md +6 -2
  206. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/operation/validation.md +2 -0
  207. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/SKILL.md +20 -5
  208. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/complex-apis.md +1 -1
  209. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/property/policy-grammar.md +4 -1
  210. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/report-op/SKILL.md +9 -0
  211. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/SKILL.md +61 -4
  212. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/raw-rule-authoring.md +3 -1
  213. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/rule-actions.md +2 -2
  214. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/rule-reference.md +6 -6
  215. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/rule/state.md +1 -1
  216. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/unit/SKILL.md +6 -3
  217. package/skills/cosmic-build/skills/cosmic-meta-modifier/modules/verify/usage-guide.md +4 -4
  218. package/skills/cosmic-build/skills/cosmic-meta-modifier/references/list-filter-modification.md +4 -1
  219. package/skills/cosmic-build/skills/cosmic-meta-ui/SKILL.md +9 -1
  220. package/skills/cosmic-build/skills/cosmic-meta-ui/modules/button/SKILL.md +3 -0
  221. package/skills/cosmic-build/skills/cosmic-vibe-coding/assets/acp.cordis.patch.yml +5 -2
  222. package/skills/cosmic-build/skills/mcp-server/SKILL.md +210 -0
  223. package/skills/cosmic-build/skills/mcp-server/scripts/mcp_cli.py +431 -0
  224. package/skills/cosmic-build/skills/openapi-gen/SKILL.md +3 -3
  225. package/skills/cosmic-build/skills/openapi-gen/scripts/api/gen_runner.py +2 -2
  226. package/skills/cosmic-dev-best-practices/references/bill-dev-convention.md +19 -9
  227. package/skills/cosmic-dev-best-practices/references/cosmic-meta-api.md +14 -11
  228. package/skills/cosmic-dev-best-practices/references/design-examples/basedata-design-example.md +1 -1
  229. package/skills/cosmic-dev-best-practices/references/design-examples/bill-design-example.md +1 -1
  230. package/skills/cosmic-dev-best-practices/references/elements/AssistantField.md +1 -1
  231. package/skills/cosmic-dev-best-practices/references/elements/BasedataField.md +2 -2
  232. package/skills/cosmic-dev-best-practices/references/elements/BasedataPropField.md +3 -3
  233. package/skills/cosmic-dev-best-practices/references/elements/CreaterField.md +2 -2
  234. package/skills/cosmic-dev-best-practices/references/elements/CurrencyField.md +2 -2
  235. package/skills/cosmic-dev-best-practices/references/elements/CustomerField.md +2 -2
  236. package/skills/cosmic-dev-best-practices/references/elements/FlexField.md +1 -1
  237. package/skills/cosmic-dev-best-practices/references/elements/MaterielField.md +2 -2
  238. package/skills/cosmic-dev-best-practices/references/elements/OrgField.md +2 -2
  239. package/skills/cosmic-dev-best-practices/references/elements/SupplierField.md +2 -2
  240. package/skills/cosmic-dev-best-practices/references/elements/UnitField.md +1 -1
  241. package/skills/cosmic-dev-best-practices/references/elements/UserField.md +3 -3
  242. package/skills/cosmic-dev-best-practices/references/elements/common-field-property-conventions.md +16 -11
  243. package/skills/cosmic-dev-best-practices/references/layout-control-convention.md +5 -4
  244. package/skills/erp-analysis/references/delivery-contract.md +3 -2
  245. package/skills/erp-analysis/templates/AGENTS.template.md +1 -1
  246. package/skills/cosmic-build/skills/cosmic-meta-api/scripts/.dsh/cosmic/.kd/config.json +0 -21
package/cordis.patch.yml CHANGED
@@ -33,11 +33,13 @@
33
33
  # ── identity ────────────────────────────────────────────────────────────────
34
34
 
35
35
  # The preset's own persona, shadowing the deployment default for this agent.
36
- # `{{model}}` and `{{cwd}}` resolve from the agent's own route and workspace.
36
+ # Only `{{model}}` is a registered prompt variable (dsh 0.2.1 registers exactly
37
+ # `provider` and `model`); `{{cwd}}` was REMOVED upstream — an unregistered name
38
+ # fails the whole turn with `unknown prompt variable`, so do not reintroduce it.
39
+ # The working directory still reaches the model through the runtime context.
37
40
  - id: persona
38
41
  name: '@deepseek-ai/dsh-persona'
39
42
  config:
40
- suffix: Your working directory is {{cwd}}.
41
43
  prefix: >-
42
44
  You are 苍穹助手 (Cosmic Assistant), the 金蝶云星空 (Kingdee Cloud Cosmic) 开发与数据分析 agent, powered by the {{model}} model. Two capabilities: (1) 苍穹开发 — build and modify 苍穹 apps, menus, forms, entities, fields, plugins, APIs, workflows, and scheduling; follow the cosmic-dev-best-practices and app-build skills for that work. (2) 数据分析 — answer business-data questions through the 苍穹 OpenAPI, analyze with Python (pandas/plotly), and deliver markdown tables in chat plus interactive HTML reports; load the erp-analysis skill before any data query (its SKILL.md is the authority for the workflow and report format). Match the user's intent to the right capability and load the appropriate skill.
43
45
 
@@ -46,6 +48,10 @@
46
48
  config:
47
49
  maxBytes: 65536
48
50
 
51
+ # Current time context (official standard row): lets the model see the clock.
52
+ - id: time-context
53
+ name: '@deepseek-ai/dsh-time-context'
54
+
49
55
  # ── shell ───────────────────────────────────────────────────────────────────
50
56
 
51
57
  # `shell-env` stays in the HOST composition: `apps/cli/src/web.ts` injects it to
@@ -87,6 +93,10 @@
87
93
  - id: tool-jobs
88
94
  name: '@deepseek-ai/dsh-tool-jobs'
89
95
 
96
+ # Scheduling (official standard row): the model-facing schedule tool.
97
+ - id: tool-schedule
98
+ name: '@deepseek-ai/dsh-tool-schedule'
99
+
90
100
  # ── skills ──────────────────────────────────────────────────────────────────
91
101
 
92
102
  # The skill REGISTRY lives in the host composition and is layered per scope:
@@ -128,7 +138,7 @@
128
138
  name: '@deepseek-ai/dsh-plan-mode'
129
139
  config:
130
140
  section: |
131
- You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
141
+ You are in plan mode. Stay in plan mode until the user approves your plan through exit_plan_mode or switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
132
142
 
133
143
  Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
134
144
 
@@ -200,40 +210,16 @@
200
210
  provider: spawn
201
211
  toolName: subagent
202
212
  modelSelectionSettings: true
203
- backgroundMode: continuable
204
213
 
205
214
  # Fork omits model selection so provider/model stay equal to the parent and
206
- # the inherited history remains eligible for KV Cache reuse. This preset
207
- # keeps fork continuable; parent and child inherit the same messaging tool,
208
- # while the parent id and return guidance follow the inherited history.
215
+ # the inherited history remains eligible for KV Cache reuse. Parent and child
216
+ # inherit the same messaging tool, while the parent id and return guidance
217
+ # follow the inherited history.
209
218
  - id: tool-subagent-fork
210
219
  name: '@deepseek-ai/dsh-tool-subagent'
211
220
  config:
212
221
  provider: fork
213
222
  toolName: subagent_fork
214
- backgroundMode: continuable
215
-
216
- # Production dsh does not install these optional providers. Install the
217
- # matching Bundle in this Profile and restart the Host, then copy this
218
- # preset and remove `disabled` from the matching tool row. Host availability
219
- # alone grants no tool.
220
- - id: tool-subagent-codex
221
- name: '@deepseek-ai/dsh-tool-subagent'
222
- disabled: true
223
- config:
224
- provider: codex
225
- toolName: subagent_codex
226
- backgroundMode: one-shot
227
- maxDepth: provider-managed
228
-
229
- - id: tool-subagent-claude-code
230
- name: '@deepseek-ai/dsh-tool-subagent'
231
- disabled: true
232
- config:
233
- provider: claude-code
234
- toolName: subagent_claude_code
235
- backgroundMode: one-shot
236
- maxDepth: provider-managed
237
223
 
238
224
  - id: workflow-ptc
239
225
  name: '@deepseek-ai/dsh-workflow-ptc'
@@ -243,19 +229,6 @@
243
229
  - id: tool-workflow
244
230
  name: '@deepseek-ai/dsh-tool-workflow'
245
231
 
246
- # Off by default with the base row it mirrors: the tool description
247
- # restricts `ralph` to runs the human explicitly asked for, and completion
248
- # is a worker self-report, not an independent evaluation. Preset files take
249
- # no patches, so a session that wants it duplicates this preset under a new
250
- # id and drops `disabled`; the shipped root shadows a copy that reuses this
251
- # id.
252
- - id: tool-ralph
253
- name: '@deepseek-ai/dsh-tool-ralph'
254
- disabled: true
255
- config:
256
- subagentProvider: spawn
257
- maxRounds: 64
258
-
259
232
  # ── remaining model-facing rows ─────────────────────────────────────────────
260
233
 
261
234
  - id: tool-ask-user
@@ -280,3 +253,8 @@
280
253
  - id: tool-plugin-manager
281
254
  name: '@deepseek-ai/dsh-plugin-manager/tools'
282
255
  disabled: true
256
+
257
+ # Plugin market (official standard row). Off by default, like the row above.
258
+ - id: tool-plugin-market
259
+ name: '@deepseek-ai/dsh-plugin-market/tools'
260
+ disabled: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shundoo-ai/dsh-cosmic",
3
- "version": "1.0.18",
3
+ "version": "1.0.20",
4
4
  "description": "苍穹助手:金蝶云苍穹ERP的开发与数据分析,涵盖表单元数据建模、插件开发与热部署、数据可视化报告。",
5
5
  "keywords": [
6
6
  "dsh",
@@ -1,3 +1,7 @@
1
+ 2026-10-13 第三批 bfy11 真实故障验收完成:修复 POST 响应丢失后的自动重放、创建前读取异常的未知误判、批次汇总写入边界、成功回执残留错误及引用错误分类;修订指纹覆盖根 payload schema。现场只影响隔离测试请求,保留原业务对象。
2
+
3
+ 2026-10-12 第三批执行优化:绑定技能来源/修订与 Python 入口;结构化 stdout 与结果文件一致;批量逐对象保存回执、按验证回执续跑、只读核对未知写入、创建前核对冲突;同步中文执行资产。真实环境故障演练尚待验收。
4
+
1
5
  2026-09-03 支持元数据样式属性批量修改,完善规则写入、产物卡片与验证测试
2
6
 
3
7
  2026-08-27 优化了一些问题
@@ -9,10 +9,11 @@
9
9
 
10
10
  | 项 | 值 |
11
11
  |---|---|
12
- | 本次对齐的上游版本 | **0.0.299**(`builtin-skills/.builtin-version`),文件日期 2026-09-29 |
13
- | 上一次拷贝的快照 | 2026-08-24(早于 0.0.277) |
14
- | 可用参照基线(更早) | `~/.lingeebuild/config/builtin-skills/app-build`(**0.0.277**,2026-08-28) |
15
- | 上游目录布局 | `builtin-skills/app-build/`(英文 canonical)+ `builtin-skills/app-build/.locales/zh/`(中文覆盖层) |
12
+ | 本次对齐的上游版本 | **0.0.326**(`builtin-skills/.builtin-version`),文件日期 2026-10-19(金蝶灵基 app **1.8.0**,build 2610172146,2026-10-17 安装) |
13
+ | 上一次对齐 | **0.0.299**(2026-09-29) |
14
+ | 更早的参照基线 | `~/.lingeebuild/config/builtin-skills/app-build`(**0.0.277**,2026-08-28,已过期) |
15
+ | 上游解压位置(已变) | **`~/.lingeebuild/profiles/v1/<hash>/config/builtin-skills/app-build`** —— 灵基 1.8.0 起 skill 按 profile 隔离解压;旧的全局 `~/.lingeebuild/config/builtin-skills` 不再更新 |
16
+ | 上游目录布局 | `app-build/`(英文 canonical)+ `app-build/.locales/zh/`(中文覆盖层) |
16
17
  | 本 preset 布局 | 单树:`skills/cosmic-build/`(= 上游 zh 覆盖层拍平,无 `.locales/`) |
17
18
 
18
19
  上游会把旧的 R/D/E 管线、`capabilities/`、`cosmic-{requirements,design,executor,testing,code-review}`、
@@ -31,46 +32,50 @@
31
32
  | `schemas/*` | ⚠️ **canonical** | `property-contract-fixture.schema.json` 只在 canonical |
32
33
  | `contracts/*` | zh 优先;缺则 canonical | `property-input-index.json`、`property-value-encoding.json`、`operation-rule-write-contracts.json` 只在 canonical,且**被 `cmd_properties.py` 运行时读取** |
33
34
 
34
- ### 1.1 必须用 canonical 覆盖的 33 个 `.py`
35
+ ### 1.1 必须用 canonical 覆盖的 `.py`(**2026-10-19 对 0.0.326 重算:35 个**)
35
36
 
36
- 判定方法:剥掉 docstring 与全部字符串常量后比对 AST,仍有差异者为"代码级滞后"。
37
- 其中 **16 个与替换前的 DSH 旧版逐字节相同**(= zh 根本没更新,拷了等于没升级):
37
+ 判定方法:剥掉 docstring 与全部字符串常量后比对 AST,仍有差异者为"代码级滞后"。每次上游更新都**重算**,不要照搬旧名单。
38
38
 
39
39
  ```
40
- 脚本/测试(16 个 zh==旧DSH):
41
- scripts/discovery_snapshot.py ← 坏档:仍 import 已删的 _shared.property_names
42
- scripts/meta_export.py
43
- scripts/test/test_appconfig_load.py
44
- scripts/test/test_build_meta_order.py
45
- scripts/test/test_http_client.py
46
- scripts/test/test_kd_token_cache.py
47
- scripts/test/test_run.py
48
- scripts/test/test_runtime_tool_opt_in.py
49
- skills/cosmic-meta-api/modules/pdm/scripts/pdm_auto.py
50
- skills/cosmic-meta-api/scripts/_core/markdown.py
51
- skills/cosmic-meta-api/scripts/test/test_field_decorator.py
52
- skills/cosmic-meta-api/scripts/test/test_formatters_output_isolation.py
53
- skills/cosmic-meta-modeling/scripts/post_build_ui.py
54
- skills/openapi-gen/scripts/api/constants.py
55
- skills/openapi-gen/scripts/metadata/fetcher.py
56
- skills/openapi-gen/scripts/metadata/parser.py
57
-
58
- 三者各不同(14 个,zh ≠ canonical ≠ 旧DSH):
59
- scripts/run.py ← 注意:本补丁 #1 的落点
60
- scripts/test/test_kd_auth.py
61
- scripts/test/test_register_plugins.py
62
- skills/cosmic-meta-api/scripts/_core/{config,cmd_properties,cmd_forms,cmd_metaops,cmd_workspace,formatters}.py
63
- skills/cosmic-meta-api/scripts/meta_verifier.py
64
- skills/cosmic-meta-api/scripts/test/test_form_extension_flow.py
65
- skills/cosmic-meta-modeling/scripts/{artifact_validator,dynamic_form_validator}.py
66
- skills/openapi-gen/scripts/api/gen_runner.py
67
-
68
- DSH 无、新版新增(3 个):
69
- scripts/test/test_bootstrap_cosmic_context.py
70
- skills/cosmic-meta-api/scripts/test/test_add_button_closure.py
71
- skills/cosmic-meta-api/scripts/test/test_existing_form_ui.py
40
+ scripts/run.py ← 补丁 #1 落点
41
+ scripts/discovery_snapshot.py ← zh 坏档(仍 import 已删的 _shared.property_names)
42
+ scripts/meta_export.py
43
+ scripts/test/test_appconfig_load.py
44
+ scripts/test/test_build_meta_order.py
45
+ scripts/test/test_guide_skeleton_contract.py
46
+ scripts/test/test_kd_auth.py
47
+ scripts/test/test_kd_token_cache.py
48
+ scripts/test/test_modeling_input_recovery.py
49
+ scripts/test/test_register_plugins.py
50
+ scripts/test/test_report_business_contract.py
51
+ scripts/test/test_report_doc_contract_sync.py
52
+ scripts/test/test_run.py
53
+ scripts/test/test_runtime_tool_opt_in.py
54
+ scripts/test/test_batch5_drift_governance.py
55
+ skills/cosmic-meta-api/modules/pdm/scripts/pdm_auto.py
56
+ skills/cosmic-meta-api/scripts/_core/cmd_forms.py
57
+ skills/cosmic-meta-api/scripts/_core/cmd_plugins.py
58
+ skills/cosmic-meta-api/scripts/_core/cmd_properties.py
59
+ skills/cosmic-meta-api/scripts/_core/cmd_workspace.py
60
+ skills/cosmic-meta-api/scripts/_core/config.py
61
+ skills/cosmic-meta-api/scripts/_core/markdown.py
62
+ skills/cosmic-meta-api/scripts/meta_verifier.py
63
+ skills/cosmic-meta-api/scripts/test/test_add_button_closure.py
64
+ skills/cosmic-meta-api/scripts/test/test_field_decorator.py
65
+ skills/cosmic-meta-api/scripts/test/test_form_extension_flow.py
66
+ skills/cosmic-meta-api/scripts/test/test_formatters_output_isolation.py
67
+ skills/cosmic-meta-api/scripts/test/test_rule_write_closure.py
68
+ skills/cosmic-meta-modeling/scripts/artifact_validator.py
69
+ skills/cosmic-meta-modeling/scripts/dynamic_form_validator.py
70
+ skills/cosmic-meta-modeling/scripts/post_build_ui.py
71
+ skills/openapi-gen/scripts/api/constants.py
72
+ skills/openapi-gen/scripts/api/gen_runner.py
73
+ skills/openapi-gen/scripts/metadata/fetcher.py
74
+ skills/openapi-gen/scripts/metadata/parser.py
72
75
  ```
73
76
 
77
+ 另加 **`skills/cosmic-meta-api/scripts/cosmic_api.py`**(zh 与 canonical 仅字节级 drift,AST 比不出;§1.2 仍要求取 canonical)。
78
+
74
79
  ### 1.2 不要照抄的东西
75
80
 
76
81
  - `.locales/zh/scripts/discovery_snapshot.py` —— 上游 zh 的坏档,用 canonical 版。
@@ -161,7 +166,7 @@ rsync -a --ignore-existing --exclude '.locales/' "$SRC/." "$DST/"
161
166
  # 4) 重贴 §2 的 17 处补丁(先 config.py,再凭据三件套)
162
167
 
163
168
  # 5) 机械适配
164
- # a. {APP_BUILD_ROOT} → {ROOT_DIR}(md 与 py 中花括号 token 形态;
169
+ # a. {ROOT_DIR} → {ROOT_DIR}(md 与 py 中花括号 token 形态;
165
170
  # 注意 py 里还有同名 Python 变量,不要一起改)
166
171
  # b. md 链接标签里的 .locales/zh/ 前缀去掉
167
172
  # c. 确认根 SKILL.md 里 {ROOT_DIR} 与 {python} 的绑定说明仍在
@@ -232,6 +237,37 @@ cd <工作区> && $PY $D/skills/cosmic-meta-api/scripts/cosmic_api.py --stdout q
232
237
  `queryForms` 冒烟 `[auth] OK` 且命中 16 条表单、`describeCommand` 返回 15.5KB 契约、
233
238
  markdown 断链 60 条(与上游 KD zh 完全一致,无新增)。
234
239
 
240
+ **2026-10-19(0.0.326)同步结果**:补丁 11/11 检查点通过、`_API_PATH` 105 项(含 13 项本地补丁)、
241
+ 命令 **204** 个(197 上游 + 7 KSQL)、compileall 退出码 0、`queryForms` 冒烟 `[auth] OK`、
242
+ `exportKSQLByTable` 实调成功(返回 `scriptBase64`)、根 `SKILL.md` 断链 0。
243
+
244
+ ---
245
+
246
+ ## 5.1 2026-10-19 同步记录(0.0.299 → 0.0.326)
247
+
248
+ | 步骤 | 实际执行 |
249
+ |---|---|
250
+ | 备份 | `cp -a` → `/tmp/cosmic-build.bak-2026-10-19`(57M) |
251
+ | 清理 | 删 `skills/cosmic-meta-api/scripts/.dsh/cosmic/.kd/config.json`(**杂散凭据副本,曾入库——见下**)与上游孤儿 `scripts/test/test_bd_bindings.py` |
252
+ | 步骤1 | rsync `zh` 覆盖层 `--delete`,exclude:`erpdb/`、`skills/cosmic-vibe-coding/`、`skills/config.json`、`skills/tenant.json`、entity-download 工具链 3 文件、**`LOCAL-PATCHES.md`(新增)**、**`skills/cosmic-coding-script/references/sdk/manifests/`(新增)** |
253
+ | 步骤2 | rsync canonical `--ignore-existing --exclude .locales/` 补齐 |
254
+ | 步骤3 | canonical 覆盖 **36** 个 `.py`(§1.1 重算 35 + `cosmic_api.py`);覆盖后 `.py` 与 canonical **AST 差异 0** |
255
+ | 步骤4 | 重贴 17 处补丁。**注意 #14 有两部分**:`_core/config.py` 的 `_API_PATH` + `cosmic_api.py` 的 **7 个 argparse 子命令与 dispatch**(新版 `cosmic_api.py` 取 canonical 后这两块全丢,必须都补) |
256
+ | 步骤5 | a) `{APP_BUILD_ROOT}` → `{ROOT_DIR}`:md **72** 处 + py **6** 处(py 里 88 个同名 **Python 变量不动**);b) md 里 `.locales/zh/` 前缀清理 6 个文件(`LOCAL-PATCHES.md` 自身保留) |
257
+
258
+ **上游 0.0.326 的新东西(未拷贝的单列)**:新增兄弟技能 `cosmic-e2e-test` / `expert-team-build` /
259
+ `mcp-apps-builder` / `task-builder` / `yzj-cli` —— **不拷**;`app-build` 仅在
260
+ `scripts/verify_plugin_loading.py` 的 `--runtime-trace` help 里提到 `cosmic-e2e-test`(可选输入,无硬依赖)。
261
+
262
+ **新增命令(已在 204 个内)**:`renameElementKey`、`ensureConditionalFieldChange`、
263
+ `ensureTimeDifferenceCalculation`、`configureDropdownMenu`。
264
+
265
+ **待办**:`skills/cosmic-coding-script/references/sdk/manifests/` 是本地生成物(0.0.326 未带产物,
266
+ 但带了生成脚本 `scripts/kingscript_sdk_sync.py`)—— 若上游文档改为引用新字段,需重跑该脚本刷新。
267
+
268
+ > ⚠️ **安全**:`skills/cosmic-meta-api/scripts/.dsh/cosmic/.kd/config.json` 含明文凭据且**曾在 git 历史里**。
269
+ > 已从工作树删除;如果该仓库会外发,建议清理历史并轮换对应密钥。
270
+
235
271
  ---
236
272
 
237
273
  ## 6. 已知遗留(不影响运行)
@@ -8,6 +8,18 @@ description: 创建或修改金蝶云苍穹表单、字段、规则、操作、
8
8
  通过已发布的 CLI 交付用户要求的苍穹应用修改。选择下方最具体的入口,
9
9
  只加载当前问题需要的内容,并保留全部明确业务要求。
10
10
 
11
+ 表单及其当前设计保存在苍穹服务端。`appRoot` 是本地应用绑定和导出产物的目录,
12
+ 不是线上表单清单。修改已有表单时,读取下方对应领域入口,将已提供的 `appRoot`
13
+ 和用户使用的表单名称直接传给命令。本地文件或 archive 中没有记录,不证明线上表单不存在。
14
+
15
+ `{ROOT_DIR}` 是本入口附带的技能包目录(本地补丁:上游 0.0.326 用 `APP_BUILD_ROOT` 这一同名 token,本 preset 统一为 `{ROOT_DIR}`;历史文本中的 `APP_BUILD_ROOT` 与本变量同义)。选定命令的参数尚不明确时,读取其本地契约:
16
+
17
+ ```text
18
+ {python} {ROOT_DIR}/skills/cosmic-meta-api/scripts/cosmic_api.py --stdout describeCommand <已选命令>
19
+ ```
20
+
21
+ 返回的 schema 说明命令输入;目标查询由领域命令完成,不通过搜索应用目录完成。
22
+
11
23
  创建入口负责契约支持的初始状态,未覆盖属性或布局交给对应入口。写命令自行解析准确表单目标;
12
24
  只有用户要求发现,或没有表单目标时才进入发现入口。
13
25
 
@@ -15,48 +27,69 @@ description: 创建或修改金蝶云苍穹表单、字段、规则、操作、
15
27
 
16
28
  | 当前请求 | 入口 |
17
29
  |---|---|
30
+ | 修改下拉菜单项,包括显示名称、说明及顺序 | [skills/cosmic-meta-ui/SKILL.md](skills/cosmic-meta-ui/SKILL.md):`configureDropdownMenu` 根据菜单项或明确按钮定位菜单,保留绑定的操作定义 |
18
31
  | 查找表单或确认所属应用 | [references/form-discovery.md](references/form-discovery.md) |
32
+ | 查询或新建功能分组(BizUnit),包括新建表单明确要求的分组;功能分组不是应用菜单 | [skills/cosmic-meta-modifier/modules/unit/SKILL.md](skills/cosmic-meta-modifier/modules/unit/SKILL.md) |
33
+ | 将表单移动到其他功能分组(不是应用菜单) | [skills/cosmic-meta-modifier/SKILL.md](skills/cosmic-meta-modifier/SKILL.md) |
19
34
  | 创建表单、实体、基础资料或应用菜单(不是功能分组) | [skills/cosmic-meta-modeling/SKILL.md](skills/cosmic-meta-modeling/SKILL.md) |
20
35
  | 新增/删除字段或分录;继承、复制、扩展或移动已有表单 | [skills/cosmic-meta-modifier/SKILL.md](skills/cosmic-meta-modifier/SKILL.md) |
21
- | 修改字段属性、必填、默认值、拆分表或页签操作 | [skills/cosmic-meta-modifier/modules/property/SKILL.md](skills/cosmic-meta-modifier/modules/property/SKILL.md) |
36
+ | 修改字段/控件/分录标识或属性、必填、默认值、拆分表或页签操作 | [skills/cosmic-meta-modifier/modules/property/SKILL.md](skills/cosmic-meta-modifier/modules/property/SKILL.md) |
22
37
  | 配置计算或条件字段行为 | [skills/cosmic-meta-modifier/modules/rule/SKILL.md](skills/cosmic-meta-modifier/modules/rule/SKILL.md) |
23
38
  | 配置保存、提交或其他操作校验 | [skills/cosmic-meta-modifier/modules/operation/SKILL.md](skills/cosmic-meta-modifier/modules/operation/SKILL.md) |
24
39
  | 新增可见控件或面板;修改布局、位置或容器外观 | [skills/cosmic-meta-ui/SKILL.md](skills/cosmic-meta-ui/SKILL.md);明确交互的操作先使用操作入口 |
25
- | 修改列表列、搜索、过滤或排序 | [skills/cosmic-meta-modifier/references/list-filter-modification.md](skills/cosmic-meta-modifier/references/list-filter-modification.md) |
26
- | 修改报表、插件、脚本或其他已有元数据 | [skills/cosmic-meta-modifier/SKILL.md](skills/cosmic-meta-modifier/SKILL.md) |
40
+ | 配置列表视图的列、搜索字段、过滤条件或排序 | [skills/cosmic-meta-modifier/references/list-filter-modification.md](skills/cosmic-meta-modifier/references/list-filter-modification.md) |
41
+ | 修改报表元数据、插件注册、元数据脚本或其他已有元数据 | [skills/cosmic-meta-modifier/SKILL.md](skills/cosmic-meta-modifier/SKILL.md) |
27
42
  | 查看、比较或还原元数据版本 | [skills/cosmic-meta-api/apis/meta_log.md](skills/cosmic-meta-api/apis/meta_log.md) |
28
- | 交付元数据无法表达的后端行为 | [references/java-plugin-delivery.md](references/java-plugin-delivery.md) |
43
+ | 编写或修改 Java 插件源码,包括元数据无法表达的后端行为 | [references/java-plugin-delivery.md](references/java-plugin-delivery.md) |
29
44
  | 将已有操作发布为 OpenAPI | [skills/openapi-gen/SKILL.md](skills/openapi-gen/SKILL.md) |
45
+ | 注册、查询或管理 MCP 服务(open_mcp_ext) | [skills/mcp-server/SKILL.md](skills/mcp-server/SKILL.md) |
30
46
 
31
47
  自定义苍穹前端页面使用 kd-frontend-development;非苍穹应用使用对应的
32
48
  standalone 或 site 技能。
33
49
 
34
50
  ## 共享约束
35
51
 
36
- - `{ROOT_DIR}` 是本 `SKILL.md` 所在目录(技能包根);下文所有脚本、参考与子技能路径都相对
37
- 它解析。历史文本中的 `APP_BUILD_ROOT` 与本变量同义。
38
- - `{python}` 在本 preset 中固定为苍穹专用运行时,与工作区 `AGENTS.md` 的
39
- 「Python 运行时(统一约定)」一致:macOS/Linux `$DSH_HOME/cache/cosmic/venv/bin/python`,
40
- Windows `$DSH_HOME/cache/cosmic/venv/Scripts/python.exe`。
41
- 首次执行 Python CLI 前只绑定一次 `{python}`:候选命令必须通过
52
+ - 首次执行 Python CLI 前只绑定一次 `{python}`:Windows 依次探测 `python`、`py -3`、
53
+ `python3`,macOS/Linux 依次探测 `python3`、`python`。候选命令必须通过
42
54
  `-c "print('APP_BUILD_PYTHON_OK')"`,退出成功且准确输出该标记;本轮持续复用该命令。
43
55
  空输出或探测失败属于运行环境故障,不能解释成“应用不存在”等业务结果。
44
56
  - 新建表单前,目标应用必须来自用户选择或宿主明确选中的应用。项目目录、本地应用清单和
45
57
  archive 不代表用户选择;缺少两者时先询问“要建在哪个应用下?”并等待,再读取应用文件或准备新建输入。
46
58
  - 保持用户范围。字段名称不隐含必填、布局、样式、规则或菜单发布。
47
59
  - 只有用户明确要求发布到菜单或修改菜单时才配置应用菜单;其他表单修改不隐含菜单新建或发布。
60
+ - 明确要求发布菜单后,交付前按菜单入口核对并启用同一个已验证应用。
48
61
  - 使用已验证的应用和表单身份。需要绑定、处理归属冲突或路径语义时,读取
49
62
  [references/application-context.md](references/application-context.md)。
50
63
  - CLI 回执、写入验证、未知状态、删除和本地运行状态遵循
51
64
  [references/execution-contract.md](references/execution-contract.md)。
52
65
  - 只有所选元数据入口无法表达剩余行为时才进入 Java。
53
- - 只有用户明确要求运行态验收,并点名可用工具或集成时才调用外部运行工具。
66
+ - 用户要求运行态验证,或诊断/修复运行报错时调用外部运行工具;优先使用可用的 `agent_browser`。
54
67
  - 只询问会实质改变业务结果的决定。
55
68
 
69
+ ## 保持执行路线连续
70
+
71
+ 先按选定入口实施。prepare 给出的完成输入路径是实施后要创建的文件,开始时不存在是正常状态。`TEST_ENVIRONMENT_HANDOFF` 由写入后的原生收口器生成,不在实施前到其他任务或工作树中寻找。
72
+
73
+ 消费已绑定的需求/前阶段产物一次,按“结构、静态属性、规则、操作校验、无法用元数据表达的行为”整理尚未完成的效果。选择每个效果的最小已发布 writer,输入完整时直接执行;仅加载命中的专题,独立读取可并行。同一表单的规则用已发布批量命令,属性批量保持其原生契约,避免逐项重新发现身份。
74
+
75
+ 复用 writer 返回的准确身份和验证回执;成功写入后不再查询无关候选、不重读同一说明、不为交付重做验证。参数错误按返回的准确形状修复;类型/能力边界错误直接切换该行为所属路线,避免在多个命令间摇摆。回执只证明它实际检查的内容:逐行必填不等于最少行数,设计态规则保存不等于浏览器运行通过。有运行验证请求时使用可用的 `agent_browser`;一次打开表单与检查默认值属于该行为的冒烟验证,不能冒充范围外测试阶段。
76
+
56
77
  ## 完成条件
57
78
 
58
- 全部表单修改完成后,按 [references/delivery.md](references/delivery.md) 完成本轮交付。该文档统一
59
- 负责目标分组、单次卡片收口、`deleteForm` 处理、`output_check` 和卡片输出。
79
+ 沿需求基线继续实施时,使用当前确认要求、用户约束和范围变更;建议不升级为必测承诺,已取消
80
+ 条件不沿用。现有基线交接见[应用上下文](references/application-context.md),选择 Java 前先核对
81
+ 受影响的能力事实与约束冲突。
82
+
83
+ 会话进度和最终答复用用户熟悉的业务名称,先说明完成了什么、实际检查结果及具体未完成项。
84
+ 表单编码、字段键、状态字母、布尔标记、回执字段、命令和哈希保留在技术产物中,不逐次播报工具、定位、重试、同步和阶段收口。
85
+ 遇到问题说明业务影响和下一步;用户明确要求技术诊断时再补必要的准确细节。
86
+ 工具参数、交接文件及渲染卡片的协议字段仍严格按原格式保存和调用。
87
+
88
+ 按用户要求的范围说明已完成的修改、检查结果和未验证项。
89
+ 配置回读只能确认配置写入结果,不能证明业务在运行环境中正常工作。
90
+
91
+ 全部要求的实现完成后,按 [references/delivery.md](references/delivery.md) 处理交付。该文档统一
92
+ 负责实现完成核对、目标分组、单次卡片收口、`deleteForm` 处理、`output_check`,以及在约定终点输出卡片。
60
93
 
61
94
  所有明确要求都有验证证据或明确未完成边界,且不存在写后未知状态时任务完成。
62
95
  已验证无变化时可以直接说明现状,不重复写入。仍可执行的实现工作不属于“未完成边界”;
@@ -0,0 +1,169 @@
1
+ package kd.bos.designer.property.setting;
2
+
3
+ import kd.bos.metadata.entity.commonfield.DecimalField;
4
+ import kd.bos.metadata.entity.commonfield.TextField;
5
+ import kd.bos.metadata.entity.commonfield.Field;
6
+ import kd.bos.metadata.entity.commonfield.DateTimeField;
7
+ import kd.bos.metadata.entity.commonfield.DateRangeField;
8
+ import kd.bos.metadata.entity.commonfield.ComboField;
9
+ import kd.bos.metadata.entity.commonfield.ComboItem;
10
+ import kd.bos.metadata.entity.businessfield.AbstractBasedataField;
11
+ import kd.bos.metadata.entity.EntityMetadata;
12
+ import kd.bos.metadata.form.FormMetadata;
13
+ import kd.bos.metadata.form.ControlAp;
14
+ import kd.bos.metadata.form.control.FieldAp;
15
+
16
+ import java.util.ArrayList;
17
+ import java.util.LinkedHashMap;
18
+ import java.util.List;
19
+ import java.util.Map;
20
+ import java.io.ByteArrayInputStream;
21
+ import java.io.ByteArrayOutputStream;
22
+ import java.io.ObjectInputStream;
23
+ import java.io.ObjectOutputStream;
24
+
25
+ /** Platform extension for ReportFilters.typed; no service writes or identity lookup here. */
26
+ public final class TypedReportFilterFields {
27
+ private TypedReportFilterFields() { }
28
+
29
+ public static Field<?> create(Field<?> source, String compare) {
30
+ if (source == null) throw new IllegalArgumentException("REPORT_FILTER_SOURCE_FIELD_NOT_FOUND");
31
+ if (!java.util.Arrays.asList("TextField", "DateField", "DateTimeField", "DateRangeField", "ComboField",
32
+ "MulComboField", "BasedataField", "MulBasedataField", "DecimalField").contains(source.getClass().getSimpleName()))
33
+ throw new IllegalArgumentException("REPORT_FILTER_SOURCE_TYPE_UNSUPPORTED: " + source.getClass().getSimpleName());
34
+ Field<?> result;
35
+ if ("13".equals(compare) && !(source instanceof DateRangeField)) {
36
+ if (!(source instanceof DateTimeField)) {
37
+ throw new IllegalArgumentException("REPORT_FILTER_RANGE_TYPE_UNSUPPORTED: " + source.getClass().getSimpleName());
38
+ }
39
+ DateRangeField range = new DateRangeField();
40
+ range.setRegionType(((DateTimeField) source).getRegionType());
41
+ range.setTimeZoneTransType(((DateTimeField) source).getTimeZoneTransType());
42
+ result = range;
43
+ } else {
44
+ try {
45
+ result = source.getClass().getDeclaredConstructor().newInstance();
46
+ } catch (ReflectiveOperationException error) {
47
+ throw new IllegalArgumentException("REPORT_FILTER_SOURCE_TYPE_UNSUPPORTED", error);
48
+ }
49
+ if (source instanceof AbstractBasedataField) {
50
+ AbstractBasedataField<?> from = (AbstractBasedataField<?>) source;
51
+ AbstractBasedataField<?> to = (AbstractBasedataField<?>) result;
52
+ to.setBaseEntityId(from.getBaseEntityId());
53
+ to.setDisplayProp(from.getDisplayProp());
54
+ to.setNumberProp(from.getNumberProp());
55
+ to.setEditSearchProp(from.getEditSearchProp());
56
+ to.setLayoutId(from.getLayoutId());
57
+ to.setDisplayStyle(from.getDisplayStyle());
58
+ to.setOrgFieldId(from.getOrgFieldId());
59
+ to.setFilter(copy(from.getFilter()));
60
+ if (from.getRefProps() != null && !from.getRefProps().isEmpty()) to.getRefProps().addAll(copy(from.getRefProps()));
61
+ if (from.getConditionalFilterRule() != null && !from.getConditionalFilterRule().isEmpty()) {
62
+ throw new IllegalArgumentException("REPORT_FILTER_CONDITIONAL_REFERENCE_UNSUPPORTED");
63
+ }
64
+ }
65
+ if (source instanceof ComboField) ((ComboField) result).setItems(copy(((ComboField) source).getItems()));
66
+ if (source instanceof DateTimeField) {
67
+ DateTimeField from = (DateTimeField) source, to = (DateTimeField) result;
68
+ to.setRegionType(from.getRegionType());
69
+ to.setTimeZoneTransType(from.getTimeZoneTransType());
70
+ to.setMinDate(from.getMinDate());
71
+ to.setMaxDate(from.getMaxDate());
72
+ }
73
+ if (source instanceof DateRangeField) {
74
+ ((DateRangeField) result).setTimeZoneTransType(((DateRangeField) source).getTimeZoneTransType());
75
+ ((DateRangeField) result).setRegionType(((DateRangeField) source).getRegionType());
76
+ ((DateRangeField) result).setQuickOptions(((DateRangeField) source).getQuickOptions());
77
+ }
78
+ if (source instanceof DecimalField) {
79
+ ((DecimalField) result).setPrecision(((DecimalField) source).getPrecision());
80
+ ((DecimalField) result).setScale(((DecimalField) source).getScale());
81
+ }
82
+ if (source instanceof TextField) ((TextField) result).setMaxLength(((TextField) source).getMaxLength());
83
+ }
84
+ if (result == source || result == null) throw new IllegalArgumentException("REPORT_FILTER_SOURCE_CLONE_FAILED");
85
+ if (result instanceof AbstractBasedataField) {
86
+ AbstractBasedataField<?> basedata = (AbstractBasedataField<?>) result;
87
+ // Source form field IDs are not report field IDs. Keep this dependency explicit.
88
+ if (basedata.getOrgFieldId() != null && !basedata.getOrgFieldId().isEmpty()) {
89
+ throw new IllegalArgumentException("REPORT_FILTER_ORG_BINDING_REQUIRED: " + source.getKey());
90
+ }
91
+ }
92
+ result.setInherit(false);
93
+ result.setExt(false);
94
+ result.setFeatures(null);
95
+ result.setMustInputCondition(null);
96
+ if (result instanceof ComboField) ((ComboField) result).setChangeListeners(null);
97
+ return result;
98
+ }
99
+
100
+ private static <T> T copy(T value) {
101
+ if (value == null) return null;
102
+ try {
103
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
104
+ try (ObjectOutputStream output = new ObjectOutputStream(bytes)) { output.writeObject(value); }
105
+ try (ObjectInputStream input = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray()))) {
106
+ return (T) input.readObject();
107
+ }
108
+ } catch (Exception error) {
109
+ throw new IllegalArgumentException("REPORT_FILTER_OPTION_COPY_FAILED", error);
110
+ }
111
+ }
112
+
113
+ public static Map<String, Object> describe(Field<?> field) {
114
+ Map<String, Object> result = new LinkedHashMap<>();
115
+ result.put("fieldPath", field.getKey());
116
+ result.put("displayName", field.getName() == null ? "" : field.getName().toString());
117
+ result.put("fieldType", field.getClass().getSimpleName());
118
+ result.put("mustInput", field.isMustInput());
119
+ if (field instanceof AbstractBasedataField) {
120
+ AbstractBasedataField<?> basedata = (AbstractBasedataField<?>) field;
121
+ result.put("referenceEntityId", basedata.getBaseEntityId());
122
+ result.put("displayProp", basedata.getDisplayProp());
123
+ result.put("numberProp", basedata.getNumberProp());
124
+ result.put("editSearchProp", basedata.getEditSearchProp());
125
+ result.put("layoutId", basedata.getLayoutId());
126
+ result.put("displayStyle", basedata.getDisplayStyle());
127
+ }
128
+ if (field instanceof ComboField) {
129
+ List<Map<String, Object>> items = new ArrayList<>();
130
+ for (ComboItem item : ((ComboField) field).getItems()) {
131
+ Map<String, Object> option = new LinkedHashMap<>();
132
+ option.put("value", item.getValue());
133
+ option.put("caption", item.getCaption() == null ? "" : item.getCaption().toString());
134
+ items.add(option);
135
+ }
136
+ result.put("comboOptions", items);
137
+ }
138
+ if (field instanceof DateTimeField) result.put("timeZoneTransType", ((DateTimeField) field).getTimeZoneTransType());
139
+ if (field instanceof DateRangeField) result.put("timeZoneTransType", ((DateRangeField) field).getTimeZoneTransType());
140
+ if (field instanceof DecimalField) {
141
+ result.put("precision", ((DecimalField) field).getPrecision());
142
+ result.put("scale", ((DecimalField) field).getScale());
143
+ }
144
+ if (field instanceof TextField) result.put("maxLength", ((TextField)field).getMaxLength());
145
+ return result;
146
+ }
147
+
148
+ public static Map<String, Object> read(FormMetadata form, EntityMetadata entity, String panelId) {
149
+ List<Map<String, Object>> filters = new ArrayList<>();
150
+ for (ControlAp<?> control : form.getItems()) {
151
+ if (!(control instanceof FieldAp) || !panelId.equals(control.getParentId())) continue;
152
+ Field<?> field = entity.getFieldById(((FieldAp) control).getFieldId());
153
+ if (field == null) throw new IllegalArgumentException("REPORT_FILTER_FIELD_BINDING_MISSING: " + control.getKey());
154
+ filters.add(describe(field));
155
+ }
156
+ Map<String, Object> result = new LinkedHashMap<>();
157
+ result.put("schemaVersion", "app-build-typed-report-filters/v1");
158
+ result.put("reportFilters", filters);
159
+ return result;
160
+ }
161
+
162
+ public static List<Map<String, Object>> fields(EntityMetadata entity) {
163
+ List<Map<String, Object>> fields = new ArrayList<>();
164
+ for (kd.bos.metadata.entity.EntityItem<?> item : entity.getItems()) {
165
+ if (item instanceof Field) fields.add(describe((Field<?>) item));
166
+ }
167
+ return fields;
168
+ }
169
+ }