@odigos/vmagent-api-apollo-client 0.17.0 → 0.19.0

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.
@@ -144,6 +144,38 @@ export type ConnectorRuntimeHealth = {
144
144
  /** Human-readable status detail. */
145
145
  message?: Maybe<Scalars['String']['output']>;
146
146
  };
147
+ export type ContainerOverride = {
148
+ __typename?: 'ContainerOverride';
149
+ containerName: Scalars['String']['output'];
150
+ /**
151
+ * Set true to exclude this container from instrumentation even when its runtime is supported.
152
+ * Absent or false means the workload-level decision applies.
153
+ *
154
+ * Stated as an opt-OUT rather than an `enabled` opt-in on purpose: several GraphQL code generators
155
+ * (genqlient among them) render a nullable Boolean as a plain bool with no omitempty, so an absent
156
+ * value arrives as `false`. With `enabled` that would read as "disable this container" and silently
157
+ * turn instrumentation off; with `disabled` the same zero value reads as "no opinion", which is the
158
+ * safe default. Any nullable Boolean added here should be phrased so its zero value is the safe one.
159
+ */
160
+ disabled?: Maybe<Scalars['Boolean']['output']>;
161
+ distroOverride?: Maybe<DistroOverride>;
162
+ runtimeOverride?: Maybe<RuntimeOverride>;
163
+ };
164
+ export type ContainerOverrideInput = {
165
+ containerName: Scalars['String']['input'];
166
+ /** Set true to exclude this container from instrumentation. See ContainerOverride.disabled. */
167
+ disabled?: InputMaybe<Scalars['Boolean']['input']>;
168
+ distroOverride?: InputMaybe<DistroOverrideInput>;
169
+ runtimeOverride?: InputMaybe<RuntimeOverrideInput>;
170
+ };
171
+ /** Process running in a containerd container (processKind "containerd"). */
172
+ export type ContainerdProcessDetails = ProcessDetails & {
173
+ __typename?: 'ContainerdProcessDetails';
174
+ containerId?: Maybe<Scalars['String']['output']>;
175
+ imageName?: Maybe<Scalars['String']['output']>;
176
+ labels?: Maybe<Array<KeyValue>>;
177
+ processKind: Scalars['String']['output'];
178
+ };
147
179
  export type CppProbe = {
148
180
  __typename?: 'CppProbe';
149
181
  signature: Scalars['String']['output'];
@@ -306,6 +338,71 @@ export type DistroOverride = {
306
338
  export type DistroOverrideInput = {
307
339
  otelDistroName?: InputMaybe<Scalars['String']['input']>;
308
340
  };
341
+ /** Process running in a Docker container (processKind "docker"). */
342
+ export type DockerProcessDetails = ProcessDetails & {
343
+ __typename?: 'DockerProcessDetails';
344
+ containerId?: Maybe<Scalars['String']['output']>;
345
+ containerName?: Maybe<Scalars['String']['output']>;
346
+ imageName?: Maybe<Scalars['String']['output']>;
347
+ /** Container labels; customer-defined keys, hence a list rather than named fields. */
348
+ labels?: Maybe<Array<KeyValue>>;
349
+ processKind: Scalars['String']['output'];
350
+ };
351
+ export type DockerSourceConfig = {
352
+ __typename?: 'DockerSourceConfig';
353
+ containerOverrides?: Maybe<Array<ContainerOverride>>;
354
+ };
355
+ export type DockerSourceConfigInput = {
356
+ containerOverrides?: InputMaybe<Array<ContainerOverrideInput>>;
357
+ };
358
+ /** Docker containers backing a workload on a host the agent runs on (kind "docker"). */
359
+ export type DockerWorkloadDetails = WorkloadDetails & {
360
+ __typename?: 'DockerWorkloadDetails';
361
+ containers?: Maybe<Array<WorkloadContainer>>;
362
+ kind: Scalars['String']['output'];
363
+ };
364
+ /** Process running in an ECS task container on EC2 (processKind "ecs-docker"). */
365
+ export type EcsProcessDetails = ProcessDetails & {
366
+ __typename?: 'EcsProcessDetails';
367
+ containerId?: Maybe<Scalars['String']['output']>;
368
+ containerName?: Maybe<Scalars['String']['output']>;
369
+ imageName?: Maybe<Scalars['String']['output']>;
370
+ labels?: Maybe<Array<KeyValue>>;
371
+ processKind: Scalars['String']['output'];
372
+ /** ARN of the running task, when the agent can resolve it. */
373
+ taskArn?: Maybe<Scalars['String']['output']>;
374
+ /** ECS task family this container belongs to. */
375
+ taskFamily?: Maybe<Scalars['String']['output']>;
376
+ };
377
+ export type EcsSourceConfig = {
378
+ __typename?: 'EcsSourceConfig';
379
+ containerOverrides?: Maybe<Array<ContainerOverride>>;
380
+ };
381
+ export type EcsSourceConfigInput = {
382
+ containerOverrides?: InputMaybe<Array<ContainerOverrideInput>>;
383
+ };
384
+ /**
385
+ * An ECS service or task (kinds "aws.fargate-task", "aws.ecs", "ecs-docker").
386
+ *
387
+ * Two very different reporters populate this type and each fills the subset it can see, which is why
388
+ * every field is nullable: the cloud connector rewrites task definitions and knows the cluster, the
389
+ * revision, and the launch type but never sees a process; the ECS agent on EC2 sees processes inside
390
+ * containers but reaches the control plane only through the task metadata endpoint.
391
+ */
392
+ export type EcsWorkloadDetails = WorkloadDetails & {
393
+ __typename?: 'EcsWorkloadDetails';
394
+ /** ARN of the cluster the service runs in. */
395
+ clusterArn?: Maybe<Scalars['String']['output']>;
396
+ /** Every container in the task definition, instrumentable or not. */
397
+ containers?: Maybe<Array<WorkloadContainer>>;
398
+ /** Deployment controller type (ECS, CODE_DEPLOY, EXTERNAL); instrumentation requires ECS. */
399
+ deploymentController?: Maybe<Scalars['String']['output']>;
400
+ kind: Scalars['String']['output'];
401
+ /** FARGATE, FARGATE_SPOT, or EC2. */
402
+ launchType?: Maybe<Scalars['String']['output']>;
403
+ /** Task definition family:revision currently deployed. */
404
+ taskDefinition?: Maybe<Scalars['String']['output']>;
405
+ };
309
406
  export type GolangProbe = {
310
407
  __typename?: 'GolangProbe';
311
408
  functionName?: Maybe<Scalars['String']['output']>;
@@ -360,6 +457,107 @@ export type HotFunctionsResult = {
360
457
  host?: Maybe<HostInfo>;
361
458
  services: Array<ServiceHotFunctions>;
362
459
  };
460
+ /**
461
+ * The instrumentation rendered for one delivery tool: a snippet to paste, and the ordered steps that say where
462
+ * it goes.
463
+ *
464
+ * Every field is display-ready. Substitution happens connector-side rather than in a client, so there is only
465
+ * one place that has to know which of the two OTLP endpoint forms a given variable takes — the SDK accepts a
466
+ * bare host:port where it needs a scheme-qualified URL and then exports nowhere, which is not a failure any
467
+ * client would see.
468
+ */
469
+ export type InstructionDocument = {
470
+ __typename?: 'InstructionDocument';
471
+ /** Fully rendered for THIS workload — endpoint, service name, region already substituted. */
472
+ content: Scalars['String']['output'];
473
+ description: Scalars['String']['output'];
474
+ /** Syntax hint for a code block: json | yaml | hcl | shell | text. */
475
+ format: Scalars['String']['output'];
476
+ /** Stable id, unique per connector. */
477
+ id: Scalars['String']['output'];
478
+ /** Ordered instructions shown above the snippet. The snippet alone never says where it goes. */
479
+ steps: Array<Scalars['String']['output']>;
480
+ title: Scalars['String']['output'];
481
+ /**
482
+ * Blanks the connector genuinely could not fill, so the customer knows what is still theirs to supply.
483
+ *
484
+ * Derived from the RENDERED text rather than from what the instructions declare, so a client cannot be asked
485
+ * for a value the document does not carry, and cannot miss one it does. Null when nothing is left to fill in.
486
+ */
487
+ unresolved?: Maybe<Array<InstructionInput>>;
488
+ /**
489
+ * Delivery tool this renders for: terraform, cloudformation, bicep, aws-cli, gcloud, az-cli, manual. A client
490
+ * uses it to pick a default and to key a chooser; it is not otherwise interpreted.
491
+ */
492
+ variant: Scalars['String']['output'];
493
+ /** Label for that chooser, e.g. "Terraform", "Bicep / ARM", "Reference". */
494
+ variantLabel: Scalars['String']['output'];
495
+ };
496
+ /** One blank the connector genuinely could not fill. */
497
+ export type InstructionInput = {
498
+ __typename?: 'InstructionInput';
499
+ /**
500
+ * What to put there, and where to find it.
501
+ *
502
+ * It travels with the token because the token alone is not self-explanatory in the cases that matter most:
503
+ * the service name must MATCH the workload's name in Odigos rather than being any sensible label, and the two
504
+ * OTLP endpoint forms are the same destination spelled two ways that are not interchangeable.
505
+ */
506
+ description: Scalars['String']['output'];
507
+ /** The placeholder exactly as it appears in `content`, e.g. "<YOUR_CONTAINER>". */
508
+ placeholder: Scalars['String']['output'];
509
+ };
510
+ /**
511
+ * Instrumentation is attributable to Odigos but does not match what it should be (code
512
+ * "InstrumentationPartiallyApplied").
513
+ *
514
+ * This is a manual-mode condition specifically. In automatic mode a gap is a non-event — the next reconcile
515
+ * converges it — which is exactly why it needs reporting here: nothing converges a manual-mode workload, so a
516
+ * half-applied instrumentation stays half-applied and would otherwise report as healthy on the strength of its
517
+ * ownership marker alone.
518
+ */
519
+ export type InstrumentationDriftDetails = WorkloadIssueDetails & {
520
+ __typename?: 'InstrumentationDriftDetails';
521
+ code: Scalars['String']['output'];
522
+ /**
523
+ * Provider-neutral names of the components that are absent or carry a stale value: ownershipMarker,
524
+ * serviceName, collectorExport, agentLoader, instrumentationLayer, agentSidecar, agentVolume, … A client
525
+ * renders these; it never re-derives which platform fact led to one.
526
+ */
527
+ missingComponents: Array<Scalars['String']['output']>;
528
+ };
529
+ /** Everything needed to instrument one workload by hand or by IaC. */
530
+ export type InstrumentationInstructions = {
531
+ __typename?: 'InstrumentationInstructions';
532
+ /**
533
+ * The change rendered per delivery tool, in the connector's preferred order.
534
+ *
535
+ * Never empty. A connector that declares no per-tool rendering for a type still returns one `manual` document
536
+ * built from the desired state itself, because a customer on an unsupported toolchain needs the change
537
+ * described more than they need it in their own syntax.
538
+ */
539
+ documents: Array<InstructionDocument>;
540
+ kind: Scalars['String']['output'];
541
+ /**
542
+ * automatic | manual — why the customer is being shown this at all.
543
+ *
544
+ * Instructions are served in BOTH modes on purpose. In manual mode they are what the customer applies. In
545
+ * automatic mode they are the same change Odigos is about to make itself, which is what makes
546
+ * "what exactly did Odigos change here" answerable without reading a provider console.
547
+ */
548
+ mode: Scalars['String']['output'];
549
+ /**
550
+ * Caveats that belong with the instructions whichever tool the customer uses: a platform limit, a value they
551
+ * must supply, a step that is easy to complete and still not have telemetry (moving traffic onto a new
552
+ * revision).
553
+ */
554
+ notes: Array<Scalars['String']['output']>;
555
+ region?: Maybe<Scalars['String']['output']>;
556
+ /** Composite identity of the workload these are for, matching WorkloadReport. */
557
+ serviceName: Scalars['String']['output'];
558
+ /** RFC3339 timestamp the instructions were computed. */
559
+ updatedAt: Scalars['String']['output'];
560
+ };
363
561
  export type InstrumentationRule = {
364
562
  enabled: Scalars['Boolean']['output'];
365
563
  name: Scalars['String']['output'];
@@ -393,6 +591,24 @@ export type JavaProbeInput = {
393
591
  className: Scalars['String']['input'];
394
592
  methodName: Scalars['String']['input'];
395
593
  };
594
+ /** One key/value pair for data whose keys are defined by the customer rather than by Odigos. */
595
+ export type KeyValue = {
596
+ __typename?: 'KeyValue';
597
+ key: Scalars['String']['output'];
598
+ value: Scalars['String']['output'];
599
+ };
600
+ /** A Lambda function (kind "aws.lambda"). */
601
+ export type LambdaWorkloadDetails = WorkloadDetails & {
602
+ __typename?: 'LambdaWorkloadDetails';
603
+ /** Instruction set the function is configured for (x86_64 or arm64). */
604
+ architecture?: Maybe<Scalars['String']['output']>;
605
+ functionArn?: Maybe<Scalars['String']['output']>;
606
+ kind: Scalars['String']['output'];
607
+ /** ARN of the Odigos instrumentation layer attached to the function, when instrumented. */
608
+ layerArn?: Maybe<Scalars['String']['output']>;
609
+ /** Lambda-managed runtime identifier (e.g. "python3.12", "java21"). */
610
+ runtime?: Maybe<Scalars['String']['output']>;
611
+ };
396
612
  export type Mutation = {
397
613
  __typename?: 'Mutation';
398
614
  cancelProfileBundle: Scalars['Boolean']['output'];
@@ -529,6 +745,14 @@ export type PipelineCounters = {
529
745
  scrapeError?: Maybe<Scalars['String']['output']>;
530
746
  scrapedAt: Scalars['String']['output'];
531
747
  };
748
+ /**
749
+ * Kind-specific facts about ONE process, selected by WorkloadProcessMetadata.processKind. Null for
750
+ * plain host processes, whose pid/exe/cmdline are already named fields on WorkloadProcessMetadata.
751
+ */
752
+ export type ProcessDetails = {
753
+ /** The WorkloadProcessMetadata.processKind this block describes. */
754
+ processKind: Scalars['String']['output'];
755
+ };
532
756
  export type ProcessorAdditionAction = Action & {
533
757
  __typename?: 'ProcessorAdditionAction';
534
758
  actionName?: Maybe<Scalars['String']['output']>;
@@ -607,6 +831,11 @@ export type Query = {
607
831
  destination?: Maybe<Destination>;
608
832
  destinationTypes: Array<DestinationType>;
609
833
  destinations: Array<Destination>;
834
+ /**
835
+ * How to instrument one workload, keyed the same way as workloadReport. Null when the workload is unknown, or
836
+ * when its type has no instrumentation defined on this connector.
837
+ */
838
+ instrumentationInstructions?: Maybe<InstrumentationInstructions>;
610
839
  instrumentationRule?: Maybe<InstrumentationRule>;
611
840
  instrumentationRuleTypes: Array<InstrumentationRuleTypeOption>;
612
841
  instrumentationRules: Array<InstrumentationRule>;
@@ -634,6 +863,11 @@ export type QueryComputePlatformReportArgs = {
634
863
  export type QueryDestinationArgs = {
635
864
  name: Scalars['String']['input'];
636
865
  };
866
+ export type QueryInstrumentationInstructionsArgs = {
867
+ kind: Scalars['String']['input'];
868
+ region?: InputMaybe<Scalars['String']['input']>;
869
+ serviceName: Scalars['String']['input'];
870
+ };
637
871
  export type QueryInstrumentationRuleArgs = {
638
872
  name: Scalars['String']['input'];
639
873
  };
@@ -665,6 +899,44 @@ export type RestartSourcePayload = {
665
899
  name: Scalars['String']['output'];
666
900
  restarted: Scalars['Boolean']['output'];
667
901
  };
902
+ /**
903
+ * A managed service whose deployments are immutable REVISIONS behind a traffic split: a Cloud Run service
904
+ * (kind "gcp.cloud-run") or an Azure Container App (kind "azure.container-apps").
905
+ *
906
+ * One type rather than one per platform, because every field here means the same thing on both — the platform
907
+ * resource identity, the revision the platform last reported ready, and the containers in that revision's
908
+ * template. `kind` already tells a client which platform it is, so two names for one shape buys nothing. This is
909
+ * the same reasoning that makes WorkloadContainer shared; per-platform types earn their keep for facts that are
910
+ * genuinely platform-specific (a Lambda layer ARN, an ECS launch type), not for a renamed field.
911
+ *
912
+ * It replaces CloudRunWorkloadDetails and ContainerAppsWorkloadDetails, which had already diverged in the one way
913
+ * that mattered: both called their revision field `revision` and documented it as OPPOSITE facts — Cloud Run's as
914
+ * the revision serving traffic, Container Apps' as the latest ready revision, explicitly "not necessarily the one
915
+ * serving requests". Both reporters in fact populate latest-ready, so a client branching on `__typename` was
916
+ * being told two different things about the same value. Naming the field for what it actually holds is the
917
+ * substantive half of this merge.
918
+ */
919
+ export type RevisionedServiceWorkloadDetails = WorkloadDetails & {
920
+ __typename?: 'RevisionedServiceWorkloadDetails';
921
+ /** Every container in the revision's template, instrumentable or not. */
922
+ containers?: Maybe<Array<WorkloadContainer>>;
923
+ kind: Scalars['String']['output'];
924
+ /**
925
+ * Revision the platform last reported READY — the newest deployment that came up healthy.
926
+ *
927
+ * Deliberately NOT "the revision serving traffic", which is a different fact and the one that bites in manual
928
+ * (IaC) mode: revisions are immutable on both platforms, so instrumentation always produces a new one, and a
929
+ * traffic split can keep weighting an older, uninstrumented revision indefinitely. A customer can apply
930
+ * instrumentation correctly and still see no telemetry.
931
+ *
932
+ * Reporting which revision is READY is what lets them notice that at all. Reporting which revisions SERVE needs
933
+ * per-revision traffic weights (Cloud Run trafficStatuses, Container Apps ingress traffic), and that field gets
934
+ * added by whichever change first observes them — rather than existing now as a slot clients learn to ignore.
935
+ */
936
+ latestReadyRevision?: Maybe<Scalars['String']['output']>;
937
+ /** Fully-qualified platform resource identity: the Cloud Run service name, or the Container App resource id. */
938
+ service?: Maybe<Scalars['String']['output']>;
939
+ };
668
940
  export declare enum RuleType {
669
941
  CodeAttributes = "CodeAttributes",
670
942
  CustomInstrumentation = "CustomInstrumentation",
@@ -713,11 +985,28 @@ export type Source = {
713
985
  export type SourceConfig = {
714
986
  __typename?: 'SourceConfig';
715
987
  distroOverride?: Maybe<DistroOverride>;
988
+ docker?: Maybe<DockerSourceConfig>;
989
+ /**
990
+ * Kind-specific config. At most one branch is set and it must match the source's kind (validated
991
+ * server-side), following the same discriminator-plus-typed-branch pattern as
992
+ * CreateInstrumentationRuleInput. See SourceConfigInput for the full rationale.
993
+ */
994
+ ecs?: Maybe<EcsSourceConfig>;
716
995
  runtimeOverride?: Maybe<RuntimeOverride>;
717
996
  serviceNameOverride?: Maybe<ServiceNameOverride>;
718
997
  };
719
998
  export type SourceConfigInput = {
720
999
  distroOverride?: InputMaybe<DistroOverrideInput>;
1000
+ docker?: InputMaybe<DockerSourceConfigInput>;
1001
+ /**
1002
+ * Kind-specific config. At most one branch may be set and it must match the source's kind
1003
+ * (validated server-side) — a Lambda source rejects `ecs`.
1004
+ *
1005
+ * GraphQL has no input unions, so a discriminator plus typed optional branches is the only way to
1006
+ * express this on the write side; it is the same shape CreateInstrumentationRuleInput uses for
1007
+ * ruleType. Adding a platform means adding a branch here, never widening an untyped map.
1008
+ */
1009
+ ecs?: InputMaybe<EcsSourceConfigInput>;
721
1010
  runtimeOverride?: InputMaybe<RuntimeOverrideInput>;
722
1011
  serviceNameOverride?: InputMaybe<ServiceNameOverrideInput>;
723
1012
  };
@@ -760,6 +1049,15 @@ export type SpanMetricsConfigInput = {
760
1049
  metricsExpiration?: InputMaybe<Scalars['String']['input']>;
761
1050
  resourceMetricsKeyAttributes?: InputMaybe<Array<Scalars['String']['input']>>;
762
1051
  };
1052
+ /** Process managed by systemd (processKind "systemd"). */
1053
+ export type SystemdProcessDetails = ProcessDetails & {
1054
+ __typename?: 'SystemdProcessDetails';
1055
+ processKind: Scalars['String']['output'];
1056
+ /** Absolute path of the unit file backing this service. */
1057
+ unitFilePath?: Maybe<Scalars['String']['output']>;
1058
+ /** Unit name without the .service suffix. */
1059
+ unitName?: Maybe<Scalars['String']['output']>;
1060
+ };
763
1061
  export declare enum TelemetrySignal {
764
1062
  Logs = "LOGS",
765
1063
  Metrics = "METRICS",
@@ -862,6 +1160,51 @@ export type UpdateSourceInput = {
862
1160
  region?: InputMaybe<Scalars['String']['input']>;
863
1161
  serviceName?: InputMaybe<Scalars['String']['input']>;
864
1162
  };
1163
+ /**
1164
+ * One container inside a multi-container workload. Shared by every container-shaped platform (ECS
1165
+ * tasks, Cloud Run services, and Kubernetes pods if the k8s API ever moves here) so clients render
1166
+ * containers the same way everywhere.
1167
+ *
1168
+ * This is the dimension the flat report cannot express: a single ECS task definition can pack several
1169
+ * independently instrumentable application containers, and reporting only the workload's aggregate
1170
+ * runtime forces an arbitrary choice between them.
1171
+ */
1172
+ export type WorkloadContainer = {
1173
+ __typename?: 'WorkloadContainer';
1174
+ /** Odigos distro applied to this container, when instrumented. */
1175
+ distro?: Maybe<Scalars['String']['output']>;
1176
+ /**
1177
+ * Why this container is not instrumented. This is the ONE place a client learns that, and
1178
+ * deliberately so: every platform-specific fact that leads to an exclusion is resolved by the
1179
+ * reporter and reported here, never as a separate flag the client has to interpret for itself.
1180
+ *
1181
+ * A container Odigos itself injected reports "Odigos agents sidecar"; one the platform does not
1182
+ * treat as part of the application reports "non-essential container"; an unsupported runtime says
1183
+ * so. A client renders the reason — it never re-derives the decision, and it never needs a
1184
+ * platform-specific field (ECS `essential`, an Odigos ownership marker) to do it.
1185
+ */
1186
+ excludedReason?: Maybe<Scalars['String']['output']>;
1187
+ /** Image reference as declared by the customer. */
1188
+ image?: Maybe<Scalars['String']['output']>;
1189
+ /** True when Odigos can instrument this container; false with excludedReason when it cannot. */
1190
+ instrumentationEligible: Scalars['Boolean']['output'];
1191
+ /** True when Odigos instrumentation is currently applied to this container. */
1192
+ instrumented: Scalars['Boolean']['output'];
1193
+ /** Container name, unique within the workload and stable across deployments. */
1194
+ name: Scalars['String']['output'];
1195
+ /**
1196
+ * PIDs observed running in this container, keying into the workload's `instances` and
1197
+ * `processMetadata` — the container layer groups those rows, it does not duplicate them, so the
1198
+ * workload's flat process list stays the single source of truth for per-process facts.
1199
+ *
1200
+ * Empty when the reporter cannot see inside the container: a cloud connector rewriting an ECS task
1201
+ * definition knows the container exists and what runs in it, but never observes its processes. An
1202
+ * empty list therefore means "no process visibility", not "no processes".
1203
+ */
1204
+ pids?: Maybe<Array<Scalars['Int']['output']>>;
1205
+ /** Detected, overridden, and effective runtime for this container specifically. */
1206
+ runtime?: Maybe<WorkloadRuntimeSnapshot>;
1207
+ };
865
1208
  export type WorkloadCurrentReport = {
866
1209
  __typename?: 'WorkloadCurrentReport';
867
1210
  instrumented: Scalars['Boolean']['output'];
@@ -882,6 +1225,20 @@ export type WorkloadDesiredReport = {
882
1225
  sourceEnabled?: Maybe<Scalars['Boolean']['output']>;
883
1226
  sourceMatched?: Maybe<Scalars['Boolean']['output']>;
884
1227
  };
1228
+ /**
1229
+ * Kind-specific facts about a workload as a whole. The concrete type is selected by
1230
+ * WorkloadReport.kind.
1231
+ *
1232
+ * Container-shaped kinds (docker, ecs, cloud-run, container-apps) resolve to a type carrying
1233
+ * `containers`, which adds the container layer between the workload and its processes. Process-shaped
1234
+ * kinds (systemd, plain host processes) have no container layer at all and leave `details` null: their
1235
+ * processes hang directly off the workload's `instances` / `processMetadata`, with no empty container
1236
+ * wrapper invented to make the shapes match.
1237
+ */
1238
+ export type WorkloadDetails = {
1239
+ /** The WorkloadReport.kind this block describes, echoed so clients can branch without a fragment. */
1240
+ kind: Scalars['String']['output'];
1241
+ };
885
1242
  export type WorkloadInstanceStatus = {
886
1243
  __typename?: 'WorkloadInstanceStatus';
887
1244
  alive: Scalars['Boolean']['output'];
@@ -899,12 +1256,30 @@ export type WorkloadInstanceStatus = {
899
1256
  export type WorkloadIssue = {
900
1257
  __typename?: 'WorkloadIssue';
901
1258
  code: Scalars['String']['output'];
1259
+ /**
1260
+ * Machine-readable facts behind this issue, typed per `code`. Null for issues whose message is the whole
1261
+ * story.
1262
+ *
1263
+ * It exists because `message` had become the only channel for facts a client needs to ACT on rather than
1264
+ * display: which parts of an instrumentation are missing arrives today as a prose sentence a UI would have
1265
+ * to parse back apart to render as a list, or to offer a targeted fix for. Adding a code here means adding a
1266
+ * branch, never a new convention for encoding data into a sentence.
1267
+ */
1268
+ details?: Maybe<WorkloadIssueDetails>;
902
1269
  message: Scalars['String']['output'];
903
1270
  severity: Scalars['String']['output'];
904
1271
  /** RFC3339 timestamp when the issue was first observed. */
905
1272
  since?: Maybe<Scalars['String']['output']>;
906
1273
  transient?: Maybe<Scalars['Boolean']['output']>;
907
1274
  };
1275
+ /**
1276
+ * Facts behind one WorkloadIssue, typed by its `code`. Same discriminator-plus-typed-branch pattern as
1277
+ * WorkloadDetails and the rule/action config branches.
1278
+ */
1279
+ export type WorkloadIssueDetails = {
1280
+ /** The WorkloadIssue.code this block describes, echoed so clients can branch without a fragment. */
1281
+ code: Scalars['String']['output'];
1282
+ };
908
1283
  /**
909
1284
  * One live process under this workload from the instrumentation controller's AnalyzedProcess snapshot
910
1285
  * (eligible for instrumentation, instrumented, or excluded / uninstrumentable).
@@ -912,6 +1287,12 @@ export type WorkloadIssue = {
912
1287
  export type WorkloadProcessMetadata = {
913
1288
  __typename?: 'WorkloadProcessMetadata';
914
1289
  cmdline?: Maybe<Scalars['String']['output']>;
1290
+ /**
1291
+ * Kind-specific facts about this process, typed per processKind (container id/name/image for
1292
+ * container kinds, unit file for systemd). Null for plain host processes, whose pid/exe/cmdline are
1293
+ * already named fields above.
1294
+ */
1295
+ details?: Maybe<ProcessDetails>;
915
1296
  /** Set when instrumentationEligible is false (e.g. language mismatch). */
916
1297
  excludedReason?: Maybe<Scalars['String']['output']>;
917
1298
  exe?: Maybe<Scalars['String']['output']>;
@@ -919,7 +1300,10 @@ export type WorkloadProcessMetadata = {
919
1300
  instrumentationEligible: Scalars['Boolean']['output'];
920
1301
  /** True when the workload is instrumented and this PID is targeted (same notion as instances.instrumented). */
921
1302
  instrumented: Scalars['Boolean']['output'];
922
- /** Arbitrary string attributes (e.g. container.id from ResourceAttributes); JSON object with string values. */
1303
+ /**
1304
+ * Arbitrary string attributes (e.g. container.id from ResourceAttributes); JSON object with string values.
1305
+ * @deprecated Use `details`, which names and types the same facts per processKind. Still populated; will be removed once clients have migrated.
1306
+ */
923
1307
  metadata?: Maybe<Scalars['JSON']['output']>;
924
1308
  /** Names of other instrumentation agents detected in this process (e.g. "Datadog Agent"); empty or absent when none. */
925
1309
  otherAgentNames?: Maybe<Array<Scalars['String']['output']>>;
@@ -944,6 +1328,12 @@ export type WorkloadReport = {
944
1328
  __typename?: 'WorkloadReport';
945
1329
  current: WorkloadCurrentReport;
946
1330
  desired: WorkloadDesiredReport;
1331
+ /**
1332
+ * Kind-specific facts about this workload, typed per kind. Container-shaped kinds resolve to a type
1333
+ * carrying `containers`, which groups the flat `instances` / `processMetadata` above by container;
1334
+ * process-shaped kinds (systemd, plain processes) leave this null and expose processes directly.
1335
+ */
1336
+ details?: Maybe<WorkloadDetails>;
947
1337
  /** Tracked PIDs, sorted ascending by pid in the backing store. */
948
1338
  instances?: Maybe<Array<WorkloadInstanceStatus>>;
949
1339
  issues?: Maybe<Array<WorkloadIssue>>;
@@ -1642,6 +2032,80 @@ export type TestConnectionMutation = {
1642
2032
  reason?: string | null;
1643
2033
  };
1644
2034
  };
2035
+ export type InstructionDocumentFieldsFragment = {
2036
+ __typename?: 'InstructionDocument';
2037
+ id: string;
2038
+ variant: string;
2039
+ variantLabel: string;
2040
+ title: string;
2041
+ description: string;
2042
+ steps: Array<string>;
2043
+ format: string;
2044
+ content: string;
2045
+ unresolved?: Array<{
2046
+ __typename?: 'InstructionInput';
2047
+ placeholder: string;
2048
+ description: string;
2049
+ }> | null;
2050
+ };
2051
+ export type InstrumentationInstructionsFieldsFragment = {
2052
+ __typename?: 'InstrumentationInstructions';
2053
+ serviceName: string;
2054
+ kind: string;
2055
+ region?: string | null;
2056
+ mode: string;
2057
+ notes: Array<string>;
2058
+ updatedAt: string;
2059
+ documents: Array<{
2060
+ __typename?: 'InstructionDocument';
2061
+ id: string;
2062
+ variant: string;
2063
+ variantLabel: string;
2064
+ title: string;
2065
+ description: string;
2066
+ steps: Array<string>;
2067
+ format: string;
2068
+ content: string;
2069
+ unresolved?: Array<{
2070
+ __typename?: 'InstructionInput';
2071
+ placeholder: string;
2072
+ description: string;
2073
+ }> | null;
2074
+ }>;
2075
+ };
2076
+ export type GetInstrumentationInstructionsQueryVariables = Exact<{
2077
+ serviceName: Scalars['String']['input'];
2078
+ kind: Scalars['String']['input'];
2079
+ region?: InputMaybe<Scalars['String']['input']>;
2080
+ }>;
2081
+ export type GetInstrumentationInstructionsQuery = {
2082
+ __typename?: 'Query';
2083
+ instrumentationInstructions?: {
2084
+ __typename?: 'InstrumentationInstructions';
2085
+ serviceName: string;
2086
+ kind: string;
2087
+ region?: string | null;
2088
+ mode: string;
2089
+ notes: Array<string>;
2090
+ updatedAt: string;
2091
+ documents: Array<{
2092
+ __typename?: 'InstructionDocument';
2093
+ id: string;
2094
+ variant: string;
2095
+ variantLabel: string;
2096
+ title: string;
2097
+ description: string;
2098
+ steps: Array<string>;
2099
+ format: string;
2100
+ content: string;
2101
+ unresolved?: Array<{
2102
+ __typename?: 'InstructionInput';
2103
+ placeholder: string;
2104
+ description: string;
2105
+ }> | null;
2106
+ }>;
2107
+ } | null;
2108
+ };
1645
2109
  export type InstrumentationRuleTypeFieldsFragment = {
1646
2110
  __typename?: 'InstrumentationRuleTypeOption';
1647
2111
  type: string;
@@ -2287,6 +2751,20 @@ export type ConfigureProfilingCacheMutation = {
2287
2751
  };
2288
2752
  };
2289
2753
  };
2754
+ export type ContainerOverrideFieldsFragment = {
2755
+ __typename?: 'ContainerOverride';
2756
+ containerName: string;
2757
+ disabled?: boolean | null;
2758
+ runtimeOverride?: {
2759
+ __typename?: 'RuntimeOverride';
2760
+ language?: string | null;
2761
+ version?: string | null;
2762
+ } | null;
2763
+ distroOverride?: {
2764
+ __typename?: 'DistroOverride';
2765
+ otelDistroName?: string | null;
2766
+ } | null;
2767
+ };
2290
2768
  export type GetSourceQueryVariables = Exact<{
2291
2769
  name: Scalars['String']['input'];
2292
2770
  }>;
@@ -2314,6 +2792,40 @@ export type GetSourceQuery = {
2314
2792
  __typename?: 'ServiceNameOverride';
2315
2793
  serviceName?: string | null;
2316
2794
  } | null;
2795
+ ecs?: {
2796
+ __typename?: 'EcsSourceConfig';
2797
+ containerOverrides?: Array<{
2798
+ __typename?: 'ContainerOverride';
2799
+ containerName: string;
2800
+ disabled?: boolean | null;
2801
+ runtimeOverride?: {
2802
+ __typename?: 'RuntimeOverride';
2803
+ language?: string | null;
2804
+ version?: string | null;
2805
+ } | null;
2806
+ distroOverride?: {
2807
+ __typename?: 'DistroOverride';
2808
+ otelDistroName?: string | null;
2809
+ } | null;
2810
+ }> | null;
2811
+ } | null;
2812
+ docker?: {
2813
+ __typename?: 'DockerSourceConfig';
2814
+ containerOverrides?: Array<{
2815
+ __typename?: 'ContainerOverride';
2816
+ containerName: string;
2817
+ disabled?: boolean | null;
2818
+ runtimeOverride?: {
2819
+ __typename?: 'RuntimeOverride';
2820
+ language?: string | null;
2821
+ version?: string | null;
2822
+ } | null;
2823
+ distroOverride?: {
2824
+ __typename?: 'DistroOverride';
2825
+ otelDistroName?: string | null;
2826
+ } | null;
2827
+ }> | null;
2828
+ } | null;
2317
2829
  } | null;
2318
2830
  } | null;
2319
2831
  };
@@ -2344,6 +2856,40 @@ export type GetSourcesQuery = {
2344
2856
  __typename?: 'ServiceNameOverride';
2345
2857
  serviceName?: string | null;
2346
2858
  } | null;
2859
+ ecs?: {
2860
+ __typename?: 'EcsSourceConfig';
2861
+ containerOverrides?: Array<{
2862
+ __typename?: 'ContainerOverride';
2863
+ containerName: string;
2864
+ disabled?: boolean | null;
2865
+ runtimeOverride?: {
2866
+ __typename?: 'RuntimeOverride';
2867
+ language?: string | null;
2868
+ version?: string | null;
2869
+ } | null;
2870
+ distroOverride?: {
2871
+ __typename?: 'DistroOverride';
2872
+ otelDistroName?: string | null;
2873
+ } | null;
2874
+ }> | null;
2875
+ } | null;
2876
+ docker?: {
2877
+ __typename?: 'DockerSourceConfig';
2878
+ containerOverrides?: Array<{
2879
+ __typename?: 'ContainerOverride';
2880
+ containerName: string;
2881
+ disabled?: boolean | null;
2882
+ runtimeOverride?: {
2883
+ __typename?: 'RuntimeOverride';
2884
+ language?: string | null;
2885
+ version?: string | null;
2886
+ } | null;
2887
+ distroOverride?: {
2888
+ __typename?: 'DistroOverride';
2889
+ otelDistroName?: string | null;
2890
+ } | null;
2891
+ }> | null;
2892
+ } | null;
2347
2893
  } | null;
2348
2894
  }>;
2349
2895
  };
@@ -2374,6 +2920,40 @@ export type CreateSourceMutation = {
2374
2920
  __typename?: 'ServiceNameOverride';
2375
2921
  serviceName?: string | null;
2376
2922
  } | null;
2923
+ ecs?: {
2924
+ __typename?: 'EcsSourceConfig';
2925
+ containerOverrides?: Array<{
2926
+ __typename?: 'ContainerOverride';
2927
+ containerName: string;
2928
+ disabled?: boolean | null;
2929
+ runtimeOverride?: {
2930
+ __typename?: 'RuntimeOverride';
2931
+ language?: string | null;
2932
+ version?: string | null;
2933
+ } | null;
2934
+ distroOverride?: {
2935
+ __typename?: 'DistroOverride';
2936
+ otelDistroName?: string | null;
2937
+ } | null;
2938
+ }> | null;
2939
+ } | null;
2940
+ docker?: {
2941
+ __typename?: 'DockerSourceConfig';
2942
+ containerOverrides?: Array<{
2943
+ __typename?: 'ContainerOverride';
2944
+ containerName: string;
2945
+ disabled?: boolean | null;
2946
+ runtimeOverride?: {
2947
+ __typename?: 'RuntimeOverride';
2948
+ language?: string | null;
2949
+ version?: string | null;
2950
+ } | null;
2951
+ distroOverride?: {
2952
+ __typename?: 'DistroOverride';
2953
+ otelDistroName?: string | null;
2954
+ } | null;
2955
+ }> | null;
2956
+ } | null;
2377
2957
  } | null;
2378
2958
  };
2379
2959
  };
@@ -2404,6 +2984,40 @@ export type UpdateSourceMutation = {
2404
2984
  __typename?: 'ServiceNameOverride';
2405
2985
  serviceName?: string | null;
2406
2986
  } | null;
2987
+ ecs?: {
2988
+ __typename?: 'EcsSourceConfig';
2989
+ containerOverrides?: Array<{
2990
+ __typename?: 'ContainerOverride';
2991
+ containerName: string;
2992
+ disabled?: boolean | null;
2993
+ runtimeOverride?: {
2994
+ __typename?: 'RuntimeOverride';
2995
+ language?: string | null;
2996
+ version?: string | null;
2997
+ } | null;
2998
+ distroOverride?: {
2999
+ __typename?: 'DistroOverride';
3000
+ otelDistroName?: string | null;
3001
+ } | null;
3002
+ }> | null;
3003
+ } | null;
3004
+ docker?: {
3005
+ __typename?: 'DockerSourceConfig';
3006
+ containerOverrides?: Array<{
3007
+ __typename?: 'ContainerOverride';
3008
+ containerName: string;
3009
+ disabled?: boolean | null;
3010
+ runtimeOverride?: {
3011
+ __typename?: 'RuntimeOverride';
3012
+ language?: string | null;
3013
+ version?: string | null;
3014
+ } | null;
3015
+ distroOverride?: {
3016
+ __typename?: 'DistroOverride';
3017
+ otelDistroName?: string | null;
3018
+ } | null;
3019
+ }> | null;
3020
+ } | null;
2407
3021
  } | null;
2408
3022
  };
2409
3023
  };
@@ -2485,6 +3099,11 @@ export type WorkloadReportFieldsFragment = {
2485
3099
  message: string;
2486
3100
  since?: string | null;
2487
3101
  transient?: boolean | null;
3102
+ details?: {
3103
+ __typename: 'InstrumentationDriftDetails';
3104
+ missingComponents: Array<string>;
3105
+ code: string;
3106
+ } | null;
2488
3107
  }> | null;
2489
3108
  instances?: Array<{
2490
3109
  __typename?: 'WorkloadInstanceStatus';
@@ -2532,8 +3151,338 @@ export type WorkloadReportFieldsFragment = {
2532
3151
  version?: string | null;
2533
3152
  };
2534
3153
  };
3154
+ details?: {
3155
+ __typename: 'ContainerdProcessDetails';
3156
+ containerId?: string | null;
3157
+ imageName?: string | null;
3158
+ processKind: string;
3159
+ labels?: Array<{
3160
+ __typename?: 'KeyValue';
3161
+ key: string;
3162
+ value: string;
3163
+ }> | null;
3164
+ } | {
3165
+ __typename: 'DockerProcessDetails';
3166
+ containerId?: string | null;
3167
+ containerName?: string | null;
3168
+ imageName?: string | null;
3169
+ processKind: string;
3170
+ labels?: Array<{
3171
+ __typename?: 'KeyValue';
3172
+ key: string;
3173
+ value: string;
3174
+ }> | null;
3175
+ } | {
3176
+ __typename: 'EcsProcessDetails';
3177
+ containerId?: string | null;
3178
+ containerName?: string | null;
3179
+ imageName?: string | null;
3180
+ taskFamily?: string | null;
3181
+ taskArn?: string | null;
3182
+ processKind: string;
3183
+ labels?: Array<{
3184
+ __typename?: 'KeyValue';
3185
+ key: string;
3186
+ value: string;
3187
+ }> | null;
3188
+ } | {
3189
+ __typename: 'SystemdProcessDetails';
3190
+ unitName?: string | null;
3191
+ unitFilePath?: string | null;
3192
+ processKind: string;
3193
+ } | null;
3194
+ }> | null;
3195
+ details?: {
3196
+ __typename: 'DockerWorkloadDetails';
3197
+ kind: string;
3198
+ containers?: Array<{
3199
+ __typename?: 'WorkloadContainer';
3200
+ name: string;
3201
+ image?: string | null;
3202
+ pids?: Array<number> | null;
3203
+ instrumented: boolean;
3204
+ instrumentationEligible: boolean;
3205
+ excludedReason?: string | null;
3206
+ distro?: string | null;
3207
+ runtime?: {
3208
+ __typename?: 'WorkloadRuntimeSnapshot';
3209
+ detected: {
3210
+ __typename?: 'WorkloadRuntime';
3211
+ language?: string | null;
3212
+ version?: string | null;
3213
+ };
3214
+ override?: {
3215
+ __typename?: 'WorkloadRuntime';
3216
+ language?: string | null;
3217
+ version?: string | null;
3218
+ } | null;
3219
+ running: {
3220
+ __typename?: 'WorkloadRuntime';
3221
+ language?: string | null;
3222
+ version?: string | null;
3223
+ };
3224
+ } | null;
3225
+ }> | null;
3226
+ } | {
3227
+ __typename: 'EcsWorkloadDetails';
3228
+ clusterArn?: string | null;
3229
+ taskDefinition?: string | null;
3230
+ launchType?: string | null;
3231
+ deploymentController?: string | null;
3232
+ kind: string;
3233
+ containers?: Array<{
3234
+ __typename?: 'WorkloadContainer';
3235
+ name: string;
3236
+ image?: string | null;
3237
+ pids?: Array<number> | null;
3238
+ instrumented: boolean;
3239
+ instrumentationEligible: boolean;
3240
+ excludedReason?: string | null;
3241
+ distro?: string | null;
3242
+ runtime?: {
3243
+ __typename?: 'WorkloadRuntimeSnapshot';
3244
+ detected: {
3245
+ __typename?: 'WorkloadRuntime';
3246
+ language?: string | null;
3247
+ version?: string | null;
3248
+ };
3249
+ override?: {
3250
+ __typename?: 'WorkloadRuntime';
3251
+ language?: string | null;
3252
+ version?: string | null;
3253
+ } | null;
3254
+ running: {
3255
+ __typename?: 'WorkloadRuntime';
3256
+ language?: string | null;
3257
+ version?: string | null;
3258
+ };
3259
+ } | null;
3260
+ }> | null;
3261
+ } | {
3262
+ __typename: 'LambdaWorkloadDetails';
3263
+ functionArn?: string | null;
3264
+ runtime?: string | null;
3265
+ architecture?: string | null;
3266
+ layerArn?: string | null;
3267
+ kind: string;
3268
+ } | {
3269
+ __typename: 'RevisionedServiceWorkloadDetails';
3270
+ service?: string | null;
3271
+ latestReadyRevision?: string | null;
3272
+ kind: string;
3273
+ containers?: Array<{
3274
+ __typename?: 'WorkloadContainer';
3275
+ name: string;
3276
+ image?: string | null;
3277
+ pids?: Array<number> | null;
3278
+ instrumented: boolean;
3279
+ instrumentationEligible: boolean;
3280
+ excludedReason?: string | null;
3281
+ distro?: string | null;
3282
+ runtime?: {
3283
+ __typename?: 'WorkloadRuntimeSnapshot';
3284
+ detected: {
3285
+ __typename?: 'WorkloadRuntime';
3286
+ language?: string | null;
3287
+ version?: string | null;
3288
+ };
3289
+ override?: {
3290
+ __typename?: 'WorkloadRuntime';
3291
+ language?: string | null;
3292
+ version?: string | null;
3293
+ } | null;
3294
+ running: {
3295
+ __typename?: 'WorkloadRuntime';
3296
+ language?: string | null;
3297
+ version?: string | null;
3298
+ };
3299
+ } | null;
3300
+ }> | null;
3301
+ } | null;
3302
+ };
3303
+ type ProcessDetailsFields_ContainerdProcessDetails_Fragment = {
3304
+ __typename: 'ContainerdProcessDetails';
3305
+ containerId?: string | null;
3306
+ imageName?: string | null;
3307
+ processKind: string;
3308
+ labels?: Array<{
3309
+ __typename?: 'KeyValue';
3310
+ key: string;
3311
+ value: string;
3312
+ }> | null;
3313
+ };
3314
+ type ProcessDetailsFields_DockerProcessDetails_Fragment = {
3315
+ __typename: 'DockerProcessDetails';
3316
+ containerId?: string | null;
3317
+ containerName?: string | null;
3318
+ imageName?: string | null;
3319
+ processKind: string;
3320
+ labels?: Array<{
3321
+ __typename?: 'KeyValue';
3322
+ key: string;
3323
+ value: string;
3324
+ }> | null;
3325
+ };
3326
+ type ProcessDetailsFields_EcsProcessDetails_Fragment = {
3327
+ __typename: 'EcsProcessDetails';
3328
+ containerId?: string | null;
3329
+ containerName?: string | null;
3330
+ imageName?: string | null;
3331
+ taskFamily?: string | null;
3332
+ taskArn?: string | null;
3333
+ processKind: string;
3334
+ labels?: Array<{
3335
+ __typename?: 'KeyValue';
3336
+ key: string;
3337
+ value: string;
3338
+ }> | null;
3339
+ };
3340
+ type ProcessDetailsFields_SystemdProcessDetails_Fragment = {
3341
+ __typename: 'SystemdProcessDetails';
3342
+ unitName?: string | null;
3343
+ unitFilePath?: string | null;
3344
+ processKind: string;
3345
+ };
3346
+ export type ProcessDetailsFieldsFragment = ProcessDetailsFields_ContainerdProcessDetails_Fragment | ProcessDetailsFields_DockerProcessDetails_Fragment | ProcessDetailsFields_EcsProcessDetails_Fragment | ProcessDetailsFields_SystemdProcessDetails_Fragment;
3347
+ export type WorkloadContainerFieldsFragment = {
3348
+ __typename?: 'WorkloadContainer';
3349
+ name: string;
3350
+ image?: string | null;
3351
+ pids?: Array<number> | null;
3352
+ instrumented: boolean;
3353
+ instrumentationEligible: boolean;
3354
+ excludedReason?: string | null;
3355
+ distro?: string | null;
3356
+ runtime?: {
3357
+ __typename?: 'WorkloadRuntimeSnapshot';
3358
+ detected: {
3359
+ __typename?: 'WorkloadRuntime';
3360
+ language?: string | null;
3361
+ version?: string | null;
3362
+ };
3363
+ override?: {
3364
+ __typename?: 'WorkloadRuntime';
3365
+ language?: string | null;
3366
+ version?: string | null;
3367
+ } | null;
3368
+ running: {
3369
+ __typename?: 'WorkloadRuntime';
3370
+ language?: string | null;
3371
+ version?: string | null;
3372
+ };
3373
+ } | null;
3374
+ };
3375
+ type WorkloadDetailsFields_DockerWorkloadDetails_Fragment = {
3376
+ __typename: 'DockerWorkloadDetails';
3377
+ kind: string;
3378
+ containers?: Array<{
3379
+ __typename?: 'WorkloadContainer';
3380
+ name: string;
3381
+ image?: string | null;
3382
+ pids?: Array<number> | null;
3383
+ instrumented: boolean;
3384
+ instrumentationEligible: boolean;
3385
+ excludedReason?: string | null;
3386
+ distro?: string | null;
3387
+ runtime?: {
3388
+ __typename?: 'WorkloadRuntimeSnapshot';
3389
+ detected: {
3390
+ __typename?: 'WorkloadRuntime';
3391
+ language?: string | null;
3392
+ version?: string | null;
3393
+ };
3394
+ override?: {
3395
+ __typename?: 'WorkloadRuntime';
3396
+ language?: string | null;
3397
+ version?: string | null;
3398
+ } | null;
3399
+ running: {
3400
+ __typename?: 'WorkloadRuntime';
3401
+ language?: string | null;
3402
+ version?: string | null;
3403
+ };
3404
+ } | null;
2535
3405
  }> | null;
2536
3406
  };
