@cat-factory/integrations 0.20.1 → 0.21.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.
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/environments/EnvironmentProvisioningService.d.ts +10 -0
- package/dist/modules/environments/EnvironmentProvisioningService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentProvisioningService.js +74 -12
- package/dist/modules/environments/EnvironmentProvisioningService.js.map +1 -1
- package/dist/modules/environments/EnvironmentTeardownService.d.ts +4 -0
- package/dist/modules/environments/EnvironmentTeardownService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentTeardownService.js +30 -6
- package/dist/modules/environments/EnvironmentTeardownService.js.map +1 -1
- package/dist/modules/provisioning-logs/LoggingRunnerTransport.d.ts +27 -0
- package/dist/modules/provisioning-logs/LoggingRunnerTransport.d.ts.map +1 -0
- package/dist/modules/provisioning-logs/LoggingRunnerTransport.js +62 -0
- package/dist/modules/provisioning-logs/LoggingRunnerTransport.js.map +1 -0
- package/dist/modules/provisioning-logs/ProvisioningLogService.d.ts +35 -0
- package/dist/modules/provisioning-logs/ProvisioningLogService.d.ts.map +1 -0
- package/dist/modules/provisioning-logs/ProvisioningLogService.js +60 -0
- package/dist/modules/provisioning-logs/ProvisioningLogService.js.map +1 -0
- package/dist/modules/provisioning-logs/redact.d.ts +9 -0
- package/dist/modules/provisioning-logs/redact.d.ts.map +1 -0
- package/dist/modules/provisioning-logs/redact.js +68 -0
- package/dist/modules/provisioning-logs/redact.js.map +1 -0
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -48,6 +48,9 @@ export { RunnerPoolConnectionService, type RunnerPoolConnectionServiceDependenci
|
|
|
48
48
|
export * as runnersLogic from './modules/runners/runners.logic.js';
|
|
49
49
|
export { HttpRunnerPoolProvider, RunnerPoolApiError, type HttpRunnerPoolProviderOptions, } from './modules/runners/HttpRunnerPoolProvider.js';
|
|
50
50
|
export { RunnerPoolTransport } from './modules/runners/RunnerPoolTransport.js';
|
|
51
|
+
export { ProvisioningLogRecorder, ProvisioningLogService, PROVISIONING_LOG_MAX_LIMIT, type ProvisioningLogEvent, type ProvisioningLogRecorderDependencies, type ProvisioningLogServiceDependencies, } from './modules/provisioning-logs/ProvisioningLogService.js';
|
|
52
|
+
export { LoggingRunnerTransport, type LoggingRunnerTransportOptions, } from './modules/provisioning-logs/LoggingRunnerTransport.js';
|
|
53
|
+
export { redactSecrets } from './modules/provisioning-logs/redact.js';
|
|
51
54
|
export { SlackNotificationChannel, type SlackNotificationChannelDependencies, } from './modules/slack/SlackNotificationChannel.js';
|
|
52
55
|
export { SlackConnectionService, type SlackConnectionServiceDependencies, } from './modules/slack/SlackConnectionService.js';
|
|
53
56
|
export { SlackSettingsService, type SlackSettingsServiceDependencies, } from './modules/slack/SlackSettingsService.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -58,6 +58,11 @@ export * as runnersLogic from './modules/runners/runners.logic.js';
|
|
|
58
58
|
// (`RunnerPoolTransport`) both runtime facades resolve for a workspace's pool.
|
|
59
59
|
export { HttpRunnerPoolProvider, RunnerPoolApiError, } from './modules/runners/HttpRunnerPoolProvider.js';
|
|
60
60
|
export { RunnerPoolTransport } from './modules/runners/RunnerPoolTransport.js';
|
|
61
|
+
// Unified provisioning event log: the best-effort recorder every spin-up/down site
|
|
62
|
+
// writes through, and the read service behind the "View logs" drawers + run details.
|
|
63
|
+
export { ProvisioningLogRecorder, ProvisioningLogService, PROVISIONING_LOG_MAX_LIMIT, } from './modules/provisioning-logs/ProvisioningLogService.js';
|
|
64
|
+
export { LoggingRunnerTransport, } from './modules/provisioning-logs/LoggingRunnerTransport.js';
|
|
65
|
+
export { redactSecrets } from './modules/provisioning-logs/redact.js';
|
|
61
66
|
// Slack: an additional delivery transport for the existing notification mechanism
|
|
62
67
|
// (the `SlackNotificationChannel` implements the same `NotificationChannel` port),
|
|
63
68
|
// plus the per-account connection / per-workspace routing / member-mapping services.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { EnvironmentProvider, ProvisionContext, UrlSafetyPolicy } from '@ca
|
|
|
4
4
|
import type { SecretCipher } from '@cat-factory/kernel';
|
|
5
5
|
import type { EnvironmentAccessHandle, EnvironmentHandle } from '@cat-factory/kernel';
|
|
6
6
|
import type { EnvironmentConnectionService } from './EnvironmentConnectionService.js';
|
|
7
|
+
import type { ProvisioningLogRecorder } from '../provisioning-logs/ProvisioningLogService.js';
|
|
7
8
|
export interface EnvironmentProvisioningServiceDependencies {
|
|
8
9
|
connectionService: EnvironmentConnectionService;
|
|
9
10
|
environmentProvider: EnvironmentProvider;
|
|
@@ -13,6 +14,8 @@ export interface EnvironmentProvisioningServiceDependencies {
|
|
|
13
14
|
clock: Clock;
|
|
14
15
|
/** URL/host safety policy applied to the URL a provider returns. Defaults to strict. */
|
|
15
16
|
urlPolicy?: UrlSafetyPolicy;
|
|
17
|
+
/** Best-effort provisioning-event log; absent ⇒ provisioning is unchanged. */
|
|
18
|
+
provisioningLog?: ProvisioningLogRecorder;
|
|
16
19
|
}
|
|
17
20
|
export interface ProvisionArgs {
|
|
18
21
|
workspaceId: string;
|
|
@@ -48,6 +51,13 @@ export declare class EnvironmentProvisioningService {
|
|
|
48
51
|
* discovery entry point the execution engine calls to enrich tester context.
|
|
49
52
|
*/
|
|
50
53
|
resolveForBlock(workspaceId: string, blockId: string): Promise<ResolvedEnvironment | null>;
|
|
54
|
+
/**
|
|
55
|
+
* The live environment provisioned for a block, as a handle (no creds, but WITH
|
|
56
|
+
* `id` and `lastError`) — the run-details surface uses this to show the env's
|
|
57
|
+
* lifecycle state + the exact error next to a consuming step (tester/coder).
|
|
58
|
+
* Unlike {@link resolveForBlock} (which strips `id`/`lastError` for agent context).
|
|
59
|
+
*/
|
|
60
|
+
getHandleForBlock(workspaceId: string, blockId: string): Promise<EnvironmentHandle | null>;
|
|
51
61
|
private resolveExpiry;
|
|
52
62
|
private encryptAccess;
|
|
53
63
|
private decryptAccess;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentProvisioningService.d.ts","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentProvisioningService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAqB,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAC3F,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAEhB,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAErF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"EnvironmentProvisioningService.d.ts","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentProvisioningService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAqB,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAC3F,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAEhB,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAErF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAErF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAA;AAO7F,MAAM,WAAW,0CAA0C;IACzD,iBAAiB,EAAE,4BAA4B,CAAA;IAC/C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,6BAA6B,EAAE,6BAA6B,CAAA;IAC5D,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,wFAAwF;IACxF,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,8EAA8E;IAC9E,eAAe,CAAC,EAAE,uBAAuB,CAAA;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,qFAAqF;IACrF,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAYD,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,qBAAa,8BAA8B;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,0CAA0C,EAAI;IAEjF,OAAO,KAAK,SAAS,GAEpB;IAED,mFAAmF;IAC7E,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4F/D;IAED,+EAA+E;IACzE,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8C/E;IAED,kDAAkD;IAC5C,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAGnE;IAED,uDAAuD;IACjD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAGlF;IAED,wEAAwE;IAClE,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAI5F;IAED;;;OAGG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAS/F;IAED;;;;;OAKG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAG/F;IAED,OAAO,CAAC,aAAa;YAUP,aAAa;YAKb,aAAa;YAKb,aAAa;CAK5B"}
|
|
@@ -33,12 +33,32 @@ export class EnvironmentProvisioningService {
|
|
|
33
33
|
inputs.blockId = args.blockId;
|
|
34
34
|
Object.assign(inputs, contextInputs(args.context));
|
|
35
35
|
Object.assign(inputs, args.inputs);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
let provisioned;
|
|
37
|
+
try {
|
|
38
|
+
provisioned = await this.deps.environmentProvider.provision({
|
|
39
|
+
manifest,
|
|
40
|
+
inputs,
|
|
41
|
+
...(args.context ? { provisionContext: args.context } : {}),
|
|
42
|
+
resolveSecret,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
// The provider call threw (network/auth/4xx) — log the verbatim error before
|
|
47
|
+
// it bubbles to the caller, so the attempt shows in the env provider's logs.
|
|
48
|
+
await this.deps.provisioningLog?.record({
|
|
49
|
+
workspaceId,
|
|
50
|
+
subsystem: 'environment',
|
|
51
|
+
operation: 'provision',
|
|
52
|
+
targetId: null,
|
|
53
|
+
providerId: manifest.providerId,
|
|
54
|
+
blockId: args.blockId ?? null,
|
|
55
|
+
executionId: args.executionId ?? null,
|
|
56
|
+
outcome: 'failure',
|
|
57
|
+
error: error instanceof Error ? error.message : String(error),
|
|
58
|
+
detail: null,
|
|
59
|
+
});
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
42
62
|
if (provisioned.url) {
|
|
43
63
|
assertSafeEnvironmentUrl(provisioned.url, 'environment URL', this.urlPolicy);
|
|
44
64
|
}
|
|
@@ -67,6 +87,20 @@ export class EnvironmentProvisioningService {
|
|
|
67
87
|
deletedAt: null,
|
|
68
88
|
};
|
|
69
89
|
await this.deps.environmentRegistryRepository.insert(record);
|
|
90
|
+
// A provider that returns `status:'failed'` (rather than throwing) is still a
|
|
91
|
+
// failed spin-up — log it as such with the captured `lastError`.
|
|
92
|
+
await this.deps.provisioningLog?.record({
|
|
93
|
+
workspaceId,
|
|
94
|
+
subsystem: 'environment',
|
|
95
|
+
operation: 'provision',
|
|
96
|
+
targetId: record.id,
|
|
97
|
+
providerId: manifest.providerId,
|
|
98
|
+
blockId: record.blockId,
|
|
99
|
+
executionId: record.executionId,
|
|
100
|
+
outcome: provisioned.status === 'failed' ? 'failure' : 'success',
|
|
101
|
+
error: record.lastError,
|
|
102
|
+
detail: JSON.stringify({ status: provisioned.status }),
|
|
103
|
+
});
|
|
70
104
|
return recordToHandle(record);
|
|
71
105
|
}
|
|
72
106
|
/** Re-poll the provider for an environment's status and persist any change. */
|
|
@@ -75,12 +109,30 @@ export class EnvironmentProvisioningService {
|
|
|
75
109
|
const { manifest } = await this.deps.connectionService.requireConnection(workspaceId);
|
|
76
110
|
const resolveSecret = await this.deps.connectionService.resolveSecrets(workspaceId);
|
|
77
111
|
const provisionFields = await this.decryptFields(record.provisionFieldsCipher);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
112
|
+
let provisioned;
|
|
113
|
+
try {
|
|
114
|
+
provisioned = await this.deps.environmentProvider.status({
|
|
115
|
+
manifest,
|
|
116
|
+
externalId: record.externalId,
|
|
117
|
+
provisionFields,
|
|
118
|
+
resolveSecret,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
await this.deps.provisioningLog?.record({
|
|
123
|
+
workspaceId,
|
|
124
|
+
subsystem: 'environment',
|
|
125
|
+
operation: 'status',
|
|
126
|
+
targetId: record.id,
|
|
127
|
+
providerId: manifest.providerId,
|
|
128
|
+
blockId: record.blockId,
|
|
129
|
+
executionId: record.executionId,
|
|
130
|
+
outcome: 'failure',
|
|
131
|
+
error: error instanceof Error ? error.message : String(error),
|
|
132
|
+
detail: null,
|
|
133
|
+
});
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
84
136
|
if (provisioned.url) {
|
|
85
137
|
assertSafeEnvironmentUrl(provisioned.url, 'environment URL', this.urlPolicy);
|
|
86
138
|
}
|
|
@@ -126,6 +178,16 @@ export class EnvironmentProvisioningService {
|
|
|
126
178
|
expiresAt: record.expiresAt,
|
|
127
179
|
};
|
|
128
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* The live environment provisioned for a block, as a handle (no creds, but WITH
|
|
183
|
+
* `id` and `lastError`) — the run-details surface uses this to show the env's
|
|
184
|
+
* lifecycle state + the exact error next to a consuming step (tester/coder).
|
|
185
|
+
* Unlike {@link resolveForBlock} (which strips `id`/`lastError` for agent context).
|
|
186
|
+
*/
|
|
187
|
+
async getHandleForBlock(workspaceId, blockId) {
|
|
188
|
+
const record = await this.deps.environmentRegistryRepository.getByBlock(workspaceId, blockId);
|
|
189
|
+
return record ? recordToHandle(record) : null;
|
|
190
|
+
}
|
|
129
191
|
resolveExpiry(provisioned, defaultTtlMs, base) {
|
|
130
192
|
if (provisioned.expiresAt !== null)
|
|
131
193
|
return provisioned.expiresAt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentProvisioningService.js","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentProvisioningService.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE3E,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"EnvironmentProvisioningService.js","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentProvisioningService.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,15 @@ import type { EnvironmentProvider } from '@cat-factory/kernel';
|
|
|
4
4
|
import type { SecretCipher } from '@cat-factory/kernel';
|
|
5
5
|
import type { EnvironmentHandle } from '@cat-factory/kernel';
|
|
6
6
|
import type { EnvironmentConnectionService } from './EnvironmentConnectionService.js';
|
|
7
|
+
import type { ProvisioningLogRecorder } from '../provisioning-logs/ProvisioningLogService.js';
|
|
7
8
|
export interface EnvironmentTeardownServiceDependencies {
|
|
8
9
|
connectionService: EnvironmentConnectionService;
|
|
9
10
|
environmentProvider: EnvironmentProvider;
|
|
10
11
|
environmentRegistryRepository: EnvironmentRegistryRepository;
|
|
11
12
|
secretCipher: SecretCipher;
|
|
12
13
|
clock: Clock;
|
|
14
|
+
/** Best-effort provisioning-event log; absent ⇒ teardown is unchanged. */
|
|
15
|
+
provisioningLog?: ProvisioningLogRecorder;
|
|
13
16
|
}
|
|
14
17
|
export declare class EnvironmentTeardownService {
|
|
15
18
|
private readonly deps;
|
|
@@ -19,6 +22,7 @@ export declare class EnvironmentTeardownService {
|
|
|
19
22
|
/** Tear down every environment whose TTL has elapsed. Returns the count swept. */
|
|
20
23
|
sweepExpired(now: number): Promise<number>;
|
|
21
24
|
private teardownRecord;
|
|
25
|
+
private logTeardown;
|
|
22
26
|
private decryptFields;
|
|
23
27
|
}
|
|
24
28
|
//# sourceMappingURL=EnvironmentTeardownService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentTeardownService.d.ts","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentTeardownService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAqB,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"EnvironmentTeardownService.d.ts","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentTeardownService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,EAAqB,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAErF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAA;AAO7F,MAAM,WAAW,sCAAsC;IACrD,iBAAiB,EAAE,4BAA4B,CAAA;IAC/C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,6BAA6B,EAAE,6BAA6B,CAAA;IAC5D,YAAY,EAAE,YAAY,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;IACZ,0EAA0E;IAC1E,eAAe,CAAC,EAAE,uBAAuB,CAAA;CAC1C;AAED,qBAAa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,sCAAsC,EAAI;IAE7E,+DAA+D;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAQ1E;IAED,kFAAkF;IAC5E,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAa/C;YAEa,cAAc;YAmCd,WAAW;YAmBX,aAAa;CAK5B"}
|
|
@@ -35,14 +35,38 @@ export class EnvironmentTeardownService {
|
|
|
35
35
|
if (connection) {
|
|
36
36
|
const resolveSecret = await this.deps.connectionService.resolveSecrets(record.workspaceId);
|
|
37
37
|
const provisionFields = await this.decryptFields(record.provisionFieldsCipher);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
try {
|
|
39
|
+
await this.deps.environmentProvider.teardown({
|
|
40
|
+
manifest: connection.manifest,
|
|
41
|
+
externalId: record.externalId,
|
|
42
|
+
provisionFields,
|
|
43
|
+
resolveSecret,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
// Log the verbatim provider error before it propagates (the sweep swallows
|
|
48
|
+
// it; an on-demand teardown surfaces it). The local record is NOT tombstoned
|
|
49
|
+
// on a provider failure, matching the existing retry-next-pass behaviour.
|
|
50
|
+
await this.logTeardown(record, 'failure', error instanceof Error ? error.message : String(error));
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
44
53
|
}
|
|
45
54
|
await this.deps.environmentRegistryRepository.softDelete(record.workspaceId, record.id, this.deps.clock.now());
|
|
55
|
+
await this.logTeardown(record, 'success', null);
|
|
56
|
+
}
|
|
57
|
+
async logTeardown(record, outcome, error) {
|
|
58
|
+
await this.deps.provisioningLog?.record({
|
|
59
|
+
workspaceId: record.workspaceId,
|
|
60
|
+
subsystem: 'environment',
|
|
61
|
+
operation: 'teardown',
|
|
62
|
+
targetId: record.id,
|
|
63
|
+
providerId: record.providerId,
|
|
64
|
+
blockId: record.blockId,
|
|
65
|
+
executionId: record.executionId,
|
|
66
|
+
outcome,
|
|
67
|
+
error,
|
|
68
|
+
detail: null,
|
|
69
|
+
});
|
|
46
70
|
}
|
|
47
71
|
async decryptFields(cipher) {
|
|
48
72
|
if (!cipher)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvironmentTeardownService.js","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentTeardownService.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"EnvironmentTeardownService.js","sourceRoot":"","sources":["../../../src/modules/environments/EnvironmentTeardownService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ProvisioningSubsystem, RunnerDispatchKind, RunnerDispatchOptions, RunnerJobRef, RunnerJobView, RunnerTransport } from '@cat-factory/kernel';
|
|
2
|
+
import type { ProvisioningLogRecorder } from './ProvisioningLogService.js';
|
|
3
|
+
export interface LoggingRunnerTransportOptions {
|
|
4
|
+
inner: RunnerTransport;
|
|
5
|
+
recorder: ProvisioningLogRecorder;
|
|
6
|
+
workspaceId: string;
|
|
7
|
+
subsystem: ProvisioningSubsystem;
|
|
8
|
+
/** The pool's manifest provider id, when the wrapped transport is a runner pool. */
|
|
9
|
+
providerId?: string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Shared set of job ids whose `poll-failure` has already been logged, so a job
|
|
12
|
+
* that is re-polled in its terminal `failed` state (a Workflows replay / sweeper
|
|
13
|
+
* re-drive) records ONE row, not one per poll. Owned by the per-facade transport
|
|
14
|
+
* factory closure so it survives this (stateless, per-resolution) wrapper being
|
|
15
|
+
* rebuilt. Absent ⇒ no dedup (every failed poll logs).
|
|
16
|
+
*/
|
|
17
|
+
loggedPollFailures?: Set<string>;
|
|
18
|
+
}
|
|
19
|
+
export declare class LoggingRunnerTransport implements RunnerTransport {
|
|
20
|
+
private readonly opts;
|
|
21
|
+
constructor(opts: LoggingRunnerTransportOptions);
|
|
22
|
+
dispatch(ref: RunnerJobRef, spec: Record<string, unknown>, kind?: RunnerDispatchKind, options?: RunnerDispatchOptions): Promise<void>;
|
|
23
|
+
poll(ref: RunnerJobRef): Promise<RunnerJobView>;
|
|
24
|
+
release(ref: RunnerJobRef): Promise<void>;
|
|
25
|
+
private log;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=LoggingRunnerTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggingRunnerTransport.d.ts","sourceRoot":"","sources":["../../../src/modules/provisioning-logs/LoggingRunnerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAc1E,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,eAAe,CAAA;IACtB,QAAQ,EAAE,uBAAuB,CAAA;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,qBAAqB,CAAA;IAChC,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACjC;AAED,qBAAa,sBAAuB,YAAW,eAAe;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,6BAA6B,EAAI;IAE9D,QAAQ,CACZ,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,GAAE,kBAA4B,EAClC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAWf;IAEK,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAYpD;IAEK,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9C;YAEa,GAAG;CAoBlB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export class LoggingRunnerTransport {
|
|
2
|
+
opts;
|
|
3
|
+
constructor(opts) {
|
|
4
|
+
this.opts = opts;
|
|
5
|
+
}
|
|
6
|
+
async dispatch(ref, spec, kind = 'agent', options) {
|
|
7
|
+
try {
|
|
8
|
+
await this.opts.inner.dispatch(ref, spec, kind, options);
|
|
9
|
+
await this.log('dispatch', ref, 'success', null, { kind, ...options });
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
// The verbatim transport error ("… dispatch failed (HTTP X): body") IS the
|
|
13
|
+
// diagnostic the operator needs — log it, then rethrow so the engine still
|
|
14
|
+
// classifies the run failure (Part C).
|
|
15
|
+
await this.log('dispatch', ref, 'failure', messageOf(error), { kind, ...options });
|
|
16
|
+
throw error;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async poll(ref) {
|
|
20
|
+
const view = await this.opts.inner.poll(ref);
|
|
21
|
+
if (view.state === 'failed') {
|
|
22
|
+
// De-dupe: a terminal `failed` job re-polled by a replay/re-drive must log its
|
|
23
|
+
// poll-failure only once (see loggedPollFailures).
|
|
24
|
+
const seen = this.opts.loggedPollFailures;
|
|
25
|
+
if (!seen || !seen.has(ref.jobId)) {
|
|
26
|
+
seen?.add(ref.jobId);
|
|
27
|
+
await this.log('poll-failure', ref, 'failure', view.error ?? null, null);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return view;
|
|
31
|
+
}
|
|
32
|
+
async release(ref) {
|
|
33
|
+
if (!this.opts.inner.release)
|
|
34
|
+
return;
|
|
35
|
+
try {
|
|
36
|
+
await this.opts.inner.release(ref);
|
|
37
|
+
await this.log('release', ref, 'success', null, null);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
await this.log('release', ref, 'failure', messageOf(error), null);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async log(operation, ref, outcome, error, detail) {
|
|
45
|
+
await this.opts.recorder.record({
|
|
46
|
+
workspaceId: this.opts.workspaceId,
|
|
47
|
+
subsystem: this.opts.subsystem,
|
|
48
|
+
operation,
|
|
49
|
+
targetId: ref.jobId,
|
|
50
|
+
providerId: this.opts.providerId ?? null,
|
|
51
|
+
blockId: null,
|
|
52
|
+
executionId: ref.runId,
|
|
53
|
+
outcome,
|
|
54
|
+
error,
|
|
55
|
+
detail: detail && Object.keys(detail).length > 0 ? JSON.stringify(detail) : null,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function messageOf(error) {
|
|
60
|
+
return error instanceof Error ? error.message : String(error);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=LoggingRunnerTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggingRunnerTransport.js","sourceRoot":"","sources":["../../../src/modules/provisioning-logs/LoggingRunnerTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Clock, IdGenerator, ProvisioningLogQuery, ProvisioningLogRecord, ProvisioningLogRepository } from '@cat-factory/kernel';
|
|
2
|
+
/** The hard maximum a single `list` call returns (the rows are cheap, but bound them). */
|
|
3
|
+
export declare const PROVISIONING_LOG_MAX_LIMIT = 500;
|
|
4
|
+
/** The event an emitting site hands the recorder (id/createdAt are minted here). */
|
|
5
|
+
export type ProvisioningLogEvent = Omit<ProvisioningLogRecord, 'id' | 'createdAt'>;
|
|
6
|
+
export interface ProvisioningLogRecorderDependencies {
|
|
7
|
+
repository: ProvisioningLogRepository;
|
|
8
|
+
idGenerator: IdGenerator;
|
|
9
|
+
clock: Clock;
|
|
10
|
+
/** Optional observer for a swallowed log-write failure (telemetry / tests). */
|
|
11
|
+
onError?: (error: unknown, event: ProvisioningLogEvent) => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Best-effort writer for the provisioning log. `record()` never throws: a failed
|
|
15
|
+
* append (or a clock/id failure) is swallowed so the caller's provisioning path is
|
|
16
|
+
* unaffected. This is the ONLY write seam the emitting services touch.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ProvisioningLogRecorder {
|
|
19
|
+
private readonly deps;
|
|
20
|
+
constructor(deps: ProvisioningLogRecorderDependencies);
|
|
21
|
+
record(event: ProvisioningLogEvent): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export interface ProvisioningLogServiceDependencies {
|
|
24
|
+
repository: ProvisioningLogRepository;
|
|
25
|
+
}
|
|
26
|
+
/** Read side of the provisioning log: the controller's list + the retention prune. */
|
|
27
|
+
export declare class ProvisioningLogService {
|
|
28
|
+
private readonly deps;
|
|
29
|
+
constructor(deps: ProvisioningLogServiceDependencies);
|
|
30
|
+
/** Rows for a workspace matching the query, newest first (limit clamped). */
|
|
31
|
+
list(workspaceId: string, query?: ProvisioningLogQuery): Promise<ProvisioningLogRecord[]>;
|
|
32
|
+
/** Retention prune: delete rows older than `epochMs`, returning how many were removed. */
|
|
33
|
+
deleteOlderThan(epochMs: number): Promise<number>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=ProvisioningLogService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvisioningLogService.d.ts","sourceRoot":"","sources":["../../../src/modules/provisioning-logs/ProvisioningLogService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAA;AAe5B,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C,oFAAoF;AACpF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,WAAW,CAAC,CAAA;AAElF,MAAM,WAAW,mCAAmC;IAClD,UAAU,EAAE,yBAAyB,CAAA;IACrC,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAA;CAChE;AAED;;;;GAIG;AACH,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,mCAAmC,EAAI;IAEpE,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvD;CACF;AAED,MAAM,WAAW,kCAAkC;IACjD,UAAU,EAAE,yBAAyB,CAAA;CACtC;AAED,sFAAsF;AACtF,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,kCAAkC,EAAI;IAEzE,6EAA6E;IACvE,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,oBAAyB,GAC/B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAGlC;IAED,0FAA0F;IACpF,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEtD;CACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { redactSecrets } from './redact.js';
|
|
2
|
+
// The provisioning event log has two seams:
|
|
3
|
+
// - ProvisioningLogRecorder (WRITE) — the single, best-effort entry point every
|
|
4
|
+
// emitting site (env provision/teardown, runner dispatch/release, container
|
|
5
|
+
// dispatch/poll-failure) calls. It mints the id/createdAt and appends. The
|
|
6
|
+
// entire body is wrapped so a log failure can NEVER break a provisioning
|
|
7
|
+
// operation — the same posture as `attachStepMetrics` / notification channels.
|
|
8
|
+
// - ProvisioningLogService (READ) — what the controller calls to list rows for
|
|
9
|
+
// the "View logs" drawers and the run-details surface, plus the retention prune.
|
|
10
|
+
//
|
|
11
|
+
// Both are optional dependencies everywhere (default-off), so an unconfigured
|
|
12
|
+
// facade or a test that doesn't wire the separate store is entirely unchanged.
|
|
13
|
+
/** The hard maximum a single `list` call returns (the rows are cheap, but bound them). */
|
|
14
|
+
export const PROVISIONING_LOG_MAX_LIMIT = 500;
|
|
15
|
+
/**
|
|
16
|
+
* Best-effort writer for the provisioning log. `record()` never throws: a failed
|
|
17
|
+
* append (or a clock/id failure) is swallowed so the caller's provisioning path is
|
|
18
|
+
* unaffected. This is the ONLY write seam the emitting services touch.
|
|
19
|
+
*/
|
|
20
|
+
export class ProvisioningLogRecorder {
|
|
21
|
+
deps;
|
|
22
|
+
constructor(deps) {
|
|
23
|
+
this.deps = deps;
|
|
24
|
+
}
|
|
25
|
+
async record(event) {
|
|
26
|
+
try {
|
|
27
|
+
await this.deps.repository.append({
|
|
28
|
+
...event,
|
|
29
|
+
// Scrub credentials from the verbatim provider error + structured detail before
|
|
30
|
+
// they are persisted/served — these strings routinely carry tokens, auth
|
|
31
|
+
// headers, or credentialed URLs (see redact.ts). The choke point is here so
|
|
32
|
+
// every emitting site (env, runner, container) is covered identically.
|
|
33
|
+
error: redactSecrets(event.error),
|
|
34
|
+
detail: redactSecrets(event.detail),
|
|
35
|
+
id: this.deps.idGenerator.next('plog'),
|
|
36
|
+
createdAt: this.deps.clock.now(),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
this.deps.onError?.(error, event);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Read side of the provisioning log: the controller's list + the retention prune. */
|
|
45
|
+
export class ProvisioningLogService {
|
|
46
|
+
deps;
|
|
47
|
+
constructor(deps) {
|
|
48
|
+
this.deps = deps;
|
|
49
|
+
}
|
|
50
|
+
/** Rows for a workspace matching the query, newest first (limit clamped). */
|
|
51
|
+
async list(workspaceId, query = {}) {
|
|
52
|
+
const limit = Math.min(query.limit ?? PROVISIONING_LOG_MAX_LIMIT, PROVISIONING_LOG_MAX_LIMIT);
|
|
53
|
+
return this.deps.repository.list(workspaceId, { ...query, limit });
|
|
54
|
+
}
|
|
55
|
+
/** Retention prune: delete rows older than `epochMs`, returning how many were removed. */
|
|
56
|
+
async deleteOlderThan(epochMs) {
|
|
57
|
+
return this.deps.repository.deleteOlderThan(epochMs);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ProvisioningLogService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProvisioningLogService.js","sourceRoot":"","sources":["../../../src/modules/provisioning-logs/ProvisioningLogService.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,4CAA4C;AAC5C,kFAAkF;AAClF,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,mFAAmF;AACnF,iFAAiF;AACjF,qFAAqF;AACrF,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAE/E,0FAA0F;AAC1F,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAA;AAa7C;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IACL,IAAI;IAAjC,YAA6B,IAAyC;oBAAzC,IAAI;IAAwC,CAAC;IAE1E,KAAK,CAAC,MAAM,CAAC,KAA2B;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAChC,GAAG,KAAK;gBACR,gFAAgF;gBAChF,yEAAyE;gBACzE,4EAA4E;gBAC5E,uEAAuE;gBACvE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;gBACjC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;gBACnC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;aACjC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;CACF;AAMD,sFAAsF;AACtF,MAAM,OAAO,sBAAsB;IACJ,IAAI;IAAjC,YAA6B,IAAwC;oBAAxC,IAAI;IAAuC,CAAC;IAEzE,6EAA6E;IAC7E,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,KAAK,GAAyB,EAAE;QAEhC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,0BAA0B,EAAE,0BAA0B,CAAC,CAAA;QAC7F,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort scrub of credentials from a provisioning-log string (the verbatim
|
|
3
|
+
* provider error or the structured `detail`). Conservative on both ends: it never
|
|
4
|
+
* throws, and it keeps the surrounding context (the field name, the URL host, the
|
|
5
|
+
* token scheme) so the row stays diagnostic — only the secret itself is dropped.
|
|
6
|
+
* Returns `null` unchanged so callers can pass nullable fields straight through.
|
|
7
|
+
*/
|
|
8
|
+
export declare function redactSecrets(value: string | null): string | null;
|
|
9
|
+
//# sourceMappingURL=redact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../src/modules/provisioning-logs/redact.ts"],"names":[],"mappings":"AAmDA;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAYjE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Secret scrubbing for the provisioning event log. The whole point of the log is to
|
|
2
|
+
// capture the VERBATIM provider/runtime error so an operator can debug a failed
|
|
3
|
+
// spin-up — but those error strings (and the structured `detail`) routinely carry
|
|
4
|
+
// credentials: a 401 body echoing an `Authorization: Bearer …` header, a clone/push
|
|
5
|
+
// URL with embedded `user:token@`, a signed URL with a `?token=`/`?sig=` query, or a
|
|
6
|
+
// recognisable token shape (an OpenAI `sk-…`, a GitHub `ghp_…`/`github_pat_…`, an AWS
|
|
7
|
+
// `AKIA…` access key, a JWT). Since these rows are persisted for the retention window
|
|
8
|
+
// and served to every workspace member via `GET /provisioning-logs`, we redact at the
|
|
9
|
+
// single recorder choke point so EVERY emitting site is covered uniformly.
|
|
10
|
+
const REPLACEMENT = '[REDACTED]';
|
|
11
|
+
// Each rule matches a secret-bearing fragment; the capture group(s) bracket the literal
|
|
12
|
+
// prefix to keep (so the reader still sees WHAT was redacted) and the secret to drop.
|
|
13
|
+
const RULES = [
|
|
14
|
+
// `Authorization: Bearer <token>` / `Bearer <token>` (case-insensitive scheme).
|
|
15
|
+
{
|
|
16
|
+
pattern: /\b(bearer|basic|token)\s+([A-Za-z0-9._+/=~-]{8,})/gi,
|
|
17
|
+
replace: (m) => `${m[1]} ${REPLACEMENT}`,
|
|
18
|
+
},
|
|
19
|
+
// `Authorization: <anything>` / `x-api-key: <anything>` header echoes.
|
|
20
|
+
{
|
|
21
|
+
pattern: /\b(authorization|x-api-key|x-auth-token|proxy-authorization)(["']?\s*[:=]\s*["']?)([^\s"',}]+)/gi,
|
|
22
|
+
replace: (m) => `${m[1]}${m[2]}${REPLACEMENT}`,
|
|
23
|
+
},
|
|
24
|
+
// Credentials embedded in a URL userinfo: `scheme://user:secret@host`.
|
|
25
|
+
{
|
|
26
|
+
pattern: /([a-z][a-z0-9+.-]*:\/\/)([^/\s:@]+):([^/\s@]+)@/gi,
|
|
27
|
+
replace: (m) => `${m[1]}${m[2]}:${REPLACEMENT}@`,
|
|
28
|
+
},
|
|
29
|
+
// Secret-ish query/JSON params: token, key, secret, password, sig, signature,
|
|
30
|
+
// api_key/apikey, access_token, client_secret, etc. (`?token=…` or `"token":"…"`).
|
|
31
|
+
{
|
|
32
|
+
pattern: /\b((?:access[_-]?)?(?:api[_-]?)?(?:client[_-]?)?(?:token|secret|password|passwd|pwd|sig|signature|key|apikey|auth))(["']?\s*[:=]\s*["']?)([^\s"',&}@/]{4,})/gi,
|
|
33
|
+
replace: (m) => `${m[1]}${m[2]}${REPLACEMENT}`,
|
|
34
|
+
},
|
|
35
|
+
// Recognisable standalone token shapes, regardless of surrounding context.
|
|
36
|
+
{ pattern: /\b(sk|rk|pk)-[A-Za-z0-9_-]{16,}/g, replace: () => REPLACEMENT },
|
|
37
|
+
{ pattern: /\bgh[pousr]_[A-Za-z0-9]{20,}/g, replace: () => REPLACEMENT },
|
|
38
|
+
{ pattern: /\bgithub_pat_[A-Za-z0-9_]{20,}/g, replace: () => REPLACEMENT },
|
|
39
|
+
{ pattern: /\bxox[baprs]-[A-Za-z0-9-]{10,}/g, replace: () => REPLACEMENT },
|
|
40
|
+
{ pattern: /\bAKIA[0-9A-Z]{16}\b/g, replace: () => REPLACEMENT },
|
|
41
|
+
// JWTs (three dot-separated base64url segments starting with the `eyJ` header).
|
|
42
|
+
{
|
|
43
|
+
pattern: /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,
|
|
44
|
+
replace: () => REPLACEMENT,
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
/**
|
|
48
|
+
* Best-effort scrub of credentials from a provisioning-log string (the verbatim
|
|
49
|
+
* provider error or the structured `detail`). Conservative on both ends: it never
|
|
50
|
+
* throws, and it keeps the surrounding context (the field name, the URL host, the
|
|
51
|
+
* token scheme) so the row stays diagnostic — only the secret itself is dropped.
|
|
52
|
+
* Returns `null` unchanged so callers can pass nullable fields straight through.
|
|
53
|
+
*/
|
|
54
|
+
export function redactSecrets(value) {
|
|
55
|
+
if (value == null)
|
|
56
|
+
return value;
|
|
57
|
+
let out = value;
|
|
58
|
+
for (const rule of RULES) {
|
|
59
|
+
out = out.replace(rule.pattern, (...args) => {
|
|
60
|
+
// String.replace passes (match, ...groups, offset, string); reconstruct the
|
|
61
|
+
// RegExpMatchArray shape our `replace` callbacks expect (match + groups).
|
|
62
|
+
const groups = args.slice(0, -2);
|
|
63
|
+
return rule.replace(groups);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/modules/provisioning-logs/redact.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,gFAAgF;AAChF,kFAAkF;AAClF,oFAAoF;AACpF,qFAAqF;AACrF,sFAAsF;AACtF,sFAAsF;AACtF,sFAAsF;AACtF,2EAA2E;AAE3E,MAAM,WAAW,GAAG,YAAY,CAAA;AAEhC,wFAAwF;AACxF,sFAAsF;AACtF,MAAM,KAAK,GAAoE;IAC7E,gFAAgF;IAChF;QACE,OAAO,EAAE,qDAAqD;QAC9D,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE;KACzC;IACD,uEAAuE;IACvE;QACE,OAAO,EACL,kGAAkG;QACpG,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE;KAC/C;IACD,uEAAuE;IACvE;QACE,OAAO,EAAE,mDAAmD;QAC5D,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG;KACjD;IACD,8EAA8E;IAC9E,mFAAmF;IACnF;QACE,OAAO,EACL,+JAA+J;QACjK,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE;KAC/C;IACD,2EAA2E;IAC3E,EAAE,OAAO,EAAE,kCAAkC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAC3E,EAAE,OAAO,EAAE,+BAA+B,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IACxE,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAC1E,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAC1E,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE;IAChE,gFAAgF;IAChF;QACE,OAAO,EAAE,sDAAsD;QAC/D,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW;KAC3B;CACF,CAAA;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAoB;IAChD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAC/B,IAAI,GAAG,GAAG,KAAK,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAC1C,4EAA4E;YAC5E,0EAA0E;YAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAa,CAAA;YAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAqC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.1",
|
|
4
4
|
"description": "External-system integration domain logic for the Agent Architecture Board (GitHub, documents, tasks, environments, runners).",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"ai": "^6.0.209",
|
|
28
|
-
"@cat-factory/contracts": "0.
|
|
29
|
-
"@cat-factory/kernel": "0.
|
|
28
|
+
"@cat-factory/contracts": "0.27.0",
|
|
29
|
+
"@cat-factory/kernel": "0.30.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"typescript": "7.0.1-rc",
|