@uwa4d/openapi-mcp 0.2.0-beta.0 → 0.2.0-beta.10

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 (46) hide show
  1. package/README.md +105 -9
  2. package/dist/annotate-dashboard.d.ts +48 -0
  3. package/dist/annotate-dashboard.js +413 -0
  4. package/dist/cli.js +29 -6
  5. package/dist/client.js +4 -13
  6. package/dist/composite/helpers.d.ts +19 -0
  7. package/dist/composite/helpers.js +90 -0
  8. package/dist/composite/index.d.ts +25 -0
  9. package/dist/composite/index.js +46 -0
  10. package/dist/composite/name-pattern.d.ts +8 -0
  11. package/dist/composite/name-pattern.js +25 -0
  12. package/dist/composite/overview-view.d.ts +33 -0
  13. package/dist/composite/overview-view.js +373 -0
  14. package/dist/composite/report-diagnosis.d.ts +2 -0
  15. package/dist/composite/report-diagnosis.js +347 -0
  16. package/dist/composite/route-overview.d.ts +72 -0
  17. package/dist/composite/route-overview.js +233 -0
  18. package/dist/composite/stack-agg.d.ts +77 -0
  19. package/dist/composite/stack-agg.js +409 -0
  20. package/dist/composite/stack-test-mode.d.ts +33 -0
  21. package/dist/composite/stack-test-mode.js +60 -0
  22. package/dist/composite/top-functions.d.ts +21 -0
  23. package/dist/composite/top-functions.js +178 -0
  24. package/dist/composite/top-resources.d.ts +12 -0
  25. package/dist/composite/top-resources.js +263 -0
  26. package/dist/composite/types.d.ts +25 -0
  27. package/dist/composite/types.js +2 -0
  28. package/dist/error-hints.d.ts +23 -0
  29. package/dist/error-hints.js +80 -0
  30. package/dist/indicator-dashboard-keys.d.ts +12 -0
  31. package/dist/indicator-dashboard-keys.js +50 -0
  32. package/dist/indicator-dashboard-keys.json +338 -0
  33. package/dist/presets.js +9 -0
  34. package/dist/server-instructions.d.ts +5 -0
  35. package/dist/server-instructions.js +17 -0
  36. package/dist/server.d.ts +6 -1
  37. package/dist/server.js +33 -5
  38. package/dist/tools.d.ts +17 -0
  39. package/dist/tools.js +399 -18
  40. package/dist/version-check.d.ts +14 -0
  41. package/dist/version-check.js +94 -0
  42. package/dist/version-guide.d.ts +19 -0
  43. package/dist/version-guide.js +223 -0
  44. package/package.json +2 -2
  45. package/spec/overrides.json +26 -0
  46. package/spec/uwa-openapi.json +495 -111