3407
+ type WorkloadDetailsFields_EcsWorkloadDetails_Fragment = {
3408
+ __typename: 'EcsWorkloadDetails';
3409
+ clusterArn?: string | null;
3410
+ taskDefinition?: string | null;
3411
+ launchType?: string | null;
3412
+ deploymentController?: string | null;
3413
+ kind: string;
3414
+ containers?: Array<{
3415
+ __typename?: 'WorkloadContainer';
3416
+ name: string;
3417
+ image?: string | null;
3418
+ pids?: Array<number> | null;
3419
+ instrumented: boolean;
3420
+ instrumentationEligible: boolean;
3421
+ excludedReason?: string | null;
3422
+ distro?: string | null;
3423
+ runtime?: {
3424
+ __typename?: 'WorkloadRuntimeSnapshot';
3425
+ detected: {
3426
+ __typename?: 'WorkloadRuntime';
3427
+ language?: string | null;
3428
+ version?: string | null;
3429
+ };
3430
+ override?: {
3431
+ __typename?: 'WorkloadRuntime';
3432
+ language?: string | null;
3433
+ version?: string | null;
3434
+ } | null;
3435
+ running: {
3436
+ __typename?: 'WorkloadRuntime';
3437
+ language?: string | null;
3438
+ version?: string | null;
3439
+ };
3440
+ } | null;
3441
+ }> | null;
3442
+ };
3443
+ type WorkloadDetailsFields_LambdaWorkloadDetails_Fragment = {
3444
+ __typename: 'LambdaWorkloadDetails';
3445
+ functionArn?: string | null;
3446
+ runtime?: string | null;
3447
+ architecture?: string | null;
3448
+ layerArn?: string | null;
3449
+ kind: string;
3450
+ };
3451
+ type WorkloadDetailsFields_RevisionedServiceWorkloadDetails_Fragment = {
3452
+ __typename: 'RevisionedServiceWorkloadDetails';
3453
+ service?: string | null;
3454
+ latestReadyRevision?: string | null;
3455
+ kind: string;
3456
+ containers?: Array<{
3457
+ __typename?: 'WorkloadContainer';
3458
+ name: string;
3459
+ image?: string | null;
3460
+ pids?: Array<number> | null;
3461
+ instrumented: boolean;
3462
+ instrumentationEligible: boolean;
3463
+ excludedReason?: string | null;
3464
+ distro?: string | null;
3465
+ runtime?: {
3466
+ __typename?: 'WorkloadRuntimeSnapshot';
3467
+ detected: {
3468
+ __typename?: 'WorkloadRuntime';
3469
+ language?: string | null;
3470
+ version?: string | null;
3471
+ };
3472
+ override?: {
3473
+ __typename?: 'WorkloadRuntime';
3474
+ language?: string | null;
3475
+ version?: string | null;
3476
+ } | null;
3477
+ running: {
3478
+ __typename?: 'WorkloadRuntime';
3479
+ language?: string | null;
3480
+ version?: string | null;
3481
+ };
3482
+ } | null;
3483
+ }> | null;
3484
+ };
3485
+ export type WorkloadDetailsFieldsFragment = WorkloadDetailsFields_DockerWorkloadDetails_Fragment | WorkloadDetailsFields_EcsWorkloadDetails_Fragment | WorkloadDetailsFields_LambdaWorkloadDetails_Fragment | WorkloadDetailsFields_RevisionedServiceWorkloadDetails_Fragment;
2537
3486
  export type GetWorkloadReportQueryVariables = Exact<{
2538
3487
  serviceName: Scalars['String']['input'];
2539
3488
  kind: Scalars['String']['input'];
@@ -2595,6 +3544,11 @@ export type GetWorkloadReportQuery = {
2595
3544
  message: string;
2596
3545
  since?: string | null;
2597
3546
  transient?: boolean | null;
3547
+ details?: {
3548
+ __typename: 'InstrumentationDriftDetails';
3549
+ missingComponents: Array<string>;
3550
+ code: string;
3551
+ } | null;
2598
3552
  }> | null;
2599
3553
  instances?: Array<{
2600
3554
  __typename?: 'WorkloadInstanceStatus';
@@ -2642,7 +3596,154 @@ export type GetWorkloadReportQuery = {
2642
3596
  version?: string | null;
2643
3597
  };
2644
3598
  };
3599
+ details?: {
3600
+ __typename: 'ContainerdProcessDetails';
3601
+ containerId?: string | null;
3602
+ imageName?: string | null;
3603
+ processKind: string;
3604
+ labels?: Array<{
3605
+ __typename?: 'KeyValue';
3606
+ key: string;
3607
+ value: string;
3608
+ }> | null;
3609
+ } | {
3610
+ __typename: 'DockerProcessDetails';
3611
+ containerId?: string | null;
3612
+ containerName?: string | null;
3613
+ imageName?: string | null;
3614
+ processKind: string;
3615
+ labels?: Array<{
3616
+ __typename?: 'KeyValue';
3617
+ key: string;
3618
+ value: string;
3619
+ }> | null;
3620
+ } | {
3621
+ __typename: 'EcsProcessDetails';
3622
+ containerId?: string | null;
3623
+ containerName?: string | null;
3624
+ imageName?: string | null;
3625
+ taskFamily?: string | null;
3626
+ taskArn?: string | null;
3627
+ processKind: string;
3628
+ labels?: Array<{
3629
+ __typename?: 'KeyValue';
3630
+ key: string;
3631
+ value: string;
3632
+ }> | null;
3633
+ } | {
3634
+ __typename: 'SystemdProcessDetails';
3635
+ unitName?: string | null;
3636
+ unitFilePath?: string | null;
3637
+ processKind: string;
3638
+ } | null;
2645
3639
  }> | null;
