weaver-work-cli 0.1.6 → 0.1.7

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 (225) hide show
  1. package/README.md +14 -9
  2. package/dist/cmd/skills/index.js +60 -0
  3. package/dist/internal/e10/auth/commands.js +44 -31
  4. package/dist/internal/e10/auth/session.js +44 -3
  5. package/dist/internal/e10/auth/xiaoe.js +363 -11
  6. package/dist/internal/e10/context.js +4 -2
  7. package/dist/internal/skills/detector.js +42 -0
  8. package/dist/internal/skills/install.js +50 -3
  9. package/dist/shortcuts/archive/render/search-format.js +12 -3
  10. package/dist/shortcuts/ebuilder-form/continuation.js +70 -0
  11. package/dist/shortcuts/ebuilder-form/errors.js +54 -0
  12. package/dist/shortcuts/ebuilder-form/host.js +1238 -0
  13. package/dist/shortcuts/ebuilder-form/index.js +108 -0
  14. package/dist/shortcuts/ebuilder-form/manifest.js +347 -0
  15. package/dist/shortcuts/ebuilder-form/operations/read.js +157 -0
  16. package/dist/shortcuts/ebuilder-form/operations/registry.js +56 -0
  17. package/dist/shortcuts/ebuilder-form/operations/shared.js +132 -0
  18. package/dist/shortcuts/ebuilder-form/operations/types.js +19 -0
  19. package/dist/shortcuts/ebuilder-form/operations/write.js +277 -0
  20. package/dist/shortcuts/ebuilder-form/operations.js +8 -0
  21. package/dist/shortcuts/ehr/operations/salary.js +2 -140
  22. package/dist/shortcuts/im/continuation.js +70 -0
  23. package/dist/shortcuts/{yimiaoban → im}/errors.js +14 -14
  24. package/dist/shortcuts/{yimiaoban → im}/host.js +26 -26
  25. package/dist/shortcuts/{yimiaoban → im}/index.js +42 -42
  26. package/dist/shortcuts/{yimiaoban → im}/manifest.js +7 -6
  27. package/dist/shortcuts/{yimiaoban → im}/operations/file-user.js +54 -41
  28. package/dist/shortcuts/{yimiaoban → im}/operations/group-read.js +46 -44
  29. package/dist/shortcuts/{yimiaoban → im}/operations/group-write.js +113 -66
  30. package/dist/shortcuts/{yimiaoban → im}/operations/msg-sync.js +164 -141
  31. package/dist/shortcuts/{yimiaoban → im}/operations/msg-write.js +47 -47
  32. package/dist/shortcuts/{yimiaoban → im}/operations/person.js +10 -10
  33. package/dist/shortcuts/{yimiaoban → im}/operations/registry.js +10 -8
  34. package/dist/shortcuts/{yimiaoban → im}/operations/session.js +82 -83
  35. package/dist/shortcuts/im/operations/shared.js +442 -0
  36. package/dist/shortcuts/{yimiaoban → im}/operations/types.js +1 -1
  37. package/dist/shortcuts/im/operations/user-remind.js +201 -0
  38. package/dist/shortcuts/{yimiaoban → im}/operations/write-util.js +7 -7
  39. package/dist/shortcuts/{yimiaoban → im}/operations.js +3 -3
  40. package/dist/shortcuts/index.js +10 -2
  41. package/dist/shortcuts/invoice/manifest.js +113 -10
  42. package/dist/shortcuts/invoice/operations/import.js +39 -14
  43. package/dist/shortcuts/invoice/operations/reim.js +38 -18
  44. package/dist/shortcuts/invoice/operations/shared.js +35 -6
  45. package/dist/shortcuts/jiuchuanhui/manifest.js +3 -3
  46. package/dist/shortcuts/jiuchuanhui/operations/registry.js +2 -2
  47. package/dist/shortcuts/{yimiaoban → okr}/continuation.js +10 -10
  48. package/dist/shortcuts/okr/errors.js +70 -0
  49. package/dist/shortcuts/okr/host.js +169 -0
  50. package/dist/shortcuts/okr/index.js +155 -0
  51. package/dist/shortcuts/okr/manifest.js +70 -0
  52. package/dist/shortcuts/okr/operations/link.js +305 -0
  53. package/dist/shortcuts/okr/operations/read.js +481 -0
  54. package/dist/shortcuts/okr/operations/registry.js +31 -0
  55. package/dist/shortcuts/okr/operations/shared.js +381 -0
  56. package/dist/shortcuts/okr/operations/types.js +88 -0
  57. package/dist/shortcuts/okr/operations/write.js +838 -0
  58. package/dist/shortcuts/okr/operations.js +8 -0
  59. package/dist/shortcuts/project/continuation.js +70 -0
  60. package/dist/shortcuts/project/errors.js +53 -0
  61. package/dist/shortcuts/project/host.js +160 -0
  62. package/dist/shortcuts/project/index.js +106 -0
  63. package/dist/shortcuts/project/manifest.js +36 -0
  64. package/dist/shortcuts/project/operations/read.js +551 -0
  65. package/dist/shortcuts/project/operations/registry.js +31 -0
  66. package/dist/shortcuts/project/operations/shared.js +68 -0
  67. package/dist/shortcuts/project/operations/types.js +39 -0
  68. package/dist/shortcuts/project/operations/write.js +266 -0
  69. package/dist/shortcuts/project/operations.js +8 -0
  70. package/dist/shortcuts/workflow/continuation.js +508 -0
  71. package/dist/shortcuts/workflow/endpoints.js +149 -0
  72. package/dist/shortcuts/workflow/errors.js +112 -0
  73. package/dist/shortcuts/workflow/host.js +224 -0
  74. package/dist/shortcuts/workflow/index.js +116 -0
  75. package/dist/shortcuts/workflow/manifest.js +30 -0
  76. package/dist/shortcuts/workflow/operations/form.js +4159 -0
  77. package/dist/shortcuts/workflow/operations/read.js +3778 -0
  78. package/dist/shortcuts/workflow/operations/registry.js +33 -0
  79. package/dist/shortcuts/workflow/operations/shared.js +167 -0
  80. package/dist/shortcuts/workflow/operations/types.js +44 -0
  81. package/dist/shortcuts/workflow/operations/write.js +1991 -0
  82. package/dist/shortcuts/workflow/operations.js +119 -0
  83. package/dist/shortcuts/workflow/state.js +182 -0
  84. package/docs/SKILL.md +5 -3
  85. package/docs/_catalog.md +10 -1
  86. package/docs/agent-invoice.md +2 -2
  87. package/docs/agent-skill-install.md +2 -2
  88. package/docs/e10-auth.md +3 -1
  89. package/docs/ebuilder-form.md +38 -0
  90. package/docs/im.md +104 -0
  91. package/docs/invoice.md +5 -5
  92. package/docs/okr.md +122 -0
  93. package/docs/operation-manual.md +10 -7
  94. package/docs/project.md +69 -0
  95. package/docs/skill-review-2026-09-19.md +68 -0
  96. package/package.json +3 -2
  97. package/scripts/package-skill.mjs +38 -11
  98. package/scripts/sync-connector-skills.mjs +172 -0
  99. package/skill-template/business-info.json +357 -16
  100. package/skill-template/domains/ebuilder-form.md +5 -0
  101. package/skill-template/domains/okr.md +18 -0
  102. package/skill-template/domains/shijingran.md +3 -0
  103. package/skill-template/domains/skill-maker.md +4 -4
  104. package/skill-template/domains/workflow.md +22 -0
  105. package/skill-template/domains/yepiaotong.md +4 -2
  106. package/skill-template/domains/yimiaoban.md +13 -10
  107. package/skill-template/product.json +5 -0
  108. package/skill-template/skill-template.md +1 -0
  109. package/skills/weaver-e10-calendar/SKILL.md +5 -1
  110. package/skills/weaver-e10-calendar/references/calendar-query.md +7 -0
  111. package/skills/weaver-e10-calendar/references/source-manifest.json +314 -32
  112. package/skills/weaver-e10-ebuilder-form/SKILL.md +123 -0
  113. package/skills/weaver-e10-ebuilder-form/references/context-routing.md +90 -0
  114. package/skills/weaver-e10-ebuilder-form/references/custom-api.md +86 -0
  115. package/skills/weaver-e10-ebuilder-form/references/disabled-capabilities.md +50 -0
  116. package/skills/weaver-e10-ebuilder-form/references/fields-browser.md +100 -0
  117. package/skills/weaver-e10-ebuilder-form/references/list-nlist.md +91 -0
  118. package/skills/weaver-e10-ebuilder-form/references/openapi-read.md +74 -0
  119. package/skills/weaver-e10-ebuilder-form/references/openapi-write.md +86 -0
  120. package/skills/weaver-e10-ebuilder-form/references/source-manifest.json +107 -0
  121. package/skills/weaver-e10-esb/SKILL.md +1 -1
  122. package/skills/weaver-e10-esb/references/source-manifest.json +15 -14
  123. package/skills/weaver-e10-hrm/SKILL.md +1 -1
  124. package/skills/weaver-e10-hrm/references/source-manifest.json +357 -38
  125. package/skills/weaver-e10-jiuchuanhui/SKILL.md +22 -4
  126. package/skills/weaver-e10-jiuchuanhui/references/clue.md +4 -2
  127. package/skills/weaver-e10-jiuchuanhui/references/contact.md +1 -1
  128. package/skills/weaver-e10-jiuchuanhui/references/customer.md +3 -3
  129. package/skills/weaver-e10-jiuchuanhui/references/disabled-capabilities.md +1 -1
  130. package/skills/weaver-e10-jiuchuanhui/references/discovery-config.md +10 -10
  131. package/skills/weaver-e10-jiuchuanhui/references/general-helpers.md +3 -3
  132. package/skills/weaver-e10-jiuchuanhui/references/sale.md +7 -7
  133. package/skills/weaver-e10-jiuchuanhui/references/source-manifest.json +3 -3
  134. package/skills/weaver-e10-jucailin/SKILL.md +2 -2
  135. package/skills/weaver-e10-mail/SKILL.md +22 -6
  136. package/skills/weaver-e10-meeting/SKILL.md +22 -1
  137. package/skills/weaver-e10-okr/SKILL.md +139 -0
  138. package/skills/weaver-e10-okr/references/okr-align.md +59 -0
  139. package/skills/weaver-e10-okr/references/okr-keyresult.md +68 -0
  140. package/skills/weaver-e10-okr/references/okr-link-routing.md +67 -0
  141. package/skills/weaver-e10-okr/references/okr-query.md +105 -0
  142. package/skills/weaver-e10-okr/references/okr-write.md +94 -0
  143. package/skills/weaver-e10-okr/references/source-manifest.json +672 -0
  144. package/skills/weaver-e10-plan/SKILL.md +3 -3
  145. package/skills/weaver-e10-plan/references/plan-report-write.md +1 -1
  146. package/skills/weaver-e10-plan/references/source-manifest.json +20 -20
  147. package/skills/weaver-e10-qiyecheng/SKILL.md +21 -1
  148. package/skills/weaver-e10-qiyecheng/references/source-manifest.json +17 -17
  149. package/skills/weaver-e10-shared/SKILL.md +79 -11
  150. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +41 -8
  151. package/skills/weaver-e10-shared/references/non-interactive-environment.md +78 -0
  152. package/skills/weaver-e10-shared/references/weaver-e10-installation.md +39 -0
  153. package/skills/weaver-e10-shijingran/SKILL.md +83 -0
  154. package/skills/weaver-e10-shijingran/references/field-resolution.md +105 -0
  155. package/skills/weaver-e10-shijingran/references/operations.md +154 -0
  156. package/skills/weaver-e10-shijingran/references/source-manifest.json +1380 -0
  157. package/skills/weaver-e10-shijingran/references/write-operations.md +90 -0
  158. package/skills/weaver-e10-skill-maker/SKILL.md +26 -9
  159. package/skills/weaver-e10-skill-maker/references/business-skill-generation.md +39 -8
  160. package/skills/weaver-e10-skill-maker/references/detector-validation.md +25 -8
  161. package/skills/weaver-e10-skill-maker/references/module-cli-generation.md +66 -5
  162. package/skills/weaver-e10-skill-maker/references/module-gap-audit-and-repair.md +86 -0
  163. package/skills/weaver-e10-skill-maker/references/source-update-detection.md +59 -5
  164. package/skills/weaver-e10-skill-maker/references/weaver-skill-style.md +16 -8
  165. package/skills/weaver-e10-wenshuding/SKILL.md +28 -4
  166. package/skills/weaver-e10-wenshuding/references/archive-search.md +14 -0
  167. package/skills/weaver-e10-wenshuding/references/source-manifest.json +27 -26
  168. package/skills/weaver-e10-workflow/SKILL.md +250 -0
  169. package/skills/weaver-e10-workflow/references/source-manifest.json +1062 -0
  170. package/skills/weaver-e10-workflow/references/workflow-agent-entry.md +96 -0
  171. package/skills/weaver-e10-workflow/references/workflow-batch.md +275 -0
  172. package/skills/weaver-e10-workflow/references/workflow-create.md +182 -0
  173. package/skills/weaver-e10-workflow/references/workflow-edit.md +106 -0
  174. package/skills/weaver-e10-workflow/references/workflow-memory.md +165 -0
  175. package/skills/weaver-e10-workflow/references/workflow-operate.md +153 -0
  176. package/skills/weaver-e10-workflow/references/workflow-query.md +821 -0
  177. package/skills/weaver-e10-workflow/references/workflow-share.md +117 -0
  178. package/skills/weaver-e10-workflow/references/workflow-view.md +189 -0
  179. package/skills/weaver-e10-yepiaotong/SKILL.md +28 -28
  180. package/skills/weaver-e10-yepiaotong/references/invoice-disabled-capabilities.md +11 -5
  181. package/skills/weaver-e10-yepiaotong/references/invoice-import.md +14 -8
  182. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +9 -43
  183. package/skills/weaver-e10-yepiaotong/references/invoice-issuing.md +8 -0
  184. package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +13 -17
  185. package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +6 -7
  186. package/skills/weaver-e10-yepiaotong/references/reim-examples.md +2 -2
  187. package/skills/weaver-e10-yepiaotong/references/source-manifest.json +1155 -553
  188. package/skills/weaver-e10-yimiaoban/SKILL.md +56 -38
  189. package/skills/weaver-e10-yimiaoban/references/ding-write.md +8 -8
  190. package/skills/weaver-e10-yimiaoban/references/error-codes.md +16 -0
  191. package/skills/weaver-e10-yimiaoban/references/field-resolution.md +10 -10
  192. package/skills/weaver-e10-yimiaoban/references/file-user-i18n.md +12 -12
  193. package/skills/weaver-e10-yimiaoban/references/group-read.md +16 -16
  194. package/skills/weaver-e10-yimiaoban/references/group-write.md +17 -15
  195. package/skills/weaver-e10-yimiaoban/references/msg-read.md +21 -17
  196. package/skills/weaver-e10-yimiaoban/references/msg-write.md +10 -10
  197. package/skills/weaver-e10-yimiaoban/references/person.md +6 -6
  198. package/skills/weaver-e10-yimiaoban/references/safety-boundaries.md +15 -11
  199. package/skills/weaver-e10-yimiaoban/references/session-sysmsg.md +11 -10
  200. package/skills/weaver-e10-yimiaoban/references/source-manifest.json +2164 -154
  201. package/skills/weaver-e10-yimiaoban/references/user-remind.md +75 -0
  202. package/skills/weaver-e10-ziguanjia/SKILL.md +4 -2
  203. package/skills/weaver-e10-ziguanjia/references/source-manifest.json +99 -29
  204. package/tools/weaver-skill-detector-1.0.13/SKILL.md +253 -0
  205. package/tools/weaver-skill-detector-1.0.13/_meta.json +6 -0
  206. package/tools/weaver-skill-detector-1.0.13/references/checklist.md +298 -0
  207. package/tools/weaver-skill-detector-1.0.13/scripts/validate_skill.py +4190 -0
  208. package/dist/shortcuts/yimiaoban/operations/shared.js +0 -236
  209. package/docs/yimiaoban.md +0 -86
  210. package/skills/weaver-e10-calendar/product.json +0 -8
  211. package/skills/weaver-e10-esb/product.json +0 -8
  212. package/skills/weaver-e10-hrm/product.json +0 -8
  213. package/skills/weaver-e10-jiuchuanhui/product.json +0 -8
  214. package/skills/weaver-e10-jucailin/product.json +0 -8
  215. package/skills/weaver-e10-mail/product.json +0 -8
  216. package/skills/weaver-e10-meeting/product.json +0 -8
  217. package/skills/weaver-e10-plan/product.json +0 -8
  218. package/skills/weaver-e10-qiyecheng/product.json +0 -8
  219. package/skills/weaver-e10-skill-maker/product.json +0 -8
  220. package/skills/weaver-e10-wenshuding/product.json +0 -8
  221. package/skills/weaver-e10-yepiaotong/product.json +0 -8
  222. package/skills/weaver-e10-yepiaotong/references/invoice-red.md +0 -261
  223. package/skills/weaver-e10-yimiaoban/product.json +0 -8
  224. package/skills/weaver-e10-ziguanjia/product.json +0 -8
  225. /package/dist/shortcuts/{yimiaoban → im}/operations/msg-parse.js +0 -0
