@sfdxy/anypoint-connect 0.5.0 → 0.7.0

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 (74) hide show
  1. package/README.md +77 -77
  2. package/dist/api/AccessManagementApi.d.ts +91 -0
  3. package/dist/api/AccessManagementApi.d.ts.map +1 -1
  4. package/dist/api/AccessManagementApi.js +8 -0
  5. package/dist/api/AccessManagementApi.js.map +1 -1
  6. package/dist/api/AnypointMQApi.d.ts +49 -0
  7. package/dist/api/AnypointMQApi.d.ts.map +1 -0
  8. package/dist/api/AnypointMQApi.js +36 -0
  9. package/dist/api/AnypointMQApi.js.map +1 -0
  10. package/dist/api/AuditLogApi.d.ts +49 -0
  11. package/dist/api/AuditLogApi.d.ts.map +1 -0
  12. package/dist/api/AuditLogApi.js +18 -0
  13. package/dist/api/AuditLogApi.js.map +1 -0
  14. package/dist/api/MonitoringApi.d.ts +26 -0
  15. package/dist/api/MonitoringApi.d.ts.map +1 -1
  16. package/dist/api/MonitoringApi.js +46 -0
  17. package/dist/api/MonitoringApi.js.map +1 -1
  18. package/dist/api/ObjectStoreApi.d.ts +44 -0
  19. package/dist/api/ObjectStoreApi.d.ts.map +1 -0
  20. package/dist/api/ObjectStoreApi.js +45 -0
  21. package/dist/api/ObjectStoreApi.js.map +1 -0
  22. package/dist/api/index.d.ts +4 -1
  23. package/dist/api/index.d.ts.map +1 -1
  24. package/dist/api/index.js +4 -1
  25. package/dist/api/index.js.map +1 -1
  26. package/dist/cli.js.map +1 -1
  27. package/dist/client/AnypointClient.d.ts +6 -0
  28. package/dist/client/AnypointClient.d.ts.map +1 -1
  29. package/dist/client/AnypointClient.js +9 -0
  30. package/dist/client/AnypointClient.js.map +1 -1
  31. package/dist/commands/auth.d.ts.map +1 -1
  32. package/dist/commands/auth.js.map +1 -1
  33. package/dist/commands/config.d.ts.map +1 -1
  34. package/dist/commands/config.js.map +1 -1
  35. package/dist/commands/monitor.d.ts.map +1 -1
  36. package/dist/commands/monitor.js +74 -1
  37. package/dist/commands/monitor.js.map +1 -1
  38. package/dist/index.d.ts +4 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/mcp/tools/anypoint-mq.d.ts +8 -0
  43. package/dist/mcp/tools/anypoint-mq.d.ts.map +1 -0
  44. package/dist/mcp/tools/anypoint-mq.js +98 -0
  45. package/dist/mcp/tools/anypoint-mq.js.map +1 -0
  46. package/dist/mcp/tools/applications.d.ts.map +1 -1
  47. package/dist/mcp/tools/applications.js +43 -0
  48. package/dist/mcp/tools/applications.js.map +1 -1
  49. package/dist/mcp/tools/audit.d.ts +8 -0
  50. package/dist/mcp/tools/audit.d.ts.map +1 -0
  51. package/dist/mcp/tools/audit.js +54 -0
  52. package/dist/mcp/tools/audit.js.map +1 -0
  53. package/dist/mcp/tools/identity.d.ts +1 -1
  54. package/dist/mcp/tools/identity.d.ts.map +1 -1
  55. package/dist/mcp/tools/identity.js +58 -1
  56. package/dist/mcp/tools/identity.js.map +1 -1
  57. package/dist/mcp/tools/index.d.ts +3 -0
  58. package/dist/mcp/tools/index.d.ts.map +1 -1
  59. package/dist/mcp/tools/index.js +3 -0
  60. package/dist/mcp/tools/index.js.map +1 -1
  61. package/dist/mcp/tools/logs.d.ts.map +1 -1
  62. package/dist/mcp/tools/logs.js +6 -1
  63. package/dist/mcp/tools/logs.js.map +1 -1
  64. package/dist/mcp/tools/monitoring.d.ts.map +1 -1
  65. package/dist/mcp/tools/monitoring.js +124 -0
  66. package/dist/mcp/tools/monitoring.js.map +1 -1
  67. package/dist/mcp/tools/object-store.d.ts +8 -0
  68. package/dist/mcp/tools/object-store.d.ts.map +1 -0
  69. package/dist/mcp/tools/object-store.js +107 -0
  70. package/dist/mcp/tools/object-store.js.map +1 -0
  71. package/dist/mcp.d.ts.map +1 -1
  72. package/dist/mcp.js +4 -1
  73. package/dist/mcp.js.map +1 -1
  74. package/package.json +1 -1
