@dependabit/action 0.1.1

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 (92) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +225 -0
  4. package/action.yml +85 -0
  5. package/dist/actions/check.d.ts +33 -0
  6. package/dist/actions/check.d.ts.map +1 -0
  7. package/dist/actions/check.js +162 -0
  8. package/dist/actions/check.js.map +1 -0
  9. package/dist/actions/generate.d.ts +9 -0
  10. package/dist/actions/generate.d.ts.map +1 -0
  11. package/dist/actions/generate.js +152 -0
  12. package/dist/actions/generate.js.map +1 -0
  13. package/dist/actions/update.d.ts +9 -0
  14. package/dist/actions/update.d.ts.map +1 -0
  15. package/dist/actions/update.js +246 -0
  16. package/dist/actions/update.js.map +1 -0
  17. package/dist/actions/validate.d.ts +33 -0
  18. package/dist/actions/validate.d.ts.map +1 -0
  19. package/dist/actions/validate.js +226 -0
  20. package/dist/actions/validate.js.map +1 -0
  21. package/dist/index.d.ts +8 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +35 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/logger.d.ts +114 -0
  26. package/dist/logger.d.ts.map +1 -0
  27. package/dist/logger.js +154 -0
  28. package/dist/logger.js.map +1 -0
  29. package/dist/utils/agent-config.d.ts +31 -0
  30. package/dist/utils/agent-config.d.ts.map +1 -0
  31. package/dist/utils/agent-config.js +42 -0
  32. package/dist/utils/agent-config.js.map +1 -0
  33. package/dist/utils/agent-router.d.ts +33 -0
  34. package/dist/utils/agent-router.d.ts.map +1 -0
  35. package/dist/utils/agent-router.js +57 -0
  36. package/dist/utils/agent-router.js.map +1 -0
  37. package/dist/utils/errors.d.ts +51 -0
  38. package/dist/utils/errors.d.ts.map +1 -0
  39. package/dist/utils/errors.js +219 -0
  40. package/dist/utils/errors.js.map +1 -0
  41. package/dist/utils/inputs.d.ts +35 -0
  42. package/dist/utils/inputs.d.ts.map +1 -0
  43. package/dist/utils/inputs.js +47 -0
  44. package/dist/utils/inputs.js.map +1 -0
  45. package/dist/utils/metrics.d.ts +66 -0
  46. package/dist/utils/metrics.d.ts.map +1 -0
  47. package/dist/utils/metrics.js +116 -0
  48. package/dist/utils/metrics.js.map +1 -0
  49. package/dist/utils/outputs.d.ts +43 -0
  50. package/dist/utils/outputs.d.ts.map +1 -0
  51. package/dist/utils/outputs.js +146 -0
  52. package/dist/utils/outputs.js.map +1 -0
  53. package/dist/utils/performance.d.ts +100 -0
  54. package/dist/utils/performance.d.ts.map +1 -0
  55. package/dist/utils/performance.js +185 -0
  56. package/dist/utils/performance.js.map +1 -0
  57. package/dist/utils/reporter.d.ts +43 -0
  58. package/dist/utils/reporter.d.ts.map +1 -0
  59. package/dist/utils/reporter.js +122 -0
  60. package/dist/utils/reporter.js.map +1 -0
  61. package/dist/utils/secrets.d.ts +45 -0
  62. package/dist/utils/secrets.d.ts.map +1 -0
  63. package/dist/utils/secrets.js +94 -0
  64. package/dist/utils/secrets.js.map +1 -0
  65. package/package.json +45 -0
  66. package/src/actions/check.ts +223 -0
  67. package/src/actions/generate.ts +181 -0
  68. package/src/actions/update.ts +284 -0
  69. package/src/actions/validate.ts +292 -0
  70. package/src/index.ts +43 -0
  71. package/src/logger.test.ts +200 -0
  72. package/src/logger.ts +210 -0
  73. package/src/utils/agent-config.ts +61 -0
  74. package/src/utils/agent-router.ts +67 -0
  75. package/src/utils/errors.ts +251 -0
  76. package/src/utils/inputs.ts +75 -0
  77. package/src/utils/metrics.ts +169 -0
  78. package/src/utils/outputs.ts +202 -0
  79. package/src/utils/performance.ts +248 -0
  80. package/src/utils/reporter.ts +169 -0
  81. package/src/utils/secrets.ts +124 -0
  82. package/test/actions/check.test.ts +216 -0
  83. package/test/actions/generate.test.ts +82 -0
  84. package/test/actions/update.test.ts +70 -0
  85. package/test/actions/validate.test.ts +257 -0
  86. package/test/utils/agent-config.test.ts +112 -0
  87. package/test/utils/agent-router.test.ts +129 -0
  88. package/test/utils/metrics.test.ts +221 -0
  89. package/test/utils/reporter.test.ts +196 -0
  90. package/test/utils/secrets.test.ts +217 -0
  91. package/tsconfig.json +15 -0
  92. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/utils/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Action Output Formatting