@@ -4,47 +4,329 @@
4
4
  "skill": "weaver-e10-calendar",
5
5
  "generatedAt": "2026-09-08",
6
6
  "sourceSet": {
7
- "aggregateSha256": "2120af4a51488aa4c29bfe0efafb6017b5b4f46f92c8c5c35f2a9e96a2e60f28",
8
- "sourceRoots": ["H:/日程SKILL包/weaver-e10-calendar"],
7
+ "aggregateSha256": "cdf3a32c775c5a64311d6c1a69130ac7a4aecf8cccca17758b9ee91ebf1bdde9",
8
+ "sourceRoots": [
9
+ "H:/日程SKILL包/weaver-e10-calendar"
10
+ ],
9
11
  "detectionStrength": "strong"
10
12
  },
11
13
  "generatedTargets": {
12
- "cli": ["src/shortcuts/calendar", "src/shortcuts/index.ts"],
13
- "skill": ["skills/weaver-e10-calendar"],
14
- "tests": ["test/business/calendar-*.test.ts"],
15
- "docs": ["docs/calendar.md", "skill-template/domains/calendar.md"]
14
+ "cli": [
15
+ "src/shortcuts/calendar",
16
+ "src/shortcuts/index.ts"
17
+ ],
18
+ "skill": [
19
+ "skills/weaver-e10-calendar"
20
+ ],
21
+ "tests": [
22
+ "test/business/calendar-*.test.ts"
23
+ ],
24
+ "docs": [
25
+ "docs/calendar.md",
26
+ "skill-template/domains/calendar.md"
27
+ ]
16
28
  },