package/README.md CHANGED
@@ -18,77 +18,23 @@ npm install -g @sfdxy/anypoint-connect
18
18
  ## Architecture
19
19
 
20
20
  ```mermaid
21
- graph TB
22
- subgraph Entry["Entry Points"]
23
- CLI["CLI — anc"]
24
- MCP["MCP Server — stdio"]
25
- LIB["Library — import"]
26
- end
27
-
28
- subgraph Config["Config & Profiles"]
29
- PR["Profile Resolver<br/>flag → env → project → default"]
30
- PC[".anypoint-connect.json<br/>Project binding"]
31
- CFG["Profile Config<br/>~/.anypoint-connect/profiles/"]
32
- end
33
-
34
- subgraph Core["Core"]
35
- AC["AnypointClient<br/>Facade"]
36
- HTTP["HttpClient<br/>Axios + Bearer"]
37
- RL["RateLimiter"]
38
- CACHE["Cache<br/>TTL + Stats"]
39
- end
40
-
41
- subgraph Auth["Auth"]
42
- TM["TokenManager<br/>Auto-refresh"]
43
- OAUTH["OAuthFlow<br/>Browser callback"]
44
- FS["FileStore<br/>AES-256-GCM per-profile"]
45
- end
46
-
47
- subgraph APIs["Domain APIs"]
48
- AM["AccessManagement<br/>Users, Environments"]
49
- CH2["CloudHub2<br/>Deploy, Restart, Scale"]
50
- LOGS["LogsApi<br/>Tail, Download"]
51
- MON["MonitoringApi<br/>AMQL Queries"]
52
- EX["ExchangeApi<br/>Search, Download Spec"]
53
- APIM["ApiManagerApi<br/>Instances, Policies"]
54
- DC["DesignCenterApi<br/>Pull, Push, Publish"]
55
- end
56
-
57
- subgraph Safety["Safety"]
58
- GUARD["Production Guards<br/>Env detection, Confirmation"]
59
- end
60
-
61
- CLI --> PR
62
- MCP --> PR
63
- LIB --> AC
64
- PC -.-> PR
65
- PR --> CFG
66
- CFG --> AC
67
- AC --> HTTP
68
- AC --> CACHE
69
- HTTP --> RL
70
- HTTP --> TM
71
- TM --> OAUTH
72
- TM --> FS
73
- AC --> AM
74
- AC --> CH2
75
- AC --> LOGS
76
- AC --> MON
77
- AC --> EX
78
- AC --> APIM
79
- AC --> DC
80
- CLI --> GUARD
81
-
82
- OAUTH -->|"callback :3000/api/callback"| AP["Anypoint Platform API"]
83
- HTTP --> AP
84
-
85
- style Entry fill:#1a1a2e,stroke:#4ecdc4,color:#e0e0e0
86
- style Config fill:#1a1a2e,stroke:#f4a261,color:#e0e0e0
87
- style Core fill:#16213e,stroke:#0f3460,color:#e0e0e0
88
- style Auth fill:#1a1a2e,stroke:#e94560,color:#e0e0e0
89
- style APIs fill:#16213e,stroke:#533483,color:#e0e0e0
90
- style Safety fill:#1a1a2e,stroke:#ff6b6b,color:#e0e0e0
91
- style AP fill:#0f3460,stroke:#4ecdc4,color:#e0e0e0
21
+ graph LR
22
+ CLI["CLI — anc"] --> AC["AnypointClient"]
23
+ MCP["MCP Server"] --> AC
24
+ LIB["Library"] --> AC
25
+
26
+ AC --> HTTP["HttpClient"]
27
+ HTTP --> AP["Anypoint Platform API"]
28
+
29
+ AC --> CH2["CloudHub2"]
30
+ AC --> MON["Monitoring"]
31
+ AC --> LOGS["Logs"]
32
+ AC --> EX["Exchange"]
33
+ AC --> APIM["API Manager"]
34
+ AC --> DC["Design Center"]
35
+ AC --> AUDIT["Audit Log"]
36
+ AC --> MQ["Anypoint MQ"]
37
+ AC --> OS["Object Store"]
92
38
  ```
93
39
 