3640
+ details?: {
3641
+ __typename: 'DockerWorkloadDetails';
3642
+ kind: string;
3643
+ containers?: Array<{
3644
+ __typename?: 'WorkloadContainer';
3645
+ name: string;
3646
+ image?: string | null;
3647
+ pids?: Array<number> | null;
3648
+ instrumented: boolean;
3649
+ instrumentationEligible: boolean;
3650
+ excludedReason?: string | null;
3651
+ distro?: string | null;
3652
+ runtime?: {
3653
+ __typename?: 'WorkloadRuntimeSnapshot';
3654
+ detected: {
3655
+ __typename?: 'WorkloadRuntime';
3656
+ language?: string | null;
3657
+ version?: string | null;
3658
+ };
3659
+ override?: {
3660
+ __typename?: 'WorkloadRuntime';
3661
+ language?: string | null;
3662
+ version?: string | null;
3663
+ } | null;
3664
+ running: {
3665
+ __typename?: 'WorkloadRuntime';
3666
+ language?: string | null;
3667
+ version?: string | null;
3668
+ };
3669
+ } | null;
3670
+ }> | null;
3671
+ } | {
3672
+ __typename: 'EcsWorkloadDetails';
3673
+ clusterArn?: string | null;
3674
+ taskDefinition?: string | null;
3675
+ launchType?: string | null;
3676
+ deploymentController?: string | null;
3677
+ kind: string;
3678
+ containers?: Array<{
3679
+ __typename?: 'WorkloadContainer';
3680
+ name: string;
3681
+ image?: string | null;
3682
+ pids?: Array<number> | null;
3683
+ instrumented: boolean;
3684
+ instrumentationEligible: boolean;
3685
+ excludedReason?: string | null;
3686
+ distro?: string | null;
3687
+ runtime?: {
3688
+ __typename?: 'WorkloadRuntimeSnapshot';
3689
+ detected: {
3690
+ __typename?: 'WorkloadRuntime';
3691
+ language?: string | null;
3692
+ version?: string | null;
3693
+ };
3694
+ override?: {
3695
+ __typename?: 'WorkloadRuntime';
3696
+ language?: string | null;
3697
+ version?: string | null;
3698
+ } | null;
3699
+ running: {
3700
+ __typename?: 'WorkloadRuntime';
3701
+ language?: string | null;
3702
+ version?: string | null;
3703
+ };
3704
+ } | null;
3705
+ }> | null;
3706
+ } | {
3707
+ __typename: 'LambdaWorkloadDetails';
3708
+ functionArn?: string | null;
3709
+ runtime?: string | null;
3710
+ architecture?: string | null;
3711
+ layerArn?: string | null;
3712
+ kind: string;
3713
+ } | {
3714
+ __typename: 'RevisionedServiceWorkloadDetails';
3715
+ service?: string | null;
3716
+ latestReadyRevision?: string | null;
3717
+ kind: string;
3718
+ containers?: Array<{
3719
+ __typename?: 'WorkloadContainer';
3720
+ name: string;
3721
+ image?: string | null;
3722
+ pids?: Array<number> | null;
3723
+ instrumented: boolean;
3724
+ instrumentationEligible: boolean;
3725
+ excludedReason?: string | null;
3726
+ distro?: string | null;
3727
+ runtime?: {
3728
+ __typename?: 'WorkloadRuntimeSnapshot';
3729
+ detected: {
3730
+ __typename?: 'WorkloadRuntime';
3731
+ language?: string | null;
3732
+ version?: string | null;
3733
+ };
3734
+ override?: {
3735
+ __typename?: 'WorkloadRuntime';
3736
+ language?: string | null;
3737
+ version?: string | null;
3738
+ } | null;
3739
+ running: {
3740
+ __typename?: 'WorkloadRuntime';
3741
+ language?: string | null;
3742
+ version?: string | null;
3743
+ };
3744
+ } | null;
3745
+ }> | null;
3746
+ } | null;
2646
3747
  } | null;