17
29
  "sources": [
18
- { "path": "SKILL.md", "role": "existing-skill", "size": 12914, "sha256": "57c18643d5db7ffc2d8051832d0687d61368d9ac7415a3bc8b48a3c6af99a9d2" },
19
- { "path": "references/catalog.md", "role": "api-doc", "size": 3835, "sha256": "d00f89c65b1cda6c957368bede0644906a4bbd92e4b9aeaa99cb132c2d716032" },
20
- { "path": "references/calendar-create-save.md", "role": "api-doc", "size": 9696, "sha256": "26a1009e631832a29a15035afa99675ca77b474bf04b28948ba00ce32821834f" },
21
- { "path": "references/calendar-delete-delete.md", "role": "api-doc", "size": 4008, "sha256": "04deda7c3f0074d18695d1a46f75b40d70ffb073eab79fdbe7ce3ac33e9c6f31" },
22
- { "path": "references/calendar-list-esb.md", "role": "api-doc", "size": 8535, "sha256": "5c2b022455afac7776a8915a0d7b25c05cfd32206bcc6506d05ea4607cd370be" },
23
- { "path": "references/calendar-priority-query.md", "role": "api-doc", "size": 4801, "sha256": "2578d6731e497a45a6f1a67ef29b59afea3dfda422bef6eaaf0caad03970de01" },
24
- { "path": "references/calendar-query-count.md", "role": "api-doc", "size": 2763, "sha256": "f898f0bb4a6a85a2015e94af48ddef53f416e597da524d41349f3fdafc149079" },
25
- { "path": "references/calendar-query-get.md", "role": "api-doc", "size": 9354, "sha256": "7f9babaa26b23e77f9d8c4e4714318ef323c4ae817c0ba4e265004cdf6ad83ae" },
26
- { "path": "references/calendar-type-query.md", "role": "api-doc", "size": 5404, "sha256": "4696c2e981e349e04a49840b47cb55e5440c391e3167efdda1a7e1b44c638858" },
27
- { "path": "references/calendar-update-update.md", "role": "api-doc", "size": 8899, "sha256": "c3ca3c98be1779bfeda67d2e1041a703b9ea14bc525e0af6d6c835fee382bdc2" }
30
+ {
31
+ "path": "SKILL.md",
32
+ "role": "existing-skill",
33
+ "size": 12914,
34
+ "sha256": "57c18643d5db7ffc2d8051832d0687d61368d9ac7415a3bc8b48a3c6af99a9d2"
35
+ },
36
+ {
37
+ "path": "references/catalog.md",
38
+ "role": "api-doc",
39
+ "size": 3835,
40
+ "sha256": "d00f89c65b1cda6c957368bede0644906a4bbd92e4b9aeaa99cb132c2d716032"
41
+ },
42
+ {
43
+ "path": "references/calendar-create-save.md",
44
+ "role": "api-doc",
45
+ "size": 9696,
46
+ "sha256": "26a1009e631832a29a15035afa99675ca77b474bf04b28948ba00ce32821834f"
47
+ },
48
+ {
49
+ "path": "references/calendar-delete-delete.md",
50
+ "role": "api-doc",
51
+ "size": 4008,
52
+ "sha256": "04deda7c3f0074d18695d1a46f75b40d70ffb073eab79fdbe7ce3ac33e9c6f31"
53
+ },
54
+ {
55
+ "path": "references/calendar-list-esb.md",
56
+ "role": "api-doc",
57
+ "size": 8535,
58
+ "sha256": "5c2b022455afac7776a8915a0d7b25c05cfd32206bcc6506d05ea4607cd370be"
59
+ },
60
+ {
61
+ "path": "references/calendar-priority-query.md",
62
+ "role": "api-doc",
63
+ "size": 4801,
64
+ "sha256": "2578d6731e497a45a6f1a67ef29b59afea3dfda422bef6eaaf0caad03970de01"
65
+ },
66
+ {
67
+ "path": "references/calendar-query-count.md",
68
+ "role": "api-doc",
69
+ "size": 2763,
70
+ "sha256": "f898f0bb4a6a85a2015e94af48ddef53f416e597da524d41349f3fdafc149079"
71
+ },
72
+ {
73
+ "path": "references/calendar-query-get.md",
74
+ "role": "api-doc",
75
+ "size": 9354,
76
+ "sha256": "7f9babaa26b23e77f9d8c4e4714318ef323c4ae817c0ba4e265004cdf6ad83ae"
77
+ },
78
+ {
79
+ "path": "references/calendar-type-query.md",
80
+ "role": "api-doc",
81
+ "size": 5404,
82
+ "sha256": "4696c2e981e349e04a49840b47cb55e5440c391e3167efdda1a7e1b44c638858"
83
+ },
84
+ {
85
+ "path": "references/calendar-update-update.md",
86
+ "role": "api-doc",
87
+ "size": 8899,
88
+ "sha256": "c3ca3c98be1779bfeda67d2e1041a703b9ea14bc525e0af6d6c835fee382bdc2"
89
+ }
28
90
  ],