3
+ * Handles setting GitHub Action outputs and creating summaries
4
+ */
5
+ import type { DependencyManifest } from '@dependabit/manifest';
6
+ /**
7
+ * Set outputs for the generate action
8
+ */
9
+ export declare function setGenerateOutputs(manifest: DependencyManifest, manifestPath: string, statistics: {
10
+ filesScanned: number;
11
+ llmCalls: number;
12
+ totalTokens: number;
13
+ totalLatencyMs: number;
14
+ }): void;
15
+ /**
16
+ * Create a summary report for the generate action
17
+ */
18
+ export declare function createGenerateSummary(manifest: DependencyManifest, statistics: {
19
+ filesScanned: number;
20
+ llmCalls: number;
21
+ totalTokens: number;
22
+ totalLatencyMs: number;
23
+ }): Promise<void>;
24
+ /**
25
+ * Create a summary for detected dependencies
26
+ */
27
+ export declare function createDependencyListSummary(dependencies: Array<{
28
+ name: string;
29
+ url: string;
30
+ type: string;
31
+ confidence: number;
32
+ }>): Promise<void>;
33
+ export declare function setUpdateOutputs(updatedManifest: DependencyManifest, existingManifest: DependencyManifest, filesChanged: number): void;
34
+ /**
35
+ * Create a summary report for the update action
36
+ */
37
+ export declare function createUpdateSummary(existingManifest: DependencyManifest, updatedManifest: DependencyManifest, stats: {
38
+ commitsAnalyzed: number;
39
+ filesChanged: number;
40
+ urlsAdded: number;
41
+ urlsRemoved: number;
42
+ }): Promise<void>;
43
+ //# sourceMappingURL=outputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs.d.ts","sourceRoot":"","sources":["../../src/utils/outputs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,IAAI,CAON;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACnF,OAAO,CAAC,IAAI,CAAC,CAgCf;AA6BD,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,kBAAkB,EACnC,gBAAgB,EAAE,kBAAkB,EACpC,YAAY,EAAE,MAAM,GACnB,IAAI,CASN;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,gBAAgB,EAAE,kBAAkB,EACpC,eAAe,EAAE,kBAAkB,EACnC,KAAK,EAAE;IACL,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,IAAI,CAAC,CAuCf"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Action Output Formatting
3
+ * Handles setting GitHub Action outputs and creating summaries
4
+ */
5
+ import * as core from '@actions/core';
6
+ /**
7
+ * Set outputs for the generate action
8
+ */
9
+ export function setGenerateOutputs(manifest, manifestPath, statistics) {
10
+ core.setOutput('manifest_path', manifestPath);
11
+ core.setOutput('dependency_count', manifest.dependencies.length);
12
+ core.setOutput('files_scanned', statistics.filesScanned);
13
+ core.setOutput('llm_calls', statistics.llmCalls);
14
+ core.setOutput('total_tokens', statistics.totalTokens);
15
+ core.setOutput('average_confidence', manifest.statistics.averageConfidence);
16
+ }
17
+ /**
18
+ * Create a summary report for the generate action
19
+ */
20
+ export async function createGenerateSummary(manifest, statistics) {
21
+ await core.summary
22
+ .addHeading('🔍 Dependency Detection Complete')
23
+ .addRaw('\n')
24
+ .addTable([
25
+ [
26
+ { data: 'Metric', header: true },
27
+ { data: 'Value', header: true }
28
+ ],
29
+ ['Dependencies Found', manifest.dependencies.length.toString()],
30
+ ['Files Scanned', statistics.filesScanned.toString()],
31
+ ['LLM Calls', statistics.llmCalls.toString()],
32
+ ['Total Tokens Used', statistics.totalTokens.toString()],
33
+ ['Average Confidence', `${(manifest.statistics.averageConfidence * 100).toFixed(1)}%`],
34
+ ['Analysis Time', `${(statistics.totalLatencyMs / 1000).toFixed(2)}s`]
35
+ ])
36
+ .addRaw('\n')
37
+ .addHeading('📊 Dependencies by Type', 3)
38
+ .addList(Object.entries(manifest.statistics.byType).map(([type, count]) => `${type}: ${count}`))
39
+ .addRaw('\n')
40
+ .addHeading('🔧 Dependencies by Access Method', 3)
41
+ .addList(Object.entries(manifest.statistics.byAccessMethod).map(([method, count]) => `${method}: ${count}`))
42
+ .write();
43
+ }
44
+ /**
45
+ * Create a summary for detected dependencies
46
+ */
47
+ export async function createDependencyListSummary(dependencies) {
48
+ if (dependencies.length === 0) {
49
+ await core.summary
50
+ .addHeading('No Dependencies Found')
51
+ .addRaw('No external informational dependencies were detected in this repository.')
52
+ .write();
53
+ return;
54
+ }
55
+ await core.summary
56
+ .addHeading('🔗 Detected Dependencies', 3)
57
+ .addTable([
58
+ [
59
+ { data: 'Name', header: true },
60
+ { data: 'Type', header: true },
61
+ { data: 'Confidence', header: true },
62
+ { data: 'URL', header: true }
63
+ ],
64
+ ...dependencies
65
+ .slice(0, 20)
66
+ .map((dep) => [
67
+ dep.name,
68
+ dep.type,
69
+ `${(dep.confidence * 100).toFixed(0)}%`,
70
+ `[Link](${dep.url})`
71
+ ])
72
+ ])
73
+ .write();
74
+ if (dependencies.length > 20) {
75
+ await core.summary.addRaw(`\n_...and ${dependencies.length - 20} more dependencies_\n`).write();
76
+ }
77
+ }
78
+ /**
79
+ * Set outputs for the update action
80
+ */
81
+ function countDependencyDiffs(existingManifest, updatedManifest) {
82
+ const existingSet = new Set(existingManifest.dependencies.map((dep) => JSON.stringify(dep)));
83
+ const updatedSet = new Set(updatedManifest.dependencies.map((dep) => JSON.stringify(dep)));
84
+ let added = 0;
85
+ for (const dep of updatedSet) {
86
+ if (!existingSet.has(dep)) {
87
+ added++;
88
+ }
89
+ }
90
+ let removed = 0;
91
+ for (const dep of existingSet) {
92
+ if (!updatedSet.has(dep)) {
93
+ removed++;
94
+ }
95
+ }
96
+ return { added, removed };
97
+ }
98
+ export function setUpdateOutputs(updatedManifest, existingManifest, filesChanged) {
99
+ const { added, removed } = countDependencyDiffs(existingManifest, updatedManifest);
100
+ const changesDetected = added > 0 || removed > 0;
101
+ core.setOutput('changes_detected', changesDetected);
102
+ core.setOutput('dependencies_added', added);
103
+ core.setOutput('dependencies_removed', removed);
104
+ core.setOutput('total_dependencies', updatedManifest.dependencies.length);
105
+ core.setOutput('files_analyzed', filesChanged);
106
+ }
107
+ /**
108
+ * Create a summary report for the update action
109
+ */
110
+ export async function createUpdateSummary(existingManifest, updatedManifest, stats) {
111
+ const dependenciesAdded = updatedManifest.dependencies.length - existingManifest.dependencies.length;
112
+ const changesDetected = dependenciesAdded !== 0;
113
+ await core.summary
114
+ .addHeading('🔄 Manifest Update Complete')
115
+ .addRaw('\n')
116
+ .addTable([
117
+ [
118
+ { data: 'Metric', header: true },
119
+ { data: 'Value', header: true }
120
+ ],
121
+ ['Commits Analyzed', stats.commitsAnalyzed.toString()],
122
+ ['Files Changed', stats.filesChanged.toString()],
123
+ ['URLs Added', stats.urlsAdded.toString()],
124
+ ['URLs Removed', stats.urlsRemoved.toString()],
125
+ ['Dependencies Before', existingManifest.dependencies.length.toString()],
126
+ ['Dependencies After', updatedManifest.dependencies.length.toString()],
127
+ [
128
+ 'Net Change',
129
+ dependenciesAdded >= 0 ? `+${dependenciesAdded}` : dependenciesAdded.toString()
130
+ ],
131
+ ['Changes Detected', changesDetected ? '✅ Yes' : '❌ No']
132
+ ])
133
+ .write();
134
+ if (dependenciesAdded > 0) {
135
+ const newDeps = updatedManifest.dependencies
136
+ .filter((dep) => !existingManifest.dependencies.some((existing) => existing.url === dep.url))
137
+ .slice(0, 10);
138
+ if (newDeps.length > 0) {
139
+ await core.summary
140
+ .addHeading('🆕 New Dependencies', 3)
141
+ .addList(newDeps.map((dep) => `**${dep.name}**: ${dep.url} (${dep.type})`))
142
+ .write();
143
+ }
144
+ }
145
+ }
146
+ //# sourceMappingURL=outputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs.js","sourceRoot":"","sources":["../../src/utils/outputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Performance metrics tracking for operations
3
+ * Tracks operation durations, API quotas, and resource usage
4
+ */
5
+ export interface OperationMetrics {
6
+ operationId?: string | undefined;
7
+ name: string;
8
+ startTime: number;
9
+ endTime?: number | undefined;
10
+ duration?: number | undefined;
11
+ status: 'running' | 'completed' | 'failed';
12
+ metadata?: Record<string, unknown> | undefined;
13
+ }
14
+ export interface APIQuotaMetrics {
15
+ limit: number;
16
+ remaining: number;
17
+ used: number;
18
+ resetAt: Date;
19
+ percentUsed: number;
20
+ }
21
+ export interface PerformanceReport {
22
+ totalOperations: number;
23
+ completedOperations: number;
24
+ failedOperations: number;
25
+ averageDuration: number;
26
+ totalDuration: number;
27
+ apiQuota?: APIQuotaMetrics | undefined;
28
+ operations: OperationMetrics[];
29
+ }
30
+ /**
31
+ * Performance metrics tracker
32
+ */
33
+ export declare class PerformanceTracker {
34
+ private operations;
35
+ private completedOperations;
36
+ private apiQuota?;
37
+ constructor();
38
+ /**
39
+ * Start tracking an operation
40
+ */
41
+ startOperation(name: string, metadata?: Record<string, unknown>): string;
42
+ /**
43
+ * End tracking an operation
44
+ */
45
+ endOperation(operationId: string, status?: 'completed' | 'failed'): void;
46
+ /**
47
+ * Update API quota metrics
48
+ */
49
+ updateAPIQuota(quota: {
50
+ limit: number;
51
+ remaining: number;
52
+ used: number;
53
+ reset: number;
54
+ }): void;
55
+ /**
56
+ * Get current API quota status
57
+ */
58
+ getAPIQuota(): APIQuotaMetrics | undefined;
59
+ /**
60
+ * Get metrics for a specific operation
61
+ */
62
+ getOperation(operationId: string): OperationMetrics | undefined;
63
+ /**
64
+ * Get all running operations
65
+ */
66
+ getRunningOperations(): OperationMetrics[];
67
+ /**
68
+ * Get all completed operations
69
+ */
70
+ getCompletedOperations(): OperationMetrics[];
71
+ /**
72
+ * Generate performance report
73
+ */
74
+ generateReport(): PerformanceReport;
75
+ /**
76
+ * Get operations by name
77
+ */
78
+ getOperationsByName(name: string): OperationMetrics[];
79
+ /**
80
+ * Calculate percentile duration for an operation
81
+ */
82
+ getOperationPercentile(name: string, percentile: number): number;
83
+ /**
84
+ * Clear all metrics
85
+ */
86
+ clear(): void;
87
+ /**
88
+ * Format metrics as human-readable string
89
+ */
90
+ formatReport(report?: PerformanceReport): string;
91
+ }
92
+ /**
93
+ * Get or create global performance tracker
94
+ */
95
+ export declare function getPerformanceTracker(): PerformanceTracker;
96
+ /**
97
+ * Track an async operation
98
+ */
99
+ export declare function trackOperation<T>(name: string, fn: () => Promise<T>, metadata?: Record<string, unknown>): Promise<T>;
100
+ //# sourceMappingURL=performance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/utils/performance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,CAA8B;IAE/C,cAIC;IAED;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAavE;IAED;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,GAAE,WAAW,GAAG,QAAsB,GAAG,IAAI,CAYpF;IAED;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAQ7F;IAED;;OAEG;IACH,WAAW,IAAI,eAAe,GAAG,SAAS,CAEzC;IAED;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAK9D;IAED;;OAEG;IACH,oBAAoB,IAAI,gBAAgB,EAAE,CAEzC;IAED;;OAEG;IACH,sBAAsB,IAAI,gBAAgB,EAAE,CAE3C;IAED;;OAEG;IACH,cAAc,IAAI,iBAAiB,CAmBlC;IAED;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAEpD;IAED;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAc/D;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAIZ;IAED;;OAEG;IACH,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAsB/C;CACF;AAOD;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAK1D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,CAAC,CAAC,CAYZ"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Performance metrics tracking for operations
3
+ * Tracks operation durations, API quotas, and resource usage
4
+ */
5
+ /**
6
+ * Performance metrics tracker
7
+ */
8
+ export class PerformanceTracker {
9
+ operations;
10
+ completedOperations;
11
+ apiQuota;
12
+ constructor() {
13
+ this.operations = new Map();
14
+ this.completedOperations = [];
15
+ this.apiQuota = undefined;
16
+ }
17
+ /**
18
+ * Start tracking an operation
19
+ */
20
+ startOperation(name, metadata) {
21
+ const operationId = `${name}-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
22
+ const metrics = {
23
+ operationId,
24
+ name,
25
+ startTime: Date.now(),
26
+ status: 'running',
27
+ metadata
28
+ };
29
+ this.operations.set(operationId, metrics);
30
+ return operationId;
31
+ }
32
+ /**
33
+ * End tracking an operation
34
+ */
35
+ endOperation(operationId, status = 'completed') {
36
+ const metrics = this.operations.get(operationId);
37
+ if (!metrics) {
38
+ return;
39
+ }
40
+ metrics.endTime = Date.now();
41
+ metrics.duration = metrics.endTime - metrics.startTime;
42
+ metrics.status = status;
43
+ this.completedOperations.push(metrics);
44
+ this.operations.delete(operationId);
45
+ }
46
+ /**
47
+ * Update API quota metrics
48
+ */
49
+ updateAPIQuota(quota) {
50
+ this.apiQuota = {
51
+ limit: quota.limit,
52
+ remaining: quota.remaining,
53
+ used: quota.used,
54
+ resetAt: new Date(quota.reset * 1000),
55
+ percentUsed: (quota.used / quota.limit) * 100
56
+ };
57
+ }
58
+ /**
59
+ * Get current API quota status
60
+ */
61
+ getAPIQuota() {
62
+ return this.apiQuota;
63
+ }
64
+ /**
65
+ * Get metrics for a specific operation
66
+ */
67
+ getOperation(operationId) {
68
+ return (this.operations.get(operationId) ||
69
+ this.completedOperations.find((op) => op.operationId === operationId));
70
+ }
71
+ /**
72
+ * Get all running operations
73
+ */
74
+ getRunningOperations() {
75
+ return Array.from(this.operations.values());
76
+ }
77
+ /**
78
+ * Get all completed operations
79
+ */
80
+ getCompletedOperations() {
81
+ return this.completedOperations;
82
+ }
83
+ /**
84
+ * Generate performance report
85
+ */
86
+ generateReport() {
87
+ const allOperations = this.completedOperations;
88
+ const completed = allOperations.filter((op) => op.status === 'completed');
89
+ const failed = allOperations.filter((op) => op.status === 'failed');
90
+ const durations = completed.filter((op) => op.duration !== undefined).map((op) => op.duration);
91
+ const totalDuration = durations.reduce((sum, d) => sum + d, 0);
92
+ const averageDuration = durations.length > 0 ? totalDuration / durations.length : 0;
93
+ return {
94
+ totalOperations: allOperations.length,
95
+ completedOperations: completed.length,
96
+ failedOperations: failed.length,
97
+ averageDuration,
98
+ totalDuration,
99
+ apiQuota: this.apiQuota,
100
+ operations: allOperations
101
+ };
102
+ }
103
+ /**
104
+ * Get operations by name
105
+ */
106
+ getOperationsByName(name) {
107
+ return this.completedOperations.filter((op) => op.name === name);
108
+ }
109
+ /**
110
+ * Calculate percentile duration for an operation
111
+ */
112
+ getOperationPercentile(name, percentile) {
113
+ const operations = this.getOperationsByName(name);
114
+ const durations = operations
115
+ .filter((op) => op.duration !== undefined)
116
+ .map((op) => op.duration)
117
+ .sort((a, b) => a - b);
118
+ if (durations.length === 0) {
119
+ return 0;
120
+ }
121
+ const index = Math.ceil((percentile / 100) * durations.length) - 1;
122
+ const value = durations[Math.max(0, index)];
123
+ return value !== undefined ? value : 0;
124
+ }
125
+ /**
126
+ * Clear all metrics
127
+ */
128
+ clear() {
129
+ this.operations.clear();
130
+ this.completedOperations = [];
131
+ this.apiQuota = undefined;
132
+ }
133
+ /**
134
+ * Format metrics as human-readable string
135
+ */
136
+ formatReport(report) {
137
+ const r = report || this.generateReport();
138
+ const lines = [
139
+ 'Performance Report',
140
+ '==================',
141
+ `Total Operations: ${r.totalOperations}`,
142
+ `Completed: ${r.completedOperations} | Failed: ${r.failedOperations}`,
143
+ `Average Duration: ${r.averageDuration.toFixed(2)}ms`,
144
+ `Total Duration: ${r.totalDuration.toFixed(2)}ms`
145
+ ];
146
+ if (r.apiQuota) {
147
+ lines.push('');
148
+ lines.push('API Quota:');
149
+ lines.push(` Used: ${r.apiQuota.used}/${r.apiQuota.limit} (${r.apiQuota.percentUsed.toFixed(1)}%)`);
150
+ lines.push(` Remaining: ${r.apiQuota.remaining}`);
151
+ lines.push(` Resets at: ${r.apiQuota.resetAt.toISOString()}`);
152
+ }
153
+ return lines.join('\n');
154
+ }
155
+ }
156
+ /**
157
+ * Global performance tracker instance
158
+ */
159
+ let globalTracker;
160
+ /**
161
+ * Get or create global performance tracker
162
+ */
163
+ export function getPerformanceTracker() {
164
+ if (!globalTracker) {
165
+ globalTracker = new PerformanceTracker();
166
+ }
167
+ return globalTracker;
168
+ }
169
+ /**
170
+ * Track an async operation
171
+ */
172
+ export async function trackOperation(name, fn, metadata) {
173
+ const tracker = getPerformanceTracker();
174
+ const operationId = tracker.startOperation(name, metadata);
175
+ try {
176
+ const result = await fn();
177
+ tracker.endOperation(operationId, 'completed');
178
+ return result;
179
+ }
180
+ catch (error) {
181
+ tracker.endOperation(operationId, 'failed');
182
+ throw error;
183
+ }
184
+ }
185
+ //# sourceMappingURL=performance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/utils/performance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,UAAU,CAAgC;IAC1C,mBAAmB,CAAqB;IACxC,QAAQ,CAA+B;IAE/C,cAAc;QACZ,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAAA,CAC3B;IAED;;OAEG;IACH,cAAc,CAAC,IAAY,EAAE,QAAkC,EAAU;QACvE,MAAM,WAAW,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAEvF,MAAM,OAAO,GAAqB;YAChC,WAAW;YACX,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,SAAS;YACjB,QAAQ;SACT,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,WAAW,CAAC;IAAA,CACpB;IAED;;OAEG;IACH,YAAY,CAAC,WAAmB,EAAE,MAAM,GAA2B,WAAW,EAAQ;QACpF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;QACvD,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAExB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAAA,CACrC;IAED;;OAEG;IACH,cAAc,CAAC,KAAwE,EAAQ;QAC7F,IAAI,CAAC,QAAQ,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACrC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG;SAC9C,CAAC;IAAA,CACH;IAED;;OAEG;IACH,WAAW,GAAgC;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC;IAAA,CACtB;IAED;;OAEG;IACH,YAAY,CAAC,WAAmB,EAAgC;QAC9D,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;YAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,CACtE,CAAC;IAAA,CACH;IAED;;OAEG;IACH,oBAAoB,GAAuB;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAAA,CAC7C;IAED;;OAEG;IACH,sBAAsB,GAAuB;QAC3C,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAAA,CACjC;IAED;;OAEG;IACH,cAAc,GAAsB;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC/C,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAEpE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAS,CAAC,CAAC;QAEhG,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,OAAO;YACL,eAAe,EAAE,aAAa,CAAC,MAAM;YACrC,mBAAmB,EAAE,SAAS,CAAC,MAAM;YACrC,gBAAgB,EAAE,MAAM,CAAC,MAAM;YAC/B,eAAe;YACf,aAAa;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,aAAa;SAC1B,CAAC;IAAA,CACH;IAED;;OAEG;IACH,mBAAmB,CAAC,IAAY,EAAsB;QACpD,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAAA,CAClE;IAED;;OAEG;IACH,sBAAsB,CAAC,IAAY,EAAE,UAAkB,EAAU;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,UAAU;aACzB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC;aACzC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAS,CAAC;aACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAAA,CACxC;IAED;;OAEG;IACH,KAAK,GAAS;QACZ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAAA,CAC3B;IAED;;OAEG;IACH,YAAY,CAAC,MAA0B,EAAU;QAC/C,MAAM,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG;YACZ,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB,CAAC,CAAC,eAAe,EAAE;YACxC,cAAc,CAAC,CAAC,mBAAmB,cAAc,CAAC,CAAC,gBAAgB,EAAE;YACrE,qBAAqB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YACrD,mBAAmB,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SAClD,CAAC;QAEF,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CACR,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACzF,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CACzB;CACF;AAED;;GAEG;AACH,IAAI,aAA6C,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,qBAAqB,GAAuB;IAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,aAAa,CAAC;AAAA,CACtB;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,EAAoB,EACpB,QAAkC,EACtB;IACZ,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC;IACd,CAAC;AAAA,CACF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Summary Reporter
3
+ * Generates human-readable summaries for dependency change reports
4
+ */
5
+ export interface DependencyChange {
6
+ dependency: {
7
+ id: string;
8
+ name?: string | undefined;
9
+ url: string;
10
+ type?: string | undefined;
11
+ };
12
+ severity: 'breaking' | 'major' | 'minor';
13
+ changes: string[];
14
+ oldVersion?: string | undefined;
15
+ newVersion?: string | undefined;
16
+ releaseNotes?: string;
17
+ diff?: string;
18
+ contentDiff?: string;
19
+ }
20
+ export declare class SummaryReporter {
21
+ /**
22
+ * Generates a summary report for all dependency changes
23
+ */
24
+ generateSummary(changes: DependencyChange[]): string;
25
+ /**
26
+ * Generates detailed issue body for a single dependency change
27
+ */
28
+ generateIssueBody(change: DependencyChange): string;
29
+ /**
30
+ * Formats change summary for display
31
+ */
32
+ formatChangeSummary(change: {
33
+ changes: string[];
34
+ oldVersion?: string;
35
+ newVersion?: string;
36
+ contentDiff?: string;
37
+ }): string;
38
+ /**
39
+ * Formats a single change item for the summary
40
+ */
41
+ private formatChangeItem;
42
+ }
43
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/utils/reporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;IAC1B;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAqCnD;IAED;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA+ClD;IAED;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,MAAM,CAuBT;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAgBzB"}