@@ -0,0 +1,338 @@
1
+ {
2
+ "generatedAt": "2026-08-07T02:47:15.585Z",
3
+ "keys": [
4
+ "Active_Dynamic_Bodies_Count_max",
5
+ "Active_Kinematic_Bodies_Count_max",
6
+ "AnimationClip_cnt_max",
7
+ "AnimationClip_mem_max_mb",
8
+ "AnimationUpdate_cpu_avg_ms",
9
+ "Animation_grpcpu_avg_ms",
10
+ "AnimatorInitialize_cpu_avg_ms",
11
+ "AnimatorInitialize_jank_rate",
12
+ "Animator_cnt_max",
13
+ "Animator_mem_max_mb",
14
+ "AnimatorsUpdate_cpu_avg_ms",
15
+ "AnimatorsWriteJob_cpu_avg_ms",
16
+ "Application.backgroundLoadingPriority",
17
+ "AssetBundle_Disk_mem_max_mb",
18
+ "AssetBundle_Memory_mem_max_mb",
19
+ "AssetBundle_cnt_max",
20
+ "AssetBundle_mem_max_mb",
21
+ "Asset_Count_max",
22
+ "Asset_total_cnt_max",
23
+ "Asset_total_mem_max_mb",
24
+ "AudioClip_cnt_max",
25
+ "AudioClip_mem_max_mb",
26
+ "Batch_cpu_cnt_max",
27
+ "Batches_Count_max",
28
+ "CameraImageEffects_cpu_avg_ms",
29
+ "CameraRender_cpu_avg_ms",
30
+ "CanvasBuildBatch_cpu_avg_ms",
31
+ "CanvasRenderSubBatch_cnt_max",
32
+ "CanvasRendererSyncTransform_cnt_max",
33
+ "CanvasSendWillRenderCanvases_cpu_avg_ms",
34
+ "CollectGarbageIncremental_cpu_avg_ms",
35
+ "Culling_cpu_avg_ms",
36
+ "Draw_Calls_Count_max",
37
+ "Dynamic_Bodies_2D_Count_max",
38
+ "FAsyncLoadingThread_cpu_avg_ms",
39
+ "FDrawSceneCommand_cpu_avg_ms",
40
+ "FTickFunctionTask_cpu_avg_ms",
41
+ "FTimerManager_cpu_avg_ms",
42
+ "Font_cnt_max",
43
+ "Font_mem_max_mb",
44
+ "GCCollect_jank_rate",
45
+ "GameThread_cpu_avg_ms",
46
+ "Game_Object_Count_max",
47
+ "GarbageCollectAssetsProfile_jank_rate",
48
+ "Instantiate_jank_rate",
49
+ "Kinematic_Bodies_2D_Count_max",
50
+ "LoadingReadObjectThreaded_jank_rate",
51
+ "LoadingReadObject_jank_rate",
52
+ "LoadingUpdatePreloading_cpu_avg_ms",
53
+ "Loading_grpcpu_avg_ms",
54
+ "Material_cnt_max",
55
+ "Material_mem_max_mb",
56
+ "MeshSkinningUpdate_cpu_avg_ms",
57
+ "Mesh_cnt_max",
58
+ "Mesh_mem_max_mb",
59
+ "Native_HeapTotal_mem_max_mb",
60
+ "Object_Count_max",
61
+ "OnDemandRendering_RenderFrameInterval_Count",
62
+ "Overlap_Queries_2D_Count_max",
63
+ "Overlaps_Count_max",
64
+ "ParticleSystemDraw_cnt_max",
65
+ "ParticleSystemUpdate_cpu_avg_ms",
66
+ "ParticleSystem_cnt_max",
67
+ "ParticleSystem_grpcpu_avg_ms",
68
+ "ParticleSystem_mem_max_mb",
69
+ "PhysicsFetchResults_cpu_avg_ms",
70
+ "PhysicsProcessReports_cpu_avg_ms",
71
+ "PhysicsProcessReports_jank_rate",
72
+ "PhysicsProcessing_cpu_avg_ms",
73
+ "PhysicsSimulate_cpu_avg_ms",
74
+ "Physics_grpcpu_avg_ms",
75
+ "RHIThread_cpu_avg_ms",
76
+ "RenderOpaqueGeometry_cpu_avg_ms",
77
+ "RenderPipelineManagerDoRenderLoop_Internal_cpu_avg_ms",
78
+ "RenderTexture_cnt_max",
79
+ "RenderTexture_mem_max_mb",
80
+ "RenderThread_cpu_avg_ms",
81
+ "RenderTransparentGeometry_cpu_avg_ms",
82
+ "RenderingEmitWorldScreenspaceCameraGeometry_cpu_avg_ms",
83
+ "Rendering_grpcpu_avg_ms",
84
+ "ResourcesUnloadUnusedAssets_cpu_avg_ms",
85
+ "STAT_AI_Overall_cpu_avg_ms",
86
+ "STAT_AddViewDependentWholeSceneShadowsForView_cpu_avg_ms",
87
+ "STAT_AnimGameThreadTime_cpu_avg_ms",
88
+ "STAT_AnimTickTime_cpu_avg_ms",
89
+ "STAT_AnimTriggerAnimNotifies_cpu_avg_ms",
90
+ "STAT_AnisotropyPassDrawTime_cpu_avg_ms",
91
+ "STAT_AssetRegistryLLM_max",
92
+ "STAT_AsyncLoadingLLM_max",
93
+ "STAT_BasePassDrawTime_cpu_avg_ms",
94
+ "STAT_BeginOcclusionTestsTime_cpu_avg_ms",
95
+ "STAT_BlendInPhysics_cpu_avg_ms",
96
+ "STAT_BlueprintTime_cpu_avg_ms",
97
+ "STAT_BuildCSMVisibilityState_cpu_avg_ms",
98
+ "STAT_CLMM_Occlusion_cpu_avg_ms",
99
+ "STAT_CLMM_Opaque_cpu_avg_ms",
100
+ "STAT_CLMM_Post_cpu_avg_ms",
101
+ "STAT_CLMM_Shadows_cpu_avg_ms",
102
+ "STAT_CLMM_Translucency_cpu_avg_ms",
103
+ "STAT_CSMStaticMeshReceivers_cnt_max",
104
+ "STAT_CSMSubjects_cnt_max",
105
+ "STAT_CacheUniformExpressions_cpu_avg_ms",
106
+ "STAT_CharFindFloor_cpu_avg_ms",
107
+ "STAT_CharHandleImpact_cpu_avg_ms",
108
+ "STAT_CharMoveUpdateDelegate_cpu_avg_ms",
109
+ "STAT_CharPhysFalling_cpu_avg_ms",
110
+ "STAT_CharPhysNavWalking_cpu_avg_ms",
111
+ "STAT_CharPhysWalking_cpu_avg_ms",
112
+ "STAT_CharacterMovementNonSimulated_cpu_avg_ms",
113
+ "STAT_CharacterMovementSimulated_cpu_avg_ms",
114
+ "STAT_CharacterMovementSmoothClientPosition_Interp_cpu_avg_ms",
115
+ "STAT_CharacterMovementSmoothClientPosition_Visual_cpu_avg_ms",
116
+ "STAT_CharacterMovementSmoothClientPosition_cpu_avg_ms",
117
+ "STAT_CharacterMovementTick_cpu_avg_ms",
118
+ "STAT_CharacterMovement_cpu_avg_ms",
119
+ "STAT_CollectGarbageInternalCall_ncall_max",
120
+ "STAT_CollectGarbageInternal_cpu_avg_ms",
121
+ "STAT_CollectGarbageInternal_cpu_max_ms",
122
+ "STAT_Collision_SceneQueryTotal_cpu_avg_ms",
123
+ "STAT_ComputeViewRelevance_cpu_avg_ms",
124
+ "STAT_CreateLumenRayTracingPipeline_cpu_avg_ms",
125
+ "STAT_CreateRayTracingPipeline_cpu_avg_ms",
126
+ "STAT_CreateWholeSceneProjectedShadow_cpu_avg_ms",
127
+ "STAT_DecalsDrawTime_cpu_avg_ms",
128
+ "STAT_DecompressPrecomputedOcclusion_cpu_avg_ms",
129
+ "STAT_DepthDrawTime_cpu_avg_ms",
130
+ "STAT_DestroyActor_cpu_avg_ms",
131
+ "STAT_DynamicEmitterCount_cnt_max",
132
+ "STAT_DynamicPSysCompCount_cnt_max",
133
+ "STAT_DynamicPSysCompCount_ncall_max",
134
+ "STAT_DynamicPrimitiveDrawTime_cpu_avg_ms",
135
+ "STAT_DynamicShadowSetupTime_cpu_avg_ms",
136
+ "STAT_EngineInitLLM_max",
137
+ "STAT_EngineMiscLLM_max",
138
+ "STAT_EnginePreInitLLM_max",
139
+ "STAT_ExplicitWaitRHIThread_cpu_avg_ms",
140
+ "STAT_FAsyncPackage_TickAsyncLoadingGameThread_cpu_avg_ms",
141
+ "STAT_FAsyncPackage_TickAsyncLoadingGameThread_cpu_max_ms",
142
+ "STAT_FEngineLoop_Tick_SlateInput_cpu_avg_ms",
143
+ "STAT_FNameLLM_max",
144
+ "STAT_FileSystemLLM_max",
145
+ "STAT_FinalizeAnimationUpdate_cpu_avg_ms",
146
+ "STAT_FinishRenderViewTargetTime_cpu_avg_ms",
147
+ "STAT_FrameSyncTime_cpu_avg_ms",
148
+ "STAT_GCLLM_max",
149
+ "STAT_GatherShadowPrimitivesTime_cpu_avg_ms",
150
+ "STAT_GetDynamicMeshElements_cpu_avg_ms",
151
+ "STAT_InitDynamicShadowsTime_cpu_avg_ms",
152
+ "STAT_InitProjectedShadowVisibility_cpu_avg_ms",
153
+ "STAT_InitViewsTime_cpu_avg_ms",
154
+ "STAT_InterpolateVolumetricLightmapOnCPU_cpu_avg_ms",
155
+ "STAT_LightingDrawTime_cpu_avg_ms",
156
+ "STAT_LocalizationLLM_max",
157
+ "STAT_MaterialsLLM_max",
158
+ "STAT_MeshDrawCalls_cnt_max",
159
+ "STAT_MeshObjectUpdate_cpu_avg_ms",
160
+ "STAT_Montage_Advance_cpu_avg_ms",
161
+ "STAT_NavWorldTickTime_cpu_avg_ms",
162
+ "STAT_NetReceiveRPC_cpu_avg_ms",
163
+ "STAT_NetWorldTickTime_cpu_avg_ms",
164
+ "STAT_NiagaraLLM_max",
165
+ "STAT_NiagaraNumSprites_cnt_max",
166
+ "STAT_NiagaraOverview_GT_cpu_avg_ms",
167
+ "STAT_NiagaraOverview_RT_cpu_avg_ms",
168
+ "STAT_NiagaraRenderSprites_ncall_max",
169
+ "STAT_OcclusionCull_cpu_avg_ms",
170
+ "STAT_OcclusionQueries_cnt_max",
171
+ "STAT_OpenGLShaderCompileTime_cpu_avg_ms",
172
+ "STAT_OpenGLShaderLinkTime_cpu_avg_ms",
173
+ "STAT_OpenGLShaderLinkTime_cpu_max_ms",
174
+ "STAT_ParticleDrawCalls_cnt_max",
175
+ "STAT_ParticlesLLM_max",
176
+ "STAT_ParticlesOverview_GT_cpu_avg_ms",
177
+ "STAT_ParticlesOverview_RT_cpu_avg_ms",
178
+ "STAT_PlatformTotalLLM_max",
179
+ "STAT_PlatformTrackedTotalLLM_max",
180
+ "STAT_PostAnimEvaluation_cpu_avg_ms",
181
+ "STAT_PresentTime_cpu_avg_ms",
182
+ "STAT_ProcessMouseButtonDown_cpu_avg_ms",
183
+ "STAT_ProcessMouseButtonUp_cpu_avg_ms",
184
+ "STAT_ProcessMouseMove_cpu_avg_ms",
185
+ "STAT_ProcessedPrimitives_cnt_max",
186
+ "STAT_ProgramSizeLLM_max",
187
+ "STAT_ProjectedShadowDrawTime_cpu_avg_ms",
188
+ "STAT_RHIDrawPrimitiveCalls_cnt_max",
189
+ "STAT_RHIMiscLLM_max",
190
+ "STAT_RHIThreadExecute_cpu_avg_ms",
191
+ "STAT_RHITriangles_cnt_max",
192
+ "STAT_RayTracingActiveInstances_cnt_max",
193
+ "STAT_RayTracingTotalInstances_cnt_max",
194
+ "STAT_RayTracing_FinishGatherInstances_cpu_avg_ms",
195
+ "STAT_ReflectiveShadowMapDrawTime_cpu_avg_ms",
196
+ "STAT_RefreshBoneTransforms_cpu_avg_ms",
197
+ "STAT_RenderQueryResultTime_cpu_avg_ms",
198
+ "STAT_RenderVelocities_cpu_avg_ms",
199
+ "STAT_ResourcesSumLLM_max",
200
+ "STAT_SceneDecals_cnt_max",
201
+ "STAT_SceneLights_cnt_max",
202
+ "STAT_SetupInteractionShadows_cpu_avg_ms",
203
+ "STAT_SetupMeshPass_cpu_avg_ms",
204
+ "STAT_ShadersLLM_max",
205
+ "STAT_Shaders_RTShaderLoadTime_cpu_avg_ms",
206
+ "STAT_Shaders_RTShaderLoadTime_cpu_max_ms",
207
+ "STAT_SkeletalMeshLLM_max",
208
+ "STAT_SlateApplicationInput_cpu_avg_ms",
209
+ "STAT_SlateDrawWindowTime_cpu_avg_ms",
210
+ "STAT_SlateElements_cnt_max",
211
+ "STAT_SlateMessageTick_cpu_avg_ms",
212
+ "STAT_SlateNumBatches_cnt_max",
213
+ "STAT_SlateNumPaintedWidgets_cnt_max",
214
+ "STAT_SlatePostProcessingRTTime_cpu_avg_ms",
215
+ "STAT_SlatePreFullBufferRTTime_cpu_avg_ms",
216
+ "STAT_SlatePreTickEvent_cpu_avg_ms",
217
+ "STAT_SlateRTDrawBatches_cpu_avg_ms",
218
+ "STAT_SlateRenderingRTTime_cpu_avg_ms",
219
+ "STAT_SlateTickTime_cpu_avg_ms",
220
+ "STAT_SlateTotalWidgets_cnt_max",
221
+ "STAT_SlateUpdateBufferRTTime_cpu_avg_ms",
222
+ "STAT_SlateVertexCount_cnt_max",
223
+ "STAT_SortStaticDrawLists_cpu_avg_ms",
224
+ "STAT_SpawnActorTime_cpu_avg_ms",
225
+ "STAT_SpawnActorTime_cpu_max_ms",
226
+ "STAT_StaticDrawListDrawTime_cpu_avg_ms",
227
+ "STAT_StaticMeshLLM_max",
228
+ "STAT_StaticRelevance_cpu_avg_ms",
229
+ "STAT_StatsLLM_max",
230
+ "STAT_TextureMetaDataLLM_max",
231
+ "STAT_ThreadStackLLM_max",
232
+ "STAT_TickableGameObjectsTime_cpu_avg_ms",
233
+ "STAT_TotalGPUFrameTime_cpu_avg_ms",
234
+ "STAT_TotalLLM_max",
235
+ "STAT_TotalPhysicsTime_cpu_avg_ms",
236
+ "STAT_TotalSceneRenderingTime_cpu_avg_ms",
237
+ "STAT_TranslucencyDrawTime_cpu_avg_ms",
238
+ "STAT_UILLM_max",
239
+ "STAT_UnitFrame_cpu_avg_ms",
240
+ "STAT_UnitGPU_cpu_avg_ms",
241
+ "STAT_UnitGame_cpu_avg_ms",
242
+ "STAT_UnitRHIT_cpu_avg_ms",
243
+ "STAT_UnitRender_cpu_avg_ms",
244
+ "STAT_UntaggedTotalLLM_max",
245
+ "STAT_UpdateAlwaysVisible_cpu_avg_ms",
246
+ "STAT_UpdateAnimation_cpu_avg_ms",
247
+ "STAT_UpdateIndirectLightingCache_cpu_avg_ms",
248
+ "STAT_UpdateOverlaps_cpu_avg_ms",
249
+ "STAT_UpdatePreshadowCache_cpu_avg_ms",
250
+ "STAT_UpdatePrimitiveFading_cpu_avg_ms",
251
+ "STAT_UpdateRBBones_cpu_avg_ms",
252
+ "STAT_UpdateStaticMeshesTime_cpu_avg_ms",
253
+ "STAT_ViewRelevance_cpu_avg_ms",
254
+ "STAT_ViewVisibilityTime_cpu_avg_ms",
255
+ "STAT_VisibleDynamicPrimitives_cnt_max",
256
+ "STAT_VisibleRayTracingPrimitives_cnt_max",
257
+ "STAT_VisibleStaticMeshElements_cnt_max",
258
+ "STAT_VulkanQueuePresent_cpu_avg_ms",
259
+ "STAT_WaterPassDrawTime_cpu_avg_ms",
260
+ "STAT_eglSwapBuffers_cpu_avg_ms",
261
+ "Scene_Object_Count_max",
262
+ "Screen_Resolution_Height_Count",
263
+ "Screen_Resolution_Width_Count",
264
+ "Scripting_grpcpu_avg_ms",
265
+ "ShaderCreateGPUProgram_jank_rate",
266
+ "ShaderParse_jank_rate",
267
+ "Shader_cnt_max",
268
+ "Shader_mem_max_mb",
269
+ "SkelMeshObjectUpdateDataCommand_cpu_avg_ms",
270
+ "SlateDrawWindowsCommand_cpu_avg_ms",
271
+ "StageEngineLateUpdate_cpu_avg_ms",
272
+ "Stat_ChannelReceivedRawBunchCall_ncall_max",
273
+ "Stat_ChannelReceivedRawBunch_ncall_max",
274
+ "Static_Colliders_Count_max",
275
+ "Static_Shapes_2D_Count_max",
276
+ "TextAsset_cnt_max",
277
+ "TextAsset_mem_max_mb",
278
+ "Texture_cnt_max",
279
+ "Texture_mem_max_mb",
280
+ "Triangles_Count_max",
281
+ "UIPanelLateUpdate_cpu_avg_ms",
282
+ "UIRectUpdate_cpu_avg_ms",
283
+ "Wasm_HeapTotal_mem_max_mb",
284
+ "Wwise_Reserved_mem_max_mb",
285
+ "android_memory_pss@max",
286
+ "batterylevel@mean_delta_p10000",
287
+ "batterypower_max",
288
+ "batterypower_mean",
289
+ "big_jank_rate",
290
+ "cpu_freq_x@mean",
291
+ "drawcall_cnt_max",
292
+ "fps_avg",
293
+ "frametime@gt_40_pct",
294
+ "gpu_counter_bandwidth_total_avg",
295
+ "gpu_counter_bandwidth_total_in_seconds_avg",
296
+ "gpu_counter_bus_utilization",
297
+ "gpu_counter_clocks",
298
+ "gpu_counter_cycles_per_pixel",
299
+ "gpu_counter_fragment",
300
+ "gpu_counter_fragment_shaded_avg",
301
+ "gpu_counter_gpu_temperature_max",
302
+ "gpu_counter_nobaselevel_texture_avg",
303
+ "gpu_counter_overdraw_avg",
304
+ "gpu_counter_primitive_avg",
305
+ "gpu_counter_read_stall_avg",
306
+ "gpu_counter_shader_cycles_avg",
307
+ "gpu_counter_shader_instructions_avg",
308
+ "gpu_counter_texture_cache_miss_l1_avg",
309
+ "gpu_target_freq_usage_120_fps_pct",
310
+ "gpu_target_freq_usage_30_fps_pct",
311
+ "gpu_target_freq_usage_45_fps_pct",
312
+ "gpu_target_freq_usage_60_fps_pct",
313
+ "gpu_time_avg_ms",
314
+ "ios_memory_footprint@max",
315
+ "jank_rate",
316
+ "jank_time_rate",
317
+ "lua_function_cnt_max",
318
+ "lua_mem_max_mb",
319
+ "lua_table_cnt_max",
320
+ "lua_userdata_cnt_max",
321
+ "monoObjectRef_cnt_max",
322
+ "network_in@max",
323
+ "network_out@max",
324
+ "power_max",
325
+ "reservedMono_mem_max_mb",
326
+ "reservedTotal_mem_max_mb",
327
+ "soc_ddr_freq",
328
+ "soc_gpu_freq",
329
+ "soc_gpu_loading",
330
+ "soc_gpu_utilization",
331
+ "temperature_max",
332
+ "temperature_mean",
333
+ "triangle_cnt_max",
334
+ "ui_cpu_avg_ms",
335
+ "usedSystem_mem_max_mb",
336
+ "windows_memory_workingset@max"
337
+ ]
338
+ }
package/dist/presets.js CHANGED
@@ -22,9 +22,18 @@ export const PRESET_DEFAULT = [
22
22
  'list_optimization_tasks',
23
23
  'gotonline_overview_indicator_statistic_dashboard',
24
24
  'gotonline_overview_indicator_curve_dashboard',
25
+ 'gotonline_overview_indicator_dashboard_keys',
25
26
  'gotonline_overview_memory_manage_data_report',
26
27
  'gotonline_overview_method_group_statistic',
28
+ 'gotonline_overview_stack_id_map',
27
29
  'gotonline_overview_stack_stutter_full_presign',
30
+ 'gotonline_overview_stack_stutter_full_tree_presign',
31
+ 'gotonline_overview_stack_stutter_scene_tree_presign',
32
+ 'gotonline_overview_stack_tree_frame_presign',
33
+ // 复合工具(手写,见 src/composite/)
34
+ 'top_resources',
35
+ 'top_functions',
36
+ 'report_diagnosis',
28
37
  ];