29
91
  "sourceChunks": [
30
- { "id": "POST /api/ebuilder/form/formdata/v2/saveFormData/createAgenda", "sourcePath": "references/calendar-create-save.md", "anchor": "创建日程", "mapsToOperations": ["calendar.create.prepare", "calendar.create.apply"], "mapsToReferences": ["references/calendar-write.md"] },
31
- { "id": "POST /api/ebuilder/form/formdata/v2/getFormDataByPk/queryAgenda", "sourcePath": "references/calendar-query-get.md", "anchor": "查询日程", "mapsToOperations": ["calendar.get"], "mapsToReferences": ["references/calendar-query.md"] },
32
- { "id": "POST /api/ebuilder/form/formdata/v2/getFormDataCount/queryAgendaCount", "sourcePath": "references/calendar-query-count.md", "anchor": "查询日程总数", "mapsToOperations": ["calendar.count"], "mapsToReferences": ["references/calendar-query.md"] },
33
- { "id": "POST /api/ebuilder/form/formdata/v2/updateFormData/updateAgenda", "sourcePath": "references/calendar-update-update.md", "anchor": "更新日程", "mapsToOperations": ["calendar.update.prepare", "calendar.update.apply"], "mapsToReferences": ["references/calendar-write.md"] },
34
- { "id": "POST /api/ebuilder/form/formdata/v2/deleteFormData/deleteAgenda", "sourcePath": "references/calendar-delete-delete.md", "anchor": "删除日程", "mapsToOperations": ["calendar.delete.prepare", "calendar.delete.apply"], "mapsToReferences": ["references/calendar-write.md"] },
35
- { "id": "POST /api/ebuilder/form/formdata/v2/getFormDataList/queryAgendaPriority", "sourcePath": "references/calendar-priority-query.md", "anchor": "查询日程紧急程度", "mapsToOperations": ["calendar.priority.list"], "mapsToReferences": ["references/calendar-dict.md"] },
36
- { "id": "POST /api/ebuilder/form/formdata/v2/getFormDataList/queryAgendaType", "sourcePath": "references/calendar-type-query.md", "anchor": "查询日程类型", "mapsToOperations": ["calendar.type.list"], "mapsToReferences": ["references/calendar-dict.md"] },
37
- { "id": "POST /api/esb/server/event/triggerActionFlow", "sourcePath": "references/calendar-list-esb.md", "anchor": "查询日程列表", "mapsToOperations": ["calendar.list"], "mapsToReferences": ["references/calendar-query.md"] }
92
+ {
93
+ "id": "POST /api/ebuilder/form/formdata/v2/saveFormData/createAgenda",
94
+ "sourcePath": "references/calendar-create-save.md",
95
+ "anchor": "创建日程",
96
+ "mapsToOperations": [
97
+ "calendar.create.prepare",
98
+ "calendar.create.apply"
99
+ ],
100
+ "mapsToReferences": [
101
+ "references/calendar-write.md"
102
+ ]
103
+ },
104
+ {
105
+ "id": "POST /api/ebuilder/form/formdata/v2/getFormDataByPk/queryAgenda",
106
+ "sourcePath": "references/calendar-query-get.md",
107
+ "anchor": "查询日程",
108
+ "mapsToOperations": [
109
+ "calendar.get"
110
+ ],
111
+ "mapsToReferences": [
112
+ "references/calendar-query.md"
113
+ ]
114
+ },
115
+ {
116
+ "id": "POST /api/ebuilder/form/formdata/v2/getFormDataCount/queryAgendaCount",
117
+ "sourcePath": "references/calendar-query-count.md",
118
+ "anchor": "查询日程总数",
119
+ "mapsToOperations": [
120
+ "calendar.count"
121
+ ],
122
+ "mapsToReferences": [
123
+ "references/calendar-query.md"
124
+ ]
125
+ },
126
+ {
127
+ "id": "POST /api/ebuilder/form/formdata/v2/updateFormData/updateAgenda",
128
+ "sourcePath": "references/calendar-update-update.md",
129
+ "anchor": "更新日程",
130
+ "mapsToOperations": [
131
+ "calendar.update.prepare",
132
+ "calendar.update.apply"
133
+ ],
134
+ "mapsToReferences": [
135
+ "references/calendar-write.md"
136
+ ]
137
+ },
138
+ {
139
+ "id": "POST /api/ebuilder/form/formdata/v2/deleteFormData/deleteAgenda",
140
+ "sourcePath": "references/calendar-delete-delete.md",
141
+ "anchor": "删除日程",
142
+ "mapsToOperations": [
143
+ "calendar.delete.prepare",
144
+ "calendar.delete.apply"
145
+ ],
146
+ "mapsToReferences": [
147
+ "references/calendar-write.md"
148
+ ]
149
+ },
150
+ {
151
+ "id": "POST /api/ebuilder/form/formdata/v2/getFormDataList/queryAgendaPriority",
152
+ "sourcePath": "references/calendar-priority-query.md",
153
+ "anchor": "查询日程紧急程度",
154
+ "mapsToOperations": [
155
+ "calendar.priority.list"
156
+ ],
157
+ "mapsToReferences": [
158
+ "references/calendar-dict.md"
159
+ ]
160
+ },
161
+ {
162
+ "id": "POST /api/ebuilder/form/formdata/v2/getFormDataList/queryAgendaType",
163
+ "sourcePath": "references/calendar-type-query.md",
164
+ "anchor": "查询日程类型",
165
+ "mapsToOperations": [
166
+ "calendar.type.list"
167
+ ],
168
+ "mapsToReferences": [
169
+ "references/calendar-dict.md"
170
+ ]
171
+ },
172
+ {
173
+ "id": "POST /api/esb/server/event/triggerActionFlow",
174
+ "sourcePath": "references/calendar-list-esb.md",
175
+ "anchor": "查询日程列表",
176
+ "mapsToOperations": [
177
+ "calendar.list"
178
+ ],
179
+ "mapsToReferences": [
180
+ "references/calendar-query.md"
181
+ ]
182
+ }
38
183
  ],