2647
3748
  };
2648
3749
  export type GetWorkloadReportsQueryVariables = Exact<{
@@ -2704,6 +3805,11 @@ export type GetWorkloadReportsQuery = {
2704
3805
  message: string;
2705
3806
  since?: string | null;
2706
3807
  transient?: boolean | null;
3808
+ details?: {
3809
+ __typename: 'InstrumentationDriftDetails';
3810
+ missingComponents: Array<string>;
3811
+ code: string;
3812
+ } | null;
2707
3813
  }> | null;
2708
3814
  instances?: Array<{
2709
3815
  __typename?: 'WorkloadInstanceStatus';
@@ -2751,7 +3857,154 @@ export type GetWorkloadReportsQuery = {
2751
3857
  version?: string | null;
2752
3858
  };
2753
3859
  };
3860
+ details?: {
3861
+ __typename: 'ContainerdProcessDetails';
3862
+ containerId?: string | null;
3863
+ imageName?: string | null;
3864
+ processKind: string;
3865
+ labels?: Array<{
3866
+ __typename?: 'KeyValue';
3867
+ key: string;
3868
+ value: string;
3869
+ }> | null;
3870
+ } | {
3871
+ __typename: 'DockerProcessDetails';
3872
+ containerId?: string | null;
3873
+ containerName?: string | null;
3874
+ imageName?: string | null;
3875
+ processKind: string;
3876
+ labels?: Array<{
3877
+ __typename?: 'KeyValue';
3878
+ key: string;
3879
+ value: string;
3880
+ }> | null;
3881
+ } | {
3882
+ __typename: 'EcsProcessDetails';
3883
+ containerId?: string | null;
3884
+ containerName?: string | null;
3885
+ imageName?: string | null;
3886
+ taskFamily?: string | null;
3887
+ taskArn?: string | null;
3888
+ processKind: string;
3889
+ labels?: Array<{
3890
+ __typename?: 'KeyValue';
3891
+ key: string;
3892
+ value: string;
3893
+ }> | null;
3894
+ } | {
3895
+ __typename: 'SystemdProcessDetails';
3896
+ unitName?: string | null;
3897
+ unitFilePath?: string | null;
3898
+ processKind: string;
3899
+ } | null;
2754
3900
  }> | null;
