@generacy-ai/generacy-plugin-cloud-build 0.0.0-preview-20260304013206

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 (83) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +228 -0
  3. package/dist/auth/auth-provider.d.ts +26 -0
  4. package/dist/auth/auth-provider.d.ts.map +1 -0
  5. package/dist/auth/auth-provider.js +72 -0
  6. package/dist/auth/auth-provider.js.map +1 -0
  7. package/dist/auth/types.d.ts +26 -0
  8. package/dist/auth/types.d.ts.map +1 -0
  9. package/dist/auth/types.js +5 -0
  10. package/dist/auth/types.js.map +1 -0
  11. package/dist/client.d.ts +43 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +87 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/config/schema.d.ts +73 -0
  16. package/dist/config/schema.d.ts.map +1 -0
  17. package/dist/config/schema.js +32 -0
  18. package/dist/config/schema.js.map +1 -0
  19. package/dist/config/types.d.ts +30 -0
  20. package/dist/config/types.d.ts.map +1 -0
  21. package/dist/config/types.js +11 -0
  22. package/dist/config/types.js.map +1 -0
  23. package/dist/errors.d.ts +75 -0
  24. package/dist/errors.d.ts.map +1 -0
  25. package/dist/errors.js +144 -0
  26. package/dist/errors.js.map +1 -0
  27. package/dist/index.d.ts +25 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +22 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/operations/artifacts.d.ts +35 -0
  32. package/dist/operations/artifacts.d.ts.map +1 -0
  33. package/dist/operations/artifacts.js +168 -0
  34. package/dist/operations/artifacts.js.map +1 -0
  35. package/dist/operations/builds.d.ts +91 -0
  36. package/dist/operations/builds.d.ts.map +1 -0
  37. package/dist/operations/builds.js +397 -0
  38. package/dist/operations/builds.js.map +1 -0
  39. package/dist/operations/logs.d.ts +56 -0
  40. package/dist/operations/logs.d.ts.map +1 -0
  41. package/dist/operations/logs.js +207 -0
  42. package/dist/operations/logs.js.map +1 -0
  43. package/dist/operations/triggers.d.ts +76 -0
  44. package/dist/operations/triggers.d.ts.map +1 -0
  45. package/dist/operations/triggers.js +308 -0
  46. package/dist/operations/triggers.js.map +1 -0
  47. package/dist/plugin.d.ts +156 -0
  48. package/dist/plugin.d.ts.map +1 -0
  49. package/dist/plugin.js +270 -0
  50. package/dist/plugin.js.map +1 -0
  51. package/dist/streaming/log-stream.d.ts +34 -0
  52. package/dist/streaming/log-stream.d.ts.map +1 -0
  53. package/dist/streaming/log-stream.js +89 -0
  54. package/dist/streaming/log-stream.js.map +1 -0
  55. package/dist/streaming/types.d.ts +27 -0
  56. package/dist/streaming/types.d.ts.map +1 -0
  57. package/dist/streaming/types.js +6 -0
  58. package/dist/streaming/types.js.map +1 -0
  59. package/dist/types/artifacts.d.ts +46 -0
  60. package/dist/types/artifacts.d.ts.map +1 -0
  61. package/dist/types/artifacts.js +6 -0
  62. package/dist/types/artifacts.js.map +1 -0
  63. package/dist/types/builds.d.ts +134 -0
  64. package/dist/types/builds.d.ts.map +1 -0
  65. package/dist/types/builds.js +5 -0
  66. package/dist/types/builds.js.map +1 -0
  67. package/dist/types/logs.d.ts +18 -0
  68. package/dist/types/logs.d.ts.map +1 -0
  69. package/dist/types/logs.js +5 -0
  70. package/dist/types/logs.js.map +1 -0
  71. package/dist/types/triggers.d.ts +71 -0
  72. package/dist/types/triggers.d.ts.map +1 -0
  73. package/dist/types/triggers.js +5 -0
  74. package/dist/types/triggers.js.map +1 -0
  75. package/dist/utils/retry.d.ts +41 -0
  76. package/dist/utils/retry.d.ts.map +1 -0
  77. package/dist/utils/retry.js +107 -0
  78. package/dist/utils/retry.js.map +1 -0
  79. package/dist/utils/validation.d.ts +53 -0
  80. package/dist/utils/validation.d.ts.map +1 -0
  81. package/dist/utils/validation.js +75 -0
  82. package/dist/utils/validation.js.map +1 -0
  83. package/package.json +58 -0