39
184
  "operationImpact": {
40
- "calendar.list": { "sourceChunkIds": ["POST /api/esb/server/event/triggerActionFlow"], "schemaFields": ["start_time", "end_time", "keywork", "page_no", "page_size"], "references": ["references/calendar-query.md"], "tests": ["test/business/calendar-*.test.ts"], "risk": "read", "requiresConfirmationChain": false },
41
- "calendar.get": { "sourceChunkIds": ["POST /api/ebuilder/form/formdata/v2/getFormDataByPk/queryAgenda"], "schemaFields": ["id"], "references": ["references/calendar-query.md"], "tests": ["test/business/calendar-*.test.ts"], "risk": "read", "requiresConfirmationChain": false },
42
- "calendar.count": { "sourceChunkIds": ["POST /api/ebuilder/form/formdata/v2/getFormDataCount/queryAgendaCount"], "schemaFields": [], "references": ["references/calendar-query.md"], "tests": ["test/business/calendar-*.test.ts"], "risk": "read", "requiresConfirmationChain": false },
43
- "calendar.priority.list": { "sourceChunkIds": ["POST /api/ebuilder/form/formdata/v2/getFormDataList/queryAgendaPriority"], "schemaFields": ["priority_name", "pageNo", "pageSize"], "references": ["references/calendar-dict.md"], "tests": ["test/business/calendar-*.test.ts"], "risk": "read", "requiresConfirmationChain": false },
44
- "calendar.type.list": { "sourceChunkIds": ["POST /api/ebuilder/form/formdata/v2/getFormDataList/queryAgendaType"], "schemaFields": ["type_name", "pageNo", "pageSize"], "references": ["references/calendar-dict.md"], "tests": ["test/business/calendar-*.test.ts"], "risk": "read", "requiresConfirmationChain": false },
45
- "calendar.create.prepare": { "sourceChunkIds": ["POST /api/ebuilder/form/formdata/v2/saveFormData/createAgenda"], "schemaFields": ["agn_name", "start_time", "end_time", "participants", "agn_type", "priority"], "references": ["references/calendar-write.md"], "tests": ["test/business/calendar-*.test.ts"], "risk": "write-confirmed", "requiresConfirmationChain": true },
46
- "calendar.update.prepare": { "sourceChunkIds": ["POST /api/ebuilder/form/formdata/v2/updateFormData/updateAgenda"], "schemaFields": ["id", "agn_name", "start_time", "end_time", "participants", "agn_type", "priority"], "references": ["references/calendar-write.md"], "tests": ["test/business/calendar-*.test.ts"], "risk": "write-confirmed", "requiresConfirmationChain": true },
47
- "calendar.delete.prepare": { "sourceChunkIds": ["POST /api/ebuilder/form/formdata/v2/deleteFormData/deleteAgenda"], "schemaFields": ["id"], "references": ["references/calendar-write.md"], "tests": ["test/business/calendar-*.test.ts"], "risk": "write-confirmed", "requiresConfirmationChain": true }
185
+ "calendar.list": {
186
+ "sourceChunkIds": [
187
+ "POST /api/esb/server/event/triggerActionFlow"
188
+ ],
189
+ "schemaFields": [
190
+ "start_time",
191
+ "end_time",
192
+ "keywork",
193
+ "page_no",
194
+ "page_size"
195
+ ],
196
+ "references": [
197
+ "references/calendar-query.md"
198
+ ],
199
+ "tests": [
200
+ "test/business/calendar-*.test.ts"
201
+ ],
202
+ "risk": "read",
203
+ "requiresConfirmationChain": false
204
+ },
205
+ "calendar.get": {
206
+ "sourceChunkIds": [
207
+ "POST /api/ebuilder/form/formdata/v2/getFormDataByPk/queryAgenda"
208
+ ],
209
+ "schemaFields": [
210
+ "id"
211
+ ],
212
+ "references": [
213
+ "references/calendar-query.md"
214
+ ],
215
+ "tests": [
216
+ "test/business/calendar-*.test.ts"
217
+ ],
218
+ "risk": "read",
219
+ "requiresConfirmationChain": false
220
+ },
221
+ "calendar.count": {
222
+ "sourceChunkIds": [
223
+ "POST /api/ebuilder/form/formdata/v2/getFormDataCount/queryAgendaCount"
224
+ ],
225
+ "schemaFields": [],
226
+ "references": [
227
+ "references/calendar-query.md"
228
+ ],
229
+ "tests": [
230
+ "test/business/calendar-*.test.ts"
231
+ ],
232
+ "risk": "read",
233
+ "requiresConfirmationChain": false
234
+ },
235
+ "calendar.priority.list": {
236
+ "sourceChunkIds": [
237
+ "POST /api/ebuilder/form/formdata/v2/getFormDataList/queryAgendaPriority"
238
+ ],
239
+ "schemaFields": [
240
+ "priority_name",
241
+ "pageNo",
242
+ "pageSize"
243
+ ],
244
+ "references": [
245
+ "references/calendar-dict.md"
246
+ ],
247
+ "tests": [
248
+ "test/business/calendar-*.test.ts"
249
+ ],
250
+ "risk": "read",
251
+ "requiresConfirmationChain": false
252
+ },
253
+ "calendar.type.list": {
254
+ "sourceChunkIds": [
255
+ "POST /api/ebuilder/form/formdata/v2/getFormDataList/queryAgendaType"
256
+ ],
257
+ "schemaFields": [
258
+ "type_name",
259
+ "pageNo",
260
+ "pageSize"
261
+ ],
262
+ "references": [
263
+ "references/calendar-dict.md"
264
+ ],
265
+ "tests": [
266
+ "test/business/calendar-*.test.ts"
267
+ ],
268
+ "risk": "read",
269
+ "requiresConfirmationChain": false
270
+ },
271
+ "calendar.create.prepare": {
272
+ "sourceChunkIds": [
273
+ "POST /api/ebuilder/form/formdata/v2/saveFormData/createAgenda"
274
+ ],
275
+ "schemaFields": [
276
+ "agn_name",
277
+ "start_time",
278
+ "end_time",
279
+ "participants",
280
+ "agn_type",
281
+ "priority"
282
+ ],
283
+ "references": [
284
+ "references/calendar-write.md"
285
+ ],
286
+ "tests": [
287
+ "test/business/calendar-*.test.ts"
288
+ ],
289
+ "risk": "write-confirmed",
290
+ "requiresConfirmationChain": true
291
+ },
292
+ "calendar.update.prepare": {
293
+ "sourceChunkIds": [
294
+ "POST /api/ebuilder/form/formdata/v2/updateFormData/updateAgenda"
295
+ ],
296
+ "schemaFields": [
297
+ "id",
298
+ "agn_name",
299
+ "start_time",
300
+ "end_time",
301
+ "participants",
302
+ "agn_type",
303
+ "priority"
304
+ ],
305
+ "references": [
306
+ "references/calendar-write.md"
307
+ ],
308
+ "tests": [
309
+ "test/business/calendar-*.test.ts"
310
+ ],
311
+ "risk": "write-confirmed",
312
+ "requiresConfirmationChain": true
313
+ },
314
+ "calendar.delete.prepare": {
315
+ "sourceChunkIds": [
316
+ "POST /api/ebuilder/form/formdata/v2/deleteFormData/deleteAgenda"
317
+ ],
318
+ "schemaFields": [
319
+ "id"
320
+ ],
321
+ "references": [
322
+ "references/calendar-write.md"
323
+ ],
324
+ "tests": [
325
+ "test/business/calendar-*.test.ts"
326
+ ],
327
+ "risk": "write-confirmed",
328
+ "requiresConfirmationChain": true
329
+ }
48
330
  },