29
38
  /**
30
39
  * 每个接口对应的一组过滤键,用户在 --tool 里写任意一个即可命中。
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP server instructions:客户裸问时的全局纪律(勿依赖用户粘贴规则)。
3
+ * 与 docs/EMPTY_STATE_CONTRACT.md 对齐。
4
+ */
5
+ export declare const SERVER_INSTRUCTIONS: string;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * MCP server instructions:客户裸问时的全局纪律(勿依赖用户粘贴规则)。
3
+ * 与 docs/EMPTY_STATE_CONTRACT.md 对齐。
4
+ */
5
+ export const SERVER_INSTRUCTIONS = [
6
+ '你是 UWA GOT Online OpenAPI MCP 助手。用人话查报告时遵守以下纪律:',
7
+ '',
8
+ '1. 多份候选报告:先列出备注/设备/时间,再选或先问用户;禁止静默默认却假装只有一份。',
9
+ '2. 没有某类报告(如 GPU/Mono):看 list 返回的 module_available;为 false 时明确说没有并停手。禁止用 Overview 的 RenderTexture / WaitForVsync 冒充 GPU 分析。',
10
+ '3. 说「GPU Bound / GPU 是主要瓶颈」之前:必须先查 gotonline_gpu_bound(或看 report_diagnosis.gpuBound)。空数组 [] 只能说「未检出 Bound」,不能说主要瓶颈是 GPU。',
11
+ '4. 卡顿根因:优先 gotonline_overview_stack_stutter_full_tree_presign / stutter_scene_tree;禁止把 WaitForVsync 直接当根因。尖峰再查单帧树。',
12
+ '5. 非法面板名要纠正(fps_mean→fps_avg;android_pss_max→android_memory_pss@max);数值带单位。PSS 优先读 pss_peak_kb/mb/frame。',
13
+ '6. 接口失败时说明原因:运行日志 80108 — Unity 无 LG file_meta 表示未解析、无可用日志;UE 无 meta 只能说「暂不支持获取当前报告的运行日志」(方案切换过),勿断定报告本身无日志。其它失败勿把瞬时错误说成「一定没有数据」。',
14
+ '7. 接口限流 31004(API_RATE_LIMIT):UWA 服务端保护,预期行为,不是 Bug。稍等重试或减少并行/批量(如 top_resources 缩小 assetTypes)。若返回含 _partialErrors 且 _rateLimitHint,部分类型限流时已有 Top 仍可用,需说明可能不完整,勿当成报告无资源。',
15
+ '',
16
+ '体检优先调用 report_diagnosis;细节再按 _apisUsed 深挖。对比多份报告时说明场景/时长/目标帧是否可比(见 comparability_note)。',
17
+ ].join('\n');
package/dist/server.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { COMPOSITE_TOOLS, selectCompositeTools } from './composite/index.js';
2
3
  import { type Engine } from './spec.js';