94
40
  ```
@@ -106,11 +52,14 @@ src/
106
52
  ├── api/ Domain API clients
107
53
  │ ├── CloudHub2Api.ts Deploy, redeploy, restart, scale, poll
108
54
  │ ├── LogsApi.ts Tail, download (CH2 native)
109
- │ ├── MonitoringApi.ts AMQL queries, JSON/CSV export
55
+ │ ├── MonitoringApi.ts AMQL queries (request + JVM metrics), JSON/CSV export
110
56
  │ ├── ExchangeApi.ts Search assets, download specs
111
57
  │ ├── ApiManagerApi.ts API instances, policies, SLA tiers
112
58
  │ ├── DesignCenterApi.ts Projects, files, lock/save, publish
113
- └── AccessManagementApi.ts
59
+ ├── AuditLogApi.ts Platform audit events (who changed what)
60
+ │ ├── AnypointMQApi.ts Queue/exchange management, message browsing
61
+ │ ├── ObjectStoreApi.ts Object Store v2 — stores, keys, values
62
+ │ └── AccessManagementApi.ts User, environments, org entitlements
114
63
  ├── analysis/ Log analysis pipeline
115
64
  │ ├── LogAnalyzer.ts Pipeline orchestrator
116
65
  │ ├── parser.ts Multi-line joiner + JSON Logger parser
@@ -126,7 +75,7 @@ src/
126
75
  │ ├── apps.ts list | status | restart | scale
127
76
  │ ├── deploy.ts deploy with prod safety net
128
77
  │ ├── logs.ts tail | download
129
- │ ├── monitor.ts view | download
78
+ │ ├── monitor.ts view | perf | trend | workers | memory | memory-trend | compare | download
130
79
  │ ├── exchange.ts search | info | download-spec
131
80
  │ ├── api.ts list | policies | sla-tiers
132
81
  │ └── design-center.ts list | files | pull | push | publish
@@ -203,6 +152,7 @@ npm link # makes "anc" available globally
203
152
  - `Monitoring` → **Read Metrics**
204
153
  - `Design Center` → **Read/Write Designer**
205
154
  - `Exchange` → **Exchange Contributor**
155
+ - `Audit Logs` → **View Audit Logs** (optional, for `get_audit_log`)
206
156
  6. Copy the **Client ID** and **Client Secret**
207
157
 
208
158
  ### 3. Configure
@@ -300,6 +250,22 @@ anc logs download my-api --env Production \
300
250
  anc monitor view --env Sandbox
301
251
  anc monitor view --env Production --app my-api --from 7d
302
252
 
253
+ # Performance percentiles
254
+ anc monitor perf --env Production
255
+
256
+ # JVM memory usage
257
+ anc monitor memory --env Production
258
+ anc monitor memory --env Production --app my-api
259
+
260
+ # Memory trend over time
261
+ anc monitor memory-trend --env Production --app my-api --granularity 1h
262
+
263
+ # Worker/replica metrics
264
+ anc monitor workers --env Production --app my-api
265
+
266
+ # Cross-environment comparison
267
+ anc monitor compare
268
+
303
269
  # Export
304
270
  anc monitor download --env Production --from 30d --format json
305
271
  anc monitor download --env Sandbox --from 7d --format csv --output metrics.csv
@@ -400,29 +366,55 @@ The MCP server auto-detects the active profile from the project's `.anypoint-con
400
366
 
401
367
  | Tool | Description |
402
368
  |------|-------------|
369
+ | **Identity & Org** | |
403
370
  | `whoami` | Get authenticated user & org info |
404
371
  | `list_environments` | List all environments in the org |
372
+ | `get_entitlements` | Get org license: vCores, MQ, Object Store, API quotas, subscription |
373
+ | **Applications** | |
405
374
  | `list_apps` | List deployed apps with status, version, vCores, and replica count |
406
375
  | `get_app_status` | Detailed deployment status: resources (CPU/memory), autoscaling, JVM, replicas |
407
376
  | `get_app_resources` | Consolidated resource allocation view for all apps in an environment |
377
+ | `get_app_settings` | Read application properties and secure property keys |
408
378
  | `restart_app` | ⚠️ Rolling restart of an application |
409
379
  | `scale_app` | ⚠️ Scale application replicas (1–8) |
410
- | `get_logs` | Fetch recent log entries |
380
+ | **Logs & Analysis** | |
381
+ | `get_logs` | Fetch recent log entries with optional keyword search |
411
382
  | `download_logs` | Download logs for a time range |
412
383
  | `analyze_errors` | Clustered error groups with before/after context windows |