49
331
  "notes": [
50
332
  "源资料为纯文档型 skill(无脚本),请求体构造依据各单接口文档的请求示例。",
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: weaver-e10-ebuilder-form
3
+ display_name: 泛微E10 eBuilder表单
4
+ display_name_en: Weaver E10 eBuilder Forms
5
+ description: "泛微E10 eBuilder 表单助手:定位菜单,查询 List/NList 列表,读取字段和浏览数据,并通过 CLI 安全执行表单 OpenAPI/自定义接口读写。"
6
+ description_zh: "面向泛微 E10 eBuilder 表单:通过 weaver-work-cli ebuilder-form 定位菜单与页面上下文,查询列表和表单数据,解析字段、选项和浏览字段,并用 prepare/apply 确认链新增、修改或删除数据。"
7
+ description_en: "Query eBuilder menus, List/NList pages, fields, browser values, and form data through the weaver-work-cli ebuilder-form command with prepare/apply confirmation for writes."
8
+ version: 1.0.0
9
+ author: 泛微网络科技股份有限公司
10
+ agent_created: true
11
+ requires:
12
+ bins: ["weaver-work-cli"]
13
+ dependencies:
14
+ - weaver-e10-login
15
+ cliHelp: "weaver-work-cli ebuilder-form --help"
16
+ ---
17
+
18
+ # 泛微E10 eBuilder表单
19
+
20
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若不存在则必须先执行 `weaver-work-cli skills install shared --target-dir <当前Agent的Skills目录>`,若 CLI 未安装则先执行 `npm install -g weaver-work-cli`,安装或读取失败时必须停止执行。**
21
+
22
+ 本技能覆盖 eBuilder 表单菜单定位、List/NList 页面查询、字段/选项/浏览字段解析,以及 OpenAPI 和已发布自定义接口的表单数据读写。所有业务调用必须通过 `weaver-work-cli ebuilder-form`,禁止绕过 CLI 直接拼 E10 接口、Cookie、ETEAMSID 或 `/api/bs/` 路径。
23
+
24
+ 认证由 `weaver-work-cli` 共享登录能力和 `weaver-e10-login` 兼容依赖托管。底层请求头由 CLI 自动设置,Agent 不得在对话或命令输入中索取、粘贴或输出这些凭证:
25
+
26
+ ```text
27
+ Cookie: <e10-login 返回的完整原始 Cookie 串>(禁止裁剪/去重/改写)
28
+ eteamsid: <e10-login 返回的 ETEAMSID>
29
+ User-Agent: AgentType=<agentType>,IsAgent=true
30
+ ```
31
+
32
+ ## 命令入口
33
+
34
+ ```text
35
+ weaver-work-cli ebuilder-form --help
36
+ weaver-work-cli ebuilder-form schema
37
+ weaver-work-cli --json ebuilder-form run <operation> --input-json '<json>'
38
+ ```
39
+
40
+ `schema` 是可用 operation 与字段的事实来源。未出现在 schema 中的能力,不要写成可执行步骤。
41
+
42
+ ## 高优先级语义
43
+
44
+ - “这个表单在哪 / 找某个 eBuilder 菜单” → `ebuilder-form.menu.search` 取候选菜单,再 `ebuilder-form.context.resolve`
45
+ - “页面 URL 解析 / 这个列表页对应哪个 objId” → `ebuilder-form.context.resolve`(`url` 传整串 URL)
46
+ - “这个表单有哪些视图 / 切换列表视图” → `ebuilder-form.views.list`
47
+ - “查列表 / 表格数据 / 分页 / 总数” → 先 resolve,再按 `listKind` 走 `ebuilder-form.list.query` 或 `ebuilder-form.nlist.query`
48
+ - “看列表字段、搜索项、排序、统计、固定条件” → `ebuilder-form.list.config` 或 `ebuilder-form.nlist.config`
49
+ - “表单字段、选项、主明细映射、人员/部门/关联字段按名称解析” → `fields.get`、`options.get`、`mapping.get`、`browser.resolve`
50
+ - “按 objId 查详情/分页/总数” → `openapi.detail`、`openapi.query`、`openapi.count`
51
+ - “新增/修改/删除表单数据” → 对应 `*.prepare` → 用户确认 → 对应 `*.apply`
52
+ - “已发布自定义接口 interfacePk 查询/写入” → `custom.*`
53
+
54
+ 菜单多命中时必须列出候选让用户选择,不得自动取第一条。
55
+
56
+ ## Reference 路由表
57
+
58
+ | 触发条件 | Reference |
59
+ | --- | --- |
60
+ | 菜单搜索、URL 解析、apiPrefix、appId/listId/objId 上下文、页面地址、视图枚举 | [`references/context-routing.md`](references/context-routing.md) |
61
+ | List/NList 配置、分页、总数、搜索条件、NList customConfig 编码 | [`references/list-nlist.md`](references/list-nlist.md) |
62
+ | 字段定义、选项、主明细映射、人员/部门/审批/文档等浏览字段 | [`references/fields-browser.md`](references/fields-browser.md) |
63
+ | OpenAPI 详情、分页、总数的只读查询 | [`references/openapi-read.md`](references/openapi-read.md) |
64
+ | OpenAPI 新增、修改、删除的 prepare/apply 确认链 | [`references/openapi-write.md`](references/openapi-write.md) |
65
+ | 已发布自定义接口的查询、新增、修改、删除 | [`references/custom-api.md`](references/custom-api.md) |
66
+ | 源资料中存在但当前 CLI 未自动化或需要人工补充的能力边界 | [`references/disabled-capabilities.md`](references/disabled-capabilities.md) |
67
+
68
+ ## 处理链
69
+
70
+ 1. 先运行 `weaver-work-cli ebuilder-form schema` 确认 operation 和字段。
71
+ 2. 有菜单名或页面 URL 时先执行 `ebuilder-form.context.resolve`,保留返回的 `context`。同一任务后续 operation 优先传 `context`,避免重复搜索菜单或猜 ID。
72
+ 3. 页面列表查询必须按 `context.listKind` 分流:`List` 用 `list.*`,`NList` 用 `nlist.*`。不要把两套接口互相试跑。
73
+ 4. 表单级数据查询或写入必须先确认接口族:有 `objId` 走 OpenAPI;有 `interfacePk` 且用户明确是已发布自定义接口时走 `custom.*`;两者同时出现且用户没有指定时先消歧。
74
+ 5. 字段显示名(`text`)不能直接当写入键:通常用字段的 `name`;自定义字段若 `name == id`,或目标接口明确要求组件数据键时,改用 `config.dataKey`。写入前用 `fields.get` 核对真实字段。选择类字段写入选项 `id`,不写选项名称。
75
+ 6. 新增、修改、删除必须先 prepare。prepare 返回 `requestPreview` 和 10 分钟有效的 `continuation`;向用户摘要目标、字段、数量和风险,得到明确确认后 apply。
76
+
77
+ ## 写操作失败决策树
78
+
79
+ | 错误 subtype | 含义 | 处置 |
80
+ | --- | --- | --- |
81
+ | `required` / `confirm_required` | 未显式确认 | 先向用户确认,再传 `confirm: true` |
82
+ | `continuation_invalid` / `continuation_expired` / `continuation_mismatch` | continuation 无效、过期或不属于当前 operation | 重新执行 prepare |
83
+ | `continuation_actor_changed` | 当前 E10 登录环境或用户与 prepare 时不一致 | 重新 prepare,不复用旧 continuation |
84
+ | `business_error` / `http_error` | 服务端业务失败或 HTTP 失败 | 保留业务消息,停止后续写入 |
85
+ | `session_expired` | 登录态失效或权限不足 | 按 shared 规则恢复 E10 会话后从只读步骤重新开始 |
86
+ | `too_many_pages` | 查询全部页超过 100 页预算 | 请用户增加筛选条件,不得拆成多次单页查询规避预算 |
87
+ | `write_uncertain` | 写请求结果未知 | 立即停止,不自动重放;先做只读核验 |
88
+
89
+ ## 安全边界
90
+
91
+ - 认证、profile、Cookie、ETEAMSID 和小 E 统一登录由 `weaver-work-cli` 托管;不要索取或输出凭证。
92
+ - 禁止调用 `/api/bs/`,禁止默认域名,禁止从 `menuId`、`appId`、`listId` 或 `objId` 互相猜测。
93
+ - 文件、附件、OCR、导入、远程 URL 解析不属于当前模块;如后续新增,必须先按 shared 规则取得用户对文件内容处理的明确确认。
94
+ - 查询列表时单页最大 200;查询全部页预计 100 页或更多时停止。
95
+ - 删除不可逆。用户当前请求已明确删除目标时仍必须走 CLI 的 continuation 校验;目标不明确时先询问。
96
+
97
+ ## 失败处理与自检
98
+
99
+ - 业务失败看 stderr JSON 的 `error.type` / `error.subtype` / `error.message`,不要用退出码 `0` 判断成功。
100
+ - 不确定某个能力是否可用时,先跑 `weaver-work-cli ebuilder-form schema` 核对;`schema` 是唯一事实来源,未出现在其中的能力不要写成可执行步骤。
101
+ - 命令不可用(`command not found` 或退出码 127)时,按 shared 规则的安装章节处理,不要自行拼装接口。
102
+ - **诊断出口**:任何步骤拿不到预期结果时,优先回到 `ebuilder-form schema` 与对应 reference 核对参数,不要换接口硬试、不要绕过 CLI 直连 E10。
103
+ - 认证类错误(`authentication` / `session_expired`):按 shared 规则恢复 E10 会话后从**只读步骤**重新开始;写操作的旧 continuation 作废,必须重新 prepare。
104
+
105
+ ## 平台兼容示例
106
+
107
+ Windows PowerShell:
108
+
109
+ ```powershell
110
+ weaver-work-cli ebuilder-form schema
111
+ weaver-work-cli --json ebuilder-form run ebuilder-form.menu.search --input-json '{"menuKeywords":["客户档案"]}'
112
+ weaver-work-cli --json ebuilder-form run ebuilder-form.context.resolve --input-json '{"menuKeywords":["客户档案"]}'
113
+ ```
114
+
115
+ macOS/Linux(bash/zsh):
116
+
117
+ ```bash
118
+ weaver-work-cli ebuilder-form schema
119
+ weaver-work-cli --json ebuilder-form run ebuilder-form.menu.search --input-json '{"menuKeywords":["客户档案"]}'
120
+ weaver-work-cli --json ebuilder-form run ebuilder-form.context.resolve --input-json '{"menuKeywords":["客户档案"]}'
121
+ ```
122
+
123
+ 复杂 JSON 使用 UTF-8 文件和 `--input <path>`;只在确认当前 shell 管道稳定时使用 `--input -`。
@@ -0,0 +1,90 @@
1
+ # 菜单定位与上下文解析
2
+
3
+ ## 何时使用
4
+
5
+ 用户给了菜单名、页面 URL,或需要拿到 `appId` / `apiPrefix` / `objId` / `listId` / 页面地址时使用。这是几乎所有其它 operation 的前置步骤。
6
+
7
+ ## 请求头契约(CLI 注入,Agent 不手写)
8
+
9
+ CLI 发往 E10 的每个请求都自动携带以下三项用户信息参数,缺一不可(业务入参里不要传这些字段,也不要手工拼装请求头):
10
+
11
+ ```text
12
+ Cookie: <e10-login 返回的完整原始 Cookie 串>(禁止裁剪/去重/改写)
13
+ eteamsid: <e10-login 返回的 ETEAMSID>
14
+ User-Agent: AgentType=<agentType>,IsAgent=true
15
+ ```
16
+
17
+ ## operation
18
+
19
+ | operation | risk | 必填 | 说明 |
20
+ | --- | --- | --- | --- |
21
+ | `ebuilder-form.menu.search` | read | `menuKeywords` | 按业务关键词查询当前账号有权限访问的 eBuilder 表格/数据列表菜单 |
22
+ | `ebuilder-form.context.resolve` | read | 至少一种定位输入 | 从菜单关键词、页面 URL、`objId` 或现有 `context` 解析出完整上下文 |
23
+ | `ebuilder-form.views.list` | read | `objId` | 枚举某个表单对象下的 List/NList 视图 |
24
+
25
+ ### 定位输入(任选其一,命中多条时报错而非猜)
26
+
27
+ | 字段 | 说明 |
28
+ | --- | --- |
29
+ | `menuKeywords` | 菜单关键词数组,最多 5 个;给菜单名时用这个 |
30
+ | `menu` / `menuId` | 菜单名或菜单 ID |
31
+ | `url` | E10 列表页面 URL;支持 `/sp/ebdfpage/list`、`viewport` 和 `/ebdapp/view` 三种形态 |
32
+ | `appId` / `objId` / `listId` | 已拿到的上下文片段,用于补全 |
33
+ | `context` | 上一次 `context.resolve` 的返回对象,原样回传可跳过重复搜索 |
34
+ | `listKind` | `List` 或 `NList`;已知时显式传入可避免二次判定 |
35
+
36
+ ### 返回的 `context` 关键字段
37
+
38
+ `appId`、`apiPrefix`、`objId`、`listId`、`hostPageId`、`listKind`、`menuUrl`、`entryUrl`。
39
+
40
+ 后续 operation 优先传 `context`(整个对象原样回传),避免重复搜索菜单或猜 ID。`context` 里的 `appId` 同时作为字段、选项接口的 `groupId`;没有可靠 `groupId` 时必须从当前应用上下文取得,不要猜测。`context` 里已有的字段不要再用单字段入参重复传,两者冲突会报 `context_conflict`。
41
+
42
+ ## 推荐顺序
43
+
44
+ 1. 有菜单名 → `menu.search` 拿候选菜单;多个候选时**列给用户选择**,不要用第一个。
45
+ 2. 拿到菜单(或用户直接给了页面 URL)→ `context.resolve` 拿 `context`。
46
+ 3. 需要切换同一表单的其它视图 → `views.list` 枚举,再回到 `context.resolve` 或直接带 `listId` 查询。
47
+
48
+ ## 命令
49
+
50
+ 按菜单关键词定位:
51
+
52
+ Windows PowerShell:
53
+
54
+ ```powershell
55
+ weaver-work-cli --json ebuilder-form run ebuilder-form.menu.search --input-json '{"menuKeywords":["客户档案"]}'
56
+ weaver-work-cli --json ebuilder-form run ebuilder-form.context.resolve --input-json '{"menuKeywords":["客户档案"]}'
57
+ ```
58
+
59
+ macOS/Linux(bash/zsh):
60
+
61
+ ```bash
62
+ weaver-work-cli --json ebuilder-form run ebuilder-form.menu.search --input-json '{"menuKeywords":["客户档案"]}'
63
+ weaver-work-cli --json ebuilder-form run ebuilder-form.context.resolve --input-json '{"menuKeywords":["客户档案"]}'
64
+ ```
65
+
66
+ 按页面 URL 解析(把用户给的整串 URL 原样传入,不要手工截取参数):
67
+
68
+ ```powershell
69
+ weaver-work-cli --json ebuilder-form run ebuilder-form.context.resolve --input-json '{"url":"https://<用户域名>/sp/ebdfpage/list/0/123456"}'
70
+ ```
71
+
72
+ ## 失败处理
73
+
74
+ | subtype | 含义 | 处置 |
75
+ | --- | --- | --- |
76
+ | `keywords_required` | 未提供任何定位输入 | 至少补一种:`menuKeywords` / `url` / `objId` / `context` |
77
+ | `menu_not_found` | 菜单名未命中 | 换更通用关键词重试一次;仍无命中就向用户索取菜单全称或页面 URL |
78
+ | `menu_ambiguous` / `menu_not_unique` | 菜单多命中 | **列候选让用户选**,不要自动取第一条 |
79
+ | `menu_response_invalid` / `deployment_response_invalid` | 响应结构异常 | 停止并原样反馈,不要换接口重试 |
80
+ | `url_invalid` / `url_type_missing` / `url_id_missing` / `url_origin_required` | URL 无法解析 | 向用户索取完整 URL(含域名),不要手工拼 |
81
+ | `url_cross_origin` | URL 域名与当前登录环境不一致 | 确认用户给的是当前环境的地址,不要跨环境解析 |
82
+ | `url_app_conflict` / `url_menu_conflict` / `url_id_conflict` / `url_type_conflict` | URL 与其它入参冲突 | 只保留 URL,去掉冲突入参 |
83
+ | `api_prefix_invalid` / `api_prefix_conflict` | apiPrefix 非法或冲突 | 以 `context.resolve` 返回为准,不要手工指定 |
84
+ | `app_conflict` / `context_conflict` / `input_conflict` | 入参互相冲突 | 只保留一种定位来源 |
85
+ | `session_expired` | 登录态失效 | 按 shared 规则恢复 E10 会话后从只读步骤重新开始 |
86
+
87
+ ## 红线
88
+
89
+ - 禁止从 `menuId`、`appId`、`listId`、`objId` 互相猜测,缺哪个就用 `context.resolve` 补。
90
+ - 禁止把未出现在 `ebuilder-form schema` 中的能力当作可用 operation。