@sfdxy/anypoint-connect 0.1.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 (138) hide show
  1. package/README.md +481 -0
  2. package/dist/api/AccessManagementApi.d.ts +42 -0
  3. package/dist/api/AccessManagementApi.d.ts.map +1 -0
  4. package/dist/api/AccessManagementApi.js +48 -0
  5. package/dist/api/AccessManagementApi.js.map +1 -0
  6. package/dist/api/ApiManagerApi.d.ts +87 -0
  7. package/dist/api/ApiManagerApi.d.ts.map +1 -0
  8. package/dist/api/ApiManagerApi.js +79 -0
  9. package/dist/api/ApiManagerApi.js.map +1 -0
  10. package/dist/api/CloudHub2Api.d.ts +167 -0
  11. package/dist/api/CloudHub2Api.d.ts.map +1 -0
  12. package/dist/api/CloudHub2Api.js +132 -0
  13. package/dist/api/CloudHub2Api.js.map +1 -0
  14. package/dist/api/DesignCenterApi.d.ts +118 -0
  15. package/dist/api/DesignCenterApi.d.ts.map +1 -0
  16. package/dist/api/DesignCenterApi.js +259 -0
  17. package/dist/api/DesignCenterApi.js.map +1 -0
  18. package/dist/api/ExchangeApi.d.ts +92 -0
  19. package/dist/api/ExchangeApi.d.ts.map +1 -0
  20. package/dist/api/ExchangeApi.js +74 -0
  21. package/dist/api/ExchangeApi.js.map +1 -0
  22. package/dist/api/LogsApi.d.ts +66 -0
  23. package/dist/api/LogsApi.d.ts.map +1 -0
  24. package/dist/api/LogsApi.js +175 -0
  25. package/dist/api/LogsApi.js.map +1 -0
  26. package/dist/api/MonitoringApi.d.ts +72 -0
  27. package/dist/api/MonitoringApi.d.ts.map +1 -0
  28. package/dist/api/MonitoringApi.js +133 -0
  29. package/dist/api/MonitoringApi.js.map +1 -0
  30. package/dist/api/index.d.ts +8 -0
  31. package/dist/api/index.d.ts.map +1 -0
  32. package/dist/api/index.js +8 -0
  33. package/dist/api/index.js.map +1 -0
  34. package/dist/auth/FileStore.d.ts +15 -0
  35. package/dist/auth/FileStore.d.ts.map +1 -0
  36. package/dist/auth/FileStore.js +63 -0
  37. package/dist/auth/FileStore.js.map +1 -0
  38. package/dist/auth/OAuthFlow.d.ts +36 -0
  39. package/dist/auth/OAuthFlow.d.ts.map +1 -0
  40. package/dist/auth/OAuthFlow.js +156 -0
  41. package/dist/auth/OAuthFlow.js.map +1 -0
  42. package/dist/auth/TokenManager.d.ts +40 -0
  43. package/dist/auth/TokenManager.d.ts.map +1 -0
  44. package/dist/auth/TokenManager.js +119 -0
  45. package/dist/auth/TokenManager.js.map +1 -0
  46. package/dist/auth/TokenStore.d.ts +18 -0
  47. package/dist/auth/TokenStore.d.ts.map +1 -0
  48. package/dist/auth/TokenStore.js +5 -0
  49. package/dist/auth/TokenStore.js.map +1 -0
  50. package/dist/auth/index.d.ts +5 -0
  51. package/dist/auth/index.d.ts.map +1 -0
  52. package/dist/auth/index.js +4 -0
  53. package/dist/auth/index.js.map +1 -0
  54. package/dist/cli.d.ts +7 -0
  55. package/dist/cli.d.ts.map +1 -0
  56. package/dist/cli.js +28 -0
  57. package/dist/cli.js.map +1 -0
  58. package/dist/client/AnypointClient.d.ts +41 -0
  59. package/dist/client/AnypointClient.d.ts.map +1 -0
  60. package/dist/client/AnypointClient.js +76 -0
  61. package/dist/client/AnypointClient.js.map +1 -0
  62. package/dist/client/Cache.d.ts +15 -0
  63. package/dist/client/Cache.d.ts.map +1 -0
  64. package/dist/client/Cache.js +42 -0
  65. package/dist/client/Cache.js.map +1 -0
  66. package/dist/client/HttpClient.d.ts +26 -0
  67. package/dist/client/HttpClient.d.ts.map +1 -0
  68. package/dist/client/HttpClient.js +69 -0
  69. package/dist/client/HttpClient.js.map +1 -0
  70. package/dist/client/RateLimiter.d.ts +20 -0
  71. package/dist/client/RateLimiter.d.ts.map +1 -0
  72. package/dist/client/RateLimiter.js +48 -0
  73. package/dist/client/RateLimiter.js.map +1 -0
  74. package/dist/commands/api.d.ts +7 -0
  75. package/dist/commands/api.d.ts.map +1 -0
  76. package/dist/commands/api.js +144 -0
  77. package/dist/commands/api.js.map +1 -0
  78. package/dist/commands/apps.d.ts +7 -0
  79. package/dist/commands/apps.d.ts.map +1 -0
  80. package/dist/commands/apps.js +156 -0
  81. package/dist/commands/apps.js.map +1 -0
  82. package/dist/commands/auth.d.ts +7 -0
  83. package/dist/commands/auth.d.ts.map +1 -0
  84. package/dist/commands/auth.js +103 -0
  85. package/dist/commands/auth.js.map +1 -0
  86. package/dist/commands/config.d.ts +7 -0
  87. package/dist/commands/config.d.ts.map +1 -0
  88. package/dist/commands/config.js +125 -0
  89. package/dist/commands/config.js.map +1 -0
  90. package/dist/commands/deploy.d.ts +7 -0
  91. package/dist/commands/deploy.d.ts.map +1 -0
  92. package/dist/commands/deploy.js +145 -0
  93. package/dist/commands/deploy.js.map +1 -0
  94. package/dist/commands/design-center.d.ts +7 -0
  95. package/dist/commands/design-center.d.ts.map +1 -0
  96. package/dist/commands/design-center.js +183 -0
  97. package/dist/commands/design-center.js.map +1 -0
  98. package/dist/commands/exchange.d.ts +7 -0
  99. package/dist/commands/exchange.d.ts.map +1 -0
  100. package/dist/commands/exchange.js +134 -0
  101. package/dist/commands/exchange.js.map +1 -0
  102. package/dist/commands/index.d.ts +7 -0
  103. package/dist/commands/index.d.ts.map +1 -0
  104. package/dist/commands/index.js +7 -0
  105. package/dist/commands/index.js.map +1 -0
  106. package/dist/commands/logs.d.ts +8 -0
  107. package/dist/commands/logs.d.ts.map +1 -0
  108. package/dist/commands/logs.js +115 -0
  109. package/dist/commands/logs.js.map +1 -0
  110. package/dist/commands/monitor.d.ts +8 -0
  111. package/dist/commands/monitor.d.ts.map +1 -0
  112. package/dist/commands/monitor.js +129 -0
  113. package/dist/commands/monitor.js.map +1 -0
  114. package/dist/index.d.ts +19 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +22 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/mcp.d.ts +7 -0
  119. package/dist/mcp.d.ts.map +1 -0
  120. package/dist/mcp.js +993 -0
  121. package/dist/mcp.js.map +1 -0
  122. package/dist/safety/guards.d.ts +27 -0
  123. package/dist/safety/guards.d.ts.map +1 -0
  124. package/dist/safety/guards.js +83 -0
  125. package/dist/safety/guards.js.map +1 -0
  126. package/dist/utils/config.d.ts +57 -0
  127. package/dist/utils/config.d.ts.map +1 -0
  128. package/dist/utils/config.js +117 -0
  129. package/dist/utils/config.js.map +1 -0
  130. package/dist/utils/formatter.d.ts +21 -0
  131. package/dist/utils/formatter.d.ts.map +1 -0
  132. package/dist/utils/formatter.js +58 -0
  133. package/dist/utils/formatter.js.map +1 -0
  134. package/dist/utils/logger.d.ts +16 -0
  135. package/dist/utils/logger.d.ts.map +1 -0
  136. package/dist/utils/logger.js +43 -0
  137. package/dist/utils/logger.js.map +1 -0
  138. package/package.json +71 -0
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Logs API
3
+ * Log tailing, fetching, and downloading for CloudHub 2.0
4
+ * Uses the AMC log file download endpoint with spec ID resolution
5
+ */
6
+ const AMC_BASE = '/amc/application-manager/api/v2';
7
+ export class LogsApi {
8
+ http;
9
+ _cache;
10
+ ch2;
11
+ constructor(http, _cache, ch2) {
12
+ this.http = http;
13
+ this._cache = _cache;
14
+ this.ch2 = ch2;
15
+ }
16
+ /**
17
+ * Download the full log file for a CH2 deployment.
18
+ * Returns raw log text.
19
+ */
20
+ async downloadLogFile(orgId, envId, deploymentId, specId) {
21
+ return this.http.download(`${AMC_BASE}/organizations/${orgId}/environments/${envId}/deployments/${deploymentId}/specs/${specId}/logs/file`, {
22
+ headers: {
23
+ 'X-ANYPNT-ORG-ID': orgId,
24
+ 'X-ANYPNT-ENV-ID': envId,
25
+ },
26
+ });
27
+ }
28
+ /**
29
+ * Resolve an app name to its deployment + spec ID.
30
+ */
31
+ async resolveDeployment(orgId, envId, appName) {
32
+ if (!this.ch2) {
33
+ throw new Error('CloudHub2Api required for log operations');
34
+ }
35
+ // Get full deployment detail to access desiredVersion (spec ID)
36
+ const deployment = await this.ch2.findByName(orgId, envId, appName);
37
+ if (!deployment) {
38
+ throw new Error(`Application "${appName}" not found in environment`);
39
+ }
40
+ // Get detailed deployment info with desiredVersion
41
+ const detail = await this.ch2.getDeployment(orgId, envId, deployment.id);
42
+ const specId = detail.desiredVersion || detail.lastSuccessfulVersion;
43
+ if (!specId) {
44
+ throw new Error(`No spec version found for "${appName}" — app may not be fully deployed`);
45
+ }
46
+ return { deploymentId: deployment.id, specId };
47
+ }
48
+ /**
49
+ * Parse a CH2 log line into structured LogEntry.
50
+ * Format: "2026-02-13T22:42:32.359Z INFO [replicaId] message..."
51
+ */
52
+ parseLogLine(line) {
53
+ if (!line.trim())
54
+ return null;
55
+ // Match: timestamp LEVEL [instance] rest
56
+ const match = line.match(/^(\d{4}-\d{2}-\d{2}T[\d:.]+Z)\s+(TRACE|DEBUG|INFO|WARN|ERROR|FATAL)\s+\[([^\]]*)\]\s+(.*)$/);
57
+ if (match) {
58
+ return {
59
+ timestamp: new Date(match[1]).getTime(),
60
+ priority: match[2],
61
+ instanceId: match[3],
62
+ message: match[4],
63
+ };
64
+ }
65
+ // Continuation line (no timestamp prefix) — attach to last timestamp
66
+ return {
67
+ timestamp: Date.now(),
68
+ priority: 'INFO',
69
+ message: line,
70
+ };
71
+ }
72
+ /**
73
+ * Get parsed log entries for a CH2 application.
74
+ * Fetches the log file and parses it.
75
+ */
76
+ async getLogs(orgId, envId, appName, options = {}) {
77
+ const { deploymentId, specId } = await this.resolveDeployment(orgId, envId, appName);
78
+ const buffer = await this.downloadLogFile(orgId, envId, deploymentId, specId);
79
+ const text = buffer.toString('utf-8');
80
+ const lines = text.split('\n');
81
+ const levelPriority = {
82
+ TRACE: 0,
83
+ DEBUG: 1,
84
+ INFO: 2,
85
+ WARN: 3,
86
+ ERROR: 4,
87
+ FATAL: 5,
88
+ };
89
+ const minLevel = options.level ? (levelPriority[options.level.toUpperCase()] ?? 0) : 0;
90
+ let entries = [];
91
+ for (const line of lines) {
92
+ const entry = this.parseLogLine(line);
93
+ if (!entry)
94
+ continue;
95
+ // Filter by time
96
+ if (options.startTime && entry.timestamp < options.startTime)
97
+ continue;
98
+ if (options.endTime && entry.timestamp > options.endTime)
99
+ continue;
100
+ // Filter by level
101
+ if ((levelPriority[entry.priority] ?? 0) < minLevel)
102
+ continue;
103
+ // Filter by search
104
+ if (options.search && !entry.message.toLowerCase().includes(options.search.toLowerCase()))
105
+ continue;
106
+ entries.push(entry);
107
+ }
108
+ // Sort descending by default (newest first), limit
109
+ entries.sort((a, b) => b.timestamp - a.timestamp);
110
+ if (options.limit) {
111
+ entries = entries.slice(0, options.limit);
112
+ }
113
+ return entries;
114
+ }
115
+ /**
116
+ * Tail logs — generator that yields new log entries.
117
+ * Polls the log file periodically and yields new entries since last check.
118
+ */
119
+ async *tailLogs(orgId, envId, appName, options = {}) {
120
+ const intervalMs = options.intervalMs || 5000;
121
+ const { deploymentId, specId } = await this.resolveDeployment(orgId, envId, appName);
122
+ let lastTimestamp = Date.now() - 30000; // start from 30 seconds ago
123
+ while (true) {
124
+ try {
125
+ const buffer = await this.downloadLogFile(orgId, envId, deploymentId, specId);
126
+ const text = buffer.toString('utf-8');
127
+ // Only parse the last portion for performance (last 100KB)
128
+ const tail = text.length > 100000 ? text.substring(text.length - 100000) : text;
129
+ const lines = tail.split('\n');
130
+ const levelPriority = {
131
+ TRACE: 0,
132
+ DEBUG: 1,
133
+ INFO: 2,
134
+ WARN: 3,
135
+ ERROR: 4,
136
+ FATAL: 5,
137
+ };
138
+ const minLevel = options.level ? (levelPriority[options.level.toUpperCase()] ?? 0) : 0;
139
+ const newEntries = [];
140
+ for (const line of lines) {
141
+ const entry = this.parseLogLine(line);
142
+ if (!entry)
143
+ continue;
144
+ if (entry.timestamp <= lastTimestamp)
145
+ continue;
146
+ if ((levelPriority[entry.priority] ?? 0) < minLevel)
147
+ continue;
148
+ if (options.search && !entry.message.toLowerCase().includes(options.search.toLowerCase()))
149
+ continue;
150
+ newEntries.push(entry);
151
+ }
152
+ if (newEntries.length > 0) {
153
+ newEntries.sort((a, b) => a.timestamp - b.timestamp);
154
+ lastTimestamp = newEntries[newEntries.length - 1].timestamp;
155
+ yield newEntries;
156
+ }
157
+ }
158
+ catch (err) {
159
+ console.error(`Log poll error: ${err instanceof Error ? err.message : err}`);
160
+ }
161
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
162
+ }
163
+ }
164
+ /**
165
+ * Get all logs for a time range.
166
+ */
167
+ async getLogsForPeriod(orgId, envId, appName, startTime, endTime, level) {
168
+ return this.getLogs(orgId, envId, appName, {
169
+ startTime,
170
+ endTime,
171
+ level,
172
+ });
173
+ }
174
+ }
175
+ //# sourceMappingURL=LogsApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogsApi.js","sourceRoot":"","sources":["../../src/api/LogsApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Monitoring API
3
+ * AMQL-based metrics queries with configurable time ranges
4
+ */
5
+ import type { HttpClient } from '../client/HttpClient.js';
6
+ import type { Cache } from '../client/Cache.js';
7
+ export interface MetricDataPoint {
8
+ [key: string]: number | string | undefined;
9
+ timestamp?: number;
10
+ }
11
+ export interface AppMetricsSummary {
12
+ appName: string;
13
+ requestCount: number;
14
+ avgResponseTime: number;
15
+ errorCount: number;
16
+ errorRate: number;
17
+ outboundCount: number;
18
+ outboundAvgResponseTime: number;
19
+ }
20
+ export interface MetricsExport {
21
+ environment: string;
22
+ period: {
23
+ from: string;
24
+ to: string;
25
+ };
26
+ apps: AppMetricsSummary[];
27
+ summary: {
28
+ totalRequests: number;
29
+ avgResponseTime: number;
30
+ totalErrors: number;
31
+ errorRate: number;
32
+ };
33
+ }
34
+ export declare class MonitoringApi {
35
+ private readonly http;
36
+ private readonly cache;
37
+ private readonly baseUrl;
38
+ constructor(http: HttpClient, cache: Cache);
39
+ /**
40
+ * Execute an AMQL query
41
+ */
42
+ search(query: string, limit?: number): Promise<MetricDataPoint[]>;
43
+ /**
44
+ * Get inbound metrics for a time range
45
+ */
46
+ getInboundMetrics(orgId: string, envId: string, from: number, to: number): Promise<Array<{
47
+ appName: string;
48
+ requestCount: number;
49
+ avgResponseTime: number;
50
+ }>>;
51
+ /**
52
+ * Get outbound metrics for a time range
53
+ */
54
+ getOutboundMetrics(orgId: string, envId: string, from: number, to: number): Promise<Array<{
55
+ appName: string;
56
+ requestCount: number;
57
+ avgResponseTime: number;
58
+ }>>;
59
+ /**
60
+ * Get combined app metrics for a time range
61
+ */
62
+ getAppMetrics(orgId: string, envId: string, from: number, to: number, appName?: string): Promise<AppMetricsSummary[]>;
63
+ /**
64
+ * Build a full metrics export for a period
65
+ */
66
+ exportMetrics(orgId: string, envId: string, envName: string, from: number, to: number): Promise<MetricsExport>;
67
+ /**
68
+ * Check if monitoring API is available
69
+ */
70
+ isAvailable(): Promise<boolean>;
71
+ }
72
+ //# sourceMappingURL=MonitoringApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitoringApi.d.ts","sourceRoot":"","sources":["../../src/api/MonitoringApi.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,eAAe;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,OAAO,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED,qBAAa,aAAa;IAIlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJ1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;gBAG9B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,KAAK;IAGjC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAYpE;;OAEG;IACG,iBAAiB,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAcrF;;OAEG;IACG,kBAAkB,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACX,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAcrF;;OAEG;IACG,aAAa,CACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2C/B;;OAEG;IACG,aAAa,CACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACX,OAAO,CAAC,aAAa,CAAC;IA0BzB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQxC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Monitoring API
3
+ * AMQL-based metrics queries with configurable time ranges
4
+ */
5
+ export class MonitoringApi {
6
+ http;
7
+ cache;
8
+ baseUrl = '/observability/api/v1';
9
+ constructor(http, cache) {
10
+ this.http = http;
11
+ this.cache = cache;
12
+ }
13
+ /**
14
+ * Execute an AMQL query
15
+ */
16
+ async search(query, limit = 200) {
17
+ try {
18
+ const response = await this.http.post(`${this.baseUrl}/metrics:search?limit=${limit}&offset=0`, { query });
19
+ return response.data || [];
20
+ }
21
+ catch {
22
+ return [];
23
+ }
24
+ }
25
+ /**
26
+ * Get inbound metrics for a time range
27
+ */
28
+ async getInboundMetrics(orgId, envId, from, to) {
29
+ const cacheKey = `mon:inbound:${orgId}:${envId}:${from}:${to}`;
30
+ return this.cache.getOrCompute(cacheKey, async () => {
31
+ const query = `SELECT COUNT(requests) AS "request_count", AVG(response_time) AS "avg_response_time", "app.name" FROM "mulesoft.app.inbound" WHERE "sub_org.id" = '${orgId}' AND "env.id" = '${envId}' AND timestamp BETWEEN ${from} AND ${to} GROUP BY "app.name"`;
32
+ const data = await this.search(query);
33
+ return data.map((row) => ({
34
+ appName: String(row['app.name'] || 'Unknown'),
35
+ requestCount: Number(row['request_count'] || 0),
36
+ avgResponseTime: Number(row['avg_response_time'] || 0),
37
+ }));
38
+ });
39
+ }
40
+ /**
41
+ * Get outbound metrics for a time range
42
+ */
43
+ async getOutboundMetrics(orgId, envId, from, to) {
44
+ const cacheKey = `mon:outbound:${orgId}:${envId}:${from}:${to}`;
45
+ return this.cache.getOrCompute(cacheKey, async () => {
46
+ const query = `SELECT COUNT(requests) AS "request_count", AVG(response_time) AS "avg_response_time", "app.name" FROM "mulesoft.app.outbound" WHERE "sub_org.id" = '${orgId}' AND "env.id" = '${envId}' AND timestamp BETWEEN ${from} AND ${to} GROUP BY "app.name"`;
47
+ const data = await this.search(query);
48
+ return data.map((row) => ({
49
+ appName: String(row['app.name'] || 'Unknown'),
50
+ requestCount: Number(row['request_count'] || 0),
51
+ avgResponseTime: Number(row['avg_response_time'] || 0),
52
+ }));
53
+ });
54
+ }
55
+ /**
56
+ * Get combined app metrics for a time range
57
+ */
58
+ async getAppMetrics(orgId, envId, from, to, appName) {
59
+ const [inbound, outbound] = await Promise.all([
60
+ this.getInboundMetrics(orgId, envId, from, to),
61
+ this.getOutboundMetrics(orgId, envId, from, to),
62
+ ]);
63
+ const outboundByApp = new Map(outbound.map((o) => [o.appName, o]));
64
+ let results = inbound.map((row) => {
65
+ const ob = outboundByApp.get(row.appName);
66
+ return {
67
+ appName: row.appName,
68
+ requestCount: row.requestCount,
69
+ avgResponseTime: row.avgResponseTime,
70
+ errorCount: 0,
71
+ errorRate: 0,
72
+ outboundCount: ob?.requestCount || 0,
73
+ outboundAvgResponseTime: ob?.avgResponseTime || 0,
74
+ };
75
+ });
76
+ // Add outbound-only apps
77
+ for (const ob of outbound) {
78
+ if (!inbound.some((ib) => ib.appName === ob.appName)) {
79
+ results.push({
80
+ appName: ob.appName,
81
+ requestCount: 0,
82
+ avgResponseTime: 0,
83
+ errorCount: 0,
84
+ errorRate: 0,
85
+ outboundCount: ob.requestCount,
86
+ outboundAvgResponseTime: ob.avgResponseTime,
87
+ });
88
+ }
89
+ }
90
+ if (appName) {
91
+ results = results.filter((r) => r.appName.toLowerCase() === appName.toLowerCase());
92
+ }
93
+ return results;
94
+ }
95
+ /**
96
+ * Build a full metrics export for a period
97
+ */
98
+ async exportMetrics(orgId, envId, envName, from, to) {
99
+ const apps = await this.getAppMetrics(orgId, envId, from, to);
100
+ const totalRequests = apps.reduce((sum, m) => sum + m.requestCount, 0);
101
+ const totalErrors = apps.reduce((sum, m) => sum + m.errorCount, 0);
102
+ const avgResponseTime = apps.length > 0
103
+ ? apps.reduce((sum, m) => sum + m.avgResponseTime * m.requestCount, 0) / (totalRequests || 1)
104
+ : 0;
105
+ return {
106
+ environment: envName,
107
+ period: {
108
+ from: new Date(from).toISOString(),
109
+ to: new Date(to).toISOString(),
110
+ },
111
+ apps,
112
+ summary: {
113
+ totalRequests,
114
+ avgResponseTime,
115
+ totalErrors,
116
+ errorRate: totalRequests > 0 ? (totalErrors / totalRequests) * 100 : 0,
117
+ },
118
+ };
119
+ }
120
+ /**
121
+ * Check if monitoring API is available
122
+ */
123
+ async isAvailable() {
124
+ try {
125
+ const data = await this.search('SELECT COUNT(requests) FROM "mulesoft.app.inbound" LIMIT 1');
126
+ return data.length >= 0; // Even empty result means API is accessible
127
+ }
128
+ catch {
129
+ return false;
130
+ }
131
+ }
132
+ }
133
+ //# sourceMappingURL=MonitoringApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitoringApi.js","sourceRoot":"","sources":["../../src/api/MonitoringApi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { AccessManagementApi, type UserProfile, type Environment } from './AccessManagementApi.js';
2
+ export { CloudHub2Api, type CH2Deployment, type CH2DeploymentResponse, type CreateDeploymentPayload, } from './CloudHub2Api.js';
3
+ export { LogsApi, type LogEntry, type LogSearchResponse } from './LogsApi.js';
4
+ export { MonitoringApi, type AppMetricsSummary, type MetricsExport, type MetricDataPoint } from './MonitoringApi.js';
5
+ export { ExchangeApi, type ExchangeAsset, type ExchangeAssetDetail } from './ExchangeApi.js';
6
+ export { ApiManagerApi, type ApiInstance, type ApiAsset, type ApiPolicy, type SlaTier } from './ApiManagerApi.js';
7
+ export { DesignCenterApi, type DesignCenterProject, type DesignCenterFile, type DesignCenterBranch, type PublishToExchangeOptions, } from './DesignCenterApi.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EACH,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClH,OAAO,EACH,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAChC,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { AccessManagementApi } from './AccessManagementApi.js';
2
+ export { CloudHub2Api, } from './CloudHub2Api.js';
3
+ export { LogsApi } from './LogsApi.js';
4
+ export { MonitoringApi } from './MonitoringApi.js';
5
+ export { ExchangeApi } from './ExchangeApi.js';
6
+ export { ApiManagerApi } from './ApiManagerApi.js';
7
+ export { DesignCenterApi, } from './DesignCenterApi.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAsC,MAAM,0BAA0B,CAAC;AACnG,OAAO,EACH,YAAY,GAIf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAyC,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAoE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,WAAW,EAAgD,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAiE,MAAM,oBAAoB,CAAC;AAClH,OAAO,EACH,eAAe,GAKlB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * File Token Store
3
+ * AES-256-GCM encrypted file storage at ~/.anypoint-connect/tokens.enc
4
+ */
5
+ import type { TokenStore, AnypointTokens } from './TokenStore.js';
6
+ export declare class FileStore implements TokenStore {
7
+ private readonly filePath;
8
+ private readonly encryptionKey;
9
+ constructor();
10
+ save(tokens: AnypointTokens): Promise<void>;
11
+ load(): Promise<AnypointTokens | null>;
12
+ clear(): Promise<void>;
13
+ exists(): Promise<boolean>;
14
+ }
15
+ //# sourceMappingURL=FileStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileStore.d.ts","sourceRoot":"","sources":["../../src/auth/FileStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMlE,qBAAa,SAAU,YAAW,UAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;;IAWjC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3C,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAsBtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGnC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * File Token Store
3
+ * AES-256-GCM encrypted file storage at ~/.anypoint-connect/tokens.enc
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as os from 'os';
7
+ import * as path from 'path';
8
+ import * as crypto from 'crypto';
9
+ import { getConfigDir } from '../utils/config.js';
10
+ const ENCRYPTION_ALGORITHM = 'aes-256-gcm';
11
+ const TOKEN_FILE_NAME = 'tokens.enc';
12
+ export class FileStore {
13
+ filePath;
14
+ encryptionKey;
15
+ constructor() {
16
+ const configDir = getConfigDir();
17
+ this.filePath = path.join(configDir, TOKEN_FILE_NAME);
18
+ // Derive key from machine-specific data
19
+ const machineId = `${os.hostname()}-${os.userInfo().username}-anypoint-connect`;
20
+ this.encryptionKey = crypto.scryptSync(machineId, 'anc-salt-v1', 32);
21
+ }
22
+ async save(tokens) {
23
+ const iv = crypto.randomBytes(16);
24
+ const cipher = crypto.createCipheriv(ENCRYPTION_ALGORITHM, this.encryptionKey, iv);
25
+ const serialized = JSON.stringify(tokens);
26
+ let encrypted = cipher.update(serialized, 'utf8', 'hex');
27
+ encrypted += cipher.final('hex');
28
+ const authTag = cipher.getAuthTag();
29
+ const data = {
30
+ iv: iv.toString('hex'),
31
+ authTag: authTag.toString('hex'),
32
+ data: encrypted,
33
+ };
34
+ fs.writeFileSync(this.filePath, JSON.stringify(data), { mode: 0o600 });
35
+ }
36
+ async load() {
37
+ if (!fs.existsSync(this.filePath)) {
38
+ return null;
39
+ }
40
+ try {
41
+ const content = fs.readFileSync(this.filePath, 'utf8');
42
+ const { iv, authTag, data } = JSON.parse(content);
43
+ const decipher = crypto.createDecipheriv(ENCRYPTION_ALGORITHM, this.encryptionKey, Buffer.from(iv, 'hex'));
44
+ decipher.setAuthTag(Buffer.from(authTag, 'hex'));
45
+ let decrypted = decipher.update(data, 'hex', 'utf8');
46
+ decrypted += decipher.final('utf8');
47
+ return JSON.parse(decrypted);
48
+ }
49
+ catch {
50
+ await this.clear();
51
+ return null;
52
+ }
53
+ }
54
+ async clear() {
55
+ if (fs.existsSync(this.filePath)) {
56
+ fs.unlinkSync(this.filePath);
57
+ }
58
+ }
59
+ async exists() {
60
+ return fs.existsSync(this.filePath);
61
+ }
62
+ }
63
+ //# sourceMappingURL=FileStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileStore.js","sourceRoot":"","sources":["../../src/auth/FileStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * OAuth Flow
3
+ * Browser-based OAuth2 authorization code flow for Anypoint Platform
4
+ */
5
+ import type { AnypointTokens } from './TokenStore.js';
6
+ export interface OAuthConfig {
7
+ clientId: string;
8
+ clientSecret: string;
9
+ redirectUri: string;
10
+ baseUrl?: string;
11
+ }
12
+ export declare class OAuthFlow {
13
+ private readonly config;
14
+ private readonly baseUrl;
15
+ constructor(config: OAuthConfig);
16
+ /**
17
+ * Get the authorization URL to open in browser
18
+ */
19
+ getAuthorizeUrl(state: string): string;
20
+ /**
21
+ * Start local callback server and wait for authorization code
22
+ */
23
+ waitForCallback(port?: number, callbackPath?: string, timeoutMs?: number): Promise<{
24
+ code: string;
25
+ state: string;
26
+ }>;
27
+ /**
28
+ * Exchange authorization code for tokens
29
+ */
30
+ exchangeCode(code: string): Promise<AnypointTokens>;
31
+ /**
32
+ * Refresh an expired access token
33
+ */
34
+ refreshToken(refreshToken: string): Promise<AnypointTokens>;
35
+ }
36
+ //# sourceMappingURL=OAuthFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OAuthFlow.d.ts","sourceRoot":"","sources":["../../src/auth/OAuthFlow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYtD,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,WAAW;IAK/B;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAYtC;;OAEG;IACG,eAAe,CACjB,IAAI,GAAE,MAAa,EACnB,YAAY,GAAE,MAAwB,EACtC,SAAS,GAAE,MAAe,GAC3B,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAqE3C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAkCzD;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAgCpE"}