413
384
  | `get_log_patterns` | Top recurring message templates with counts |
414
385
  | `get_log_stats` | Statistical health summary: error rate, spikes, noise % |
415
- | `get_metrics` | Fetch monitoring metrics (AMQL) |
386
+ | **Monitoring (AMQL)** | |
387
+ | `get_metrics` | Inbound/outbound request count and response time |
388
+ | `get_performance_metrics` | Percentile-based performance metrics (p50/p95/p99) |
389
+ | `get_metrics_timeseries` | Time-series metrics for trending analysis |
390
+ | `get_worker_metrics` | Per-worker/replica performance metrics |
391
+ | `get_memory_metrics` | JVM memory usage: heap, GC stats, thread counts |
392
+ | `get_memory_timeseries` | JVM memory time-series for leak detection and trending |
393
+ | `compare_env_performance` | Compare performance across all environments |
394
+ | `raw_amql_query` | Execute freeform AMQL queries for ad-hoc analysis |
395
+ | **Exchange** | |
416
396
  | `search_exchange` | Search assets in Exchange |
417
397
  | `download_api_spec` | Download RAML/OAS spec from Exchange |
418
- | `compare_environments` | Side-by-side diff of deployments across environments |
398
+ | **API Manager** | |
419
399
  | `list_api_instances` | List managed API instances with governance info |
420
400
  | `get_api_policies` | Get policies and SLA tiers for an API |
401
+ | **Design Center** | |
421
402
  | `list_design_center_projects` | List all API spec projects |
422
403
  | `get_design_center_files` | List files in a Design Center project |
423
404
  | `read_design_center_file` | Read file content with smart path resolution |
424
405
  | `update_design_center_file` | ⚠️ Push updated file (lock/save/unlock) |
425
406
  | `publish_to_exchange` | ⚠️ Publish Design Center project to Exchange |
407
+ | **Audit Log** | |
408
+ | `get_audit_log` | Query platform changes: who did what, when |
409
+ | **Anypoint MQ** | |
410
+ | `list_queues` | List MQ destinations (queues/exchanges) in a region |
411
+ | `get_queue_stats` | Queue depth, in-flight, and throughput stats |
412
+ | `get_dlq_messages` | Browse dead-letter queue messages without consuming |
413
+ | **Object Store v2** | |
414
+ | `list_stores` | List Object Stores in an environment |
415
+ | `get_store_keys` | List keys in an Object Store with pagination |
416
+ | `get_store_value` | Retrieve and auto-format a value by key |
417
+ | **Profile** | |
426
418
  | `get_project_profile` | Show active profile, resolution source, and available profiles |
427
419
  | `set_project_profile` | Bind project directory to a named profile |
428
420
 
@@ -456,6 +448,14 @@ The MCP server auto-detects the active profile from the project's `.anypoint-con
456
448
  - *"Show me the RAML spec for the order-api project"*
457
449
  - *"Improve the API descriptions for order-api"*
458
450
  - *"Scale order-service to 3 replicas in Production"*
451
+ - *"Show me the JVM memory usage for all apps in Production"*
452
+ - *"Is my-api leaking memory? Show me the heap trend over the past week"*
453
+ - *"What changed in the platform in the last 24 hours?"*
454
+ - *"Check our org entitlements — do we have MQ provisioned?"*
455
+ - *"Show me the app settings for billing-api in Production"*
456
+ - *"Run this AMQL query: SELECT COUNT(requests) FROM mulesoft.app.inbound..."*
457
+ - *"What's in the dead-letter queue for order-events?"*
458
+ - *"Search the logs for correlation ID abc-123"*
459
459
 
460
460
  ---
461
461
 
@@ -28,12 +28,103 @@ export interface Environment {
28
28
  isProduction: boolean;
29
29
  clientId?: string;
30
30
  }