3901
+ details?: {
3902
+ __typename: 'DockerWorkloadDetails';
3903
+ kind: string;
3904
+ containers?: Array<{
3905
+ __typename?: 'WorkloadContainer';
3906
+ name: string;
3907
+ image?: string | null;
3908
+ pids?: Array<number> | null;
3909
+ instrumented: boolean;
3910
+ instrumentationEligible: boolean;
3911
+ excludedReason?: string | null;
3912
+ distro?: string | null;
3913
+ runtime?: {
3914
+ __typename?: 'WorkloadRuntimeSnapshot';
3915
+ detected: {
3916
+ __typename?: 'WorkloadRuntime';
3917
+ language?: string | null;
3918
+ version?: string | null;
3919
+ };
3920
+ override?: {
3921
+ __typename?: 'WorkloadRuntime';
3922
+ language?: string | null;
3923
+ version?: string | null;
3924
+ } | null;
3925
+ running: {
3926
+ __typename?: 'WorkloadRuntime';
3927
+ language?: string | null;
3928
+ version?: string | null;
3929
+ };
3930
+ } | null;
3931
+ }> | null;
3932
+ } | {
3933
+ __typename: 'EcsWorkloadDetails';
3934
+ clusterArn?: string | null;
3935
+ taskDefinition?: string | null;
3936
+ launchType?: string | null;
3937
+ deploymentController?: string | null;
3938
+ kind: string;
3939
+ containers?: Array<{
3940
+ __typename?: 'WorkloadContainer';
3941
+ name: string;
3942
+ image?: string | null;
3943
+ pids?: Array<number> | null;
3944
+ instrumented: boolean;
3945
+ instrumentationEligible: boolean;
3946
+ excludedReason?: string | null;
3947
+ distro?: string | null;
3948
+ runtime?: {
3949
+ __typename?: 'WorkloadRuntimeSnapshot';
3950
+ detected: {
3951
+ __typename?: 'WorkloadRuntime';
3952
+ language?: string | null;
3953
+ version?: string | null;
3954
+ };
3955
+ override?: {
3956
+ __typename?: 'WorkloadRuntime';
3957
+ language?: string | null;
3958
+ version?: string | null;
3959
+ } | null;
3960
+ running: {
3961
+ __typename?: 'WorkloadRuntime';
3962
+ language?: string | null;
3963
+ version?: string | null;
3964
+ };
3965
+ } | null;
3966
+ }> | null;
3967
+ } | {
3968
+ __typename: 'LambdaWorkloadDetails';
3969
+ functionArn?: string | null;
3970
+ runtime?: string | null;
3971
+ architecture?: string | null;
3972
+ layerArn?: string | null;
3973
+ kind: string;
3974
+ } | {
3975
+ __typename: 'RevisionedServiceWorkloadDetails';
3976
+ service?: string | null;
3977
+ latestReadyRevision?: string | null;
3978
+ kind: string;
3979
+ containers?: Array<{
3980
+ __typename?: 'WorkloadContainer';
3981
+ name: string;
3982
+ image?: string | null;
3983
+ pids?: Array<number> | null;
3984
+ instrumented: boolean;
3985
+ instrumentationEligible: boolean;
3986
+ excludedReason?: string | null;
3987
+ distro?: string | null;
3988
+ runtime?: {
3989
+ __typename?: 'WorkloadRuntimeSnapshot';
3990
+ detected: {
3991
+ __typename?: 'WorkloadRuntime';
3992
+ language?: string | null;
3993
+ version?: string | null;
3994
+ };
3995
+ override?: {
3996
+ __typename?: 'WorkloadRuntime';
3997
+ language?: string | null;
3998
+ version?: string | null;
3999
+ } | null;
4000
+ running: {
4001
+ __typename?: 'WorkloadRuntime';
4002
+ language?: string | null;
4003
+ version?: string | null;
4004
+ };
4005
+ } | null;
4006
+ }> | null;
4007
+ } | null;
2755
4008
  }>;