package/dist/plugin.js ADDED
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Main Cloud Build Plugin class.
3
+ *
4
+ * Extends AbstractCICDPlugin to provide the standard CICDPipeline interface
5
+ * while also exposing Cloud Build-specific functionality.
6
+ *
7
+ * Aggregates all operations into a unified plugin interface:
8
+ * - Build operations (via CICDPipeline interface)
9
+ * - Log streaming
10
+ * - Artifact access
11
+ * - Trigger management
12
+ */
13
+ import pino from 'pino';
14
+ import { AbstractCICDPlugin } from '@generacy-ai/latency-plugin-ci-cd';
15
+ import { parseConfig } from './config/schema.js';
16
+ import { createAuthProvider } from './auth/auth-provider.js';
17
+ import { BuildOperations } from './operations/builds.js';
18
+ import { LogOperations } from './operations/logs.js';
19
+ import { ArtifactOperations } from './operations/artifacts.js';
20
+ import { TriggerOperations } from './operations/triggers.js';
21
+ /**
22
+ * Google Cloud Build Plugin for Generacy.
23
+ *
24
+ * Extends AbstractCICDPlugin to provide the standard CICDPipeline interface
25
+ * (triggerPipeline, getPipelineStatus, cancelPipeline, listPipelines) while
26
+ * also exposing Cloud Build-specific operations like log streaming, artifact
27
+ * access, and trigger management.
28
+ */
29
+ export class CloudBuildPlugin extends AbstractCICDPlugin {
30
+ config;
31
+ logger;
32
+ buildOps;
33
+ logOps;
34
+ artifactOps;
35
+ triggerOps;
36
+ constructor(configInput, options = {}) {
37
+ super();
38
+ // Parse and validate configuration
39
+ this.config = parseConfig(configInput);
40
+ // Create logger with secret redaction
41
+ this.logger = options.logger ?? this.createLogger();
42
+ // Create auth provider
43
+ const authProvider = createAuthProvider({
44
+ projectId: this.config.projectId,
45
+ serviceAccountKey: this.config.serviceAccountKey,
46
+ });
47
+ // Get clients from auth provider
48
+ const cloudBuildClient = authProvider.getCloudBuildClient();
49
+ const storageClient = authProvider.getStorageClient();
50
+ // Initialize operation modules
51
+ this.buildOps = new BuildOperations(cloudBuildClient, this.config, this.logger);
52
+ this.logOps = new LogOperations(cloudBuildClient, storageClient, this.config, this.logger);
53
+ this.artifactOps = new ArtifactOperations(cloudBuildClient, storageClient, this.config, this.logger);
54
+ this.triggerOps = new TriggerOperations(cloudBuildClient, this.config, this.logger);
55
+ this.logger.debug({ projectId: this.config.projectId }, 'Cloud Build plugin initialized');
56
+ }
57
+ // ==========================================================================
58
+ // AbstractCICDPlugin abstract method implementations
59
+ // ==========================================================================
60
+ /**
61
+ * Trigger a pipeline run (implements abstract method).
62
+ *
63
+ * Maps to Cloud Build's trigger mechanism.
64
+ */
65
+ async doTrigger(pipelineId, options) {
66
+ this.logger.debug({ pipelineId, options }, 'Triggering pipeline via CICDPipeline interface');
67
+ // Note: Branch is passed but requires repoName for full RepoSource
68
+ // Cloud Build triggers typically already have repo config, so we pass undefined
69
+ const build = await this.buildOps.triggerBuild(pipelineId, undefined);
70
+ return this.mapBuildToPipelineRun(build);
71
+ }
72
+ /**
73
+ * Get pipeline run status (implements abstract method).
74
+ *
75
+ * Maps to Cloud Build's getBuild.
76
+ */
77
+ async doGetStatus(runId) {
78
+ this.logger.debug({ runId }, 'Getting pipeline status via CICDPipeline interface');
79
+ const build = await this.buildOps.getBuild(runId);
80
+ return this.mapBuildToPipelineRun(build);
81
+ }
82
+ /**
83
+ * Cancel a pipeline run (implements abstract method).
84
+ *
85
+ * Maps to Cloud Build's cancelBuild.
86
+ */
87
+ async doCancel(runId) {
88
+ this.logger.debug({ runId }, 'Cancelling pipeline via CICDPipeline interface');
89
+ await this.buildOps.cancelBuild(runId);
90
+ }
91
+ /**
92
+ * List available pipelines (implements abstract method).
93
+ *
94
+ * Maps to Cloud Build's listTriggers.
95
+ */
96
+ async doListPipelines() {
97
+ this.logger.debug('Listing pipelines via CICDPipeline interface');
98
+ const triggers = await this.triggerOps.listTriggers();
99
+ return triggers.map((trigger) => this.mapTriggerToPipeline(trigger));
100
+ }
101
+ // ==========================================================================
102
+ // Cloud Build-specific public API (for backwards compatibility)
103
+ // ==========================================================================
104
+ /**
105
+ * Trigger a build from an existing trigger.
106
+ */
107
+ async triggerBuild(triggerId, source) {
108
+ return this.buildOps.triggerBuild(triggerId, source);
109
+ }
110
+ /**
111
+ * Run a build from inline configuration.
112
+ */
113
+ async runBuild(config) {
114
+ return this.buildOps.runBuild(config);
115
+ }
116
+ /**
117
+ * Get a single build by ID.
118
+ */
119
+ async getBuild(buildId) {
120
+ return this.buildOps.getBuild(buildId);
121
+ }
122
+ /**
123
+ * List builds with optional filtering.
124
+ */
125
+ async listBuilds(filter) {
126
+ return this.buildOps.listBuilds(filter);
127
+ }
128
+ /**
129
+ * Cancel a running build.
130
+ */
131
+ async cancelBuild(buildId) {
132
+ return this.buildOps.cancelBuild(buildId);
133
+ }
134
+ /**
135
+ * Retry a failed build.
136
+ */
137
+ async retryBuild(buildId) {
138
+ return this.buildOps.retryBuild(buildId);
139
+ }
140
+ // ============================================================================
141
+ // Log Operations
142
+ // ============================================================================
143
+ /**
144
+ * Stream logs from a build as an AsyncIterable.
145
+ */
146
+ streamLogs(buildId, options) {
147
+ return this.logOps.streamLogs(buildId, options);
148
+ }
149
+ // ============================================================================
150
+ // Artifact Operations
151
+ // ============================================================================
152
+ /**
153
+ * List artifacts for a build.
154
+ */
155
+ async listArtifacts(buildId) {
156
+ return this.artifactOps.listArtifacts(buildId);
157
+ }
158
+ /**
159
+ * Download an artifact as a Buffer.
160
+ * Throws if artifact exceeds 100MB.
161
+ */
162
+ async getArtifact(buildId, path) {
163
+ return this.artifactOps.getArtifact(buildId, path);
164
+ }
165
+ /**
166
+ * Download an artifact as a ReadableStream.
167
+ * Use for large files that exceed the 100MB Buffer limit.
168
+ */
169
+ async getArtifactStream(buildId, path) {
170
+ return this.artifactOps.getArtifactStream(buildId, path);
171
+ }
172
+ // ============================================================================
173
+ // Trigger Operations
174
+ // ============================================================================
175
+ /**
176
+ * List all build triggers.
177
+ */
178
+ async listTriggers() {
179
+ return this.triggerOps.listTriggers();
180
+ }
181
+ /**
182
+ * Create a new build trigger.
183
+ */
184
+ async createTrigger(config) {
185
+ return this.triggerOps.createTrigger(config);
186
+ }
187
+ /**
188
+ * Update an existing build trigger.
189
+ */
190
+ async updateTrigger(triggerId, config) {
191
+ return this.triggerOps.updateTrigger(triggerId, config);
192
+ }
193
+ /**
194
+ * Delete a build trigger.
195
+ */
196
+ async deleteTrigger(triggerId) {
197
+ return this.triggerOps.deleteTrigger(triggerId);
198
+ }
199
+ // ============================================================================
200
+ // Private Methods
201
+ // ============================================================================
202
+ /**
203
+ * Create a logger with secret redaction.
204
+ */
205
+ createLogger() {
206
+ return pino({
207
+ name: 'generacy-plugin-cloud-build',
208
+ level: process.env.LOG_LEVEL ?? 'info',
209
+ redact: {
210
+ paths: [
211
+ 'serviceAccountKey',
212
+ 'config.serviceAccountKey',
213
+ '*.serviceAccountKey',
214
+ 'credentials',
215
+ 'private_key',
216
+ ],
217
+ censor: '[REDACTED]',
218
+ },
219
+ });
220
+ }
221
+ /**
222
+ * Map a Cloud Build Build to a Latency PipelineRun.
223
+ */
224
+ mapBuildToPipelineRun(build) {
225
+ return {
226
+ id: build.id,
227
+ pipelineId: build.buildTriggerId ?? 'inline',
228
+ status: this.mapBuildStatus(build.status),
229
+ createdAt: new Date(build.createTime),
230
+ startedAt: build.startTime ? new Date(build.startTime) : undefined,
231
+ completedAt: build.finishTime ? new Date(build.finishTime) : undefined,
232
+ logsUrl: build.logUrl,
233
+ };
234
+ }
235
+ /**
236
+ * Map a Cloud Build status to a Latency PipelineStatus.
237
+ */
238
+ mapBuildStatus(status) {
239
+ switch (status) {
240
+ case 'QUEUED':
241
+ case 'PENDING':
242
+ return 'pending';
243
+ case 'WORKING':
244
+ return 'running';
245
+ case 'SUCCESS':
246
+ return 'completed';
247
+ case 'FAILURE':
248
+ case 'INTERNAL_ERROR':
249
+ case 'TIMEOUT':
250
+ case 'EXPIRED':
251
+ return 'failed';
252
+ case 'CANCELLED':
253
+ return 'cancelled';
254
+ default:
255
+ return 'pending';
256
+ }
257
+ }
258
+ /**
259
+ * Map a Cloud Build Trigger to a Latency Pipeline.
260
+ */
261
+ mapTriggerToPipeline(trigger) {
262
+ return {
263
+ id: trigger.id,
264
+ name: trigger.name ?? trigger.id,
265
+ description: trigger.description,
266
+ defaultBranch: trigger.triggerTemplate?.branchName,
267
+ };
268
+ }
269
+ }
270
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Log streaming implementation using AsyncIterable.
3
+ *
4
+ * Features:
5
+ * - Real-time log streaming with polling
6
+ * - Automatic completion when build finishes
7
+ * - Natural backpressure via async iteration
8
+ * - Configurable polling interval
9
+ */
10
+ import type { Logger } from 'pino';
11
+ import type { LogEntry } from '../types/logs.js';
12
+ import type { LogStreamOptions, LogFetcher } from './types.js';
13
+ export declare class LogStream implements AsyncIterable<LogEntry> {
14
+ private readonly buildId;
15
+ private readonly fetcher;
16
+ private readonly pollingIntervalMs;
17
+ private readonly logger;
18
+ private offset;
19
+ private isComplete;
20
+ constructor(buildId: string, fetcher: LogFetcher, logger: Logger, options?: LogStreamOptions);
21
+ [Symbol.asyncIterator](): AsyncIterator<LogEntry>;
22
+ private fetchNextChunk;
23
+ private checkBuildCompletion;
24
+ }
25
+ /**
26
+ * Create a log stream for a build.
27
+ */
28
+ export declare function createLogStream(buildId: string, fetcher: LogFetcher, logger: Logger, options?: LogStreamOptions): AsyncIterable<LogEntry>;
29
+ /**
30
+ * Collect all log entries from a stream.
31
+ * Useful for testing or when you need all logs at once.
32
+ */
33
+ export declare function collectLogs(stream: AsyncIterable<LogEntry>): Promise<LogEntry[]>;
34
+ //# sourceMappingURL=log-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-stream.d.ts","sourceRoot":"","sources":["../../src/streaming/log-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEX,MAAM,YAAY,CAAC;AAMpB,qBAAa,SAAU,YAAW,aAAa,CAAC,QAAQ,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAkB;gBAGlC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB;IASzB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;YA+B1C,cAAc;YAId,oBAAoB;CAiBnC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,CAAC,QAAQ,CAAC,CAEzB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAQtF"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Log streaming implementation using AsyncIterable.
3
+ *
4
+ * Features:
5
+ * - Real-time log streaming with polling
6
+ * - Automatic completion when build finishes
7
+ * - Natural backpressure via async iteration
8
+ * - Configurable polling interval
9
+ */
10
+ import { DEFAULT_POLLING_INTERVAL_MS } from './types.js';
11
+ import { sleep } from '../utils/retry.js';
12
+ const TERMINAL_BUILD_STATUSES = ['SUCCESS', 'FAILURE', 'INTERNAL_ERROR', 'TIMEOUT', 'CANCELLED', 'EXPIRED'];
13
+ export class LogStream {
14
+ buildId;
15
+ fetcher;
16
+ pollingIntervalMs;
17
+ logger;
18
+ offset;
19
+ isComplete = false;
20
+ constructor(buildId, fetcher, logger, options = {}) {
21
+ this.buildId = buildId;
22
+ this.fetcher = fetcher;
23
+ this.logger = logger;
24
+ this.pollingIntervalMs = options.pollingIntervalMs ?? DEFAULT_POLLING_INTERVAL_MS;
25
+ this.offset = options.startOffset ?? 0;
26
+ }
27
+ async *[Symbol.asyncIterator]() {
28
+ this.logger.debug({ buildId: this.buildId }, 'Starting log stream');
29
+ while (!this.isComplete) {
30
+ try {
31
+ const chunk = await this.fetchNextChunk();
32
+ for (const entry of chunk.entries) {
33
+ yield entry;
34
+ }
35
+ this.offset = chunk.nextOffset;
36
+ if (chunk.isComplete) {
37
+ this.isComplete = true;
38
+ this.logger.debug({ buildId: this.buildId }, 'Log stream complete');
39
+ break;
40
+ }
41
+ // Wait before polling again
42
+ await sleep(this.pollingIntervalMs);
43
+ // Check if build has finished
44
+ await this.checkBuildCompletion();
45
+ }
46
+ catch (error) {
47
+ this.logger.error({ error, buildId: this.buildId }, 'Error fetching logs');
48
+ throw error;
49
+ }
50
+ }
51
+ }
52
+ async fetchNextChunk() {
53
+ return this.fetcher.fetchLogs(this.buildId, this.offset);
54
+ }
55
+ async checkBuildCompletion() {
56
+ try {
57
+ const status = await this.fetcher.getBuildStatus(this.buildId);
58
+ if (TERMINAL_BUILD_STATUSES.includes(status)) {
59
+ // Fetch any remaining logs before completing
60
+ const finalChunk = await this.fetchNextChunk();
61
+ if (finalChunk.entries.length === 0) {
62
+ this.isComplete = true;
63
+ }
64
+ }
65
+ }
66
+ catch (error) {
67
+ this.logger.warn({ error, buildId: this.buildId }, 'Failed to check build status');
68
+ // Continue streaming, will retry on next iteration
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Create a log stream for a build.
74
+ */
75
+ export function createLogStream(buildId, fetcher, logger, options) {
76
+ return new LogStream(buildId, fetcher, logger, options);
77
+ }
78
+ /**
79
+ * Collect all log entries from a stream.
80
+ * Useful for testing or when you need all logs at once.
81
+ */
82
+ export async function collectLogs(stream) {
83
+ const entries = [];
84
+ for await (const entry of stream) {
85
+ entries.push(entry);
86
+ }
87
+ return entries;
88
+ }
89
+ //# sourceMappingURL=log-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-stream.js","sourceRoot":"","sources":["../../src/streaming/log-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Types for log streaming.
3
+ */
4
+ import type { LogEntry, LogSeverity } from '../types/logs.js';
5
+ export interface LogStreamOptions {
6
+ pollingIntervalMs?: number;
7
+ startOffset?: number;
8
+ maxRetries?: number;
9
+ }
10
+ export interface LogStreamState {
11
+ offset: number;
12
+ isComplete: boolean;
13
+ buildStatus?: string;
14
+ }
15
+ export interface LogChunk {
16
+ entries: LogEntry[];
17
+ nextOffset: number;
18
+ isComplete: boolean;
19
+ }
20
+ export interface LogFetcher {
21
+ fetchLogs(buildId: string, offset: number): Promise<LogChunk>;
22
+ getBuildStatus(buildId: string): Promise<string>;
23
+ }
24
+ export declare const DEFAULT_POLLING_INTERVAL_MS = 2000;
25
+ export declare const DEFAULT_MAX_RETRIES = 3;
26
+ export { LogEntry, LogSeverity };
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/streaming/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Types for log streaming.
3
+ */
4
+ export const DEFAULT_POLLING_INTERVAL_MS = 2000;
5
+ export const DEFAULT_MAX_RETRIES = 3;
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/streaming/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Artifact-related types for the Cloud Build plugin.
3
+ */
4
+ export interface Artifact {
5
+ path: string;
6
+ bucket: string;
7
+ size: number;
8
+ contentType?: string;
9
+ generation?: string;
10
+ md5Hash?: string;
11
+ crc32c?: string;
12
+ updated: Date;
13
+ }
14
+ export interface MavenArtifact {
15
+ repository: string;
16
+ path: string;
17
+ artifactId: string;
18
+ groupId: string;
19
+ version?: string;
20
+ }
21
+ export interface PythonPackage {
22
+ repository: string;
23
+ paths: string[];
24
+ }
25
+ export interface NpmPackage {
26
+ repository: string;
27
+ packagePath: string;
28
+ }
29
+ export interface ArtifactObjects {
30
+ location: string;
31
+ paths: string[];
32
+ timing?: {
33
+ startTime: Date;
34
+ endTime: Date;
35
+ };
36
+ }
37
+ export interface BuildArtifacts {
38
+ images?: string[];
39
+ objects?: ArtifactObjects;
40
+ mavenArtifacts?: MavenArtifact[];
41
+ pythonPackages?: PythonPackage[];
42
+ npmPackages?: NpmPackage[];
43
+ }
44
+ /** Maximum artifact size for Buffer download (100MB) */
45
+ export declare const MAX_ARTIFACT_SIZE_BYTES: number;
46
+ //# sourceMappingURL=artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/types/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,QAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Artifact-related types for the Cloud Build plugin.
3
+ */
4
+ /** Maximum artifact size for Buffer download (100MB) */
5
+ export const MAX_ARTIFACT_SIZE_BYTES = 100 * 1024 * 1024;
6
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/types/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgDH,wDAAwD;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Build-related types for the Cloud Build plugin.
3
+ */
4
+ export type BuildStatus = 'STATUS_UNKNOWN' | 'PENDING' | 'QUEUED' | 'WORKING' | 'SUCCESS' | 'FAILURE' | 'INTERNAL_ERROR' | 'TIMEOUT' | 'CANCELLED' | 'EXPIRED';
5
+ export type BuildStepStatus = 'STATUS_UNKNOWN' | 'PENDING' | 'QUEUED' | 'WORKING' | 'SUCCESS' | 'FAILURE' | 'INTERNAL_ERROR' | 'TIMEOUT' | 'CANCELLED';
6
+ export type MachineType = 'UNSPECIFIED' | 'N1_HIGHCPU_8' | 'N1_HIGHCPU_32' | 'E2_HIGHCPU_8' | 'E2_HIGHCPU_32' | 'E2_MEDIUM';
7
+ export interface TimeSpan {
8
+ startTime: Date;
9
+ endTime: Date;
10
+ }
11
+ export interface Volume {
12
+ name: string;
13
+ path: string;
14
+ }
15
+ export interface BuildStep {
16
+ id?: string;
17
+ name: string;
18
+ entrypoint?: string;
19
+ args?: string[];
20
+ dir?: string;
21
+ env?: string[];
22
+ secretEnv?: string[];
23
+ waitFor?: string[];
24
+ timeout?: string;
25
+ status: BuildStepStatus;
26
+ timing?: TimeSpan;
27
+ pullTiming?: TimeSpan;
28
+ volumes?: Volume[];
29
+ script?: string;
30
+ }
31
+ export interface BuiltImage {
32
+ name: string;
33
+ digest: string;
34
+ pushTiming?: TimeSpan;
35
+ }
36
+ export interface BuildResults {
37
+ images?: BuiltImage[];
38
+ buildStepImages?: string[];
39
+ artifactManifest?: string;
40
+ numArtifacts?: number;
41
+ buildStepOutputs?: Buffer[];
42
+ artifactTiming?: TimeSpan;
43
+ }
44
+ export interface StorageSource {
45
+ bucket: string;
46
+ object: string;
47
+ generation?: string;
48
+ }
49
+ export interface RepoSource {
50
+ projectId?: string;
51
+ repoName: string;
52
+ branchName?: string;
53
+ tagName?: string;
54
+ commitSha?: string;
55
+ dir?: string;
56
+ }
57
+ export interface GitSource {
58
+ url: string;
59
+ revision?: string;
60
+ dir?: string;
61
+ }
62
+ export interface BuildSource {
63
+ storageSource?: StorageSource;
64
+ repoSource?: RepoSource;
65
+ gitSource?: GitSource;
66
+ }
67
+ export interface BuildStepConfig {
68
+ name: string;
69
+ entrypoint?: string;
70
+ args?: string[];
71
+ dir?: string;
72
+ env?: string[];
73
+ secretEnv?: string[];
74
+ waitFor?: string[];
75
+ timeout?: string;
76
+ volumes?: Volume[];
77
+ script?: string;
78
+ }
79
+ export interface ArtifactsConfig {
80
+ images?: string[];
81
+ objects?: {
82
+ location: string;
83
+ paths: string[];
84
+ };
85
+ }
86
+ export interface BuildConfig {
87
+ steps: BuildStepConfig[];
88
+ source?: BuildSource;
89
+ timeout?: string;
90
+ machineType?: MachineType;
91
+ diskSizeGb?: number;
92
+ substitutions?: Record<string, string>;
93
+ tags?: string[];
94
+ serviceAccount?: string;
95
+ logsBucket?: string;
96
+ artifacts?: ArtifactsConfig;
97
+ }
98
+ export interface Build {
99
+ id: string;
100
+ projectId: string;
101
+ status: BuildStatus;
102
+ statusDetail?: string;
103
+ source?: BuildSource;
104
+ steps: BuildStep[];
105
+ results?: BuildResults;
106
+ createTime: Date;
107
+ startTime?: Date;
108
+ finishTime?: Date;
109
+ duration?: number;
110
+ timeout?: string;
111
+ logUrl?: string;
112
+ logsBucket?: string;
113
+ buildTriggerId?: string;
114
+ substitutions?: Record<string, string>;
115
+ tags?: string[];
116
+ serviceAccount?: string;
117
+ }
118
+ export interface BuildFilter {
119
+ status?: BuildStatus | BuildStatus[];
120
+ triggerId?: string;
121
+ startTime?: {
122
+ after?: Date;
123
+ before?: Date;
124
+ };
125
+ tags?: string[];
126
+ pageSize?: number;
127
+ pageToken?: string;
128
+ }
129
+ export interface PaginatedResult<T> {
130
+ items: T[];
131
+ nextPageToken?: string;
132
+ totalSize?: number;
133
+ }
134
+ //# sourceMappingURL=builds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builds.d.ts","sourceRoot":"","sources":["../../src/types/builds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Build-related types for the Cloud Build plugin.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=builds.js.map