Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/dd-trace/src/config/generated-config-types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export interface GeneratedConfig {
DD_API_SECURITY_MAX_DOWNSTREAM_BODY_BYTES: number;
DD_API_SECURITY_MAX_DOWNSTREAM_REQUEST_BODY_ANALYSIS: number;
DD_API_SECURITY_SAMPLE_DELAY: number;
DD_APPSEC_AGENTIC_ONBOARDING: string;
DD_APPSEC_SCA_ENABLED: boolean | undefined;
enabled: boolean | undefined;
eventTracking: {
Expand Down Expand Up @@ -620,6 +621,7 @@ export interface GeneratedEnvVarConfig {
DD_APM_FLUSH_DEADLINE_MILLISECONDS: number;
DD_APM_TRACING_ENABLED: boolean;
DD_APP_KEY: string | undefined;
DD_APPSEC_AGENTIC_ONBOARDING: string;
DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE: string;
DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING: string;
DD_APPSEC_COLLECT_ALL_HEADERS: boolean;
Expand Down
9 changes: 9 additions & 0 deletions packages/dd-trace/src/config/supported-configurations.json
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,15 @@
]
}
],
"DD_APPSEC_AGENTIC_ONBOARDING": [
{
"implementation": "A",
"type": "string",
"default": "",
"namespace": "appsec",
"description": "Set automatically by Datadog's agentic onboarding solution when it configures App & API Protection for a service. Reported verbatim in configuration telemetry only; it has no effect on tracer behavior."
}
],
"DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE": [
{
"implementation": "E",
Expand Down
35 changes: 35 additions & 0 deletions packages/dd-trace/test/config/index.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -615,6 +615,41 @@ describe('Config', () => {
})
})

describe('DD_APPSEC_AGENTIC_ONBOARDING', () => {
// RFC-1113: reported verbatim in configuration telemetry, always emitted
// (empty value with origin=default when unset). No effect on tracer behavior.
it('should default to an empty string and report it with origin=default when unset', () => {
const config = getConfig()

assert.strictEqual(config.appsec.DD_APPSEC_AGENTIC_ONBOARDING, '')
assertConfigUpdateContains(updateConfig.getCall(0).args[0], [
{ name: 'DD_APPSEC_AGENTIC_ONBOARDING', value: '', origin: 'default' },
])
})

it('should report the value verbatim with origin=env_var when set to true', () => {
process.env.DD_APPSEC_AGENTIC_ONBOARDING = 'true'

const config = getConfig()

assert.strictEqual(config.appsec.DD_APPSEC_AGENTIC_ONBOARDING, 'true')
assertConfigUpdateContains(updateConfig.getCall(0).args[0], [
{ name: 'DD_APPSEC_AGENTIC_ONBOARDING', value: 'true', origin: 'env_var' },
])
})

it('should report an arbitrary value verbatim rather than collapsing to a boolean', () => {
process.env.DD_APPSEC_AGENTIC_ONBOARDING = 'false'

const config = getConfig()

assert.strictEqual(config.appsec.DD_APPSEC_AGENTIC_ONBOARDING, 'false')
assertConfigUpdateContains(updateConfig.getCall(0).args[0], [
{ name: 'DD_APPSEC_AGENTIC_ONBOARDING', value: 'false', origin: 'env_var' },
])
})
})

it('should correctly map OTEL_RESOURCE_ATTRIBUTES', () => {
process.env.OTEL_RESOURCE_ATTRIBUTES =
'deployment.environment=test1,service.name=test2,service.version=5,foo=bar1,baz=qux1'
Expand Down
Loading