2756
4009
  };
2757
4010
  export declare const ActionTypeFieldsFragmentDoc: DocumentNode<ActionTypeFieldsFragment, unknown>;
@@ -2759,8 +4012,14 @@ export declare const ActionFieldsFragmentDoc: DocumentNode<ActionFieldsFragment,
2759
4012
  export declare const ComputePlatformReportFieldsFragmentDoc: DocumentNode<ComputePlatformReportFieldsFragment, unknown>;
2760
4013
  export declare const DestinationTypeFieldsFragmentDoc: DocumentNode<DestinationTypeFieldsFragment, unknown>;
2761
4014
  export declare const DestinationFieldsFragmentDoc: DocumentNode<DestinationFieldsFragment, unknown>;
4015
+ export declare const InstructionDocumentFieldsFragmentDoc: DocumentNode<InstructionDocumentFieldsFragment, unknown>;
4016
+ export declare const InstrumentationInstructionsFieldsFragmentDoc: DocumentNode<InstrumentationInstructionsFieldsFragment, unknown>;
2762
4017
  export declare const InstrumentationRuleTypeFieldsFragmentDoc: DocumentNode<InstrumentationRuleTypeFieldsFragment, unknown>;
2763
4018
  export declare const InstrumentationRuleFieldsFragmentDoc: DocumentNode<InstrumentationRuleFieldsFragment, unknown>;
