@josephyan/qingflow-cli 0.2.0-beta.71 → 0.2.0-beta.73

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.
@@ -8,6 +8,8 @@ from typing import Any, Callable
8
8
 
9
9
  JSONObject = dict[str, Any]
10
10
  TransformFn = Callable[[JSONObject], None]
11
+ USER_DOMAIN = "user"
12
+ BUILDER_DOMAIN = "builder"
11
13
 
12
14
 
13
15
  COMMON_SUCCESS_DROP_TOP = {
@@ -45,6 +47,10 @@ COMMON_ERROR_DROP_TOP = {
45
47
  SUCCESS_POLICY_BY_TOOL: dict[str, TransformFn] = {}
46
48
 
47
49
 
50
+ def _tool_key(domain: str, tool_name: str) -> str:
51
+ return f"{domain}:{tool_name}"
52
+
53
+
48
54
  def trim_public_response(tool_name: str | None, payload: dict[str, Any]) -> dict[str, Any]:
49
55
  if not isinstance(payload, dict):
50
56
  return payload
@@ -97,215 +103,242 @@ def resolve_cli_tool_name(args: Any) -> str | None:
97
103
  command = getattr(args, "command", None)
98
104
  if command == "auth":
99
105
  return {
100
- "login": "auth_login",
101
- "use-token": "auth_use_token",
102
- "whoami": "auth_whoami",
103
- "logout": "auth_logout",
106
+ "login": _tool_key(USER_DOMAIN, "auth_login"),
107
+ "use-token": _tool_key(USER_DOMAIN, "auth_use_token"),
108
+ "whoami": _tool_key(USER_DOMAIN, "auth_whoami"),
109
+ "logout": _tool_key(USER_DOMAIN, "auth_logout"),
104
110
  }.get(getattr(args, "auth_command", None))
105
111
  if command == "workspace":
106
112
  return {
107
- "list": "workspace_list",
108
- "select": "workspace_select",
113
+ "list": _tool_key(USER_DOMAIN, "workspace_list"),
114
+ "select": _tool_key(USER_DOMAIN, "workspace_select"),
109
115
  }.get(getattr(args, "workspace_command", None))
110
116
  if command == "app":
111
117
  return {
112
- "list": "app_list",
113
- "search": "app_search",
114
- "get": "app_get",
118
+ "list": _tool_key(USER_DOMAIN, "app_list"),
119
+ "search": _tool_key(USER_DOMAIN, "app_search"),
120
+ "get": _tool_key(USER_DOMAIN, "app_get"),
115
121
  }.get(getattr(args, "app_command", None))
122
+ if command == "portal":
123
+ return {
124
+ "list": _tool_key(USER_DOMAIN, "portal_list"),
125
+ "get": _tool_key(USER_DOMAIN, "portal_get"),
126
+ }.get(getattr(args, "portal_command", None))
127
+ if command == "view":
128
+ return {
129
+ "get": _tool_key(USER_DOMAIN, "view_get"),
130
+ }.get(getattr(args, "view_command", None))
131
+ if command == "chart":
132
+ return {
133
+ "get": _tool_key(USER_DOMAIN, "chart_get"),
134
+ }.get(getattr(args, "chart_command", None))
116
135
  if command == "record":
117
136
  record_command = getattr(args, "record_command", None)
118
137
  if record_command == "schema":
119
138
  return {
120
- "applicant": "record_schema_get",
121
- "browse": "record_browse_schema_get",
122
- "insert": "record_insert_schema_get",
123
- "update": "record_update_schema_get",
124
- "import": "record_import_schema_get",
125
- "code-block": "record_code_block_schema_get",
139
+ "applicant": _tool_key(USER_DOMAIN, "record_schema_get"),
140
+ "browse": _tool_key(USER_DOMAIN, "record_browse_schema_get"),
141
+ "insert": _tool_key(USER_DOMAIN, "record_insert_schema_get"),
142
+ "update": _tool_key(USER_DOMAIN, "record_update_schema_get"),
143
+ "import": _tool_key(USER_DOMAIN, "record_import_schema_get"),
144
+ "code-block": _tool_key(USER_DOMAIN, "record_code_block_schema_get"),
126
145
  }.get(getattr(args, "record_schema_command", None))
127
146
  return {
128
- "list": "record_list",
129
- "get": "record_get",
130
- "insert": "record_insert",
131
- "update": "record_update",
132
- "delete": "record_delete",
133
- "analyze": "record_analyze",
134
- "code-block-run": "record_code_block_run",
147
+ "list": _tool_key(USER_DOMAIN, "record_list"),
148
+ "get": _tool_key(USER_DOMAIN, "record_get"),
149
+ "insert": _tool_key(USER_DOMAIN, "record_insert"),
150
+ "update": _tool_key(USER_DOMAIN, "record_update"),
151
+ "delete": _tool_key(USER_DOMAIN, "record_delete"),
152
+ "analyze": _tool_key(USER_DOMAIN, "record_analyze"),
153
+ "code-block-run": _tool_key(USER_DOMAIN, "record_code_block_run"),
135
154
  }.get(record_command)
136
155
  if command == "import":
137
156
  return {
138
- "template": "record_import_template_get",
139
- "verify": "record_import_verify",
140
- "repair": "record_import_repair_local",
141
- "start": "record_import_start",
142
- "status": "record_import_status_get",
157
+ "template": _tool_key(USER_DOMAIN, "record_import_template_get"),
158
+ "verify": _tool_key(USER_DOMAIN, "record_import_verify"),
159
+ "repair": _tool_key(USER_DOMAIN, "record_import_repair_local"),
160
+ "start": _tool_key(USER_DOMAIN, "record_import_start"),
161
+ "status": _tool_key(USER_DOMAIN, "record_import_status_get"),
143
162
  }.get(getattr(args, "import_command", None))
144
163
  if command == "task":
145
164
  return {
146
- "list": "task_list",
147
- "get": "task_get",
148
- "action": "task_action_execute",
149
- "log": "task_workflow_log_get",
165
+ "list": _tool_key(USER_DOMAIN, "task_list"),
166
+ "get": _tool_key(USER_DOMAIN, "task_get"),
167
+ "action": _tool_key(USER_DOMAIN, "task_action_execute"),
168
+ "log": _tool_key(USER_DOMAIN, "task_workflow_log_get"),
150
169
  }.get(getattr(args, "task_command", None))
151
170
  if command not in {"builder", "build"}:
152
171
  return None
153
172
  builder_command = getattr(args, "builder_command", None)
173
+ if builder_command == "file":
174
+ return {
175
+ "upload-local": _tool_key(BUILDER_DOMAIN, "file_upload_local"),
176
+ }.get(getattr(args, "builder_file_command", None))
177
+ if builder_command == "feedback":
178
+ return {
179
+ "submit": _tool_key(BUILDER_DOMAIN, "feedback_submit"),
180
+ }.get(getattr(args, "builder_feedback_command", None))
154
181
  if builder_command == "contract":
155
- return "builder_tool_contract"
182
+ return _tool_key(BUILDER_DOMAIN, "builder_tool_contract")
156
183
  if builder_command == "member":
157
184
  return {
158
- "search": "member_search",
185
+ "search": _tool_key(BUILDER_DOMAIN, "member_search"),
159
186
  }.get(getattr(args, "builder_member_command", None))
160
187
  if builder_command == "role":
161
188
  return {
162
- "search": "role_search",
163
- "create": "role_create",
189
+ "search": _tool_key(BUILDER_DOMAIN, "role_search"),
190
+ "create": _tool_key(BUILDER_DOMAIN, "role_create"),
164
191
  }.get(getattr(args, "builder_role_command", None))
165
192
  if builder_command == "package":
166
193
  return {
167
- "list": "package_list",
168
- "resolve": "package_resolve",
169
- "create": "package_create",
170
- "attach-app": "package_attach_app",
194
+ "list": _tool_key(BUILDER_DOMAIN, "package_list"),
195
+ "resolve": _tool_key(BUILDER_DOMAIN, "package_resolve"),
196
+ "create": _tool_key(BUILDER_DOMAIN, "package_create"),
197
+ "attach-app": _tool_key(BUILDER_DOMAIN, "package_attach_app"),
171
198
  }.get(getattr(args, "builder_package_command", None))
172
199
  if builder_command == "app":
200
+ app_command = getattr(args, "builder_app_command", None)
201
+ if app_command == "get":
202
+ return {
203
+ "summary": _tool_key(BUILDER_DOMAIN, "app_get"),
204
+ "fields": _tool_key(BUILDER_DOMAIN, "app_get_fields"),
205
+ "layout": _tool_key(BUILDER_DOMAIN, "app_get_layout"),
206
+ "views": _tool_key(BUILDER_DOMAIN, "app_get_views"),
207
+ "flow": _tool_key(BUILDER_DOMAIN, "app_get_flow"),
208
+ "charts": _tool_key(BUILDER_DOMAIN, "app_get_charts"),
209
+ }.get(getattr(args, "builder_app_get_section", "summary"))
173
210
  return {
174
- "resolve": "app_resolve",
175
- "release-edit-lock-if-mine": "app_release_edit_lock_if_mine",
176
- "read-summary": "app_read_summary",
177
- "read-fields": "app_read_fields",
178
- "read-layout": "app_read_layout_summary",
179
- "read-views": "app_read_views_summary",
180
- "read-flow": "app_read_flow_summary",
181
- "read-charts": "app_read_charts_summary",
182
- }.get(getattr(args, "builder_app_command", None))
211
+ "resolve": _tool_key(BUILDER_DOMAIN, "app_resolve"),
212
+ "release-edit-lock-if-mine": _tool_key(BUILDER_DOMAIN, "app_release_edit_lock_if_mine"),
213
+ }.get(app_command)
183
214
  if builder_command == "button":
184
215
  return {
185
- "list": "app_custom_button_list",
186
- "get": "app_custom_button_get",
187
- "create": "app_custom_button_create",
188
- "update": "app_custom_button_update",
189
- "delete": "app_custom_button_delete",
216
+ "list": _tool_key(BUILDER_DOMAIN, "app_custom_button_list"),
217
+ "get": _tool_key(BUILDER_DOMAIN, "app_custom_button_get"),
218
+ "create": _tool_key(BUILDER_DOMAIN, "app_custom_button_create"),
219
+ "update": _tool_key(BUILDER_DOMAIN, "app_custom_button_update"),
220
+ "delete": _tool_key(BUILDER_DOMAIN, "app_custom_button_delete"),
190
221
  }.get(getattr(args, "builder_button_command", None))
191
222
  if builder_command == "portal":
192
223
  return {
193
- "list": "portal_list",
194
- "get": "portal_get",
195
- "read-summary": "portal_read_summary",
196
- "apply": "portal_apply",
224
+ "list": _tool_key(BUILDER_DOMAIN, "portal_list"),
225
+ "get": _tool_key(BUILDER_DOMAIN, "portal_get"),
226
+ "apply": _tool_key(BUILDER_DOMAIN, "portal_apply"),
197
227
  }.get(getattr(args, "builder_portal_command", None))
198
228
  if builder_command == "view":
199
229
  return {
200
- "get": "view_get",
230
+ "get": _tool_key(BUILDER_DOMAIN, "view_get"),
201
231
  }.get(getattr(args, "builder_view_command", None))
202
232
  if builder_command == "chart":
203
233
  return {
204
- "get": "chart_get",
234
+ "get": _tool_key(BUILDER_DOMAIN, "chart_get"),
205
235
  }.get(getattr(args, "builder_chart_command", None))
206
236
  if builder_command == "schema":
207
- return {"apply": "app_schema_apply"}.get(getattr(args, "builder_schema_command", None))
237
+ return {"apply": _tool_key(BUILDER_DOMAIN, "app_schema_apply")}.get(getattr(args, "builder_schema_command", None))
208
238
  if builder_command == "layout":
209
- return {"apply": "app_layout_apply"}.get(getattr(args, "builder_layout_command", None))
239
+ return {"apply": _tool_key(BUILDER_DOMAIN, "app_layout_apply")}.get(getattr(args, "builder_layout_command", None))
210
240
  if builder_command == "views":
211
- return {"apply": "app_views_apply"}.get(getattr(args, "builder_views_command", None))
241
+ return {"apply": _tool_key(BUILDER_DOMAIN, "app_views_apply")}.get(getattr(args, "builder_views_command", None))
212
242
  if builder_command == "flow":
213
- return {"apply": "app_flow_apply"}.get(getattr(args, "builder_flow_command", None))
243
+ return {"apply": _tool_key(BUILDER_DOMAIN, "app_flow_apply")}.get(getattr(args, "builder_flow_command", None))
214
244
  if builder_command == "charts":
215
- return {"apply": "app_charts_apply"}.get(getattr(args, "builder_charts_command", None))
245
+ return {"apply": _tool_key(BUILDER_DOMAIN, "app_charts_apply")}.get(getattr(args, "builder_charts_command", None))
216
246
  if builder_command == "publish":
217
- return {"verify": "app_publish_verify"}.get(getattr(args, "builder_publish_command", None))
247
+ return {"verify": _tool_key(BUILDER_DOMAIN, "app_publish_verify")}.get(getattr(args, "builder_publish_command", None))
218
248
  return None
219
249
 
220
250
 
221
251
  USER_SERVER_METHOD_MAP = {
222
- "auth_login": "auth_login",
223
- "auth_use_token": "auth_use_token",
224
- "auth_whoami": "auth_whoami",
225
- "auth_logout": "auth_logout",
226
- "workspace_list": "workspace_list",
227
- "workspace_select": "workspace_select",
228
- "app_list": "app_list",
229
- "app_search": "app_search",
230
- "app_get": "app_get",
231
- "file_get_upload_info": "file_get_upload_info",
232
- "file_upload_local": "file_upload_local",
233
- "feedback_submit": "feedback_submit",
234
- "record_import_schema_get": "record_import_schema_get",
235
- "record_import_template_get": "record_import_template_get",
236
- "record_import_verify": "record_import_verify",
237
- "record_import_repair_local": "record_import_repair_local",
238
- "record_import_start": "record_import_start",
239
- "record_import_status_get": "record_import_status_get",
240
- "record_insert_schema_get_public": "record_insert_schema_get",
241
- "record_member_candidates": "record_member_candidates",
242
- "record_department_candidates": "record_department_candidates",
243
- "record_analyze": "record_analyze",
244
- "record_list": "record_list",
245
- "record_get_public": "record_get",
246
- "record_browse_schema_get_public": "record_browse_schema_get",
247
- "record_update_schema_get_public": "record_update_schema_get",
248
- "record_insert_public": "record_insert",
249
- "record_update_public": "record_update",
250
- "record_delete_public": "record_delete",
251
- "record_code_block_schema_get_public": "record_code_block_schema_get",
252
- "record_code_block_run": "record_code_block_run",
253
- "task_list": "task_list",
254
- "task_get": "task_get",
255
- "task_action_execute": "task_action_execute",
256
- "task_associated_report_detail_get": "task_associated_report_detail_get",
257
- "task_workflow_log_get": "task_workflow_log_get",
258
- "directory_search": "directory_search",
259
- "directory_list_internal_users": "directory_list_internal_users",
260
- "directory_list_all_internal_users": "directory_list_all_internal_users",
261
- "directory_list_internal_departments": "directory_list_internal_departments",
262
- "directory_list_all_departments": "directory_list_all_departments",
263
- "directory_list_sub_departments": "directory_list_sub_departments",
264
- "directory_list_external_members": "directory_list_external_members",
252
+ "auth_login": _tool_key(USER_DOMAIN, "auth_login"),
253
+ "auth_use_token": _tool_key(USER_DOMAIN, "auth_use_token"),
254
+ "auth_whoami": _tool_key(USER_DOMAIN, "auth_whoami"),
255
+ "auth_logout": _tool_key(USER_DOMAIN, "auth_logout"),
256
+ "workspace_list": _tool_key(USER_DOMAIN, "workspace_list"),
257
+ "workspace_select": _tool_key(USER_DOMAIN, "workspace_select"),
258
+ "app_list": _tool_key(USER_DOMAIN, "app_list"),
259
+ "app_search": _tool_key(USER_DOMAIN, "app_search"),
260
+ "app_get": _tool_key(USER_DOMAIN, "app_get"),
261
+ "portal_list": _tool_key(USER_DOMAIN, "portal_list"),
262
+ "portal_get": _tool_key(USER_DOMAIN, "portal_get"),
263
+ "view_get": _tool_key(USER_DOMAIN, "view_get"),
264
+ "chart_get": _tool_key(USER_DOMAIN, "chart_get"),
265
+ "file_get_upload_info": _tool_key(USER_DOMAIN, "file_get_upload_info"),
266
+ "file_upload_local": _tool_key(USER_DOMAIN, "file_upload_local"),
267
+ "feedback_submit": _tool_key(USER_DOMAIN, "feedback_submit"),
268
+ "record_import_schema_get": _tool_key(USER_DOMAIN, "record_import_schema_get"),
269
+ "record_import_template_get": _tool_key(USER_DOMAIN, "record_import_template_get"),
270
+ "record_import_verify": _tool_key(USER_DOMAIN, "record_import_verify"),
271
+ "record_import_repair_local": _tool_key(USER_DOMAIN, "record_import_repair_local"),
272
+ "record_import_start": _tool_key(USER_DOMAIN, "record_import_start"),
273
+ "record_import_status_get": _tool_key(USER_DOMAIN, "record_import_status_get"),
274
+ "record_insert_schema_get_public": _tool_key(USER_DOMAIN, "record_insert_schema_get"),
275
+ "record_member_candidates": _tool_key(USER_DOMAIN, "record_member_candidates"),
276
+ "record_department_candidates": _tool_key(USER_DOMAIN, "record_department_candidates"),
277
+ "record_analyze": _tool_key(USER_DOMAIN, "record_analyze"),
278
+ "record_list": _tool_key(USER_DOMAIN, "record_list"),
279
+ "record_get_public": _tool_key(USER_DOMAIN, "record_get"),
280
+ "record_browse_schema_get_public": _tool_key(USER_DOMAIN, "record_browse_schema_get"),
281
+ "record_update_schema_get_public": _tool_key(USER_DOMAIN, "record_update_schema_get"),
282
+ "record_insert_public": _tool_key(USER_DOMAIN, "record_insert"),
283
+ "record_update_public": _tool_key(USER_DOMAIN, "record_update"),
284
+ "record_delete_public": _tool_key(USER_DOMAIN, "record_delete"),
285
+ "record_code_block_schema_get_public": _tool_key(USER_DOMAIN, "record_code_block_schema_get"),
286
+ "record_code_block_run": _tool_key(USER_DOMAIN, "record_code_block_run"),
287
+ "task_list": _tool_key(USER_DOMAIN, "task_list"),
288
+ "task_get": _tool_key(USER_DOMAIN, "task_get"),
289
+ "task_action_execute": _tool_key(USER_DOMAIN, "task_action_execute"),
290
+ "task_associated_report_detail_get": _tool_key(USER_DOMAIN, "task_associated_report_detail_get"),
291
+ "task_workflow_log_get": _tool_key(USER_DOMAIN, "task_workflow_log_get"),
292
+ "directory_search": _tool_key(USER_DOMAIN, "directory_search"),
293
+ "directory_list_internal_users": _tool_key(USER_DOMAIN, "directory_list_internal_users"),
294
+ "directory_list_all_internal_users": _tool_key(USER_DOMAIN, "directory_list_all_internal_users"),
295
+ "directory_list_internal_departments": _tool_key(USER_DOMAIN, "directory_list_internal_departments"),
296
+ "directory_list_all_departments": _tool_key(USER_DOMAIN, "directory_list_all_departments"),
297
+ "directory_list_sub_departments": _tool_key(USER_DOMAIN, "directory_list_sub_departments"),
298
+ "directory_list_external_members": _tool_key(USER_DOMAIN, "directory_list_external_members"),
265
299
  }
266
300
 
267
301
  BUILDER_SERVER_METHOD_MAP = {
268
- "auth_login": "auth_login",
269
- "auth_use_token": "auth_use_token",
270
- "auth_whoami": "auth_whoami",
271
- "auth_logout": "auth_logout",
272
- "workspace_list": "workspace_list",
273
- "workspace_select": "workspace_select",
274
- "file_upload_local": "file_upload_local",
275
- "feedback_submit": "feedback_submit",
276
- "package_list": "package_list",
277
- "package_resolve": "package_resolve",
278
- "builder_tool_contract": "builder_tool_contract",
279
- "package_create": "package_create",
280
- "member_search": "member_search",
281
- "role_search": "role_search",
282
- "role_create": "role_create",
283
- "package_attach_app": "package_attach_app",
284
- "app_release_edit_lock_if_mine": "app_release_edit_lock_if_mine",
285
- "app_resolve": "app_resolve",
286
- "app_custom_button_list": "app_custom_button_list",
287
- "app_custom_button_get": "app_custom_button_get",
288
- "app_custom_button_create": "app_custom_button_create",
289
- "app_custom_button_update": "app_custom_button_update",
290
- "app_custom_button_delete": "app_custom_button_delete",
291
- "app_read_summary": "app_read_summary",
292
- "app_read_fields": "app_read_fields",
293
- "app_read_layout_summary": "app_read_layout_summary",
294
- "app_read_views_summary": "app_read_views_summary",
295
- "app_read_flow_summary": "app_read_flow_summary",
296
- "app_read_charts_summary": "app_read_charts_summary",
297
- "portal_list": "portal_list",
298
- "portal_get": "portal_get",
299
- "portal_read_summary": "portal_read_summary",
300
- "view_get": "view_get",
301
- "chart_get": "chart_get",
302
- "app_schema_apply": "app_schema_apply",
303
- "app_layout_apply": "app_layout_apply",
304
- "app_flow_apply": "app_flow_apply",
305
- "app_views_apply": "app_views_apply",
306
- "app_charts_apply": "app_charts_apply",
307
- "portal_apply": "portal_apply",
308
- "app_publish_verify": "app_publish_verify",
302
+ "auth_login": _tool_key(BUILDER_DOMAIN, "auth_login"),
303
+ "auth_use_token": _tool_key(BUILDER_DOMAIN, "auth_use_token"),
304
+ "auth_whoami": _tool_key(BUILDER_DOMAIN, "auth_whoami"),
305
+ "auth_logout": _tool_key(BUILDER_DOMAIN, "auth_logout"),
306
+ "workspace_list": _tool_key(BUILDER_DOMAIN, "workspace_list"),
307
+ "workspace_select": _tool_key(BUILDER_DOMAIN, "workspace_select"),
308
+ "file_upload_local": _tool_key(BUILDER_DOMAIN, "file_upload_local"),
309
+ "feedback_submit": _tool_key(BUILDER_DOMAIN, "feedback_submit"),
310
+ "package_list": _tool_key(BUILDER_DOMAIN, "package_list"),
311
+ "package_resolve": _tool_key(BUILDER_DOMAIN, "package_resolve"),
312
+ "builder_tool_contract": _tool_key(BUILDER_DOMAIN, "builder_tool_contract"),
313
+ "package_create": _tool_key(BUILDER_DOMAIN, "package_create"),
314
+ "member_search": _tool_key(BUILDER_DOMAIN, "member_search"),
315
+ "role_search": _tool_key(BUILDER_DOMAIN, "role_search"),
316
+ "role_create": _tool_key(BUILDER_DOMAIN, "role_create"),
317
+ "package_attach_app": _tool_key(BUILDER_DOMAIN, "package_attach_app"),
318
+ "app_release_edit_lock_if_mine": _tool_key(BUILDER_DOMAIN, "app_release_edit_lock_if_mine"),
319
+ "app_resolve": _tool_key(BUILDER_DOMAIN, "app_resolve"),
320
+ "app_custom_button_list": _tool_key(BUILDER_DOMAIN, "app_custom_button_list"),
321
+ "app_custom_button_get": _tool_key(BUILDER_DOMAIN, "app_custom_button_get"),
322
+ "app_custom_button_create": _tool_key(BUILDER_DOMAIN, "app_custom_button_create"),
323
+ "app_custom_button_update": _tool_key(BUILDER_DOMAIN, "app_custom_button_update"),
324
+ "app_custom_button_delete": _tool_key(BUILDER_DOMAIN, "app_custom_button_delete"),
325
+ "app_get": _tool_key(BUILDER_DOMAIN, "app_get"),
326
+ "app_get_fields": _tool_key(BUILDER_DOMAIN, "app_get_fields"),
327
+ "app_get_layout": _tool_key(BUILDER_DOMAIN, "app_get_layout"),
328
+ "app_get_views": _tool_key(BUILDER_DOMAIN, "app_get_views"),
329
+ "app_get_flow": _tool_key(BUILDER_DOMAIN, "app_get_flow"),
330
+ "app_get_charts": _tool_key(BUILDER_DOMAIN, "app_get_charts"),
331
+ "portal_list": _tool_key(BUILDER_DOMAIN, "portal_list"),
332
+ "portal_get": _tool_key(BUILDER_DOMAIN, "portal_get"),
333
+ "view_get": _tool_key(BUILDER_DOMAIN, "view_get"),
334
+ "chart_get": _tool_key(BUILDER_DOMAIN, "chart_get"),
335
+ "app_schema_apply": _tool_key(BUILDER_DOMAIN, "app_schema_apply"),
336
+ "app_layout_apply": _tool_key(BUILDER_DOMAIN, "app_layout_apply"),
337
+ "app_flow_apply": _tool_key(BUILDER_DOMAIN, "app_flow_apply"),
338
+ "app_views_apply": _tool_key(BUILDER_DOMAIN, "app_views_apply"),
339
+ "app_charts_apply": _tool_key(BUILDER_DOMAIN, "app_charts_apply"),
340
+ "portal_apply": _tool_key(BUILDER_DOMAIN, "portal_apply"),
341
+ "app_publish_verify": _tool_key(BUILDER_DOMAIN, "app_publish_verify"),
309
342
  }
310
343
 
311
344
 
@@ -475,6 +508,7 @@ def _trim_app_search_like(payload: JSONObject) -> None:
475
508
 
476
509
 
477
510
  def _trim_app_get(payload: JSONObject) -> None:
511
+ _trim_builder_envelope(payload)
478
512
  _trim_nested_item_list(
479
513
  payload,
480
514
  ("data", "accessible_views"),
@@ -563,20 +597,23 @@ def _trim_builder_list_like(payload: JSONObject) -> None:
563
597
  _trim_builder_envelope(payload)
564
598
 
565
599
 
566
- def _register_policy(names: tuple[str, ...], transform: TransformFn) -> None:
567
- for name in names:
568
- SUCCESS_POLICY_BY_TOOL[name] = transform
600
+ def _register_policy(domains: tuple[str, ...], names: tuple[str, ...], transform: TransformFn) -> None:
601
+ for domain in domains:
602
+ for name in names:
603
+ SUCCESS_POLICY_BY_TOOL[_tool_key(domain, name)] = transform
569
604
 
570
605
 
571
- _register_policy(("auth_login", "auth_use_token", "auth_whoami"), _trim_auth_payload)
572
- _register_policy(("auth_logout",), _trim_auth_logout)
573
- _register_policy(("workspace_list",), _trim_workspace_list)
574
- _register_policy(("workspace_select",), _trim_workspace_select)
575
- _register_policy(("app_list", "app_search"), _trim_app_search_like)
576
- _register_policy(("app_get",), _trim_app_get)
577
- _register_policy(("file_get_upload_info",), _trim_file_upload_info)
578
- _register_policy(("file_upload_local",), _trim_file_upload_local)
606
+ _register_policy((USER_DOMAIN, BUILDER_DOMAIN), ("auth_login", "auth_use_token", "auth_whoami"), _trim_auth_payload)
607
+ _register_policy((USER_DOMAIN, BUILDER_DOMAIN), ("auth_logout",), _trim_auth_logout)
608
+ _register_policy((USER_DOMAIN, BUILDER_DOMAIN), ("workspace_list",), _trim_workspace_list)
609
+ _register_policy((USER_DOMAIN, BUILDER_DOMAIN), ("workspace_select",), _trim_workspace_select)
610
+ _register_policy((USER_DOMAIN,), ("app_list", "app_search"), _trim_app_search_like)
611
+ _register_policy((USER_DOMAIN, BUILDER_DOMAIN), ("app_get",), _trim_app_get)
612
+ _register_policy((USER_DOMAIN, BUILDER_DOMAIN), ("portal_list", "portal_get", "view_get", "chart_get"), _trim_builder_list_like)
613
+ _register_policy((USER_DOMAIN,), ("file_get_upload_info",), _trim_file_upload_info)
614
+ _register_policy((USER_DOMAIN, BUILDER_DOMAIN), ("file_upload_local",), _trim_file_upload_local)
579
615
  _register_policy(
616
+ (USER_DOMAIN,),
580
617
  (
581
618
  "record_import_schema_get",
582
619
  "record_import_template_get",
@@ -588,6 +625,7 @@ _register_policy(
588
625
  _trim_import_schema,
589
626
  )
590
627
  _register_policy(
628
+ (USER_DOMAIN,),
591
629
  (
592
630
  "record_schema_get",
593
631
  "record_insert_schema_get",
@@ -597,13 +635,14 @@ _register_policy(
597
635
  ),
598
636
  _trim_record_schema,
599
637
  )
600
- _register_policy(("record_insert", "record_update"), _trim_record_write)
601
- _register_policy(("record_get",), _trim_record_get)
602
- _register_policy(("record_list",), _trim_record_list)
603
- _register_policy(("record_analyze",), _trim_record_analyze)
604
- _register_policy(("record_code_block_run",), _trim_code_block_run)
605
- _register_policy(("task_list",), _trim_task_list)
638
+ _register_policy((USER_DOMAIN,), ("record_insert", "record_update"), _trim_record_write)
639
+ _register_policy((USER_DOMAIN,), ("record_get",), _trim_record_get)
640
+ _register_policy((USER_DOMAIN,), ("record_list",), _trim_record_list)
641
+ _register_policy((USER_DOMAIN,), ("record_analyze",), _trim_record_analyze)
642
+ _register_policy((USER_DOMAIN,), ("record_code_block_run",), _trim_code_block_run)
643
+ _register_policy((USER_DOMAIN,), ("task_list",), _trim_task_list)
606
644
  _register_policy(
645
+ (USER_DOMAIN,),
607
646
  (
608
647
  "task_get",
609
648
  "task_action_execute",
@@ -613,6 +652,7 @@ _register_policy(
613
652
  _trim_task_get,
614
653
  )
615
654
  _register_policy(
655
+ (USER_DOMAIN,),
616
656
  (
617
657
  "directory_search",
618
658
  "directory_list_internal_users",
@@ -624,12 +664,19 @@ _register_policy(
624
664
  ),
625
665
  _trim_directory,
626
666
  )
627
- _register_policy(("feedback_submit",), _trim_feedback)
667
+ _register_policy((USER_DOMAIN, BUILDER_DOMAIN), ("feedback_submit",), _trim_feedback)
628
668
  _register_policy(
669
+ (USER_DOMAIN,),
629
670
  (
630
671
  "record_member_candidates",
631
672
  "record_department_candidates",
632
673
  "record_delete",
674
+ ),
675
+ _trim_builder_list_like,
676
+ )
677
+ _register_policy(
678
+ (BUILDER_DOMAIN,),
679
+ (
633
680
  "package_list",
634
681
  "package_resolve",
635
682
  "builder_tool_contract",
@@ -645,17 +692,11 @@ _register_policy(
645
692
  "app_custom_button_create",
646
693
  "app_custom_button_update",
647
694
  "app_custom_button_delete",
648
- "app_read_summary",
649
- "app_read_fields",
650
- "app_read_layout_summary",
651
- "app_read_views_summary",
652
- "app_read_flow_summary",
653
- "app_read_charts_summary",
654
- "portal_list",
655
- "portal_get",
656
- "portal_read_summary",
657
- "view_get",
658
- "chart_get",
695
+ "app_get_fields",
696
+ "app_get_layout",
697
+ "app_get_views",
698
+ "app_get_flow",
699
+ "app_get_charts",
659
700
  "app_schema_apply",
660
701
  "app_layout_apply",
661
702
  "app_flow_apply",