Skip to content

Commit 5ef2c5d

Browse files
committed
fix(worker): gate temporal activity diagnostics
Signed-off-by: zebbern <185730623+zebbern@users.noreply.github.com>
1 parent f03e0ec commit 5ef2c5d

4 files changed

Lines changed: 77 additions & 29 deletions

File tree

worker/src/temporal/activities/__tests__/secret-resolver.test.ts

Lines changed: 47 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,36 @@ function createComponent(opts: {
7171

7272
describe('resolveSecretInputOverrides', () => {
7373
it('resolves a secret-type input override via secrets.get()', async () => {
74+
const previousDebugValue = process.env.SENTRIS_DEBUG_WORKFLOW;
75+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
7476
const secrets = createMockSecrets({ 'secret-id-1': 'my-api-key' });
7577
const component = createComponent({
7678
inputPorts: [{ id: 'apiKey', editor: 'secret' }],
7779
});
7880

79-
const inputs: Record<string, unknown> = {};
80-
const overrides = { apiKey: 'secret-id-1' };
81+
try {
82+
delete process.env.SENTRIS_DEBUG_WORKFLOW;
8183

82-
await resolveSecretInputOverrides(inputs, overrides, {
83-
secrets,
84-
component,
85-
resolvedParams: {},
86-
});
84+
const inputs: Record<string, unknown> = {};
85+
const overrides = { apiKey: 'secret-id-1' };
8786

88-
expect(inputs.apiKey).toBe('my-api-key');
89-
expect(secrets.get).toHaveBeenCalledWith('secret-id-1');
87+
await resolveSecretInputOverrides(inputs, overrides, {
88+
secrets,
89+
component,
90+
resolvedParams: {},
91+
});
92+
93+
expect(inputs.apiKey).toBe('my-api-key');
94+
expect(secrets.get).toHaveBeenCalledWith('secret-id-1');
95+
expect(consoleSpy).not.toHaveBeenCalled();
96+
} finally {
97+
consoleSpy.mockRestore();
98+
if (previousDebugValue === undefined) {
99+
delete process.env.SENTRIS_DEBUG_WORKFLOW;
100+
} else {
101+
process.env.SENTRIS_DEBUG_WORKFLOW = previousDebugValue;
102+
}
103+
}
90104
});
91105

92106
it('leaves non-secret input overrides untouched', async () => {
@@ -267,23 +281,37 @@ describe('resolveSecretInputOverrides', () => {
267281

268282
describe('resolveSecretParams', () => {
269283
it('resolves secret-type parameter and writes to params', async () => {
284+
const previousDebugValue = process.env.SENTRIS_DEBUG_WORKFLOW;
285+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
270286
const secrets = createMockSecrets({ 'param-secret': 'secret-val' });
271287
const component = createComponent({
272288
paramPorts: [{ id: 'password', editor: 'secret' }],
273289
});
274290

275-
const params: Record<string, unknown> = {};
291+
try {
292+
delete process.env.SENTRIS_DEBUG_WORKFLOW;
276293

277-
await resolveSecretParams(
278-
params,
279-
{ password: 'param-secret' },
280-
{
281-
secrets,
282-
component,
283-
},
284-
);
294+
const params: Record<string, unknown> = {};
285295

286-
expect(params.password).toBe('secret-val');
296+
await resolveSecretParams(
297+
params,
298+
{ password: 'param-secret' },
299+
{
300+
secrets,
301+
component,
302+
},
303+
);
304+
305+
expect(params.password).toBe('secret-val');
306+
expect(consoleSpy).not.toHaveBeenCalled();
307+
} finally {
308+
consoleSpy.mockRestore();
309+
if (previousDebugValue === undefined) {
310+
delete process.env.SENTRIS_DEBUG_WORKFLOW;
311+
} else {
312+
process.env.SENTRIS_DEBUG_WORKFLOW = previousDebugValue;
313+
}
314+
}
287315
});
288316

289317
it('leaves non-secret parameters untouched', async () => {

worker/src/temporal/activities/__tests__/trace.activity.test.ts

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,28 @@ describe('recordTraceEventActivity', () => {
4040
});
4141

4242
it('records trace event via the trace service when initialized', async () => {
43+
const previousDebugValue = process.env.SENTRIS_DEBUG_WORKFLOW;
44+
const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
4345
const trace = createMockTrace();
44-
initializeTraceActivity({ trace: trace as any });
4546

46-
const event = createTraceEvent({ type: 'NODE_COMPLETED', nodeRef: 'node-2' });
47-
await recordTraceEventActivity(event);
47+
try {
48+
delete process.env.SENTRIS_DEBUG_WORKFLOW;
49+
initializeTraceActivity({ trace: trace as any });
50+
51+
const event = createTraceEvent({ type: 'NODE_COMPLETED', nodeRef: 'node-2' });
52+
await recordTraceEventActivity(event);
4853

49-
expect(trace.record).toHaveBeenCalledTimes(1);
50-
expect(trace.record).toHaveBeenCalledWith(event);
54+
expect(trace.record).toHaveBeenCalledTimes(1);
55+
expect(trace.record).toHaveBeenCalledWith(event);
56+
expect(consoleSpy).not.toHaveBeenCalled();
57+
} finally {
58+
consoleSpy.mockRestore();
59+
if (previousDebugValue === undefined) {
60+
delete process.env.SENTRIS_DEBUG_WORKFLOW;
61+
} else {
62+
process.env.SENTRIS_DEBUG_WORKFLOW = previousDebugValue;
63+
}
64+
}
5165
});
5266

5367
it('records different event types correctly', async () => {

worker/src/temporal/activities/secret-resolver.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
type ComponentPortMetadata,
1313
type ISecretsService,
1414
} from '@sentris/component-sdk';
15+
import { workflowDiagnosticLog } from '../workflow-diagnostics';
1516

1617
/**
1718
* Resolve secret references found in `inputOverrides` and write the
@@ -67,11 +68,13 @@ export async function resolveSecretInputOverrides(
6768

6869
// This is a secret reference, resolve it
6970
try {
70-
console.log(`[Activity] Resolving secret reference for input '${key}'...`);
71+
workflowDiagnosticLog(`[Activity] Resolving secret reference for input '${key}'...`);
7172
const resolved = await secrets.get(value);
7273
if (resolved?.value) {
7374
inputs[key] = resolved.value;
74-
console.log(`[Activity] Successfully resolved secret reference for input '${key}'`);
75+
workflowDiagnosticLog(
76+
`[Activity] Successfully resolved secret reference for input '${key}'`,
77+
);
7578
} else {
7679
console.warn(`[Activity] Secret reference not found in store for input '${key}'`);
7780
}
@@ -121,11 +124,13 @@ export async function resolveSecretParams(
121124
}
122125

123126
try {
124-
console.log(`[Activity] Resolving secret reference for param '${key}'...`);
127+
workflowDiagnosticLog(`[Activity] Resolving secret reference for param '${key}'...`);
125128
const resolved = await secrets.get(value);
126129
if (resolved?.value) {
127130
params[key] = resolved.value;
128-
console.log(`[Activity] Successfully resolved secret reference for param '${key}'`);
131+
workflowDiagnosticLog(
132+
`[Activity] Successfully resolved secret reference for param '${key}'`,
133+
);
129134
} else {
130135
console.warn(`[Activity] Secret reference not found in store for param '${key}'`);
131136
}

worker/src/temporal/activities/trace.activity.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { ITraceService, TraceEvent } from '@sentris/component-sdk';
2+
import { workflowDiagnosticLog } from '../workflow-diagnostics';
23

34
// Trace service instance will be injected at runtime
45
let trace: ITraceService | undefined;
@@ -20,5 +21,5 @@ export async function recordTraceEventActivity(event: TraceEvent): Promise<void>
2021
}
2122

2223
trace.record(event);
23-
console.log(`[TraceActivity] Recorded event ${event.type} for ${event.nodeRef}`);
24+
workflowDiagnosticLog(`[TraceActivity] Recorded event ${event.type} for ${event.nodeRef}`);
2425
}

0 commit comments

Comments
 (0)