4019
+ export declare const ContainerOverrideFieldsFragmentDoc: DocumentNode<ContainerOverrideFieldsFragment, unknown>;
4020
+ export declare const ProcessDetailsFieldsFragmentDoc: DocumentNode<ProcessDetailsFieldsFragment, unknown>;
4021
+ export declare const WorkloadContainerFieldsFragmentDoc: DocumentNode<WorkloadContainerFieldsFragment, unknown>;
4022
+ export declare const WorkloadDetailsFieldsFragmentDoc: DocumentNode<WorkloadDetailsFieldsFragment, unknown>;
2764
4023
  export declare const WorkloadReportFieldsFragmentDoc: DocumentNode<WorkloadReportFieldsFragment, unknown>;
2765
4024
  export declare const GetActionTypesDocument: DocumentNode<GetActionTypesQuery, GetActionTypesQueryVariables>;
2766
4025
  export declare const GetActionDocument: DocumentNode<GetActionQuery, GetActionQueryVariables>;
@@ -2786,6 +4045,7 @@ export declare const CreateDestinationDocument: DocumentNode<CreateDestinationMu
2786
4045
  export declare const UpdateDestinationDocument: DocumentNode<UpdateDestinationMutation, UpdateDestinationMutationVariables>;
2787
4046
  export declare const DeleteDestinationDocument: DocumentNode<DeleteDestinationMutation, DeleteDestinationMutationVariables>;
2788
4047
  export declare const TestConnectionDocument: DocumentNode<TestConnectionMutation, TestConnectionMutationVariables>;
4048
+ export declare const GetInstrumentationInstructionsDocument: DocumentNode<GetInstrumentationInstructionsQuery, GetInstrumentationInstructionsQueryVariables>;
2789
4049
  export declare const GetInstrumentationRuleTypesDocument: DocumentNode<GetInstrumentationRuleTypesQuery, GetInstrumentationRuleTypesQueryVariables>;
2790
4050
  export declare const GetInstrumentationRuleDocument: DocumentNode<GetInstrumentationRuleQuery, GetInstrumentationRuleQueryVariables>;
2791
4051
  export declare const GetInstrumentationRulesDocument: DocumentNode<GetInstrumentationRulesQuery, GetInstrumentationRulesQueryVariables>;