3
4
  import { type NameCase } from './tools.js';
4
5
  export interface ServerOptions {
@@ -16,10 +17,14 @@ export interface ServerOptions {
16
17
  timeoutMs: number;
17
18
  specPath?: string;
18
19
  }
19
- export declare const PACKAGE_VERSION = "0.1.0";
20
+ /** package.json 同步,避免 MCP 握手版本和 npm 包不一致。 */
21
+ export declare const PACKAGE_VERSION: string;
20
22
  export declare function createServer(opts: ServerOptions): {
21
23
  server: McpServer;
22
24
  toolCount: number;
23
25
  total: number;
26
+ atomicCount: number;
27
+ compositeCount: number;
24
28
  };
25
29
  export declare function startStdio(opts: ServerOptions): Promise<void>;
30
+ export { selectCompositeTools, COMPOSITE_TOOLS };
package/dist/server.js CHANGED
@@ -1,10 +1,27 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
1
4
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
5
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
6
  import { UwaClient } from './client.js';
7
+ import { registerCompositeTools, COMPOSITE_TOOLS, selectCompositeTools } from './composite/index.js';
4
8
  import { selectOperations } from './presets.js';
5
9
  import { loadSpec } from './spec.js';
6
10
  import { makeHandler, toolConfig, toolName } from './tools.js';
7
- export const PACKAGE_VERSION = '0.1.0';
11
+ import { SERVER_INSTRUCTIONS } from './server-instructions.js';
12
+ import { scheduleUpdateNotice } from './version-check.js';
13
+ function readPackageVersion() {
14
+ try {
15
+ const here = dirname(fileURLToPath(import.meta.url));
16
+ const pkg = JSON.parse(readFileSync(join(here, '..', 'package.json'), 'utf8'));
17
+ return pkg.version ?? '0.0.0';
18
+ }
19
+ catch {
20
+ return '0.0.0';
21
+ }
22
+ }
23
+ /** 与 package.json 同步,避免 MCP 握手版本和 npm 包不一致。 */
24
+ export const PACKAGE_VERSION = readPackageVersion();
8
25
  export function createServer(opts) {
9
26
  const spec = loadSpec(opts.specPath);
10
27
  const operations = selectOperations(spec.operations, { tools: opts.tools, engine: opts.engine });
@@ -13,15 +30,26 @@ export function createServer(opts) {
13
30
  credentials: { appId: opts.appId, appSecret: opts.appSecret },
14
31
  timeoutMs: opts.timeoutMs,
15
32
  });
16
- const server = new McpServer({ name: 'uwa-openapi-mcp', version: PACKAGE_VERSION });
33
+ const server = new McpServer({ name: 'uwa-openapi-mcp', version: PACKAGE_VERSION }, { instructions: SERVER_INSTRUCTIONS });
17
34
  for (const op of operations) {
18
35
  server.registerTool(toolName(op.id, opts.nameCase, opts.namePrefix), toolConfig(op), makeHandler(op, client, opts.maxRows, opts.maxChars));
19
36
  }
20
- return { server, toolCount: operations.length, total: spec.operations.length };
37
+ const compositeCount = registerCompositeTools(server, client, {
38
+ tools: opts.tools,
39
+ engine: opts.engine,
40
+ nameCase: opts.nameCase,
41
+ namePrefix: opts.namePrefix,
42
+ maxChars: opts.maxChars,
43
+ });
44
+ const toolCount = operations.length + compositeCount;
45
+ const total = spec.operations.length + COMPOSITE_TOOLS.length;
46
+ return { server, toolCount, total, atomicCount: operations.length, compositeCount };
21
47
  }