31
+ export interface OrgEntitlements {
32
+ vCoresProduction: {
33
+ assigned: number;
34
+ reassigned: number;
35
+ };
36
+ vCoresSandbox: {
37
+ assigned: number;
38
+ reassigned: number;
39
+ };
40
+ vCoresDesign: {
41
+ assigned: number;
42
+ reassigned: number;
43
+ };
44
+ staticIps: {
45
+ assigned: number;
46
+ reassigned: number;
47
+ };
48
+ vpcs: {
49
+ assigned: number;
50
+ reassigned: number;
51
+ };
52
+ mqMessages: {
53
+ base: number;
54
+ addOn: number;
55
+ };
56
+ mqRequests: {
57
+ base: number;
58
+ addOn: number;
59
+ };
60
+ mqAdvancedFeatures: {
61
+ enabled: boolean;
62
+ };
63
+ objectStoreRequestUnits: {
64
+ base: number;
65
+ addOn: number;
66
+ };
67
+ objectStoreKeys: {
68
+ base: number;
69
+ addOn: number;
70
+ };
71
+ designCenter: {
72
+ api: boolean;
73
+ [key: string]: unknown;
74
+ };
75
+ autoscaling: boolean;
76
+ armAlerts: boolean;
77
+ apis: {
78
+ enabled: boolean;
79
+ };
80
+ apiMonitoring: {
81
+ schedules: number;
82
+ };
83
+ monitoringCenter: {
84
+ productSKU: number;
85
+ };
86
+ loadBalancer: {
87
+ assigned: number;
88
+ reassigned: number;
89
+ };
90
+ runtimeFabric: {
91
+ enabled?: boolean;
92
+ [key: string]: unknown;
93
+ };
94
+ runtimeFabricCloud: {
95
+ enabled?: boolean;
96
+ [key: string]: unknown;
97
+ };
98
+ appViz: {
99
+ enabled?: boolean;
100
+ [key: string]: unknown;
101
+ };
102
+ globalDeployment: boolean;
103
+ createSubOrgs: boolean;
104
+ createEnvironments: boolean;
105
+ [key: string]: unknown;
106
+ }
107
+ export interface OrgSubscription {
108
+ category: string;
109
+ type: string;
110
+ expiration: string;
111
+ }
112
+ export interface OrgDetails {
113
+ name: string;
114
+ id: string;
115
+ entitlements: OrgEntitlements;
116
+ subscription: OrgSubscription;
117
+ }
31
118
  export declare class AccessManagementApi {
32
119
  private readonly http;
33
120
  private readonly cache;
34
121
  constructor(http: HttpClient, cache: Cache);
35
122
  getMe(): Promise<UserProfile>;
36
123
  getEnvironments(orgId: string): Promise<Environment[]>;
124
+ /**
125
+ * Get organization details including entitlements and subscription
126
+ */
127
+ getOrgDetails(orgId: string): Promise<OrgDetails>;
37
128
  /**
38
129
  * Resolve environment name to ID
39
130
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AccessManagementApi.d.ts","sourceRoot":"","sources":["../../src/api/AccessManagementApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,qBAAqB,CAAC,EAAE,KAAK,CAAC;QAC1B,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACN;AAWD,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAExB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK;IAG3B,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAoB7B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAS5D;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAWlF"}
1
+ {"version":3,"file":"AccessManagementApi.d.ts","sourceRoot":"","sources":["../../src/api/AccessManagementApi.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,14 @@ export class AccessManagementApi {
32
32
  return response.data || [];
33
33
  });
34
34
  }
35
+ /**
36
+ * Get organization details including entitlements and subscription
37
+ */
38
+ async getOrgDetails(orgId) {
39
+ return this.cache.getOrCompute(`org:${orgId}`, async () => {
40
+ return this.http.get(`/accounts/api/organizations/${orgId}`);
41
+ });
42
+ }
35
43
  /**
36
44
  * Resolve environment name to ID
37
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AccessManagementApi.js","sourceRoot":"","sources":["../../src/api/AccessManagementApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwCH,MAAM,OAAO,mBAAmB;IAEP;IACA;IAFrB,YACqB,IAAgB,EAChB,KAAY;QADZ,SAAI,GAAJ,IAAI,CAAY;QAChB,UAAK,GAAL,KAAK,CAAO;IAC9B,CAAC;IAEJ,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,kBAAkB,CAAC,CAAC;YAEnE,gEAAgE;YAChE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAK,GAA8B,CAAC;YACzD,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;YAElD,OAAO;gBACH,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC5D,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aACpD,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAChC,+BAA+B,KAAK,eAAe,CACtD,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,QAAgB;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAEnG,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;CACJ"}
1
+ {"version":3,"file":"AccessManagementApi.js","sourceRoot":"","sources":["../../src/api/AccessManagementApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgFH,MAAM,OAAO,mBAAmB;IAEP;IACA;IAFrB,YACqB,IAAgB,EAChB,KAAY;QADZ,SAAI,GAAJ,IAAI,CAAY;QAChB,UAAK,GAAL,KAAK,CAAO;IAC9B,CAAC;IAEJ,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgB,kBAAkB,CAAC,CAAC;YAEnE,gEAAgE;YAChE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAK,GAA8B,CAAC;YACzD,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;YAElD,OAAO;gBACH,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC5D,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;aACpD,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAChC,+BAA+B,KAAK,eAAe,CACtD,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;YACtD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,+BAA+B,KAAK,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,QAAgB;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAEnG,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,2BAA2B,SAAS,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;CACJ"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Anypoint MQ API
3
+ * Queue/exchange management and message browsing
4
+ */
5
+ import type { HttpClient } from '../client/HttpClient.js';
6
+ import type { Cache } from '../client/Cache.js';
7
+ export interface MQDestination {
8
+ destinationId: string;
9
+ type: 'queue' | 'exchange';
10
+ encrypted: boolean;
11
+ deadLetterQueueId?: string;
12
+ defaultTtl?: number;
13
+ defaultLockTtl?: number;
14
+ maxDeliveries?: number;
15
+ fifo?: boolean;
16
+ }
17
+ export interface MQStats {
18
+ destination: string;
19
+ messagesVisible: number;
20
+ messagesInFlight: number;
21
+ messagesSent: number;
22
+ messagesReceived: number;
23
+ messagesAcked: number;
24
+ }
25
+ export interface MQMessage {
26
+ id: string;
27
+ headers: Record<string, string>;
28
+ properties: Record<string, string>;
29
+ body: string;
30
+ createdAt?: string;
31
+ }
32
+ export declare class AnypointMQApi {
33
+ private readonly http;
34
+ private readonly cache;
35
+ constructor(http: HttpClient, cache: Cache);
36
+ /**
37
+ * List all MQ destinations (queues and exchanges) in a region
38
+ */
39
+ listDestinations(orgId: string, envId: string, regionId: string): Promise<MQDestination[]>;
40
+ /**
41
+ * Get statistics for a specific queue
42
+ */
43
+ getQueueStats(orgId: string, envId: string, regionId: string, queueId: string): Promise<MQStats>;
44
+ /**
45
+ * Browse messages from a queue without consuming them
46
+ */
47
+ browseMessages(orgId: string, envId: string, regionId: string, queueId: string, batchSize?: number): Promise<MQMessage[]>;
48
+ }
49
+ //# sourceMappingURL=AnypointMQApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnypointMQApi.d.ts","sourceRoot":"","sources":["../../src/api/AnypointMQApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD,qBAAa,aAAa;IAElB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK;IAGjC;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAShG;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtG;;OAEG;IACG,cAAc,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAW,GACvB,OAAO,CAAC,SAAS,EAAE,CAAC;CAK1B"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Anypoint MQ API
3
+ * Queue/exchange management and message browsing
4
+ */
5
+ const ADMIN_BASE = '/mq/admin/api/v1';
6
+ const BROKER_BASE = '/mq/broker/api/v1';
7
+ export class AnypointMQApi {
8
+ http;
9
+ cache;
10
+ constructor(http, cache) {
11
+ this.http = http;
12
+ this.cache = cache;
13
+ }
14
+ /**
15
+ * List all MQ destinations (queues and exchanges) in a region
16
+ */
17
+ async listDestinations(orgId, envId, regionId) {
18
+ const cacheKey = `mq:dests:${orgId}:${envId}:${regionId}`;
19
+ return this.cache.getOrCompute(cacheKey, async () => {
20
+ return this.http.get(`${ADMIN_BASE}/organizations/${orgId}/environments/${envId}/regions/${regionId}/destinations`);
21
+ });
22
+ }
23
+ /**
24
+ * Get statistics for a specific queue
25
+ */
26
+ async getQueueStats(orgId, envId, regionId, queueId) {
27
+ return this.http.get(`${ADMIN_BASE}/organizations/${orgId}/environments/${envId}/regions/${regionId}/destinations/queues/${encodeURIComponent(queueId)}/stats`);
28
+ }
29
+ /**
30
+ * Browse messages from a queue without consuming them
31
+ */
32
+ async browseMessages(orgId, envId, regionId, queueId, batchSize = 10) {
33
+ return this.http.get(`${BROKER_BASE}/organizations/${orgId}/environments/${envId}/regions/${regionId}/destinations/queues/${encodeURIComponent(queueId)}/messages?poolingTime=1000&batchSize=${batchSize}`);
34
+ }
35
+ }
36
+ //# sourceMappingURL=AnypointMQApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnypointMQApi.js","sourceRoot":"","sources":["../../src/api/AnypointMQApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC,MAAM,OAAO,aAAa;IAED;IACA;IAFrB,YACqB,IAAgB,EAChB,KAAY;QADZ,SAAI,GAAJ,IAAI,CAAY;QAChB,UAAK,GAAL,KAAK,CAAO;IAC9B,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,KAAa,EAAE,QAAgB;QACjE,MAAM,QAAQ,GAAG,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAChD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,GAAG,UAAU,kBAAkB,KAAK,iBAAiB,KAAK,YAAY,QAAQ,eAAe,CAChG,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,KAAa,EAAE,QAAgB,EAAE,OAAe;QAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,GAAG,UAAU,kBAAkB,KAAK,iBAAiB,KAAK,YAAY,QAAQ,wBAAwB,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAC5I,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAChB,KAAa,EACb,KAAa,EACb,QAAgB,EAChB,OAAe,EACf,YAAoB,EAAE;QAEtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,GAAG,WAAW,kBAAkB,KAAK,iBAAiB,KAAK,YAAY,QAAQ,wBAAwB,kBAAkB,CAAC,OAAO,CAAC,wCAAwC,SAAS,EAAE,CACxL,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Audit Log API
3
+ * Query platform audit events for change tracking and compliance
4
+ */
5
+ import type { HttpClient } from '../client/HttpClient.js';
6
+ export interface AuditLogObject {
7
+ objectType: string;
8
+ objectId?: string;
9
+ objectName?: string;
10
+ parentId?: string | null;
11
+ parentType?: string | null;
12
+ environmentId?: string | null;
13
+ environmentName?: string | null;
14
+ }
15
+ export interface AuditLogEntry {
16
+ action: string;
17
+ timestamp: number;
18
+ userId?: string | null;
19
+ userName?: string | null;
20
+ clientId?: string | null;
21
+ clientName?: string | null;
22
+ clientIP?: string | null;
23
+ platform?: string;
24
+ failed?: boolean;
25
+ failedCause?: string | null;
26
+ objects?: AuditLogObject[];
27
+ payload?: Record<string, unknown>;
28
+ }
29
+ export interface AuditLogResponse {
30
+ data: AuditLogEntry[];
31
+ total: number;
32
+ }
33
+ export interface AuditLogQuery {
34
+ startDate: string;
35
+ endDate: string;
36
+ actions?: string[];
37
+ objectTypes?: string[];
38
+ limit?: number;
39
+ offset?: number;
40
+ }
41
+ export declare class AuditLogApi {
42
+ private readonly http;
43
+ constructor(http: HttpClient);
44
+ /**
45
+ * Query audit log entries for an organization
46
+ */
47
+ query(orgId: string, query: AuditLogQuery): Promise<AuditLogResponse>;
48
+ }
49
+ //# sourceMappingURL=AuditLogApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuditLogApi.d.ts","sourceRoot":"","sources":["../../src/api/AuditLogApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,qBAAa,WAAW;IACR,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG9E"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Audit Log API
3
+ * Query platform audit events for change tracking and compliance
4
+ */
5
+ const BASE = '/audit/v2';
6
+ export class AuditLogApi {
7
+ http;
8
+ constructor(http) {
9
+ this.http = http;
10
+ }
11
+ /**
12
+ * Query audit log entries for an organization
13
+ */
14
+ async query(orgId, query) {
15
+ return this.http.post(`${BASE}/organizations/${orgId}/query`, query);
16
+ }
17
+ }
18
+ //# sourceMappingURL=AuditLogApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuditLogApi.js","sourceRoot":"","sources":["../../src/api/AuditLogApi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2CH,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,MAAM,OAAO,WAAW;IACS;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,KAAoB;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmB,GAAG,IAAI,kBAAkB,KAAK,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3F,CAAC;CACJ"}
@@ -48,6 +48,22 @@ export interface CrossEnvMetrics {
48
48
  p95: number;
49
49
  p99: number;
50
50
  }
51
+ export interface MemoryMetrics {
52
+ appName: string;
53
+ heapUsed: number;
54
+ heapCommitted: number;
55
+ heapMax: number;
56
+ gcCount: number;
57
+ gcTime: number;
58
+ threadCount: number;
59
+ }
60
+ export interface MemoryTimeSeriesPoint {
61
+ timestamp: number;
62
+ appName: string;
63
+ heapUsed: number;
64
+ heapCommitted: number;
65
+ gcCount: number;
66
+ }
51
67
  export interface MetricsExport {
52
68
  environment: string;
53
69
  period: {
@@ -104,6 +120,16 @@ export declare class MonitoringApi {
104
120
  * Get per-worker/replica performance metrics
105
121
  */
106
122
  getWorkerMetrics(orgId: string, envId: string, from: number, to: number, appName?: string): Promise<WorkerMetrics[]>;
123
+ /**
124
+ * Get JVM memory metrics per app (heap, GC, threads)
125
+ * Queries the mulesoft.jvm datasource
126
+ */
127
+ getMemoryMetrics(orgId: string, envId: string, from: number, to: number, appName?: string): Promise<MemoryMetrics[]>;
128
+ /**
129
+ * Get JVM memory time-series for trending analysis
130
+ * Queries the mulesoft.jvm datasource with TIMESERIES
131
+ */
132
+ getMemoryTimeSeries(orgId: string, envId: string, from: number, to: number, granularity?: TimeSeriesGranularity, appName?: string): Promise<MemoryTimeSeriesPoint[]>;
107
133
  /**
108
134
  * Get cross-environment metrics comparison (no env filter)
109
135
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MonitoringApi.d.ts","sourceRoot":"","sources":["../../src/api/MonitoringApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonitoringApi.d.ts","sourceRoot":"","sources":["../../src/api/MonitoringApi.ts"],"names":[],"mappings":"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"}
@@ -157,6 +157,52 @@ export class MonitoringApi {
157
157
  }));
158
158
  });
159
159
  }
160
+ /**
161
+ * Get JVM memory metrics per app (heap, GC, threads)
162
+ * Queries the mulesoft.jvm datasource
163
+ */
164
+ async getMemoryMetrics(orgId, envId, from, to, appName) {
165
+ const cacheKey = `mon:memory:${orgId}:${envId}:${from}:${to}:${appName || ''}`;
166
+ return this.cache.getOrCompute(cacheKey, async () => {
167
+ let query = `SELECT AVG(heap_used) AS "heap_used", AVG(heap_committed) AS "heap_committed", MAX(heap_total) AS "heap_max", SUM("gc.count") AS "gc_count", AVG("gc.time") AS "gc_time", AVG(thread_count) AS "thread_count", "app.name" FROM "mulesoft.jvm" WHERE "sub_org.id" = '${orgId}' AND "env.id" = '${envId}' AND timestamp BETWEEN ${from} AND ${to}`;
168
+ if (appName) {
169
+ query += ` AND "app.name" = '${appName}'`;
170
+ }
171
+ query += ` GROUP BY "app.name"`;
172
+ const data = await this.search(query);
173
+ return data.map((row) => ({
174
+ appName: String(row['app.name'] || 'Unknown'),
175
+ heapUsed: Number(row['heap_used'] || 0),
176
+ heapCommitted: Number(row['heap_committed'] || 0),
177
+ heapMax: Number(row['heap_max'] || 0),
178
+ gcCount: Number(row['gc_count'] || 0),
179
+ gcTime: Number(row['gc_time'] || 0),
180
+ threadCount: Number(row['thread_count'] || 0),
181
+ }));
182
+ });
183
+ }
184
+ /**
185
+ * Get JVM memory time-series for trending analysis
186
+ * Queries the mulesoft.jvm datasource with TIMESERIES
187
+ */
188
+ async getMemoryTimeSeries(orgId, envId, from, to, granularity = 'PT1H', appName) {
189
+ const cacheKey = `mon:memts:${orgId}:${envId}:${from}:${to}:${granularity}:${appName || ''}`;
190
+ return this.cache.getOrCompute(cacheKey, async () => {
191
+ let query = `SELECT timestamp, AVG(heap_used) AS "heap_used", AVG(heap_committed) AS "heap_committed", SUM("gc.count") AS "gc_count", "app.name" FROM "mulesoft.jvm" WHERE "sub_org.id" = '${orgId}' AND "env.id" = '${envId}' AND timestamp BETWEEN ${from} AND ${to}`;
192
+ if (appName) {
193
+ query += ` AND "app.name" = '${appName}'`;
194
+ }
195
+ query += ` GROUP BY "app.name" TIMESERIES ${granularity}`;
196
+ const data = await this.search(query, 1000);
197
+ return data.map((row) => ({
198
+ timestamp: Number(row['timestamp'] || 0),
199
+ appName: String(row['app.name'] || 'Unknown'),
200
+ heapUsed: Number(row['heap_used'] || 0),
201
+ heapCommitted: Number(row['heap_committed'] || 0),
202
+ gcCount: Number(row['gc_count'] || 0),
203
+ }));
204
+ });
205
+ }
160
206
  /**
161
207
  * Get cross-environment metrics comparison (no env filter)
162
208
  */