22
48
  export async function startStdio(opts) {
23
- const { server, toolCount, total } = createServer(opts);
49
+ const { server, toolCount, total, atomicCount, compositeCount } = createServer(opts);
24
50
  // stdout 是 MCP 协议通道,任何日志都必须走 stderr
25
- console.error(`[uwa-openapi-mcp] 已加载 ${toolCount}/${total} 个工具,接口地址 ${opts.baseUrl}`);
51
+ console.error(`[uwa-openapi-mcp] v${PACKAGE_VERSION} 已加载 ${toolCount}/${total} 个工具(原子 ${atomicCount} + 复合 ${compositeCount}),接口地址 ${opts.baseUrl}`);
52
+ scheduleUpdateNotice(PACKAGE_VERSION);
26
53
  await server.connect(new StdioServerTransport());
27
54
  }
55
+ export { selectCompositeTools, COMPOSITE_TOOLS };
package/dist/tools.d.ts CHANGED
@@ -28,6 +28,23 @@ export interface ToolResult {
28
28
  * 帧号范围和步长,并在点数对不上时给出警告,从结构上消除歧义。
29
29
  */
30
30
  export declare function annotateCurveAxes(data: unknown): unknown;
31
+ /**
32
+ * 自定义面板 statistic/curve 返回空 `{}` 时,优先提示面板名传错(静默失败高发)。
33
+ */
34
+ export declare function annotateDashboardEmptyResult(op: Operation, data: unknown, args: Record<string, unknown>): unknown;
35
+ /** 各 GOT Online 子模块是否有报告;供模型「无 GPU 停手」。 */
36
+ export declare function buildModuleAvailable(group: Record<string, unknown>): Record<string, boolean>;
37
+ export declare function annotateModuleAvailable(data: unknown): unknown;
38
+ /**
39
+ * 报告列表接口一次返回、按项目组分组。但上游会把同一份报告挂到每个项目组下
40
+ * (沙箱实测多组两两交集 100%),直接按组统计会成倍放大。
41
+ *
42
+ * 这里就地合并:按 link 里的 project= 判定真实归属,每份报告只保留在正确的组里。
43
+ * 不额外打接口。上游修好后检测不到重复,本函数原样返回。
44
+ */
45
+ export declare function annotateProjectGroups(data: unknown): unknown;
46
+ /** 空 Bound / 空日志列表等:补可教模型的语义,避免误判。 */
47
+ export declare function annotateEmptyStateSemantics(op: Operation, data: unknown): unknown;
31
48
  export declare function makeHandler(op: Operation, client: UwaClient, defaultMaxRows: number, maxChars: number): (args: Record<string, unknown>) => Promise<ToolResult>;
32
49
  export declare function toolConfig(op: Operation): {
33
50
  title: string;