@burdenoff/microfe-movethewheels 2026.921.1 → 2026.923.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.
@@ -13235,6 +13235,11 @@ export type CreateDataSinkInput = {
13235
13235
  /** Cache TTL in Redis (seconds, default: 300, null = no cache) */
13236
13236
  ttl?: InputMaybe<Scalars['Int']['input']>;
13237
13237
  };
13238
+ export type CreateDataTableInput = {
13239
+ columns: Array<DataTableColumnInput>;
13240
+ description?: InputMaybe<Scalars['String']['input']>;
13241
+ name: Scalars['String']['input'];
13242
+ };
13238
13243
  export type CreateDeliveryJobInput = {
13239
13244
  cargoItems: Scalars['JSON']['input'];
13240
13245
  context?: InputMaybe<ContextInput>;
@@ -13245,6 +13250,7 @@ export type CreateDeliveryJobInput = {
13245
13250
  pickupAddress: Scalars['JSON']['input'];
13246
13251
  pricing?: InputMaybe<Scalars['JSON']['input']>;
13247
13252
  priority?: InputMaybe<DeliveryPriority>;
13253
+ routeId?: InputMaybe<Scalars['ID']['input']>;
13248
13254
  scheduledDelivery?: InputMaybe<Scalars['DateTime']['input']>;
13249
13255
  specialInstructions?: InputMaybe<Scalars['String']['input']>;
13250
13256
  status?: InputMaybe<DeliveryJobStatus>;
@@ -13289,6 +13295,7 @@ export type CreateDriverInput = {
13289
13295
  status?: InputMaybe<DriverStatus>;
13290
13296
  userId?: InputMaybe<Scalars['String']['input']>;
13291
13297
  vehicleId?: InputMaybe<Scalars['String']['input']>;
13298
+ vehicleIds?: InputMaybe<Array<Scalars['ID']['input']>>;
13292
13299
  };
13293
13300
  export type CreateEmailTimeEntryInput = {
13294
13301
  category?: InputMaybe<Scalars['String']['input']>;
@@ -14860,6 +14867,16 @@ export type CreateLocationEntryInput = {
14860
14867
  startTime: Scalars['DateTime']['input'];
14861
14868
  userId: Scalars['ID']['input'];
14862
14869
  };
14870
+ export type CreateLogStreamDestinationInput = {
14871
+ config?: InputMaybe<Scalars['JSON']['input']>;
14872
+ endpoint: Scalars['String']['input'];
14873
+ eventFilters?: InputMaybe<Array<LogStreamEventType>>;
14874
+ isEnabled?: InputMaybe<Scalars['Boolean']['input']>;
14875
+ name: Scalars['String']['input'];
14876
+ provider: LogStreamProvider;
14877
+ /** WEBHOOK only: plaintext signing secret, encrypted at rest. Omit for SYSLOG/SENTRY. */
14878
+ secret?: InputMaybe<Scalars['String']['input']>;
14879
+ };
14863
14880
  export type CreateMcpConnectionInput = {
14864
14881
  config: Scalars['JSON']['input'];
14865
14882
  credentials?: InputMaybe<Scalars['JSON']['input']>;
@@ -16227,6 +16244,18 @@ export type CreateWorkflowInput = {
16227
16244
  /** Initial lifecycle status. Defaults to `draft` when omitted, preserving the previous behaviour. The ingest endpoint only accepts payloads for workflows in `active` — a workflow left in `draft` rejects its own delivery with 422. Callers that wire a workflow up completely in one step (definition plus dataSinkKeys) should pass `active` so the chain is usable without a follow-up `updateWorkflow`. Only `draft` and `active` are accepted here. `paused`, `error` and `archived` describe things that can only happen to a workflow that already exists — in particular `error` is written by `executeWorkflow` to mean a real trigger failed — so creating one directly in those states is rejected with `INVALID_INITIAL_WORKFLOW_STATUS`. Use `updateWorkflow` to transition. */
16228
16245
  status?: InputMaybe<FluidGridsWorkflowStatus>;
16229
16246
  };
16247
+ export type CreateWorkflowVariableInput = {
16248
+ description?: InputMaybe<Scalars['String']['input']>;
16249
+ externalProvider?: InputMaybe<SecretProviderType>;
16250
+ externalRef?: InputMaybe<Scalars['String']['input']>;
16251
+ isSecret?: InputMaybe<Scalars['Boolean']['input']>;
16252
+ key: Scalars['String']['input'];
16253
+ /** Required when scope = PROJECT. */
16254
+ projectId?: InputMaybe<Scalars['ID']['input']>;
16255
+ scope?: InputMaybe<VariableScope>;
16256
+ /** Local plaintext value. Mutually exclusive with `externalProvider` != NONE + `externalRef` — a variable is either stored (encrypted, when `isSecret`) in this service or resolved from an external provider, never both. */
16257
+ value?: InputMaybe<Scalars['String']['input']>;
16258
+ };
16230
16259
  /** Input for creating a new workflow version */
16231
16260
  export type CreateWorkflowVersionInput = {
16232
16261
  /** Alias to attach to the new version (movable pointer — cleared from any sibling version). Omitted = no alias. */
@@ -17701,6 +17730,10 @@ export type DashboardSummary = {
17701
17730
  runsPendingCount: Scalars['Int']['output'];
17702
17731
  runsRunningCount: Scalars['Int']['output'];
17703
17732
  runsWaitingCount: Scalars['Int']['output'];
17733
+ /** Rough estimate of manual-effort time saved by automation (BOFF-7519): `completedRunsCount * avgNodesPerRun * ASSUMED_MANUAL_SECONDS_PER_NODE`, converted to hours. A deliberately coarse heuristic (see `DashboardProvider.TIME_SAVED_ASSUMED_MANUAL_SECONDS_PER_NODE`'s doc comment for the assumption) — directional, not a billing-grade figure. Null when there is no completed-run history yet to estimate from. */
17734
+ timeSavedEstimateHours?: Maybe<Scalars['Float']['output']>;
17735
+ /** Workflows with the most FAILED runs, worst-first (BOFF-7519). Capped at 10. */
17736
+ topFailingWorkflows: Array<FailingWorkflowStat>;
17704
17737
  totalNodesExecutedCount: Scalars['Int']['output'];
17705
17738
  userId: Scalars['String']['output'];
17706
17739
  username?: Maybe<Scalars['String']['output']>;
@@ -18211,6 +18244,101 @@ export declare enum DataSourceType {
18211
18244
  Sql = "SQL",
18212
18245
  Websocket = "WEBSOCKET"
18213
18246
  }
18247
+ export type DataTable = {
18248
+ __typename?: 'DataTable';
18249
+ columns: Array<DataTableColumn>;
18250
+ createdAt: Scalars['DateTime']['output'];
18251
+ createdBy: Scalars['String']['output'];
18252
+ description?: Maybe<Scalars['String']['output']>;
18253
+ id: Scalars['ID']['output'];
18254
+ name: Scalars['String']['output'];
18255
+ rowCount: Scalars['Int']['output'];
18256
+ sizeBytes: Scalars['Int']['output'];
18257
+ updatedAt: Scalars['DateTime']['output'];
18258
+ updatedBy?: Maybe<Scalars['String']['output']>;
18259
+ workspaceId: Scalars['ID']['output'];
18260
+ };
18261
+ export type DataTableColumn = {
18262
+ __typename?: 'DataTableColumn';
18263
+ defaultValue?: Maybe<Scalars['JSON']['output']>;
18264
+ key: Scalars['String']['output'];
18265
+ label: Scalars['String']['output'];
18266
+ required: Scalars['Boolean']['output'];
18267
+ type: DataTableColumnType;
18268
+ };
18269
+ export type DataTableColumnInput = {
18270
+ defaultValue?: InputMaybe<Scalars['JSON']['input']>;
18271
+ key: Scalars['String']['input'];
18272
+ label: Scalars['String']['input'];
18273
+ required?: InputMaybe<Scalars['Boolean']['input']>;
18274
+ type: DataTableColumnType;
18275
+ };
18276
+ export declare enum DataTableColumnType {
18277
+ Boolean = "BOOLEAN",
18278
+ Date = "DATE",
18279
+ Json = "JSON",
18280
+ Number = "NUMBER",
18281
+ String = "STRING"
18282
+ }
18283
+ export declare enum DataTableFilterOp {
18284
+ Contains = "CONTAINS",
18285
+ Eq = "EQ",
18286
+ Gt = "GT",
18287
+ Gte = "GTE",
18288
+ IsNotNull = "IS_NOT_NULL",
18289
+ IsNull = "IS_NULL",
18290
+ Lt = "LT",
18291
+ Lte = "LTE",
18292
+ Neq = "NEQ"
18293
+ }
18294
+ export type DataTableListResponse = {
18295
+ __typename?: 'DataTableListResponse';
18296
+ tables: Array<DataTable>;
18297
+ total: Scalars['Int']['output'];
18298
+ };
18299
+ export type DataTableResponse = MutationResponse & {
18300
+ __typename?: 'DataTableResponse';
18301
+ message: Scalars['String']['output'];
18302
+ success: Scalars['Boolean']['output'];
18303
+ table?: Maybe<DataTable>;
18304
+ };
18305
+ export type DataTableRow = {
18306
+ __typename?: 'DataTableRow';
18307
+ createdAt: Scalars['DateTime']['output'];
18308
+ data: Scalars['JSON']['output'];
18309
+ id: Scalars['ID']['output'];
18310
+ tableId: Scalars['ID']['output'];
18311
+ updatedAt: Scalars['DateTime']['output'];
18312
+ };
18313
+ export type DataTableRowFilterInput = {
18314
+ column: Scalars['String']['input'];
18315
+ op: DataTableFilterOp;
18316
+ /** Omitted/null for IS_NULL / IS_NOT_NULL. */
18317
+ value?: InputMaybe<Scalars['JSON']['input']>;
18318
+ };
18319
+ export type DataTableRowResponse = MutationResponse & {
18320
+ __typename?: 'DataTableRowResponse';
18321
+ message: Scalars['String']['output'];
18322
+ row?: Maybe<DataTableRow>;
18323
+ success: Scalars['Boolean']['output'];
18324
+ };
18325
+ export type DataTableRowsMutationResponse = MutationResponse & {
18326
+ __typename?: 'DataTableRowsMutationResponse';
18327
+ affected: Scalars['Int']['output'];
18328
+ message: Scalars['String']['output'];
18329
+ success: Scalars['Boolean']['output'];
18330
+ };
18331
+ export type DataTableRowsQueryInput = {
18332
+ filters?: InputMaybe<Array<DataTableRowFilterInput>>;
18333
+ limit?: InputMaybe<Scalars['Int']['input']>;
18334
+ offset?: InputMaybe<Scalars['Int']['input']>;
18335
+ tableId: Scalars['ID']['input'];
18336
+ };
18337
+ export type DataTableRowsResponse = {
18338
+ __typename?: 'DataTableRowsResponse';
18339
+ rows: Array<DataTableRow>;
18340
+ total: Scalars['Int']['output'];
18341
+ };
18214
18342
  /** Standard date range output */
18215
18343
  export type DateRange = {
18216
18344
  __typename?: 'DateRange';
@@ -18270,6 +18398,14 @@ export type DecideHealthyBowlFarmRecommendationInput = {
18270
18398
  decision: Scalars['String']['input'];
18271
18399
  id: Scalars['ID']['input'];
18272
18400
  };
18401
+ export type DecideToolApprovalResponse = {
18402
+ __typename?: 'DecideToolApprovalResponse';
18403
+ error?: Maybe<Scalars['String']['output']>;
18404
+ request?: Maybe<ToolApprovalRequest>;
18405
+ /** The node the run resumed from, when the decision resumed it. */
18406
+ resumedFromNodeId?: Maybe<Scalars['String']['output']>;
18407
+ success: Scalars['Boolean']['output'];
18408
+ };
18273
18409
  /** Returned when explicitly decrypting a secret value. */
18274
18410
  export type DecryptedSecret = {
18275
18411
  __typename?: 'DecryptedSecret';
@@ -18320,6 +18456,7 @@ export type DeliveryJobFilterInput = {
18320
18456
  customerId?: InputMaybe<Scalars['ID']['input']>;
18321
18457
  driverId?: InputMaybe<Scalars['ID']['input']>;
18322
18458
  priority?: InputMaybe<DeliveryPriority>;
18459
+ routeId?: InputMaybe<Scalars['ID']['input']>;
18323
18460
  search?: InputMaybe<Scalars['String']['input']>;
18324
18461
  status?: InputMaybe<DeliveryJobStatus>;
18325
18462
  storeOrderId?: InputMaybe<Scalars['ID']['input']>;
@@ -19961,6 +20098,26 @@ export type EnvVarInput = {
19961
20098
  name: Scalars['String']['input'];
19962
20099
  value: Scalars['String']['input'];
19963
20100
  };
20101
+ /** Error analytics for the caller's workspace over a time window (BOFF-7519). */
20102
+ export type ErrorAnalytics = {
20103
+ __typename?: 'ErrorAnalytics';
20104
+ errorsByType: Array<ErrorTypeBreakdown>;
20105
+ /** Worst-first, capped at `input.limit` (default 10). */
20106
+ topFailingNodes: Array<FailingNodeStat>;
20107
+ /** Worst-first, capped at `input.limit` (default 10). */
20108
+ topFailingWorkflows: Array<FailingWorkflowStat>;
20109
+ totalErrors: Scalars['Int']['output'];
20110
+ /** Daily error counts across the queried window, oldest first. Every day in the window is present (zero-filled), so the frontend can chart it without gap-filling itself. */
20111
+ trend: Array<ErrorTrendPoint>;
20112
+ };
20113
+ export type ErrorAnalyticsInput = {
20114
+ /** Defaults to now. */
20115
+ endDate?: InputMaybe<Scalars['DateTime']['input']>;
20116
+ /** Caps topFailingWorkflows/topFailingNodes. Default 10, clamped to 50. */
20117
+ limit?: InputMaybe<Scalars['Int']['input']>;
20118
+ /** Defaults to 30 days before `endDate` (or now, if endDate is also omitted). */
20119
+ startDate?: InputMaybe<Scalars['DateTime']['input']>;
20120
+ };
19964
20121
  export type ErrorLogEntry = {
19965
20122
  __typename?: 'ErrorLogEntry';
19966
20123
  errorMessage: Scalars['String']['output'];
@@ -19972,6 +20129,12 @@ export type ErrorLogEntry = {
19972
20129
  timestamp: Scalars['DateTime']['output'];
19973
20130
  userId?: Maybe<Scalars['String']['output']>;
19974
20131
  };
20132
+ /** One day's error count, oldest first, for the Error Analytics trend chart (BOFF-7519). `date` is an ISO 8601 calendar date (YYYY-MM-DD), UTC. */
20133
+ export type ErrorTrendPoint = {
20134
+ __typename?: 'ErrorTrendPoint';
20135
+ count: Scalars['Int']['output'];
20136
+ date: Scalars['String']['output'];
20137
+ };
19975
20138
  export declare enum ErrorType {
19976
20139
  Authorization = "AUTHORIZATION",
19977
20140
  Dependency = "DEPENDENCY",
@@ -19981,6 +20144,12 @@ export declare enum ErrorType {
19981
20144
  Unknown = "UNKNOWN",
19982
20145
  Validation = "VALIDATION"
19983
20146
  }
20147
+ /** Error breakdown by classification, for the Error Analytics screen (BOFF-7519). */
20148
+ export type ErrorTypeBreakdown = {
20149
+ __typename?: 'ErrorTypeBreakdown';
20150
+ count: Scalars['Int']['output'];
20151
+ errorType: ErrorType;
20152
+ };
19984
20153
  export type Event = {
19985
20154
  __typename?: 'Event';
19986
20155
  anonymousId?: Maybe<Scalars['String']['output']>;
@@ -21675,6 +21844,25 @@ export type ExternalSync = {
21675
21844
  /** Associated workspace ID */
21676
21845
  workspaceId: Scalars['String']['output'];
21677
21846
  };
21847
+ /** Per-node failure aggregate for the Error Analytics screen (BOFF-7519). */
21848
+ export type FailingNodeStat = {
21849
+ __typename?: 'FailingNodeStat';
21850
+ failureCount: Scalars['Int']['output'];
21851
+ failureRate: Scalars['Float']['output'];
21852
+ nodeType: Scalars['String']['output'];
21853
+ /** One representative error message from this node's most recent failure, so the screen has something concrete to show without a drill-down. */
21854
+ sampleError?: Maybe<Scalars['String']['output']>;
21855
+ totalExecutions: Scalars['Int']['output'];
21856
+ };
21857
+ /** Per-workflow failure aggregate for the Insights/Error Analytics screens (BOFF-7519). */
21858
+ export type FailingWorkflowStat = {
21859
+ __typename?: 'FailingWorkflowStat';
21860
+ failureCount: Scalars['Int']['output'];
21861
+ failureRate: Scalars['Float']['output'];
21862
+ name?: Maybe<Scalars['String']['output']>;
21863
+ totalRuns: Scalars['Int']['output'];
21864
+ workflowKey: Scalars['String']['output'];
21865
+ };
21678
21866
  export type Farm = {
21679
21867
  __typename?: 'Farm';
21680
21868
  areaUnit: Scalars['String']['output'];
@@ -36374,6 +36562,33 @@ export type ImportValidationWarning = {
36374
36562
  /** Suggested action to resolve */
36375
36563
  suggestion?: Maybe<Scalars['String']['output']>;
36376
36564
  };
36565
+ /** Input for importing a portable workflow export. */
36566
+ export type ImportWorkflowInput = {
36567
+ alias?: InputMaybe<Scalars['String']['input']>;
36568
+ /** Allow an import to be created while reporting missing installed nodes. */
36569
+ allowMissingNodes?: InputMaybe<Scalars['Boolean']['input']>;
36570
+ category?: InputMaybe<Scalars['String']['input']>;
36571
+ context?: InputMaybe<Scalars['JSON']['input']>;
36572
+ /** Raw definition JSON, or the `definitionJson` member of a WorkflowExport. */
36573
+ definitionJson: Scalars['JSON']['input'];
36574
+ description?: InputMaybe<Scalars['String']['input']>;
36575
+ icon?: InputMaybe<Scalars['String']['input']>;
36576
+ name: Scalars['String']['input'];
36577
+ /** Map source node type/version keys to installed node type/version values. */
36578
+ nodeMappings?: InputMaybe<Scalars['JSON']['input']>;
36579
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
36580
+ tagsV2?: InputMaybe<Scalars['JSON']['input']>;
36581
+ version?: InputMaybe<Scalars['String']['input']>;
36582
+ workflowKey?: InputMaybe<Scalars['String']['input']>;
36583
+ };
36584
+ /** Result of importing a portable workflow document. */
36585
+ export type ImportWorkflowResponse = {
36586
+ __typename?: 'ImportWorkflowResponse';
36587
+ message?: Maybe<Scalars['String']['output']>;
36588
+ success: Scalars['Boolean']['output'];
36589
+ validation: WorkflowImportValidation;
36590
+ workflow?: Maybe<WorkflowDefinition>;
36591
+ };
36377
36592
  /** Input for importing a workflow from a store template */
36378
36593
  export type ImportWorkflowTemplateInput = {
36379
36594
  /** Category */
@@ -40048,15 +40263,25 @@ export type ListWorkflowDefinitionsInput = {
40048
40263
  };
40049
40264
  /** Input for listing runs */
40050
40265
  export type ListWorkflowRunsInput = {
40266
+ /** Filter runs whose duration (seconds) is at most this value (BOFF-7519). Runs still in progress never match. */
40267
+ durationMaxSeconds?: InputMaybe<Scalars['Float']['input']>;
40268
+ /** Filter runs whose duration (seconds) is at least this value (BOFF-7519). Runs still in progress never match. */
40269
+ durationMinSeconds?: InputMaybe<Scalars['Float']['input']>;
40051
40270
  /** Filter runs created at-or-before this instant (inclusive). Bound to `createdAt` on WorkflowRun. */
40052
40271
  endDate?: InputMaybe<Scalars['DateTime']['input']>;
40272
+ /** Filter by the run's terminal error classification (BOFF-7519). */
40273
+ errorType?: InputMaybe<ErrorType>;
40053
40274
  limit?: InputMaybe<Scalars['Int']['input']>;
40275
+ /** Filter to runs that executed — in any status — a node with this id (BOFF-7519). */
40276
+ nodeId?: InputMaybe<Scalars['String']['input']>;
40054
40277
  offset?: InputMaybe<Scalars['Int']['input']>;
40055
40278
  /** Free-text filter for the Runs screen's search box. Case-insensitive; matches a run whose id starts with the term, or whose workflow key or workflow name contains it. Blank or whitespace-only is treated as no filter. */
40056
40279
  search?: InputMaybe<Scalars['String']['input']>;
40057
40280
  /** Filter runs created at-or-after this instant (inclusive). Bound to `createdAt` on WorkflowRun. */
40058
40281
  startDate?: InputMaybe<Scalars['DateTime']['input']>;
40059
40282
  status?: InputMaybe<RunStatus>;
40283
+ /** Filter by coarse trigger type (BOFF-7519). */
40284
+ triggerType?: InputMaybe<RunTriggerType>;
40060
40285
  workflowKey?: InputMaybe<Scalars['String']['input']>;
40061
40286
  };
40062
40287
  /** An individual's own raw GPS check-in — self-scoped: every field is authenticated-actor-only, and the resolvers additionally owner-filter every query/mutation by the calling actor's id (see LocationService.getOwnLocationEntryById and friends). Managers get workspace visibility only via the aggregate `locationStats` (no raw coordinates), never via this type. */
@@ -40213,6 +40438,50 @@ export type LogPlantScanToPestIssueInput = {
40213
40438
  /** One of: INSECT | DISEASE | WEED | FUNGUS (case-insensitive). */
40214
40439
  type?: InputMaybe<Scalars['String']['input']>;
40215
40440
  };
40441
+ export type LogStreamDestination = {
40442
+ __typename?: 'LogStreamDestination';
40443
+ /** Provider-specific extras (syslog facility/appName, webhook extra headers, Sentry environment/release tag). */
40444
+ config?: Maybe<Scalars['JSON']['output']>;
40445
+ createdAt: Scalars['DateTime']['output'];
40446
+ createdBy: Scalars['String']['output'];
40447
+ /** WEBHOOK: the URL to POST to. SYSLOG: "host:port" (UDP). SENTRY: the DSN. */
40448
+ endpoint: Scalars['String']['output'];
40449
+ eventFilters: Array<LogStreamEventType>;
40450
+ /** True when a WEBHOOK signing secret is configured. The secret itself is never returned by any query. */
40451
+ hasSecret: Scalars['Boolean']['output'];
40452
+ id: Scalars['ID']['output'];
40453
+ isEnabled: Scalars['Boolean']['output'];
40454
+ lastDispatchError?: Maybe<Scalars['String']['output']>;
40455
+ lastDispatchStatus?: Maybe<Scalars['String']['output']>;
40456
+ lastDispatchedAt?: Maybe<Scalars['DateTime']['output']>;
40457
+ name: Scalars['String']['output'];
40458
+ provider: LogStreamProvider;
40459
+ updatedAt: Scalars['DateTime']['output'];
40460
+ updatedBy?: Maybe<Scalars['String']['output']>;
40461
+ workspaceId: Scalars['ID']['output'];
40462
+ };
40463
+ export type LogStreamDestinationResponse = MutationResponse & {
40464
+ __typename?: 'LogStreamDestinationResponse';
40465
+ destination?: Maybe<LogStreamDestination>;
40466
+ message: Scalars['String']['output'];
40467
+ success: Scalars['Boolean']['output'];
40468
+ };
40469
+ /** Run/node lifecycle events a destination can subscribe to. LOG_ERROR/LOG_WARN forward individual run-log lines at or above that severity; the rest forward a single summary event for the run/node transition. */
40470
+ export declare enum LogStreamEventType {
40471
+ LogError = "LOG_ERROR",
40472
+ LogWarn = "LOG_WARN",
40473
+ NodeFailed = "NODE_FAILED",
40474
+ NodeRetried = "NODE_RETRIED",
40475
+ RunCancelled = "RUN_CANCELLED",
40476
+ RunCompleted = "RUN_COMPLETED",
40477
+ RunFailed = "RUN_FAILED",
40478
+ RunStarted = "RUN_STARTED"
40479
+ }
40480
+ export declare enum LogStreamProvider {
40481
+ Sentry = "SENTRY",
40482
+ Syslog = "SYSLOG",
40483
+ Webhook = "WEBHOOK"
40484
+ }
40216
40485
  export type McpConnection = {
40217
40486
  __typename?: 'MCPConnection';
40218
40487
  config: Scalars['JSON']['output'];
@@ -40365,15 +40634,24 @@ export type ManAsset = {
40365
40634
  __typename?: 'ManAsset';
40366
40635
  assetTag: Scalars['String']['output'];
40367
40636
  createdAt: Scalars['DateTime']['output'];
40637
+ /** Meter (running hours) at the last completed preventive service — the PM baseline. */
40638
+ hoursAtLastService?: Maybe<Scalars['Float']['output']>;
40639
+ /** Running hours since the last completed preventive service (lifetime hours if never serviced). */
40640
+ hoursSinceService: Scalars['Float']['output'];
40368
40641
  id: Scalars['ID']['output'];
40369
40642
  installedAt?: Maybe<Scalars['DateTime']['output']>;
40370
40643
  lastServicedAt?: Maybe<Scalars['DateTime']['output']>;
40371
40644
  manufacturer?: Maybe<Scalars['String']['output']>;
40372
40645
  model?: Maybe<Scalars['String']['output']>;
40373
40646
  name: Scalars['String']['output'];
40647
+ /** Hours until the next preventive service is due; negative once overdue. Null without a PM interval. */
40648
+ pmDueInHours?: Maybe<Scalars['Float']['output']>;
40374
40649
  pmIntervalHours: Scalars['Float']['output'];
40650
+ pmState: ManPmState;
40375
40651
  runningHours: Scalars['Float']['output'];
40376
40652
  serialNumber?: Maybe<Scalars['String']['output']>;
40653
+ /** Immutable preventive-service history, newest first. */
40654
+ serviceHistory: Array<ManAssetServiceRecord>;
40377
40655
  status: ManAssetStatus;
40378
40656
  tags: Array<Scalars['String']['output']>;
40379
40657
  updatedAt: Scalars['DateTime']['output'];
@@ -40389,6 +40667,15 @@ export type ManAssetConnection = {
40389
40667
  items: Array<ManAsset>;
40390
40668
  pageInfo: ManPageInfo;
40391
40669
  };
40670
+ export type ManAssetServiceRecord = {
40671
+ __typename?: 'ManAssetServiceRecord';
40672
+ actorId: Scalars['ID']['output'];
40673
+ id: Scalars['ID']['output'];
40674
+ /** Meter at service. Null only for services from before meter readings were captured. */
40675
+ meterReading?: Maybe<Scalars['Float']['output']>;
40676
+ servicedAt: Scalars['DateTime']['output'];
40677
+ workOrderId: Scalars['ID']['output'];
40678
+ };
40392
40679
  export declare enum ManAssetStatus {
40393
40680
  Degraded = "DEGRADED",
40394
40681
  Down = "DOWN",
@@ -40396,6 +40683,13 @@ export declare enum ManAssetStatus {
40396
40683
  Operational = "OPERATIONAL",
40397
40684
  Retired = "RETIRED"
40398
40685
  }
40686
+ export type ManAssignMaterialSerialInput = {
40687
+ /** Record the unit as consumed (default: allocated). */
40688
+ consume?: InputMaybe<Scalars['Boolean']['input']>;
40689
+ operationId?: InputMaybe<Scalars['ID']['input']>;
40690
+ productionOrderId: Scalars['ID']['input'];
40691
+ reason?: InputMaybe<Scalars['String']['input']>;
40692
+ };
40399
40693
  export type ManBillOfMaterial = {
40400
40694
  __typename?: 'ManBillOfMaterial';
40401
40695
  code: Scalars['String']['output'];
@@ -40435,6 +40729,39 @@ export type ManBomLineConnection = {
40435
40729
  items: Array<ManBomLine>;
40436
40730
  pageInfo: ManPageInfo;
40437
40731
  };
40732
+ /** Effectiveness check of an NCR's corrective action. Only EFFECTIVE allows the NCR to close. */
40733
+ export declare enum ManCapaVerificationResult {
40734
+ Effective = "EFFECTIVE",
40735
+ NotEffective = "NOT_EFFECTIVE"
40736
+ }
40737
+ export declare enum ManChecklistItemResult {
40738
+ Fail = "FAIL",
40739
+ Na = "NA",
40740
+ Pass = "PASS"
40741
+ }
40742
+ export type ManChecklistResult = {
40743
+ __typename?: 'ManChecklistResult';
40744
+ item: Scalars['String']['output'];
40745
+ reading?: Maybe<Scalars['String']['output']>;
40746
+ result: ManChecklistItemResult;
40747
+ };
40748
+ export type ManChecklistResultInput = {
40749
+ item: Scalars['String']['input'];
40750
+ reading?: InputMaybe<Scalars['String']['input']>;
40751
+ result: ManChecklistItemResult;
40752
+ };
40753
+ export type ManCompleteMaintenanceWorkOrderInput = {
40754
+ checklistResults?: InputMaybe<Array<ManChecklistResultInput>>;
40755
+ /** What was done and found. Required. */
40756
+ completionNotes: Scalars['String']['input'];
40757
+ /** Actual labor time. Must be greater than zero. */
40758
+ laborMinutes: Scalars['Int']['input'];
40759
+ /** Asset meter (running hours) at completion; cannot go below the last service reading. */
40760
+ meterReading?: InputMaybe<Scalars['Float']['input']>;
40761
+ partsUsed?: InputMaybe<Array<ManPartUsedInput>>;
40762
+ /** Accountable technician. Defaults to the assigned technician; one is required. */
40763
+ technicianId?: InputMaybe<Scalars['ID']['input']>;
40764
+ };
40438
40765
  export type ManControlChartInput = {
40439
40766
  /** Required for XBAR_R / INDIVIDUAL_MR (the characteristic name as recorded in `measurements`). Ignored for P_CHART/C_CHART. */
40440
40767
  characteristic?: InputMaybe<Scalars['String']['input']>;
@@ -40538,6 +40865,7 @@ export type ManCreateInventoryItemInput = {
40538
40865
  reorderPoint?: InputMaybe<Scalars['Float']['input']>;
40539
40866
  sku: Scalars['String']['input'];
40540
40867
  standardCost?: InputMaybe<Scalars['Float']['input']>;
40868
+ trackingMode?: InputMaybe<ManTrackingMode>;
40541
40869
  uom?: InputMaybe<Scalars['String']['input']>;
40542
40870
  };
40543
40871
  export type ManCreateMaintenanceWorkOrderInput = {
@@ -40558,13 +40886,18 @@ export type ManCreateMaterialLotInput = {
40558
40886
  productionOrderId?: InputMaybe<Scalars['ID']['input']>;
40559
40887
  quantity?: InputMaybe<Scalars['Float']['input']>;
40560
40888
  receivedAt?: InputMaybe<Scalars['DateTime']['input']>;
40889
+ /** Units received, for a serial-controlled SKU (required then; refused for any other SKU). The lot quantity becomes the number of serials registered. */
40890
+ serials?: InputMaybe<ManSerialEntryInput>;
40561
40891
  supplier?: InputMaybe<Scalars['String']['input']>;
40562
40892
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
40563
40893
  uom?: InputMaybe<Scalars['String']['input']>;
40564
40894
  };
40565
40895
  export type ManCreateOperationInput = {
40896
+ /** Client-generated key (e.g. one UUID per form submission). A retried request with the same key returns the operation already created instead of adding a duplicate. */
40897
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
40566
40898
  name: Scalars['String']['input'];
40567
40899
  productionOrderId: Scalars['ID']['input'];
40900
+ /** Defaults to the next free step (highest sequence in use + 10). */
40568
40901
  sequence?: InputMaybe<Scalars['Int']['input']>;
40569
40902
  workCenterId?: InputMaybe<Scalars['ID']['input']>;
40570
40903
  };
@@ -40599,6 +40932,8 @@ export type ManDowntimeEvent = {
40599
40932
  durationMinutes: Scalars['Int']['output'];
40600
40933
  endedAt?: Maybe<Scalars['DateTime']['output']>;
40601
40934
  id: Scalars['ID']['output'];
40935
+ /** Maintenance work order that caused or resolved this downtime. */
40936
+ maintenanceWorkOrderId?: Maybe<Scalars['ID']['output']>;
40602
40937
  productionOrderId?: Maybe<Scalars['ID']['output']>;
40603
40938
  reason: ManDowntimeReason;
40604
40939
  startedAt: Scalars['DateTime']['output'];
@@ -40722,6 +41057,11 @@ export declare enum ManInspectionStage {
40722
41057
  Incoming = "INCOMING",
40723
41058
  InProcess = "IN_PROCESS"
40724
41059
  }
41060
+ export type ManInvalidSerial = {
41061
+ __typename?: 'ManInvalidSerial';
41062
+ reason: Scalars['String']['output'];
41063
+ value: Scalars['String']['output'];
41064
+ };
40725
41065
  export type ManInventoryItem = {
40726
41066
  __typename?: 'ManInventoryItem';
40727
41067
  createdAt: Scalars['DateTime']['output'];
@@ -40735,6 +41075,8 @@ export type ManInventoryItem = {
40735
41075
  reorderPoint: Scalars['Float']['output'];
40736
41076
  sku: Scalars['String']['output'];
40737
41077
  standardCost: Scalars['Float']['output'];
41078
+ /** How received units are identified. SERIAL makes every receipt register one unique serial per unit; a change applies to future receipts (each lot keeps the mode it was received under). */
41079
+ trackingMode: ManTrackingMode;
40738
41080
  uom: Scalars['String']['output'];
40739
41081
  updatedAt: Scalars['DateTime']['output'];
40740
41082
  workspaceId: Scalars['ID']['output'];
@@ -40777,6 +41119,14 @@ export declare enum ManLegalCheckpointType {
40777
41119
  /** Acceptance of the workspace tenant Data Processing Addendum. */
40778
41120
  TenantDpaAccept = "TENANT_DPA_ACCEPT"
40779
41121
  }
41122
+ export type ManLinkLotToOrderInput = {
41123
+ /** Operation on the order that consumed / produced the material. */
41124
+ operationId?: InputMaybe<Scalars['ID']['input']>;
41125
+ productionOrderId: Scalars['ID']['input'];
41126
+ quantity: Scalars['Float']['input'];
41127
+ reason?: InputMaybe<Scalars['String']['input']>;
41128
+ role: ManMaterialLinkRole;
41129
+ };
40780
41130
  export type ManMachineTagReading = {
40781
41131
  __typename?: 'ManMachineTagReading';
40782
41132
  createdAt: Scalars['DateTime']['output'];
@@ -40816,12 +41166,23 @@ export type ManMaintenanceWorkOrder = {
40816
41166
  __typename?: 'ManMaintenanceWorkOrder';
40817
41167
  asset?: Maybe<ManAsset>;
40818
41168
  assetId: Scalars['ID']['output'];
41169
+ checklistResults: Array<ManChecklistResult>;
40819
41170
  completedAt?: Maybe<Scalars['DateTime']['output']>;
41171
+ /** Actor who recorded the completion. */
41172
+ completedBy?: Maybe<Scalars['ID']['output']>;
41173
+ completionNotes?: Maybe<Scalars['String']['output']>;
40820
41174
  createdAt: Scalars['DateTime']['output'];
40821
41175
  description?: Maybe<Scalars['String']['output']>;
41176
+ /** Downtime events recorded against this work order. */
41177
+ downtimeEvents: Array<ManDowntimeEvent>;
41178
+ /** Sum of the downtime events linked to this work order (the single source of downtime). */
40822
41179
  downtimeMinutes: Scalars['Int']['output'];
41180
+ /** Immutable history: creation, every status change, completion evidence. */
41181
+ history: Array<ManMaintenanceWorkOrderEvent>;
40823
41182
  id: Scalars['ID']['output'];
40824
41183
  laborMinutes: Scalars['Int']['output'];
41184
+ meterReadingAtCompletion?: Maybe<Scalars['Float']['output']>;
41185
+ partsUsed: Array<ManPartUsed>;
40825
41186
  scheduledFor?: Maybe<Scalars['DateTime']['output']>;
40826
41187
  startedAt?: Maybe<Scalars['DateTime']['output']>;
40827
41188
  status: ManMaintenanceStatus;
@@ -40837,23 +41198,73 @@ export type ManMaintenanceWorkOrderConnection = {
40837
41198
  items: Array<ManMaintenanceWorkOrder>;
40838
41199
  pageInfo: ManPageInfo;
40839
41200
  };
41201
+ export type ManMaintenanceWorkOrderEvent = {
41202
+ __typename?: 'ManMaintenanceWorkOrderEvent';
41203
+ actorId: Scalars['ID']['output'];
41204
+ /** Completion evidence snapshot for COMPLETED. */
41205
+ changes?: Maybe<Scalars['JSON']['output']>;
41206
+ eventType: ManMaintenanceWorkOrderEventType;
41207
+ fromStatus?: Maybe<ManMaintenanceStatus>;
41208
+ id: Scalars['ID']['output'];
41209
+ occurredAt: Scalars['DateTime']['output'];
41210
+ toStatus?: Maybe<ManMaintenanceStatus>;
41211
+ };
41212
+ export declare enum ManMaintenanceWorkOrderEventType {
41213
+ Completed = "COMPLETED",
41214
+ Created = "CREATED",
41215
+ StatusChanged = "STATUS_CHANGED"
41216
+ }
41217
+ /** How a lot relates to a production order. */
41218
+ export declare enum ManMaterialLinkRole {
41219
+ ByProduct = "BY_PRODUCT",
41220
+ /** Consumed by the order. */
41221
+ Input = "INPUT",
41222
+ /** Produced by the order. */
41223
+ Output = "OUTPUT",
41224
+ /** Returned to stock from the order. */
41225
+ Returned = "RETURNED"
41226
+ }
40840
41227
  export type ManMaterialLot = {
40841
41228
  __typename?: 'ManMaterialLot';
40842
41229
  childLots: ManMaterialLotConnection;
40843
41230
  createdAt: Scalars['DateTime']['output'];
40844
41231
  expiresAt?: Maybe<Scalars['DateTime']['output']>;
40845
- id: Scalars['ID']['output'];
41232
+ /** Immutable status and disposition history, oldest first. */
41233
+ history: Array<ManMaterialLotEvent>;
41234
+ /** Inspection that put the lot on hold, when the quarantine came from one. */
41235
+ holdInspectionId?: Maybe<Scalars['ID']['output']>;
41236
+ /** NCR that put the lot on hold, when the quarantine came from one. */
41237
+ holdNonConformanceId?: Maybe<Scalars['ID']['output']>;
41238
+ id: Scalars['ID']['output'];
41239
+ /** True once expiresAt has passed — expired lots cannot be allocated or consumed. */
41240
+ isExpired: Scalars['Boolean']['output'];
40846
41241
  lotNumber: Scalars['String']['output'];
40847
41242
  materialName: Scalars['String']['output'];
40848
41243
  materialSku: Scalars['String']['output'];
41244
+ /** NCRs linked to this material lot. */
41245
+ nonConformances: Array<ManNonConformance>;
41246
+ /** Every order link — active and reversed — with role, quantity and operation. */
41247
+ orderLinks: Array<ManMaterialLotOrderLink>;
40849
41248
  parentLot?: Maybe<ManMaterialLot>;
40850
41249
  parentLotId?: Maybe<Scalars['ID']['output']>;
41250
+ /** The lot's primary consuming order (legacy single link), resolved for display. */
41251
+ productionOrder?: Maybe<ManProductionOrder>;
40851
41252
  productionOrderId?: Maybe<Scalars['ID']['output']>;
40852
41253
  quantity: Scalars['Float']['output'];
40853
41254
  receivedAt?: Maybe<Scalars['DateTime']['output']>;
41255
+ /** Unit count per status for a serial-controlled lot. */
41256
+ serialCounts: Array<ManSerialStatusCount>;
41257
+ /** Units in a serial-controlled lot (empty for other lots). */
41258
+ serials: ManMaterialSerialConnection;
40854
41259
  status: ManMaterialLotStatus;
41260
+ /** Every other status, each marked allowed or blocked with the reason. A quarantined lot offers none here: it leaves quarantine only through manReleaseMaterialLot. */
41261
+ statusOptions: Array<ManMaterialLotStatusOption>;
41262
+ /** Reason recorded with the most recent status change (quarantine, release, scrap). */
41263
+ statusReason?: Maybe<Scalars['String']['output']>;
40855
41264
  supplier?: Maybe<Scalars['String']['output']>;
40856
41265
  tags: Array<Scalars['String']['output']>;
41266
+ /** Tracking mode of the SKU when the lot was received. SERIAL lots hold uniquely identified units. */
41267
+ trackingMode: ManTrackingMode;
40857
41268
  uom: Scalars['String']['output'];
40858
41269
  updatedAt: Scalars['DateTime']['output'];
40859
41270
  workspaceId: Scalars['ID']['output'];
@@ -40861,11 +41272,68 @@ export type ManMaterialLot = {
40861
41272
  export type ManMaterialLotChildLotsArgs = {
40862
41273
  pagination?: InputMaybe<PaginationInput>;
40863
41274
  };
41275
+ export type ManMaterialLotSerialsArgs = {
41276
+ pagination?: InputMaybe<PaginationInput>;
41277
+ search?: InputMaybe<Scalars['String']['input']>;
41278
+ status?: InputMaybe<ManMaterialLotStatus>;
41279
+ };
40864
41280
  export type ManMaterialLotConnection = {
40865
41281
  __typename?: 'ManMaterialLotConnection';
40866
41282
  items: Array<ManMaterialLot>;
40867
41283
  pageInfo: ManPageInfo;
40868
41284
  };
41285
+ export type ManMaterialLotEvent = {
41286
+ __typename?: 'ManMaterialLotEvent';
41287
+ actorId: Scalars['ID']['output'];
41288
+ /** Field diff for UPDATED ({ field: { from, to } }). */
41289
+ changes?: Maybe<Scalars['JSON']['output']>;
41290
+ eventType: ManMaterialLotEventType;
41291
+ fromStatus?: Maybe<ManMaterialLotStatus>;
41292
+ id: Scalars['ID']['output'];
41293
+ inspectionId?: Maybe<Scalars['ID']['output']>;
41294
+ nonConformanceId?: Maybe<Scalars['ID']['output']>;
41295
+ occurredAt: Scalars['DateTime']['output'];
41296
+ productionOrderId?: Maybe<Scalars['ID']['output']>;
41297
+ reason?: Maybe<Scalars['String']['output']>;
41298
+ toStatus?: Maybe<ManMaterialLotStatus>;
41299
+ };
41300
+ /** Kind of immutable material-lot history event. */
41301
+ export declare enum ManMaterialLotEventType {
41302
+ Created = "CREATED",
41303
+ Dispositioned = "DISPOSITIONED",
41304
+ Linked = "LINKED",
41305
+ LinkReversed = "LINK_REVERSED",
41306
+ Quarantined = "QUARANTINED",
41307
+ Released = "RELEASED",
41308
+ StatusChanged = "STATUS_CHANGED",
41309
+ Updated = "UPDATED"
41310
+ }
41311
+ export type ManMaterialLotOrderLink = {
41312
+ __typename?: 'ManMaterialLotOrderLink';
41313
+ createdAt: Scalars['DateTime']['output'];
41314
+ createdBy: Scalars['ID']['output'];
41315
+ id: Scalars['ID']['output'];
41316
+ materialLot?: Maybe<ManMaterialLot>;
41317
+ materialLotId: Scalars['ID']['output'];
41318
+ operation?: Maybe<ManProductionOperation>;
41319
+ operationId?: Maybe<Scalars['ID']['output']>;
41320
+ productionOrder?: Maybe<ManProductionOrder>;
41321
+ productionOrderId: Scalars['ID']['output'];
41322
+ quantity: Scalars['Float']['output'];
41323
+ reason?: Maybe<Scalars['String']['output']>;
41324
+ reversalReason?: Maybe<Scalars['String']['output']>;
41325
+ /** Set when the link was reversed (corrections reverse + re-link; nothing is edited). */
41326
+ reversedAt?: Maybe<Scalars['DateTime']['output']>;
41327
+ reversedBy?: Maybe<Scalars['ID']['output']>;
41328
+ role: ManMaterialLinkRole;
41329
+ };
41330
+ /** Outcome of a quarantine review. */
41331
+ export declare enum ManMaterialLotReleaseDecision {
41332
+ /** Return the lot to AVAILABLE. */
41333
+ Release = "RELEASE",
41334
+ /** Disposition the lot as SCRAPPED. */
41335
+ Scrap = "SCRAP"
41336
+ }
40869
41337
  export declare enum ManMaterialLotStatus {
40870
41338
  Allocated = "ALLOCATED",
40871
41339
  Available = "AVAILABLE",
@@ -40873,6 +41341,15 @@ export declare enum ManMaterialLotStatus {
40873
41341
  Quarantined = "QUARANTINED",
40874
41342
  Scrapped = "SCRAPPED"
40875
41343
  }
41344
+ export type ManMaterialLotStatusOption = {
41345
+ __typename?: 'ManMaterialLotStatusOption';
41346
+ allowed: Scalars['Boolean']['output'];
41347
+ /** Why the move is blocked. Null when allowed. */
41348
+ reason?: Maybe<Scalars['String']['output']>;
41349
+ /** The move must carry a reason (quarantine, scrap). */
41350
+ requiresReason: Scalars['Boolean']['output'];
41351
+ status: ManMaterialLotStatus;
41352
+ };
40876
41353
  /** One line of a persisted material-requirements-planning run for a production order: real quantity required (BOM-exploded), real quantity on hand (netted from ManMaterialLot AVAILABLE quantity), and the resulting shortage. */
40877
41354
  export type ManMaterialRequirement = {
40878
41355
  __typename?: 'ManMaterialRequirement';
@@ -40888,26 +41365,112 @@ export type ManMaterialRequirement = {
40888
41365
  uom: Scalars['String']['output'];
40889
41366
  workspaceId: Scalars['ID']['output'];
40890
41367
  };
41368
+ export type ManMaterialSerial = {
41369
+ __typename?: 'ManMaterialSerial';
41370
+ createdAt: Scalars['DateTime']['output'];
41371
+ createdBy: Scalars['ID']['output'];
41372
+ /** The unit is held because its whole lot is quarantined (released with the lot). */
41373
+ heldByLot: Scalars['Boolean']['output'];
41374
+ /** Immutable per-unit history, oldest first. */
41375
+ history: Array<ManMaterialSerialEvent>;
41376
+ /** NCR behind the unit's quarantine, when it came from one. */
41377
+ holdNonConformanceId?: Maybe<Scalars['ID']['output']>;
41378
+ id: Scalars['ID']['output'];
41379
+ /** True once the unit's lot has expired — expired units cannot be allocated or consumed. */
41380
+ isExpired: Scalars['Boolean']['output'];
41381
+ materialLot?: Maybe<ManMaterialLot>;
41382
+ materialLotId: Scalars['ID']['output'];
41383
+ materialSku: Scalars['String']['output'];
41384
+ operation?: Maybe<ManProductionOperation>;
41385
+ operationId?: Maybe<Scalars['ID']['output']>;
41386
+ productionOrder?: Maybe<ManProductionOrder>;
41387
+ /** Order the unit is allocated to or was consumed by. */
41388
+ productionOrderId?: Maybe<Scalars['ID']['output']>;
41389
+ serialNumber: Scalars['String']['output'];
41390
+ status: ManMaterialLotStatus;
41391
+ /** Every other status, each marked allowed or blocked with the reason. QUARANTINED and SCRAPPED go through manSetMaterialSerialStatus, ALLOCATED and CONSUMED through manAssignMaterialSerial, AVAILABLE (from ALLOCATED) through manUnassignMaterialSerial. */
41392
+ statusOptions: Array<ManMaterialLotStatusOption>;
41393
+ /** Reason recorded with the most recent change. */
41394
+ statusReason?: Maybe<Scalars['String']['output']>;
41395
+ updatedAt: Scalars['DateTime']['output'];
41396
+ workspaceId: Scalars['ID']['output'];
41397
+ };
41398
+ export type ManMaterialSerialConnection = {
41399
+ __typename?: 'ManMaterialSerialConnection';
41400
+ items: Array<ManMaterialSerial>;
41401
+ pageInfo: ManPageInfo;
41402
+ };
41403
+ export type ManMaterialSerialEvent = {
41404
+ __typename?: 'ManMaterialSerialEvent';
41405
+ actorId: Scalars['ID']['output'];
41406
+ eventType: ManMaterialSerialEventType;
41407
+ fromStatus?: Maybe<ManMaterialLotStatus>;
41408
+ id: Scalars['ID']['output'];
41409
+ nonConformanceId?: Maybe<Scalars['ID']['output']>;
41410
+ occurredAt: Scalars['DateTime']['output'];
41411
+ operationId?: Maybe<Scalars['ID']['output']>;
41412
+ productionOrderId?: Maybe<Scalars['ID']['output']>;
41413
+ reason?: Maybe<Scalars['String']['output']>;
41414
+ toStatus?: Maybe<ManMaterialLotStatus>;
41415
+ };
41416
+ /** Kind of immutable per-unit history event. */
41417
+ export declare enum ManMaterialSerialEventType {
41418
+ /** Allocated to / consumed by a production order. */
41419
+ Assigned = "ASSIGNED",
41420
+ Dispositioned = "DISPOSITIONED",
41421
+ Quarantined = "QUARANTINED",
41422
+ Received = "RECEIVED",
41423
+ Released = "RELEASED",
41424
+ StatusChanged = "STATUS_CHANGED",
41425
+ /** Order allocation removed (unassigned, or cleared by a hold). */
41426
+ Unassigned = "UNASSIGNED"
41427
+ }
41428
+ export type ManMaterialSerialFilterInput = {
41429
+ materialLotId?: InputMaybe<Scalars['ID']['input']>;
41430
+ materialSku?: InputMaybe<Scalars['String']['input']>;
41431
+ productionOrderId?: InputMaybe<Scalars['ID']['input']>;
41432
+ /** Case-insensitive part of the serial number. */
41433
+ search?: InputMaybe<Scalars['String']['input']>;
41434
+ status?: InputMaybe<ManMaterialLotStatus>;
41435
+ };
40891
41436
  export type ManNonConformance = {
40892
41437
  __typename?: 'ManNonConformance';
41438
+ /** Immediate containment performed (quarantine, sort, hold). */
41439
+ containmentAction?: Maybe<Scalars['String']['output']>;
40893
41440
  correctiveAction?: Maybe<Scalars['String']['output']>;
40894
41441
  createdAt: Scalars['DateTime']['output'];
41442
+ createdBy: Scalars['ID']['output'];
40895
41443
  description?: Maybe<Scalars['String']['output']>;
40896
41444
  disposition: ManNonConformanceDisposition;
41445
+ /** Why the chosen disposition is acceptable. */
41446
+ dispositionJustification?: Maybe<Scalars['String']['output']>;
40897
41447
  dueDate?: Maybe<Scalars['DateTime']['output']>;
41448
+ /** Immutable audit trail, oldest first. */
41449
+ history: Array<ManNonConformanceEvent>;
40898
41450
  id: Scalars['ID']['output'];
40899
41451
  inspection?: Maybe<ManQualityInspection>;
40900
41452
  inspectionId?: Maybe<Scalars['ID']['output']>;
41453
+ /** Active affected-entity links. */
41454
+ links: Array<ManNonConformanceLink>;
40901
41455
  ncrNumber: Scalars['String']['output'];
41456
+ /** Legal next statuses, each with the evidence still missing before the move is accepted. Empty for a CLOSED NCR (use manReopenNonConformance). */
41457
+ nextTransitions: Array<ManNonConformanceTransitionOption>;
40902
41458
  ownerId?: Maybe<Scalars['ID']['output']>;
40903
41459
  quantityAffected: Scalars['Float']['output'];
40904
41460
  resolvedAt?: Maybe<Scalars['DateTime']['output']>;
40905
41461
  rootCause?: Maybe<Scalars['String']['output']>;
40906
41462
  severity: ManSeverity;
41463
+ /** Why the NCR is not tied to an order, operation, lot or inspection. */
41464
+ standaloneReason?: Maybe<Scalars['String']['output']>;
40907
41465
  status: ManNonConformanceStatus;
40908
41466
  tags: Array<Scalars['String']['output']>;
40909
41467
  title: Scalars['String']['output'];
40910
41468
  updatedAt: Scalars['DateTime']['output'];
41469
+ verificationNotes?: Maybe<Scalars['String']['output']>;
41470
+ verificationResult?: Maybe<ManCapaVerificationResult>;
41471
+ verifiedAt?: Maybe<Scalars['DateTime']['output']>;
41472
+ /** Actor who recorded the verification. */
41473
+ verifiedBy?: Maybe<Scalars['ID']['output']>;
40911
41474
  workspaceId: Scalars['ID']['output'];
40912
41475
  };
40913
41476
  export type ManNonConformanceConnection = {
@@ -40922,6 +41485,49 @@ export declare enum ManNonConformanceDisposition {
40922
41485
  Scrap = "SCRAP",
40923
41486
  UseAsIs = "USE_AS_IS"
40924
41487
  }
41488
+ export type ManNonConformanceEvent = {
41489
+ __typename?: 'ManNonConformanceEvent';
41490
+ actorId: Scalars['ID']['output'];
41491
+ /** Field diff for UPDATED ({ field: { from, to } }); the link for LINK_ADDED / LINK_REMOVED. */
41492
+ changes?: Maybe<Scalars['JSON']['output']>;
41493
+ comment?: Maybe<Scalars['String']['output']>;
41494
+ eventType: ManNonConformanceEventType;
41495
+ fromStatus?: Maybe<ManNonConformanceStatus>;
41496
+ id: Scalars['ID']['output'];
41497
+ occurredAt: Scalars['DateTime']['output'];
41498
+ toStatus?: Maybe<ManNonConformanceStatus>;
41499
+ };
41500
+ /** Kind of immutable NCR audit event. */
41501
+ export declare enum ManNonConformanceEventType {
41502
+ Created = "CREATED",
41503
+ LinkAdded = "LINK_ADDED",
41504
+ LinkRemoved = "LINK_REMOVED",
41505
+ Reopened = "REOPENED",
41506
+ StatusChanged = "STATUS_CHANGED",
41507
+ Updated = "UPDATED",
41508
+ Verified = "VERIFIED"
41509
+ }
41510
+ export type ManNonConformanceLink = {
41511
+ __typename?: 'ManNonConformanceLink';
41512
+ createdAt: Scalars['DateTime']['output'];
41513
+ createdBy: Scalars['ID']['output'];
41514
+ entityId: Scalars['ID']['output'];
41515
+ entityType: ManNonConformanceLinkType;
41516
+ id: Scalars['ID']['output'];
41517
+ materialLot?: Maybe<ManMaterialLot>;
41518
+ operation?: Maybe<ManProductionOperation>;
41519
+ productionOrder?: Maybe<ManProductionOrder>;
41520
+ };
41521
+ export type ManNonConformanceLinkInput = {
41522
+ entityId: Scalars['ID']['input'];
41523
+ entityType: ManNonConformanceLinkType;
41524
+ };
41525
+ /** Entity an NCR can be linked to. Inspections link through ManNonConformance.inspectionId. */
41526
+ export declare enum ManNonConformanceLinkType {
41527
+ MaterialLot = "MATERIAL_LOT",
41528
+ Operation = "OPERATION",
41529
+ ProductionOrder = "PRODUCTION_ORDER"
41530
+ }
40925
41531
  export declare enum ManNonConformanceStatus {
40926
41532
  Closed = "CLOSED",
40927
41533
  Contained = "CONTAINED",
@@ -40929,6 +41535,12 @@ export declare enum ManNonConformanceStatus {
40929
41535
  Investigating = "INVESTIGATING",
40930
41536
  Open = "OPEN"
40931
41537
  }
41538
+ export type ManNonConformanceTransitionOption = {
41539
+ __typename?: 'ManNonConformanceTransitionOption';
41540
+ /** Field names that must be recorded first. Empty means the move is allowed. */
41541
+ missingFields: Array<Scalars['String']['output']>;
41542
+ status: ManNonConformanceStatus;
41543
+ };
40932
41544
  export declare enum ManOperationStatus {
40933
41545
  Done = "DONE",
40934
41546
  Pending = "PENDING",
@@ -40968,13 +41580,38 @@ export type ManPageInfo = {
40968
41580
  cursor?: Maybe<Scalars['String']['output']>;
40969
41581
  hasMore: Scalars['Boolean']['output'];
40970
41582
  };
41583
+ export type ManPartUsed = {
41584
+ __typename?: 'ManPartUsed';
41585
+ description?: Maybe<Scalars['String']['output']>;
41586
+ lotNumber?: Maybe<Scalars['String']['output']>;
41587
+ partNumber: Scalars['String']['output'];
41588
+ quantity: Scalars['Float']['output'];
41589
+ serialNumber?: Maybe<Scalars['String']['output']>;
41590
+ };
41591
+ export type ManPartUsedInput = {
41592
+ description?: InputMaybe<Scalars['String']['input']>;
41593
+ lotNumber?: InputMaybe<Scalars['String']['input']>;
41594
+ partNumber: Scalars['String']['input'];
41595
+ quantity: Scalars['Float']['input'];
41596
+ serialNumber?: InputMaybe<Scalars['String']['input']>;
41597
+ };
41598
+ export declare enum ManPmState {
41599
+ DueSoon = "DUE_SOON",
41600
+ NotScheduled = "NOT_SCHEDULED",
41601
+ Ok = "OK",
41602
+ Overdue = "OVERDUE"
41603
+ }
40971
41604
  export type ManProductionOperation = {
40972
41605
  __typename?: 'ManProductionOperation';
41606
+ /** True while the step is PENDING and unstarted — only then can it be edited or removed. */
41607
+ canEditRouting: Scalars['Boolean']['output'];
40973
41608
  completedAt?: Maybe<Scalars['DateTime']['output']>;
40974
41609
  createdAt: Scalars['DateTime']['output'];
40975
41610
  goodCount: Scalars['Float']['output'];
40976
41611
  id: Scalars['ID']['output'];
40977
41612
  name: Scalars['String']['output'];
41613
+ /** NCRs linked to this operation. */
41614
+ nonConformances: Array<ManNonConformance>;
40978
41615
  operatorId?: Maybe<Scalars['ID']['output']>;
40979
41616
  plannedEnd?: Maybe<Scalars['DateTime']['output']>;
40980
41617
  /** Finite-capacity schedule output (BOFF-4287) — set by manScheduleProductionOrders. Null until a schedule run has placed this operation. */
@@ -41004,7 +41641,11 @@ export type ManProductionOrder = {
41004
41641
  dueDate?: Maybe<Scalars['DateTime']['output']>;
41005
41642
  erpReference?: Maybe<Scalars['String']['output']>;
41006
41643
  id: Scalars['ID']['output'];
41644
+ /** Material linked to this order (consumed, produced, by-product, returned), active and reversed. */
41645
+ materialLinks: Array<ManMaterialLotOrderLink>;
41007
41646
  materialLots: ManMaterialLotConnection;
41647
+ /** NCRs linked to this production order. */
41648
+ nonConformances: Array<ManNonConformance>;
41008
41649
  notes?: Maybe<Scalars['String']['output']>;
41009
41650
  operations: ManProductionOperationConnection;
41010
41651
  orderNumber: Scalars['String']['output'];
@@ -41015,6 +41656,10 @@ export type ManProductionOrder = {
41015
41656
  productSku: Scalars['String']['output'];
41016
41657
  quantity: Scalars['Float']['output'];
41017
41658
  quantityDone: Scalars['Float']['output'];
41659
+ /** Immutable routing-change history (operations added, edited, removed), oldest first. */
41660
+ routingHistory: Array<ManRoutingEvent>;
41661
+ /** Serial-controlled units allocated to or consumed by this order. */
41662
+ serials: ManMaterialSerialConnection;
41018
41663
  status: ManProductionOrderStatus;
41019
41664
  tags: Array<Scalars['String']['output']>;
41020
41665
  uom: Scalars['String']['output'];
@@ -41027,6 +41672,9 @@ export type ManProductionOrderMaterialLotsArgs = {
41027
41672
  export type ManProductionOrderOperationsArgs = {
41028
41673
  pagination?: InputMaybe<PaginationInput>;
41029
41674
  };
41675
+ export type ManProductionOrderSerialsArgs = {
41676
+ pagination?: InputMaybe<PaginationInput>;
41677
+ };
41030
41678
  export type ManProductionOrderConnection = {
41031
41679
  __typename?: 'ManProductionOrderConnection';
41032
41680
  items: Array<ManProductionOrder>;
@@ -41077,6 +41725,8 @@ export type ManQualityInspectionConnection = {
41077
41725
  pageInfo: ManPageInfo;
41078
41726
  };
41079
41727
  export type ManRaiseNonConformanceInput = {
41728
+ /** Production orders, operations and material lots the defect affects. At least one affected entity, an inspectionId, or a standaloneReason is required. */
41729
+ affected?: InputMaybe<Array<ManNonConformanceLinkInput>>;
41080
41730
  description?: InputMaybe<Scalars['String']['input']>;
41081
41731
  disposition?: InputMaybe<ManNonConformanceDisposition>;
41082
41732
  dueDate?: InputMaybe<Scalars['DateTime']['input']>;
@@ -41085,14 +41735,17 @@ export type ManRaiseNonConformanceInput = {
41085
41735
  ownerId?: InputMaybe<Scalars['ID']['input']>;
41086
41736
  quantityAffected?: InputMaybe<Scalars['Float']['input']>;
41087
41737
  severity?: InputMaybe<ManSeverity>;
41738
+ standaloneReason?: InputMaybe<Scalars['String']['input']>;
41088
41739
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
41089
41740
  title: Scalars['String']['input'];
41090
41741
  };
41091
41742
  export type ManRecordDowntimeInput = {
41743
+ /** Optional when maintenanceWorkOrderId is given (the work order's asset is used); must match it otherwise. */
41092
41744
  assetId?: InputMaybe<Scalars['ID']['input']>;
41093
41745
  description?: InputMaybe<Scalars['String']['input']>;
41094
41746
  durationMinutes?: InputMaybe<Scalars['Int']['input']>;
41095
41747
  endedAt?: InputMaybe<Scalars['DateTime']['input']>;
41748
+ maintenanceWorkOrderId?: InputMaybe<Scalars['ID']['input']>;
41096
41749
  productionOrderId?: InputMaybe<Scalars['ID']['input']>;
41097
41750
  reason?: InputMaybe<ManDowntimeReason>;
41098
41751
  startedAt: Scalars['DateTime']['input'];
@@ -41132,6 +41785,29 @@ export type ManRecordOperationInput = {
41132
41785
  setupMinutes?: InputMaybe<Scalars['Int']['input']>;
41133
41786
  status?: InputMaybe<ManOperationStatus>;
41134
41787
  };
41788
+ export type ManReleaseMaterialLotInput = {
41789
+ decision: ManMaterialLotReleaseDecision;
41790
+ /** Why the material is fit for use (or why it is scrapped). Required. */
41791
+ reason: Scalars['String']['input'];
41792
+ };
41793
+ export type ManRoutingEvent = {
41794
+ __typename?: 'ManRoutingEvent';
41795
+ actorId: Scalars['ID']['output'];
41796
+ /** Operation snapshot for ADDED/REMOVED; { field: { from, to } } for CHANGED. */
41797
+ changes?: Maybe<Scalars['JSON']['output']>;
41798
+ eventType: ManRoutingEventType;
41799
+ id: Scalars['ID']['output'];
41800
+ occurredAt: Scalars['DateTime']['output'];
41801
+ operationId: Scalars['ID']['output'];
41802
+ /** Removal reason (REMOVED). */
41803
+ reason?: Maybe<Scalars['String']['output']>;
41804
+ };
41805
+ /** Kind of immutable routing-change event. */
41806
+ export declare enum ManRoutingEventType {
41807
+ Added = "ADDED",
41808
+ Changed = "CHANGED",
41809
+ Removed = "REMOVED"
41810
+ }
41135
41811
  export type ManScheduleProductionOrdersInput = {
41136
41812
  /** Scheduling horizon in days from today. Default 30, max 90. */
41137
41813
  horizonDays?: InputMaybe<Scalars['Int']['input']>;
@@ -41154,6 +41830,56 @@ export type ManScheduledOperation = {
41154
41830
  productionOrderId: Scalars['ID']['output'];
41155
41831
  workCenterId: Scalars['ID']['output'];
41156
41832
  };
41833
+ /** Units for one receipt — any mix of single values, a range, and pasted/imported text (split on lines, commas, semicolons, tabs and spaces). Up to 5000 per request. */
41834
+ export type ManSerialEntryInput = {
41835
+ bulkText?: InputMaybe<Scalars['String']['input']>;
41836
+ range?: InputMaybe<ManSerialRangeInput>;
41837
+ serialNumbers?: InputMaybe<Array<Scalars['String']['input']>>;
41838
+ };
41839
+ /** What a receipt would register, and every problem with it — nothing is written. */
41840
+ export type ManSerialEntryReport = {
41841
+ __typename?: 'ManSerialEntryReport';
41842
+ /** Serials that would be registered (well-formed, unique, not yet registered). */
41843
+ accepted: Array<Scalars['String']['output']>;
41844
+ alreadyRegistered: Array<Scalars['String']['output']>;
41845
+ duplicatesInInput: Array<Scalars['String']['output']>;
41846
+ /** Problems with the entry itself (bad range, over the limit, SKU not serial-controlled). */
41847
+ errors: Array<Scalars['String']['output']>;
41848
+ invalid: Array<ManInvalidSerial>;
41849
+ materialSku: Scalars['String']['output'];
41850
+ /** The whole entry can be registered as entered. */
41851
+ ok: Scalars['Boolean']['output'];
41852
+ /** Distinct, well-formed serials in the entry. */
41853
+ total: Scalars['Int']['output'];
41854
+ trackingMode: ManTrackingMode;
41855
+ };
41856
+ /** A counter range: prefix + zero-padded number + suffix, start..end inclusive. */
41857
+ export type ManSerialRangeInput = {
41858
+ end: Scalars['Int']['input'];
41859
+ /** Minimum digits for the counter (zero-padded). */
41860
+ padding?: InputMaybe<Scalars['Int']['input']>;
41861
+ prefix?: InputMaybe<Scalars['String']['input']>;
41862
+ start: Scalars['Int']['input'];
41863
+ suffix?: InputMaybe<Scalars['String']['input']>;
41864
+ };
41865
+ /** Recall scope for one unit: its lot and everything received with it. */
41866
+ export type ManSerialRecall = {
41867
+ __typename?: 'ManSerialRecall';
41868
+ /** Orders that consumed or hold units from the same lot. */
41869
+ affectedOrders: Array<ManProductionOrder>;
41870
+ lot?: Maybe<ManMaterialLot>;
41871
+ /** Every unit received in the same lot (up to 2000), with status and order. */
41872
+ lotUnits: Array<ManMaterialSerial>;
41873
+ serial: ManMaterialSerial;
41874
+ statusCounts: Array<ManSerialStatusCount>;
41875
+ /** More units exist in the lot than lotUnits lists. */
41876
+ truncated: Scalars['Boolean']['output'];
41877
+ };
41878
+ export type ManSerialStatusCount = {
41879
+ __typename?: 'ManSerialStatusCount';
41880
+ count: Scalars['Int']['output'];
41881
+ status: ManMaterialLotStatus;
41882
+ };
41157
41883
  export declare enum ManSeverity {
41158
41884
  Critical = "CRITICAL",
41159
41885
  Major = "MAJOR",
@@ -41170,6 +41896,15 @@ export declare enum ManTagSource {
41170
41896
  Mqtt = "MQTT",
41171
41897
  OpcUa = "OPC_UA"
41172
41898
  }
41899
+ /** How received units of a material are identified. */
41900
+ export declare enum ManTrackingMode {
41901
+ /** Traced by lot number with an aggregate quantity. */
41902
+ Lot = "LOT",
41903
+ /** Not individually traced. */
41904
+ None = "NONE",
41905
+ /** Every unit carries its own unique serial number. */
41906
+ Serial = "SERIAL"
41907
+ }
41173
41908
  export type ManUnscheduledOperation = {
41174
41909
  __typename?: 'ManUnscheduledOperation';
41175
41910
  operationId: Scalars['ID']['output'];
@@ -41200,6 +41935,7 @@ export type ManUpdateInventoryItemInput = {
41200
41935
  name?: InputMaybe<Scalars['String']['input']>;
41201
41936
  reorderPoint?: InputMaybe<Scalars['Float']['input']>;
41202
41937
  standardCost?: InputMaybe<Scalars['Float']['input']>;
41938
+ trackingMode?: InputMaybe<ManTrackingMode>;
41203
41939
  uom?: InputMaybe<Scalars['String']['input']>;
41204
41940
  };
41205
41941
  /** Partial update of a material lot's descriptive fields. Every field is optional — only the keys actually present in the input are written, so a caller editing just `tags` cannot accidentally blank out `supplier`. Lifecycle status is deliberately excluded: it moves only through `manSetMaterialLotStatus`, which enforces the status enum and keeps the genealogy audit trail on a single code path. */
@@ -41213,17 +41949,25 @@ export type ManUpdateMaterialLotInput = {
41213
41949
  uom?: InputMaybe<Scalars['String']['input']>;
41214
41950
  };
41215
41951
  export type ManUpdateNonConformanceInput = {
41952
+ containmentAction?: InputMaybe<Scalars['String']['input']>;
41216
41953
  correctiveAction?: InputMaybe<Scalars['String']['input']>;
41217
41954
  description?: InputMaybe<Scalars['String']['input']>;
41218
41955
  disposition?: InputMaybe<ManNonConformanceDisposition>;
41956
+ dispositionJustification?: InputMaybe<Scalars['String']['input']>;
41219
41957
  dueDate?: InputMaybe<Scalars['DateTime']['input']>;
41220
41958
  ownerId?: InputMaybe<Scalars['ID']['input']>;
41221
41959
  quantityAffected?: InputMaybe<Scalars['Float']['input']>;
41222
41960
  rootCause?: InputMaybe<Scalars['String']['input']>;
41223
41961
  severity?: InputMaybe<ManSeverity>;
41962
+ standaloneReason?: InputMaybe<Scalars['String']['input']>;
41224
41963
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
41225
41964
  title?: InputMaybe<Scalars['String']['input']>;
41226
41965
  };
41966
+ export type ManUpdateOperationInput = {
41967
+ name?: InputMaybe<Scalars['String']['input']>;
41968
+ sequence?: InputMaybe<Scalars['Int']['input']>;
41969
+ workCenterId?: InputMaybe<Scalars['ID']['input']>;
41970
+ };
41227
41971
  export type ManUpdateProductionOrderInput = {
41228
41972
  dueDate?: InputMaybe<Scalars['DateTime']['input']>;
41229
41973
  erpReference?: InputMaybe<Scalars['String']['input']>;
@@ -41245,6 +41989,11 @@ export type ManUpdateWorkCenterInput = {
41245
41989
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
41246
41990
  type?: InputMaybe<ManWorkCenterType>;
41247
41991
  };
41992
+ export type ManVerifyNonConformanceInput = {
41993
+ /** Required when result is NOT_EFFECTIVE. */
41994
+ notes?: InputMaybe<Scalars['String']['input']>;
41995
+ result: ManCapaVerificationResult;
41996
+ };
41248
41997
  export type ManWorkCenter = {
41249
41998
  __typename?: 'ManWorkCenter';
41250
41999
  capacityHours: Scalars['Float']['output'];
@@ -42181,6 +42930,8 @@ export type MtwDeliveryJob = {
42181
42930
  pickupAddress: Scalars['JSON']['output'];
42182
42931
  pricing?: Maybe<Scalars['JSON']['output']>;
42183
42932
  priority: DeliveryPriority;
42933
+ route?: Maybe<MtwRoute>;
42934
+ routeId?: Maybe<Scalars['ID']['output']>;
42184
42935
  scheduledDelivery?: Maybe<Scalars['DateTime']['output']>;
42185
42936
  shipment?: Maybe<MtwShipment>;
42186
42937
  specialInstructions?: Maybe<Scalars['String']['output']>;
@@ -42279,7 +43030,13 @@ export type MtwDriver = {
42279
43030
  updatedAt: Scalars['DateTime']['output'];
42280
43031
  updatedBy?: Maybe<Scalars['String']['output']>;
42281
43032
  userId?: Maybe<Scalars['String']['output']>;
43033
+ /**
43034
+ * Deprecated: use the many-to-many vehicleIds relationship.
43035
+ * @deprecated Use vehicles/vehicleIds for many-to-many fleet assignments.
43036
+ */
42282
43037
  vehicleId?: Maybe<Scalars['String']['output']>;
43038
+ /** Vehicles linked to this driver through the workspace fleet relationship. */
43039
+ vehicles: Array<MtwVehicle>;
42283
43040
  workspaceId: Scalars['ID']['output'];
42284
43041
  };
42285
43042
  export type MtwDriverSuggestion = {
@@ -42701,6 +43458,7 @@ export type MtwVehicle = {
42701
43458
  createdBy: Scalars['String']['output'];
42702
43459
  currentLocation?: Maybe<Scalars['JSON']['output']>;
42703
43460
  deletedAt?: Maybe<Scalars['DateTime']['output']>;
43461
+ drivers: Array<MtwDriver>;
42704
43462
  fuelEfficiencyLPer100Km?: Maybe<Scalars['Float']['output']>;
42705
43463
  fuelLevel?: Maybe<Scalars['Float']['output']>;
42706
43464
  fuelType?: Maybe<FuelType>;
@@ -43735,6 +44493,7 @@ export type Mutation = {
43735
44493
  createDashboardView: DashboardView;
43736
44494
  /** Create a data sink */
43737
44495
  createDataSink: DataSink;
44496
+ createDataTable: DataTableResponse;
43738
44497
  createDeliveryJob: MtwDeliveryJob;
43739
44498
  createDigitalTwin: DigitalTwin;
43740
44499
  /** Create a disposable workspace (BOFF-6560): the ONLY supported path that can set `Workspace.isDisposable`. Restricted to service actors — same security model as syncFromGlobal (actorTypes over action/resource RBAC, because the workspace doesn't exist yet and this is M2M-only by design). No user/billing quota is enforced; disposable workspaces are ops/test tooling, not customer seats. Callers (e.g. a product's demo-seed job) are responsible for tearing the workspace down through the normal deleteWorkspace mutation when done. */
@@ -43975,6 +44734,7 @@ export type Mutation = {
43975
44734
  createLegalHold: LegalHold;
43976
44735
  createLifeGoal: TimeCampusLifeGoal;
43977
44736
  createLocationEntry: LocationEntry;
44737
+ createLogStreamDestination: LogStreamDestinationResponse;
43978
44738
  createMCPConnection: McpConnection;
43979
44739
  /** Create a recurring maintenance schedule on an asset (BOFF-6031). */
43980
44740
  createMaintenancePlan: MaintenancePlan;
@@ -44112,6 +44872,7 @@ export type Mutation = {
44112
44872
  createWorkflowSandbox: Sandbox;
44113
44873
  /** Create a new scheduled job */
44114
44874
  createWorkflowScheduledJob: ScheduledJobResponse;
44875
+ createWorkflowVariable: WorkflowVariableResponse;
44115
44876
  createWorkflowVersion: CreateWorkflowVersionResponse;
44116
44877
  /** Create a new workspace. Tenant ID is read from gateway context (x-tenant-id header). Owner defaults to authenticated actor (x-actor-id header). */
44117
44878
  createWorkspace: Workspace;
@@ -44133,6 +44894,8 @@ export type Mutation = {
44133
44894
  decideHealthyBowlAgronomyDecision: AgronomyDecision;
44134
44895
  /** BOFF-3676 — record a human verdict on a recommendation. ACCEPTED moves it to ACKNOWLEDGED, not RESOLVED: accepting advice is not doing the work, and resolving it would hide outstanding work from every "what needs doing" read. Re-deciding is refused rather than overwritten — the first verdict is the record of what someone judged. */
44135
44896
  decideHealthyBowlFarmRecommendation: HealthyBowlFarmRecommendation;
44897
+ /** Approve or reject some/all of a pending request's tool calls and resume the run. Any call not listed in `decisions` is treated as REJECTED — approval must be explicit, never implicit (BOFF-7521 safety invariant: a call the caller did not decide on must never execute). */
44898
+ decideToolApproval: DecideToolApprovalResponse;
44136
44899
  declareLifeValue: TimeCampusLifeValue;
44137
44900
  /** Decline a file/folder share invitation. */
44138
44901
  declineFileShare: Scalars['Boolean']['output'];
@@ -44203,6 +44966,8 @@ export type Mutation = {
44203
44966
  deleteDashboardView: Scalars['Boolean']['output'];
44204
44967
  /** Delete a data sink (soft delete) */
44205
44968
  deleteDataSink: DataSink;
44969
+ deleteDataTable: DeleteConfigResponse;
44970
+ deleteDataTableRows: DataTableRowsMutationResponse;
44206
44971
  deleteDeliveryJob: Scalars['Boolean']['output'];
44207
44972
  /** Remove a component's deployment record for an environment. */
44208
44973
  deleteDeployment: Scalars['Boolean']['output'];
@@ -44396,6 +45161,7 @@ export type Mutation = {
44396
45161
  deleteLifeGoal: TimeCampusLifeGoal;
44397
45162
  deleteLifeValue: TimeCampusLifeValue;
44398
45163
  deleteLocationEntry: LocationEntry;
45164
+ deleteLogStreamDestination: DeleteConfigResponse;
44399
45165
  deleteMCPConnection: Scalars['Boolean']['output'];
44400
45166
  /** Delete a plan. Records it already generated are KEPT and simply lose their link — the service history is a fact, and deleting a schedule must never delete the evidence that the work was done. */
44401
45167
  deleteMaintenancePlan: Scalars['Boolean']['output'];
@@ -44516,6 +45282,7 @@ export type Mutation = {
44516
45282
  deleteWorkflowDefinition: Scalars['Boolean']['output'];
44517
45283
  /** Delete a scheduled job (soft delete) */
44518
45284
  deleteWorkflowScheduledJob: DeleteConfigResponse;
45285
+ deleteWorkflowVariable: DeleteConfigResponse;
44519
45286
  /** Soft delete a workspace (sets status to DELETED and populates deletedAt). The workspace and its intra-service records remain recoverable during the platform's documented 30-day retention / grace-period. After the retention period a background purge may hard-delete the row and its cascaded records. The workspace_audit_log row for this event is written after the soft delete and is intentionally NOT foreign-keyed to Workspace so it survives eventual purge (see WorkspaceAuditLog's schema doc-comment). */
44520
45287
  deleteWorkspace: Scalars['Boolean']['output'];
44521
45288
  /** Delete a workspace resource */
@@ -45139,6 +45906,8 @@ export type Mutation = {
45139
45906
  importSecrets: SecretImportResult;
45140
45907
  /** Import hosts from SSH config scan as targets (batch create). */
45141
45908
  importTargetsFromConfig: TargetImportResult;
45909
+ /** Import a portable workflow JSON document as a new DRAFT. */
45910
+ importWorkflow: ImportWorkflowResponse;
45142
45911
  /** Import a workflow from a store template. Creates a new DRAFT workflow definition from the provided definitionJson and tracks the source template for lineage/analytics. Usage tracking: consumes one slot from fluidgrids.workflows.count, same as createWorkflowDefinition (which this delegates to internally). */
45143
45912
  importWorkflowTemplate: ImportWorkflowTemplateResponse;
45144
45913
  /** Import a resource configuration to create a new resource. Workspace ID is read from gateway context (x-workspace-id header). */
@@ -45168,6 +45937,7 @@ export type Mutation = {
45168
45937
  initiateOAuth: OAuthInitiationResult;
45169
45938
  /** Initiate a new upload session Returns session details and initial presigned URLs */
45170
45939
  initiateUpload: UploadSessionWithUrls;
45940
+ insertDataTableRow: DataTableRowResponse;
45171
45941
  /** Install an action from the store (creates a local instance) */
45172
45942
  installActionFromStore: Action;
45173
45943
  installAgentOnTarget: InstallJob;
@@ -45420,10 +46190,15 @@ export type Mutation = {
45420
46190
  /** Self-report an interruption during the caller's own ACTIVE focus session. Returns the updated session (with the new interruption included). */
45421
46191
  logTimeCampusFocusInterruption: TimeCampusFocusSession;
45422
46192
  manAddBomLine: ManBomLine;
46193
+ /** Add a routing operation. Retry-safe with idempotencyKey; a sequence already used on the order is rejected with MAN_OPERATION_SEQUENCE_TAKEN. Rejected with MAN_ROUTING_LOCKED once the order is completed, closed or cancelled. */
45423
46194
  manAddOperation: ManProductionOperation;
45424
46195
  manArchiveWorkCenter: Scalars['Boolean']['output'];
46196
+ /** Allocate a unit to (or consume it on) a production order, optionally naming the operation. */
46197
+ manAssignMaterialSerial: ManMaterialSerial;
45425
46198
  /** Explode the production order's BOM (recursively through sub-assemblies) against real on-hand inventory (sum of ManMaterialLot AVAILABLE quantity per SKU) and persist the net requirement per leaf component, replacing any prior run for this order. */
45426
46199
  manCalculateMaterialRequirements: Array<ManMaterialRequirement>;
46200
+ /** Complete an in-progress work order with its evidence (technician, labor time and notes required; parts, checklist and meter reading optional). Completing a PREVENTIVE work order resets the asset's service baseline. */
46201
+ manCompleteMaintenanceWorkOrder: ManMaintenanceWorkOrder;
45427
46202
  manCreateAsset: ManAsset;
45428
46203
  manCreateBom: ManBillOfMaterial;
45429
46204
  manCreateErpConnection: ManErpConnection;
@@ -45439,7 +46214,13 @@ export type Mutation = {
45439
46214
  manErpPushInventoryItem: ManErpSyncRecord;
45440
46215
  /** Record one machine tag reading. This is the SAME ingestion path real MQTT messages flow through (src/modules/connectivity/services/mqtt-ingestion.service.ts) — useful as a manual/backfill entry point and to live-verify the ingestion pipeline end-to-end via GraphQL in environments where no MQTT broker is reachable (e.g. behind the ACA network's egress policy). */
45441
46216
  manIngestTagReading: ManMachineTagReading;
46217
+ /** Link a lot to a production order with a role and quantity (post-receipt allocation). Quantities are checked against the lot (MAN_LOT_OVERALLOCATED); blocked lots cannot be consumed. */
46218
+ manLinkMaterialLotToOrder: ManMaterialLotOrderLink;
46219
+ /** Link an affected production order, operation or material lot. Idempotent. */
46220
+ manLinkNonConformanceEntity: ManNonConformance;
45442
46221
  manRaiseNonConformance: ManNonConformance;
46222
+ /** Partial receipt: register more units into an AVAILABLE serial lot. Rejected with MAN_SERIAL_DUPLICATE (already registered / entered twice) or MAN_SERIAL_INVALID. */
46223
+ manReceiveMaterialSerials: ManMaterialLot;
45443
46224
  manRecordDowntime: ManDowntimeEvent;
45444
46225
  manRecordInspection: ManQualityInspection;
45445
46226
  /** Record that the CALLING actor accepted a legal document/version at an in-product checkpoint. Self-scoped (Type A): no identity arg. Idempotent — re-accepting the same (checkpointType, documentVersion) updates the timestamp/audit fields rather than duplicating the row. */
@@ -45448,23 +46229,44 @@ export type Mutation = {
45448
46229
  manRecordMeasurement: ManQualityInspection;
45449
46230
  /** Record progress against a routing operation (setup/run time, good/scrap counts). */
45450
46231
  manRecordOperation: ManProductionOperation;
46232
+ /** Quarantine review — the only way out of QUARANTINED. RELEASE returns the lot to AVAILABLE, SCRAP dispositions it; both need a reason and are recorded as their own history event. Gated behind the separate `release` permission. */
46233
+ manReleaseMaterialLot: ManMaterialLot;
46234
+ /** Quarantine review for a held unit (separate `release` permission). RELEASE is refused while the unit's lot is quarantined (MAN_SERIAL_HELD_BY_LOT) — lot-held units return with the lot's release; SCRAP is always available. */
46235
+ manReleaseMaterialSerial: ManMaterialSerial;
46236
+ /** Remove a routing step that has not started. Soft removal: the step and the required reason stay on the routing history. */
46237
+ manRemoveOperation: ManProductionOperation;
46238
+ /** Reopen a CLOSED NCR (returns to INVESTIGATING). The reason is recorded on the audit trail; the previous verification is cleared. */
46239
+ manReopenNonConformance: ManNonConformance;
46240
+ /** Reverse a lot-order link with a reason (corrections = reverse + re-link). Refused once the lot is consumed or the order is finished (MAN_LOT_LINK_LOCKED). */
46241
+ manReverseMaterialLotLink: ManMaterialLotOrderLink;
45451
46242
  /** Deterministic priority + due-date greedy finite-capacity scheduler. Orders the given (or all open) production orders by priority then due date, walks each order's routing operations in sequence, and assigns each to the earliest day its work center still has capacity (ManWorkCenter.capacityHours), persisting plannedStart/plannedEnd on ManProductionOperation (and rolling the min/max up onto the order). Does NOT reoptimize a global objective — no constraint solver / genetic algorithm; see PlanningService.scheduleProductionOrders for the documented follow-up. */
45452
46243
  manScheduleProductionOrders: ManScheduleResult;
46244
+ /** Move a lot along its lifecycle. Rejected with MAN_LOT_INVALID_TRANSITION when the move is blocked (quarantined lots need manReleaseMaterialLot; consumed and scrapped lots are final; expired lots cannot be allocated or consumed). QUARANTINED and SCRAPPED require a reason (MAN_LOT_REASON_REQUIRED); a quarantine may cite the NCR or inspection behind it. */
45453
46245
  manSetMaterialLotStatus: ManMaterialLot;
45454
- /** Advance a maintenance work order through its lifecycle (validated transitions). */
46246
+ /** Quarantine or scrap one unit (reason required; a quarantine may cite its NCR). Quarantining an allocated unit releases its order allocation. */
46247
+ manSetMaterialSerialStatus: ManMaterialSerial;
46248
+ /** Move a work order between SCHEDULED / IN_PROGRESS / ON_HOLD / CANCELLED. COMPLETED is rejected here (MAN_MWO_COMPLETION_REQUIRED): use manCompleteMaintenanceWorkOrder with the completion evidence. */
45455
46249
  manTransitionMaintenanceWorkOrder: ManMaintenanceWorkOrder;
45456
- /** Advance an NCR/CAPA through its resolution lifecycle (validated transitions). */
46250
+ /** Advance an NCR/CAPA one step: OPEN → INVESTIGATING → CONTAINED → CORRECTIVE_ACTION → CLOSED. Skipped steps are rejected (MAN_NCR_INVALID_TRANSITION) and each step requires its evidence (MAN_NCR_EVIDENCE_REQUIRED, with extensions.missingFields). The comment is recorded on the audit trail. */
45457
46251
  manTransitionNonConformance: ManNonConformance;
45458
46252
  /** Advance a production order through its execution lifecycle (validated transitions). */
45459
46253
  manTransitionProductionOrder: ManProductionOrder;
46254
+ /** Free an allocated unit (reason required). Consumed units are final (MAN_SERIAL_LOCKED). */
46255
+ manUnassignMaterialSerial: ManMaterialSerial;
46256
+ /** Remove an affected-entity link. The removal stays on the audit trail. */
46257
+ manUnlinkNonConformanceEntity: ManNonConformance;
45460
46258
  manUpdateAsset: ManAsset;
45461
46259
  manUpdateErpConnection: ManErpConnection;
45462
46260
  manUpdateInventoryItem: ManInventoryItem;
45463
46261
  /** Partially update a material lot's descriptive fields (name, quantity, uom, supplier, receipt/expiry dates, tags). Status changes go through `manSetMaterialLotStatus`. */
45464
46262
  manUpdateMaterialLot: ManMaterialLot;
45465
46263
  manUpdateNonConformance: ManNonConformance;
46264
+ /** Correct a routing step that has not started (MAN_OPERATION_STARTED once it has). Recorded on the order's routing history. */
46265
+ manUpdateOperation: ManProductionOperation;
45466
46266
  manUpdateProductionOrder: ManProductionOrder;
45467
46267
  manUpdateWorkCenter: ManWorkCenter;
46268
+ /** Record the effectiveness check of the corrective action (NCR must be in CORRECTIVE_ACTION with root cause and corrective action recorded). The verifier is the calling actor. */
46269
+ manVerifyNonConformance: ManNonConformance;
45468
46270
  /** Manage workflow node containers (start/stop/restart). PLATFORM: operates on the shared cross-tenant node container fleet, so it is restricted to super_admin (matches cleanupNatsQueues / terminateWorkflow). */
45469
46271
  manageContainers: ContainerActionResponse;
45470
46272
  /** Execute AI-powered workflow management */
@@ -45565,6 +46367,8 @@ export type Mutation = {
45565
46367
  /** Pin or unpin a comment */
45566
46368
  pinEntityComment: EntityComment;
45567
46369
  pinMessage: Message;
46370
+ /** Pin mock/sample output data on a node (BOFF-7511). Persists with the workflow definition so it round-trips with the draft. Only used by TEST-mode runs — see `RunMode`; never affects a PRODUCTION run. */
46371
+ pinNodeData: WorkflowDefinition;
45568
46372
  /** Pin a note */
45569
46373
  pinNote: VibecontrolsNote;
45570
46374
  /** Place a bid on a live auction. Fails if the auction is not live, has ended, or the amount is below the minimum. */
@@ -46188,6 +46992,8 @@ export type Mutation = {
46188
46992
  replaceSecretTags: Array<SecretTagAssignment>;
46189
46993
  replaceVibecontrolsEntityTags: Array<EntityTagAssignment>;
46190
46994
  replaceWorkspaceTags: Array<WorkspaceTagAssignment>;
46995
+ /** Whole-run replay (BOFF-7519): re-trigger `runId`'s exact workflow/version/triggerNodeId/triggerData/context as a brand-new TEST-mode run (BOFF-7511) — a debugging/verification replay of a past run from the run history screen, never counted as a production execution. The original run is untouched. Usage tracking: same `fluidgrids.runs.monthly` quota as `triggerWorkflow` — a replay still executes real nodes. */
46996
+ replayWorkflowRun: TriggerResponse;
46191
46997
  /** Record an agent → agent mesh edge. Called by the SOURCE agent after a successful mesh-deploy/connect (or by an operator). Authorization: the caller must control BOTH agents (same workspace + ownerUserId boundary on each). Topology only — no scoped peer credential is stored. */
46192
46998
  reportAgentMeshLink: AgentMeshLink;
46193
46999
  /** Records the real token usage of a completed assistant turn. The resolver computes COST-WEIGHTED credits server-side (billing.quoteAiCredits, per-model prices) and charges them once via addUsageForWorkspace — so the amount is never client-supplied. No @usage(trackUsage) directive here: that would charge a second time (flat token count) on top of the resolver's weighted charge. */
@@ -46224,6 +47030,8 @@ export type Mutation = {
46224
47030
  resetVibecontrolsAgent: ResetAgentResult;
46225
47031
  /** Reset webhook failure count */
46226
47032
  resetWebhookFailures: Webhook;
47033
+ /** Manually clear a static-data blob (ops/debug escape hatch for a stuck cursor — there is deliberately no other way to edit static data by hand). */
47034
+ resetWorkflowStaticData: DeleteConfigResponse;
46227
47035
  resolveContextConversation: ResolveContextConversationPayload;
46228
47036
  /** Mark a comment resolved or unresolved. */
46229
47037
  resolveDashboardComment: DashboardComment;
@@ -46291,6 +47099,10 @@ export type Mutation = {
46291
47099
  retrySubmission: Submission;
46292
47100
  retryWebhookDelivery: RetryWebhookDeliveryResponse;
46293
47101
  retryWebhookExecution: WebhookExecution;
47102
+ /** Bulk/list-level retry (BOFF-7519): re-trigger 1..10 past runs' exact input as brand-new PRODUCTION runs — the Runs list's "Retry" action, which previously only navigated to the run detail page. Each id is retried independently; the original run(s) are untouched. Usage tracking KNOWN LIMITATION: the `@usage` directive charges a flat 1 `fluidgrids.runs.monthly` unit per CALL, not per run created — it has no way to express "N units for N runIds" from this SDL alone. A 2-10 run batch is therefore under-counted against the workspace's monthly quota. The batch size is capped at 10 (rather than a larger bulk-action limit) to bound the worst case while this is tracked as a follow-up. Every retried run is still fully persisted with its own row and its own audit trail — only the AGGREGATE usage counter under-counts, nothing about the run itself is skipped. */
47103
+ retryWorkflowRuns: Array<TriggerResponse>;
47104
+ /** Explicit reveal action for a secret-flagged (or externally-backed) variable's real value — audited via trackOperation. */
47105
+ revealWorkflowVariableValue: RevealWorkflowVariableValueResponse;
46294
47106
  reviewHousingvistaRentalApplication: HousingVistaRentalApplication;
46295
47107
  reviewVaultSecurityEvent: VaultSecurityEvent;
46296
47108
  revokeActionShare: ShareGrant;
@@ -46404,6 +47216,8 @@ export type Mutation = {
46404
47216
  runAgentCommand: AgentProxyResponse;
46405
47217
  /** Claim a `PENDING` execution, run it, and return the terminal execution. The run transitions `PENDING → RUNNING → COMPLETED/FAILED`. Both transitions are published to `agentExecutionUpdated`. This is the billing boundary for `botlit.runs.count` when the run is executed through this mutation. */
46406
47218
  runExecution: Execution;
47219
+ /** Run a workflow from a chosen node onward, reusing the upstream node outputs already captured by `input.sourceRunId` instead of re-executing the whole upstream chain (BOFF-7511). Every direct and transitive ancestor of `input.nodeId` must have a COMPLETED node state in the source run — this reuses stored outputs, it never falls back to re-running anything upstream. Usage tracking: this executes real nodes downstream of the chosen node, so it consumes the same `fluidgrids.runs.monthly` quota as `triggerWorkflow`. */
47220
+ runFromNode: TriggerResponse;
46407
47221
  /** Idempotent sweep: certificate expiry ladder, banned inputs, MRL breaches, overdue inspections, missing documents. */
46408
47222
  runHealthyBowlComplianceScan: HealthyBowlComplianceScanResult;
46409
47223
  /** Run a rule now (on-demand): triggers its FluidGrids workflow immediately, which calls back into HB to evaluate weather + notify. Returns the WorkflowRun id (or null). */
@@ -46433,6 +47247,7 @@ export type Mutation = {
46433
47247
  saveMyNavPreferences: NavPreferences;
46434
47248
  /** Save an AI-assistant sandbox artifact directly into Files without round- tripping bytes through the browser. Calls `wspace-sandbox-svc` over the internal gateway, decodes the artifact, uploads to S3, and creates a File row in the target folder. Returns the freshly created File. Larger artifacts (decoded > 50 MB) return `SANDBOX_ARTIFACT_TOO_LARGE` and the caller falls back to the client-side download path. */
46435
47249
  saveSandboxArtifactToFiles: File;
47250
+ saveSecretsProviderConfig: SecretsProviderConfigResponse;
46436
47251
  /** Save UI session */
46437
47252
  saveUISession: UiSession;
46438
47253
  /** Re-run the Trivy CVE scan for an existing image without touching APPROVED state. Returns the row in SCANNING; transitions to PASSED/FAILED happen out-of-band. */
@@ -46513,6 +47328,7 @@ export type Mutation = {
46513
47328
  setDefaultVibecontrolsAgentProfile: VibecontrolsAgentProfile;
46514
47329
  /** Set a view as the default */
46515
47330
  setDefaultView: DashboardView;
47331
+ setDriverVehicles: MtwDriver;
46516
47332
  setEventWebhook: WebhookConfig;
46517
47333
  /** BOFF-6030 — publish or update a consultant's weekly availability. One rule per weekday. */
46518
47334
  setHealthyBowlConsultAvailability: Scalars['ID']['output'];
@@ -46827,8 +47643,12 @@ export type Mutation = {
46827
47643
  terminateWorkflow: TerminateWorkflowResponse;
46828
47644
  testConnection: ConnectionTestResult;
46829
47645
  testLlmConnection: Scalars['Boolean']['output'];
47646
+ /** Send a synthetic test event to the destination right now, without waiting for a real run to fire one. Does not require `isEnabled`. */
47647
+ testLogStreamDestination: TestLogStreamDestinationResponse;
46830
47648
  testMCPConnection: Scalars['Boolean']['output'];
46831
47649
  testPipeline: PipelineExecution;
47650
+ /** Connection test button: validates the configured provider without persisting a secret. */
47651
+ testSecretsProviderConnection: TestSecretsProviderConnectionResponse;
46832
47652
  testTarget: TargetTestResult;
46833
47653
  /** Test webhook */
46834
47654
  testWebhook: Scalars['Boolean']['output'];
@@ -46949,6 +47769,8 @@ export type Mutation = {
46949
47769
  unmuteConversation: ConversationMembership;
46950
47770
  unpinConversation: ConversationMembership;
46951
47771
  unpinMessage: Message;
47772
+ /** Remove pinned data from a node (BOFF-7511). */
47773
+ unpinNodeData: WorkflowDefinition;
46952
47774
  /** Unpin a note */
46953
47775
  unpinNote: VibecontrolsNote;
46954
47776
  /** Hides the storefront from the public query without deleting it. */
@@ -47085,6 +47907,8 @@ export type Mutation = {
47085
47907
  updateDataSink: DataSink;
47086
47908
  /** Update a DataSink-Workflow link */
47087
47909
  updateDataSinkLink: DataSinkWorkflowLink;
47910
+ updateDataTable: DataTableResponse;
47911
+ updateDataTableRow: DataTableRowResponse;
47088
47912
  updateDeliveryJob: MtwDeliveryJob;
47089
47913
  updateDeliveryJobStatus: MtwDeliveryJob;
47090
47914
  updateDocsBuildImage: VibecontrolsDocsBuildImage;
@@ -47306,6 +48130,7 @@ export type Mutation = {
47306
48130
  updateLifeValue: TimeCampusLifeValue;
47307
48131
  /** Owner-filtered by the calling actor — throws NOT_FOUND if `id` doesn't belong to the caller (never leaks another user's row via FORBIDDEN). */
47308
48132
  updateLocationEntry: LocationEntry;
48133
+ updateLogStreamDestination: LogStreamDestinationResponse;
47309
48134
  updateMCPConnection: McpConnection;
47310
48135
  updateMCPTool: McpTool;
47311
48136
  updateMaintenancePlan: MaintenancePlan;
@@ -47463,6 +48288,7 @@ export type Mutation = {
47463
48288
  updateWorkflowDefinition: WorkflowDefinition;
47464
48289
  /** Update an existing scheduled job */
47465
48290
  updateWorkflowScheduledJob: ScheduledJobResponse;
48291
+ updateWorkflowVariable: WorkflowVariableResponse;
47466
48292
  /** Update an existing workspace */
47467
48293
  updateWorkspace: Workspace;
47468
48294
  /** Update workspace-level defaults. Requires admin permission. Merges provided fields with existing values. */
@@ -47518,8 +48344,22 @@ export type Mutation = {
47518
48344
  workerCompleteRun: WorkerCompleteRunResponse;
47519
48345
  /** Create a new node state (for pending nodes) INTERNAL: Requires actorType SERVICE */
47520
48346
  workerCreateNodeState: WorkerNodeStateResponse;
48347
+ /** Record a batch of AI-agent tool calls parked for human approval (BOFF-7521). Called by the executor right after it parks the run/node in WAITING for an opt-in AI Agent node — creates the approval-inbox row the user decides on. INTERNAL: Requires actorType SERVICE */
48348
+ workerCreateToolApprovalRequest: WorkerToolApprovalRequestResponse;
48349
+ /** WORKER-INTERNAL: Data Table node's delete operation — by explicit row ids or by filter. */
48350
+ workerDataTableDeleteRows: WorkerDataTableDeleteResponse;
48351
+ /** WORKER-INTERNAL: Data Table node's insert operation. */
48352
+ workerDataTableInsertRow: WorkerDataTableRowResponse;
48353
+ /** WORKER-INTERNAL: Data Table node's update operation. */
48354
+ workerDataTableUpdateRow: WorkerDataTableRowResponse;
48355
+ /** WORKER-INTERNAL: Data Table node's upsert operation — matches an existing row by `matchColumns`, updates it if found, otherwise inserts. */
48356
+ workerDataTableUpsertRow: WorkerDataTableRowResponse;
48357
+ /** WORKER-INTERNAL: cross-run dedupe check for the Dedupe node's "cross-run" mode — atomically checks which of `hashes` are new and records them as seen in the same call. */
48358
+ workerDedupeCheckAndMark: WorkerDedupeCheckAndMarkResponse;
47521
48359
  /** Get or create node state (atomic operation) INTERNAL: Requires actorType SERVICE */
47522
48360
  workerGetOrCreateNodeState: WorkerNodeStateResponse;
48361
+ /** WORKER-INTERNAL: atomically persist the static-data writes made during one run. Restricted to the `service` actor type AND re-validated against the run's actual persisted `mode`/`status` — see `SyncWorkflowStaticDataInput` and `StaticDataProvider.syncForRun`. A TEST-mode or not-yet-COMPLETED run is rejected, never silently ignored, so a caller-side bug surfaces loudly instead of leaking mock data into the persisted cursor. */
48362
+ workerSyncWorkflowStaticData: WorkerStaticDataSyncResponse;
47523
48363
  /** Update an existing node state INTERNAL: Requires actorType SERVICE */
47524
48364
  workerUpdateNodeState: WorkerNodeStateResponse;
47525
48365
  /** Update workflow run status INTERNAL: Requires actorType SERVICE */
@@ -50389,6 +51229,10 @@ export type MutationCreateDataSinkArgs = {
50389
51229
  input: CreateDataSinkInput;
50390
51230
  };
50391
51231
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
51232
+ export type MutationCreateDataTableArgs = {
51233
+ input: CreateDataTableInput;
51234
+ };
51235
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
50392
51236
  export type MutationCreateDeliveryJobArgs = {
50393
51237
  input: CreateDeliveryJobInput;
50394
51238
  };
@@ -51132,6 +51976,10 @@ export type MutationCreateLocationEntryArgs = {
51132
51976
  input: CreateLocationEntryInput;
51133
51977
  };
51134
51978
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
51979
+ export type MutationCreateLogStreamDestinationArgs = {
51980
+ input: CreateLogStreamDestinationInput;
51981
+ };
51982
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
51135
51983
  export type MutationCreateMcpConnectionArgs = {
51136
51984
  input: CreateMcpConnectionInput;
51137
51985
  };
@@ -51546,6 +52394,10 @@ export type MutationCreateWorkflowScheduledJobArgs = {
51546
52394
  input: ScheduledJobInput;
51547
52395
  };
51548
52396
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
52397
+ export type MutationCreateWorkflowVariableArgs = {
52398
+ input: CreateWorkflowVariableInput;
52399
+ };
52400
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
51549
52401
  export type MutationCreateWorkflowVersionArgs = {
51550
52402
  input: CreateWorkflowVersionInput;
51551
52403
  workflowKey: Scalars['String']['input'];
@@ -51592,6 +52444,11 @@ export type MutationDecideHealthyBowlFarmRecommendationArgs = {
51592
52444
  input: DecideHealthyBowlFarmRecommendationInput;
51593
52445
  };
51594
52446
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
52447
+ export type MutationDecideToolApprovalArgs = {
52448
+ decisions: Array<ToolApprovalDecisionInput>;
52449
+ id: Scalars['ID']['input'];
52450
+ };
52451
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
51595
52452
  export type MutationDeclareLifeValueArgs = {
51596
52453
  input: TimeCampusLifeValueInput;
51597
52454
  };
@@ -51809,6 +52666,15 @@ export type MutationDeleteDataSinkArgs = {
51809
52666
  id: Scalars['ID']['input'];
51810
52667
  };
51811
52668
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
52669
+ export type MutationDeleteDataTableArgs = {
52670
+ id: Scalars['ID']['input'];
52671
+ };
52672
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
52673
+ export type MutationDeleteDataTableRowsArgs = {
52674
+ ids: Array<Scalars['ID']['input']>;
52675
+ tableId: Scalars['ID']['input'];
52676
+ };
52677
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
51812
52678
  export type MutationDeleteDeliveryJobArgs = {
51813
52679
  id: Scalars['ID']['input'];
51814
52680
  };
@@ -52525,6 +53391,10 @@ export type MutationDeleteLocationEntryArgs = {
52525
53391
  id: Scalars['ID']['input'];
52526
53392
  };
52527
53393
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
53394
+ export type MutationDeleteLogStreamDestinationArgs = {
53395
+ id: Scalars['ID']['input'];
53396
+ };
53397
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
52528
53398
  export type MutationDeleteMcpConnectionArgs = {
52529
53399
  id: Scalars['ID']['input'];
52530
53400
  };
@@ -52893,6 +53763,10 @@ export type MutationDeleteWorkflowScheduledJobArgs = {
52893
53763
  jobId: Scalars['ID']['input'];
52894
53764
  };
52895
53765
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
53766
+ export type MutationDeleteWorkflowVariableArgs = {
53767
+ id: Scalars['ID']['input'];
53768
+ };
53769
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
52896
53770
  export type MutationDeleteWorkspaceArgs = {
52897
53771
  id: Scalars['ID']['input'];
52898
53772
  };
@@ -54783,6 +55657,10 @@ export type MutationImportTargetsFromConfigArgs = {
54783
55657
  workspaceId: Scalars['ID']['input'];
54784
55658
  };
54785
55659
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55660
+ export type MutationImportWorkflowArgs = {
55661
+ input: ImportWorkflowInput;
55662
+ };
55663
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
54786
55664
  export type MutationImportWorkflowTemplateArgs = {
54787
55665
  input: ImportWorkflowTemplateInput;
54788
55666
  };
@@ -54845,6 +55723,11 @@ export type MutationInitiateUploadArgs = {
54845
55723
  input: InitiateUploadInput;
54846
55724
  };
54847
55725
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55726
+ export type MutationInsertDataTableRowArgs = {
55727
+ data: Scalars['JSON']['input'];
55728
+ tableId: Scalars['ID']['input'];
55729
+ };
55730
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
54848
55731
  export type MutationInstallActionFromStoreArgs = {
54849
55732
  name?: InputMaybe<Scalars['String']['input']>;
54850
55733
  storeItemId: Scalars['String']['input'];
@@ -55607,10 +56490,20 @@ export type MutationManArchiveWorkCenterArgs = {
55607
56490
  id: Scalars['ID']['input'];
55608
56491
  };
55609
56492
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56493
+ export type MutationManAssignMaterialSerialArgs = {
56494
+ id: Scalars['ID']['input'];
56495
+ input: ManAssignMaterialSerialInput;
56496
+ };
56497
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55610
56498
  export type MutationManCalculateMaterialRequirementsArgs = {
55611
56499
  productionOrderId: Scalars['ID']['input'];
55612
56500
  };
55613
56501
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56502
+ export type MutationManCompleteMaintenanceWorkOrderArgs = {
56503
+ id: Scalars['ID']['input'];
56504
+ input: ManCompleteMaintenanceWorkOrderInput;
56505
+ };
56506
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55614
56507
  export type MutationManCreateAssetArgs = {
55615
56508
  input: ManCreateAssetInput;
55616
56509
  };
@@ -55660,10 +56553,25 @@ export type MutationManIngestTagReadingArgs = {
55660
56553
  input: ManIngestTagReadingInput;
55661
56554
  };
55662
56555
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56556
+ export type MutationManLinkMaterialLotToOrderArgs = {
56557
+ input: ManLinkLotToOrderInput;
56558
+ lotId: Scalars['ID']['input'];
56559
+ };
56560
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56561
+ export type MutationManLinkNonConformanceEntityArgs = {
56562
+ id: Scalars['ID']['input'];
56563
+ input: ManNonConformanceLinkInput;
56564
+ };
56565
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55663
56566
  export type MutationManRaiseNonConformanceArgs = {
55664
56567
  input: ManRaiseNonConformanceInput;
55665
56568
  };
55666
56569
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56570
+ export type MutationManReceiveMaterialSerialsArgs = {
56571
+ entry: ManSerialEntryInput;
56572
+ lotId: Scalars['ID']['input'];
56573
+ };
56574
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55667
56575
  export type MutationManRecordDowntimeArgs = {
55668
56576
  input: ManRecordDowntimeInput;
55669
56577
  };
@@ -55686,12 +56594,47 @@ export type MutationManRecordOperationArgs = {
55686
56594
  input: ManRecordOperationInput;
55687
56595
  };
55688
56596
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56597
+ export type MutationManReleaseMaterialLotArgs = {
56598
+ id: Scalars['ID']['input'];
56599
+ input: ManReleaseMaterialLotInput;
56600
+ };
56601
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56602
+ export type MutationManReleaseMaterialSerialArgs = {
56603
+ id: Scalars['ID']['input'];
56604
+ input: ManReleaseMaterialLotInput;
56605
+ };
56606
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56607
+ export type MutationManRemoveOperationArgs = {
56608
+ id: Scalars['ID']['input'];
56609
+ reason: Scalars['String']['input'];
56610
+ };
56611
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56612
+ export type MutationManReopenNonConformanceArgs = {
56613
+ id: Scalars['ID']['input'];
56614
+ reason: Scalars['String']['input'];
56615
+ };
56616
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56617
+ export type MutationManReverseMaterialLotLinkArgs = {
56618
+ linkId: Scalars['ID']['input'];
56619
+ reason: Scalars['String']['input'];
56620
+ };
56621
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55689
56622
  export type MutationManScheduleProductionOrdersArgs = {
55690
56623
  input: ManScheduleProductionOrdersInput;
55691
56624
  };
55692
56625
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55693
56626
  export type MutationManSetMaterialLotStatusArgs = {
55694
56627
  id: Scalars['ID']['input'];
56628
+ inspectionId?: InputMaybe<Scalars['ID']['input']>;
56629
+ nonConformanceId?: InputMaybe<Scalars['ID']['input']>;
56630
+ reason?: InputMaybe<Scalars['String']['input']>;
56631
+ status: ManMaterialLotStatus;
56632
+ };
56633
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56634
+ export type MutationManSetMaterialSerialStatusArgs = {
56635
+ id: Scalars['ID']['input'];
56636
+ nonConformanceId?: InputMaybe<Scalars['ID']['input']>;
56637
+ reason?: InputMaybe<Scalars['String']['input']>;
55695
56638
  status: ManMaterialLotStatus;
55696
56639
  };
55697
56640
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
@@ -55701,6 +56644,7 @@ export type MutationManTransitionMaintenanceWorkOrderArgs = {
55701
56644
  };
55702
56645
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55703
56646
  export type MutationManTransitionNonConformanceArgs = {
56647
+ comment?: InputMaybe<Scalars['String']['input']>;
55704
56648
  id: Scalars['ID']['input'];
55705
56649
  status: ManNonConformanceStatus;
55706
56650
  };
@@ -55710,6 +56654,16 @@ export type MutationManTransitionProductionOrderArgs = {
55710
56654
  status: ManProductionOrderStatus;
55711
56655
  };
55712
56656
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56657
+ export type MutationManUnassignMaterialSerialArgs = {
56658
+ id: Scalars['ID']['input'];
56659
+ reason: Scalars['String']['input'];
56660
+ };
56661
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56662
+ export type MutationManUnlinkNonConformanceEntityArgs = {
56663
+ id: Scalars['ID']['input'];
56664
+ linkId: Scalars['ID']['input'];
56665
+ };
56666
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55713
56667
  export type MutationManUpdateAssetArgs = {
55714
56668
  id: Scalars['ID']['input'];
55715
56669
  input: ManUpdateAssetInput;
@@ -55735,6 +56689,11 @@ export type MutationManUpdateNonConformanceArgs = {
55735
56689
  input: ManUpdateNonConformanceInput;
55736
56690
  };
55737
56691
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56692
+ export type MutationManUpdateOperationArgs = {
56693
+ id: Scalars['ID']['input'];
56694
+ input: ManUpdateOperationInput;
56695
+ };
56696
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55738
56697
  export type MutationManUpdateProductionOrderArgs = {
55739
56698
  id: Scalars['ID']['input'];
55740
56699
  input: ManUpdateProductionOrderInput;
@@ -55745,6 +56704,11 @@ export type MutationManUpdateWorkCenterArgs = {
55745
56704
  input: ManUpdateWorkCenterInput;
55746
56705
  };
55747
56706
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56707
+ export type MutationManVerifyNonConformanceArgs = {
56708
+ id: Scalars['ID']['input'];
56709
+ input: ManVerifyNonConformanceInput;
56710
+ };
56711
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55748
56712
  export type MutationManageContainersArgs = {
55749
56713
  action: Scalars['String']['input'];
55750
56714
  nodeTypes?: InputMaybe<Array<Scalars['String']['input']>>;
@@ -56061,6 +57025,12 @@ export type MutationPinMessageArgs = {
56061
57025
  messageId: Scalars['ID']['input'];
56062
57026
  };
56063
57027
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
57028
+ export type MutationPinNodeDataArgs = {
57029
+ data: Scalars['JSON']['input'];
57030
+ id: Scalars['ID']['input'];
57031
+ nodeId: Scalars['String']['input'];
57032
+ };
57033
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56064
57034
  export type MutationPinNoteArgs = {
56065
57035
  id: Scalars['ID']['input'];
56066
57036
  };
@@ -57753,6 +58723,10 @@ export type MutationReplaceWorkspaceTagsArgs = {
57753
58723
  input: ReplaceWorkspaceTagsInput;
57754
58724
  };
57755
58725
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58726
+ export type MutationReplayWorkflowRunArgs = {
58727
+ runId: Scalars['ID']['input'];
58728
+ };
58729
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
57756
58730
  export type MutationReportAgentMeshLinkArgs = {
57757
58731
  input: ReportAgentMeshLinkInput;
57758
58732
  };
@@ -57843,6 +58817,12 @@ export type MutationResetWebhookFailuresArgs = {
57843
58817
  id: Scalars['ID']['input'];
57844
58818
  };
57845
58819
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58820
+ export type MutationResetWorkflowStaticDataArgs = {
58821
+ nodeId?: InputMaybe<Scalars['String']['input']>;
58822
+ scope: StaticDataScope;
58823
+ workflowKey: Scalars['String']['input'];
58824
+ };
58825
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
57846
58826
  export type MutationResolveContextConversationArgs = {
57847
58827
  input: ResolveContextConversationInput;
57848
58828
  };
@@ -58042,6 +59022,14 @@ export type MutationRetryWebhookExecutionArgs = {
58042
59022
  executionId: Scalars['ID']['input'];
58043
59023
  };
58044
59024
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59025
+ export type MutationRetryWorkflowRunsArgs = {
59026
+ runIds: Array<Scalars['ID']['input']>;
59027
+ };
59028
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59029
+ export type MutationRevealWorkflowVariableValueArgs = {
59030
+ id: Scalars['ID']['input'];
59031
+ };
59032
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58045
59033
  export type MutationReviewHousingvistaRentalApplicationArgs = {
58046
59034
  id: Scalars['ID']['input'];
58047
59035
  input: HousingVistaReviewRentalApplicationInput;
@@ -58388,6 +59376,10 @@ export type MutationRunExecutionArgs = {
58388
59376
  id: Scalars['ID']['input'];
58389
59377
  };
58390
59378
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59379
+ export type MutationRunFromNodeArgs = {
59380
+ input: RunFromNodeInput;
59381
+ };
59382
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58391
59383
  export type MutationRunHealthyBowlComplianceScanArgs = {
58392
59384
  context: ContextInput;
58393
59385
  };
@@ -58457,6 +59449,10 @@ export type MutationSaveSandboxArtifactToFilesArgs = {
58457
59449
  input: SaveSandboxArtifactInput;
58458
59450
  };
58459
59451
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59452
+ export type MutationSaveSecretsProviderConfigArgs = {
59453
+ input: SaveSecretsProviderConfigInput;
59454
+ };
59455
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58460
59456
  export type MutationSaveUiSessionArgs = {
58461
59457
  input: SaveUiSessionInput;
58462
59458
  };
@@ -58706,6 +59702,11 @@ export type MutationSetDefaultViewArgs = {
58706
59702
  viewId: Scalars['ID']['input'];
58707
59703
  };
58708
59704
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59705
+ export type MutationSetDriverVehiclesArgs = {
59706
+ id: Scalars['ID']['input'];
59707
+ vehicleIds: Array<Scalars['ID']['input']>;
59708
+ };
59709
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58709
59710
  export type MutationSetEventWebhookArgs = {
58710
59711
  config: WebhookConfigInput;
58711
59712
  eventId: Scalars['ID']['input'];
@@ -59644,6 +60645,10 @@ export type MutationTestLlmConnectionArgs = {
59644
60645
  id: Scalars['ID']['input'];
59645
60646
  };
59646
60647
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
60648
+ export type MutationTestLogStreamDestinationArgs = {
60649
+ id: Scalars['ID']['input'];
60650
+ };
60651
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59647
60652
  export type MutationTestMcpConnectionArgs = {
59648
60653
  id: Scalars['ID']['input'];
59649
60654
  };
@@ -59652,6 +60657,10 @@ export type MutationTestPipelineArgs = {
59652
60657
  input: TestPipelineInput;
59653
60658
  };
59654
60659
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
60660
+ export type MutationTestSecretsProviderConnectionArgs = {
60661
+ provider: SecretProviderType;
60662
+ };
60663
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59655
60664
  export type MutationTestTargetArgs = {
59656
60665
  id: Scalars['ID']['input'];
59657
60666
  };
@@ -60010,6 +61019,11 @@ export type MutationUnpinMessageArgs = {
60010
61019
  messageId: Scalars['ID']['input'];
60011
61020
  };
60012
61021
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
61022
+ export type MutationUnpinNodeDataArgs = {
61023
+ id: Scalars['ID']['input'];
61024
+ nodeId: Scalars['String']['input'];
61025
+ };
61026
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
60013
61027
  export type MutationUnpinNoteArgs = {
60014
61028
  id: Scalars['ID']['input'];
60015
61029
  };
@@ -60499,6 +61513,16 @@ export type MutationUpdateDataSinkLinkArgs = {
60499
61513
  linkId: Scalars['ID']['input'];
60500
61514
  };
60501
61515
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
61516
+ export type MutationUpdateDataTableArgs = {
61517
+ id: Scalars['ID']['input'];
61518
+ input: UpdateDataTableInput;
61519
+ };
61520
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
61521
+ export type MutationUpdateDataTableRowArgs = {
61522
+ data: Scalars['JSON']['input'];
61523
+ id: Scalars['ID']['input'];
61524
+ };
61525
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
60502
61526
  export type MutationUpdateDeliveryJobArgs = {
60503
61527
  id: Scalars['ID']['input'];
60504
61528
  input: UpdateDeliveryJobInput;
@@ -61324,6 +62348,11 @@ export type MutationUpdateLocationEntryArgs = {
61324
62348
  input: UpdateLocationEntryInput;
61325
62349
  };
61326
62350
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
62351
+ export type MutationUpdateLogStreamDestinationArgs = {
62352
+ id: Scalars['ID']['input'];
62353
+ input: UpdateLogStreamDestinationInput;
62354
+ };
62355
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
61327
62356
  export type MutationUpdateMcpConnectionArgs = {
61328
62357
  id: Scalars['ID']['input'];
61329
62358
  input: UpdateMcpConnectionInput;
@@ -61904,6 +62933,11 @@ export type MutationUpdateWorkflowScheduledJobArgs = {
61904
62933
  jobId: Scalars['ID']['input'];
61905
62934
  };
61906
62935
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
62936
+ export type MutationUpdateWorkflowVariableArgs = {
62937
+ id: Scalars['ID']['input'];
62938
+ input: UpdateWorkflowVariableInput;
62939
+ };
62940
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
61907
62941
  export type MutationUpdateWorkspaceArgs = {
61908
62942
  id: Scalars['ID']['input'];
61909
62943
  input: UpdateWorkspaceInput;
@@ -62044,10 +63078,38 @@ export type MutationWorkerCreateNodeStateArgs = {
62044
63078
  input: WorkerCreateNodeStateInput;
62045
63079
  };
62046
63080
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63081
+ export type MutationWorkerCreateToolApprovalRequestArgs = {
63082
+ input: WorkerCreateToolApprovalRequestInput;
63083
+ };
63084
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63085
+ export type MutationWorkerDataTableDeleteRowsArgs = {
63086
+ input: WorkerDataTableDeleteRowsInput;
63087
+ };
63088
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63089
+ export type MutationWorkerDataTableInsertRowArgs = {
63090
+ input: WorkerDataTableInsertRowInput;
63091
+ };
63092
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63093
+ export type MutationWorkerDataTableUpdateRowArgs = {
63094
+ input: WorkerDataTableUpdateRowInput;
63095
+ };
63096
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63097
+ export type MutationWorkerDataTableUpsertRowArgs = {
63098
+ input: WorkerDataTableUpsertRowInput;
63099
+ };
63100
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63101
+ export type MutationWorkerDedupeCheckAndMarkArgs = {
63102
+ input: WorkerDedupeCheckAndMarkInput;
63103
+ };
63104
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
62047
63105
  export type MutationWorkerGetOrCreateNodeStateArgs = {
62048
63106
  input: WorkerCreateNodeStateInput;
62049
63107
  };
62050
63108
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63109
+ export type MutationWorkerSyncWorkflowStaticDataArgs = {
63110
+ input: SyncWorkflowStaticDataInput;
63111
+ };
63112
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
62051
63113
  export type MutationWorkerUpdateNodeStateArgs = {
62052
63114
  input: WorkerUpdateNodeStateInput;
62053
63115
  };
@@ -62906,6 +63968,7 @@ export type NodeEndpointConfig = {
62906
63968
  category?: Maybe<Scalars['String']['output']>;
62907
63969
  createdAt: Scalars['DateTime']['output'];
62908
63970
  description?: Maybe<Scalars['String']['output']>;
63971
+ docsUrl?: Maybe<Scalars['String']['output']>;
62909
63972
  endpointUrl: Scalars['String']['output'];
62910
63973
  favicon?: Maybe<Scalars['String']['output']>;
62911
63974
  healthCheckUrl?: Maybe<Scalars['String']['output']>;
@@ -62979,6 +64042,12 @@ export type NodeIntrospection = {
62979
64042
  nodeVersion: Scalars['String']['output'];
62980
64043
  operations: Scalars['JSON']['output'];
62981
64044
  };
64045
+ /** A single selectable option for a dynamic ("load options") node parameter dropdown — e.g. one Slack channel returned by the Slack node's listChannels operation. */
64046
+ export type NodeLoadOption = {
64047
+ __typename?: 'NodeLoadOption';
64048
+ label: Scalars['String']['output'];
64049
+ value: Scalars['String']['output'];
64050
+ };
62982
64051
  export type NodeLogsResponse = {
62983
64052
  __typename?: 'NodeLogsResponse';
62984
64053
  logCount: Scalars['Int']['output'];
@@ -63020,10 +64089,14 @@ export type NodeState = {
63020
64089
  nodeVersion: Scalars['String']['output'];
63021
64090
  output?: Maybe<Scalars['JSON']['output']>;
63022
64091
  resumeTime?: Maybe<Scalars['DateTime']['output']>;
64092
+ /** Set when `runFromNode` copied this node's state from an earlier run instead of executing it in this one (BOFF-7511). */
64093
+ reusedFromRunId?: Maybe<Scalars['String']['output']>;
63023
64094
  run?: Maybe<WorkflowRun>;
63024
64095
  runId: Scalars['String']['output'];
63025
64096
  startTime?: Maybe<Scalars['DateTime']['output']>;
63026
64097
  status: NodeStatus;
64098
+ /** True when this node's output came from pinned data instead of a real call (BOFF-7511). Always false on a PRODUCTION run. */
64099
+ usedPinnedData: Scalars['Boolean']['output'];
63027
64100
  };
63028
64101
  /** Node relationship statistics */
63029
64102
  export type NodeStatistics = {
@@ -63497,6 +64570,14 @@ export type PayHealthyBowlInsurancePremiumInput = {
63497
64570
  /** Optional saved global-billing PaymentMethod id (server-side completion). */
63498
64571
  paymentMethodId?: InputMaybe<Scalars['String']['input']>;
63499
64572
  };
64573
+ /** One tool call the agent proposed, awaiting (or already given) a decision. */
64574
+ export type PendingToolCall = {
64575
+ __typename?: 'PendingToolCall';
64576
+ /** JSON-encoded arguments the agent proposed for this call. */
64577
+ argsJson: Scalars['String']['output'];
64578
+ callId: Scalars['ID']['output'];
64579
+ name: Scalars['String']['output'];
64580
+ };
63500
64581
  /** Permission audit log entry */
63501
64582
  export type PermissionAuditLog = {
63502
64583
  __typename?: 'PermissionAuditLog';
@@ -68872,6 +69953,9 @@ export type Query = {
68872
69953
  dashboardOverview: DashboardOverview;
68873
69954
  dashboardSummary: DashboardSummary;
68874
69955
  dashboards: Array<AnalyticsDashboard>;
69956
+ dataTable?: Maybe<DataTable>;
69957
+ dataTableRows: DataTableRowsResponse;
69958
+ dataTables: DataTableListResponse;
68875
69959
  deadLetterQueueEntries: DeadLetterQueueConnection;
68876
69960
  deadLetterQueueEntry?: Maybe<DeadLetterQueue>;
68877
69961
  decryptSecret?: Maybe<DecryptedSecret>;
@@ -68974,6 +70058,8 @@ export type Query = {
68974
70058
  envTopology: Array<EnvTopologyRow>;
68975
70059
  /** The completed ePOD record for a delivery job — for the shipper/customer to view or download once capture is complete. Returns null if no capture exists yet. */
68976
70060
  epod?: Maybe<MtwProofOfDelivery>;
70061
+ /** Error analytics (breakdown by type/workflow/node + a daily trend) for the Error Analytics screen (BOFF-7519). */
70062
+ errorAnalytics: ErrorAnalytics;
68977
70063
  esgMetric?: Maybe<EcoMetric>;
68978
70064
  /** Workspace-level ESG metrics delegated to wspace-ecoimpacthub-svc. Filters to AssetHandler-sourced metrics when no category is supplied so the page shows the same estate-scoped view it did before the migration. */
68979
70065
  esgMetrics: Array<EcoMetric>;
@@ -69048,6 +70134,8 @@ export type Query = {
69048
70134
  exportEventToIcs: Scalars['String']['output'];
69049
70135
  /** Export every active secret in a vault as a passphrase-encrypted blob. The passphrase must be at least 8 characters and is used as the only key needed to decrypt the returned payload — it is never persisted server-side. */
69050
70136
  exportSecrets: SecretExportResult;
70137
+ /** Export a workflow version as a portable JSON document. */
70138
+ exportWorkflow: WorkflowExport;
69051
70139
  /** Pre-login preview of a file/folder share invite by token. */
69052
70140
  fileShareGrantByToken?: Maybe<ShareGrantPreview>;
69053
70141
  /** File/folder grants where the current user is the accepted grantee. */
@@ -70399,12 +71487,17 @@ export type Query = {
70399
71487
  listWidgets: WidgetConnection;
70400
71488
  /** List all widgets for a dashboard (across all pages) */
70401
71489
  listWidgetsByDashboard: Array<Widget>;
71490
+ loadNodeOptions: Array<NodeLoadOption>;
70402
71491
  /** The calling actor's own location entries. Self-scoped: `filter.userId` is accepted for backward compatibility but is neutralized in the resolver (resolveTargetUserId) — a non-privileged actor requesting another user's entries is silently redirected back to their own, and an omitted filter no longer defaults to "every user in the workspace". Managers use the aggregate `locationStats` for workspace-wide visibility (no raw GPS). */
70403
71492
  locationEntries: LocationEntryListResponse;
70404
71493
  /** A single location entry by id, owner-filtered to the calling actor — returns null (not another user's row) if the id doesn't belong to the caller. */
70405
71494
  locationEntry?: Maybe<LocationEntry>;
70406
71495
  /** Aggregate location statistics for the workspace (no raw coordinates) — the intended manager/admin visibility surface, mirroring the workpattern module's team-summary pattern. */
70407
71496
  locationStats: LocationStats;
71497
+ /** Get a single log streaming destination by id (owner-filtered to the caller's workspace). */
71498
+ logStreamDestination?: Maybe<LogStreamDestination>;
71499
+ /** List the log streaming destinations configured for the caller's workspace. */
71500
+ logStreamDestinations: Array<LogStreamDestination>;
70408
71501
  /** Resolve a user email to an actor identity for workspace role assignment. */
70409
71502
  lookupUserActorByEmail?: Maybe<UserActorLookupResult>;
70410
71503
  maintenanceLog: Array<MaintenanceRecord>;
@@ -70418,10 +71511,14 @@ export type Query = {
70418
71511
  /** Statistical Process Control control chart computed on demand from recorded inspection measurements — X-bar/R, Individual/Moving-Range, p-chart, or c-chart, with 3-sigma control limits, out-of-control flagging, and Cp/Cpk/Pp/Ppk capability indices where the plan carries spec limits. */
70419
71512
  manControlChart: ManControlChartResult;
70420
71513
  manErpConnection?: Maybe<ManErpConnection>;
71514
+ /** Exact serial-number lookup across SKUs (traceability / recall entry point). */
71515
+ manFindMaterialSerials: Array<ManMaterialSerial>;
70421
71516
  /** Liveness/identity probe for the Manufacturedops subgraph. */
70422
71517
  manHealth: Scalars['String']['output'];
70423
71518
  manInspection?: Maybe<ManQualityInspection>;
70424
71519
  manInventoryItem?: Maybe<ManInventoryItem>;
71520
+ /** The item master row for a SKU (null when the SKU has none) — lot intake reads its tracking mode. */
71521
+ manInventoryItemBySku?: Maybe<ManInventoryItem>;
70425
71522
  manListAssets: ManAssetConnection;
70426
71523
  manListBoms: ManBillOfMaterialConnection;
70427
71524
  manListDowntimeEvents: ManDowntimeEventConnection;
@@ -70435,16 +71532,30 @@ export type Query = {
70435
71532
  manListMaterialLots: ManMaterialLotConnection;
70436
71533
  /** The latest persisted MRP run's requirement rows for one production order. */
70437
71534
  manListMaterialRequirements: Array<ManMaterialRequirement>;
71535
+ /** Units, filtered by lot, SKU, status, order or part of the serial number — also the export feed. */
71536
+ manListMaterialSerials: ManMaterialSerialConnection;
70438
71537
  manListNonConformances: ManNonConformanceConnection;
70439
71538
  manListProductionOrders: ManProductionOrderConnection;
70440
71539
  manListWorkCenters: ManWorkCenterConnection;
70441
71540
  manMachineTagReading?: Maybe<ManMachineTagReading>;
71541
+ /** One maintenance work order, with its completion evidence, linked downtime and history. */
71542
+ manMaintenanceWorkOrder?: Maybe<ManMaintenanceWorkOrder>;
71543
+ /** One material lot, with its status options and history. */
71544
+ manMaterialLot?: Maybe<ManMaterialLot>;
71545
+ /** One unit with its status options and history. */
71546
+ manMaterialSerial?: Maybe<ManMaterialSerial>;
71547
+ /** Recall scope for one unit. */
71548
+ manMaterialSerialRecall: ManSerialRecall;
70442
71549
  /** Legal-acceptance checkpoints recorded by the CALLING actor for a specific checkpoint type. Self-scoped (Type C): the ctx.actorId filter IS the access control, no identity arg. Used by the app shell to decide whether to show the acceptance gate before letting the actor into core flows. */
70443
71550
  manMyLegalAcceptances: ManLegalAcceptanceConnection;
70444
71551
  manNonConformance?: Maybe<ManNonConformance>;
71552
+ /** NCRs with an active link to one production order, operation or material lot. */
71553
+ manNonConformancesForEntity: Array<ManNonConformance>;
70445
71554
  /** Real, DB-computed operations KPIs for the dashboard (counts/aggregates across production orders, non-conformances, maintenance work orders and material lots) — correct at any scale, not a capped client-side aggregation. */
70446
71555
  manOperationsSummary: ManOperationsSummary;
70447
71556
  manProductionOrder?: Maybe<ManProductionOrder>;
71557
+ /** Bulk-import preview: validate serials for a SKU without registering them. */
71558
+ manValidateMaterialSerials: ManSerialEntryReport;
70448
71559
  manWorkCenter?: Maybe<ManWorkCenter>;
70449
71560
  meeting?: Maybe<MeetingMeta>;
70450
71561
  meetingStats: MeetingStats;
@@ -70585,6 +71696,8 @@ export type Query = {
70585
71696
  organizationCount: Scalars['Int']['output'];
70586
71697
  parser?: Maybe<Parser>;
70587
71698
  pendingApprovals: Array<TimeApprovalRequest>;
71699
+ /** Pending tool-approval requests for the caller's workspace — the approval inbox. Ordered newest-first. */
71700
+ pendingToolApprovals: ToolApprovalRequestPage;
70588
71701
  /** Get permission check audit log */
70589
71702
  permissionAuditLog: Array<PermissionAuditLog>;
70590
71703
  /** Get permission check audit logs with bounded offset metadata. */
@@ -70975,6 +72088,8 @@ export type Query = {
70975
72088
  secretShareLinkInfo?: Maybe<SecretShareLinkInfo>;
70976
72089
  /** List the shares on a vault (or a specific secret). Vault view access required. */
70977
72090
  secretShares: SecretShareList;
72091
+ /** List the external secrets provider configurations for the caller's workspace. */
72092
+ secretsProviderConfigs: Array<SecretsProviderConfig>;
70978
72093
  securityComplianceFramework?: Maybe<SecurityComplianceFramework>;
70979
72094
  securityComplianceFrameworks: SecurityComplianceFrameworkList;
70980
72095
  securityFindings: SecurityFindingList;
@@ -71231,6 +72346,7 @@ export type Query = {
71231
72346
  timeEntryStats: TimeEntryStats;
71232
72347
  todayFocusScore?: Maybe<FocusScore>;
71233
72348
  todayWorkPattern?: Maybe<WorkPattern>;
72349
+ toolApprovalRequest?: Maybe<ToolApprovalRequest>;
71234
72350
  topApplications: Array<AppUsageRank>;
71235
72351
  trackingAlerts: Array<MtwTrackingAlert>;
71236
72352
  transaction?: Maybe<AssetTransaction>;
@@ -71398,10 +72514,16 @@ export type Query = {
71398
72514
  workPatternSummary: WorkPatternSummary;
71399
72515
  /** The calling actor's own work patterns. `userId` is accepted for backward compatibility but is neutralized in the resolver (resolveTargetUserId): any non-privileged actor requesting a different user's data is silently redirected back to their own. Managers use `teamWorkPatternSummary` / `teamWorkPatterns` for genuinely workspace-wide visibility. */
71400
72516
  workPatterns: Array<WorkPattern>;
72517
+ /** WORKER-INTERNAL: read rows for the Data Table node's get/list operation. */
72518
+ workerDataTableGetRows: WorkerDataTableRowsResponse;
71401
72519
  /** Get execution context for a workflow run Returns run data, workflow definition, and all necessary context INTERNAL: Requires actorType SERVICE */
71402
72520
  workerGetExecutionContext: WorkerExecutionContext;
71403
72521
  /** Get all node states for a run INTERNAL: Requires actorType SERVICE */
71404
72522
  workerGetNodeStates: Array<WorkerNodeState>;
72523
+ /** WORKER-INTERNAL: hydrate the current static data for a workflow. Restricted to the `service` actor type — fluidgrids-workers calls this via the internal gateway with `x-actor-type: service`. */
72524
+ workerGetWorkflowStaticData: WorkerStaticDataResponse;
72525
+ /** WORKER-INTERNAL: resolve every variable visible to a run into a flat `$vars` map, secrets resolved server-side. Restricted to the `service` actor type — fluidgrids-workers calls this via the internal gateway with `x-actor-type: service`, never `x-actor-id` (see wspace-integrations-svc's CLAUDE.md cross-layer M2M note for why). */
72526
+ workerGetWorkflowVariables: WorkerVariablesResponse;
71405
72527
  /** Resolve node endpoint from registry INTERNAL: Requires actorType SERVICE */
71406
72528
  workerResolveNodeEndpoint: WorkerNodeEndpointResponse;
71407
72529
  /** Get a single workflow by ID */
@@ -71430,8 +72552,18 @@ export type Query = {
71430
72552
  workflowScheduledJobs: ScheduledJobsListResponse;
71431
72553
  /** Get status of all scheduled jobs */
71432
72554
  workflowScheduledJobsStatus: Scalars['JSON']['output'];
72555
+ /** Read a single static-data blob (debug/inspection UI). GLOBAL scope ignores `nodeId`; NODE scope requires it. */
72556
+ workflowStaticData?: Maybe<WorkflowStaticDataRecord>;
72557
+ /** List every static-data blob (global + all nodes) persisted for a workflow key. */
72558
+ workflowStaticDataList: Array<WorkflowStaticDataRecord>;
71433
72559
  /** Get workflow summary with execution statistics */
71434
72560
  workflowSummary: WorkflowSummaryResponse;
72561
+ /** Get a single variable by id (owner-filtered to the caller's workspace). */
72562
+ workflowVariable?: Maybe<WorkflowVariable>;
72563
+ /** List variables visible in the caller's workspace (optionally filtered to one project's scope). */
72564
+ workflowVariables: WorkflowVariablesListResponse;
72565
+ /** Compare the definition JSON of two versions. */
72566
+ workflowVersionDiff: WorkflowVersionDiff;
71435
72567
  /** Get all versions of a workflow */
71436
72568
  workflowVersions: Array<WorkflowDefinition>;
71437
72569
  /** Get all workflows in the workspace */
@@ -73354,6 +74486,20 @@ export type QueryDashboardsArgs = {
73354
74486
  offset?: InputMaybe<Scalars['Int']['input']>;
73355
74487
  };
73356
74488
  /** Base Query type with placeholder field. Extended by individual query files. */
74489
+ export type QueryDataTableArgs = {
74490
+ id: Scalars['ID']['input'];
74491
+ };
74492
+ /** Base Query type with placeholder field. Extended by individual query files. */
74493
+ export type QueryDataTableRowsArgs = {
74494
+ input: DataTableRowsQueryInput;
74495
+ };
74496
+ /** Base Query type with placeholder field. Extended by individual query files. */
74497
+ export type QueryDataTablesArgs = {
74498
+ limit?: InputMaybe<Scalars['Int']['input']>;
74499
+ offset?: InputMaybe<Scalars['Int']['input']>;
74500
+ search?: InputMaybe<Scalars['String']['input']>;
74501
+ };
74502
+ /** Base Query type with placeholder field. Extended by individual query files. */
73357
74503
  export type QueryDeadLetterQueueEntriesArgs = {
73358
74504
  filter?: InputMaybe<JobFilterInput>;
73359
74505
  pagination?: InputMaybe<SchedulerPaginationInput>;
@@ -73698,6 +74844,10 @@ export type QueryEpodArgs = {
73698
74844
  deliveryJobId: Scalars['ID']['input'];
73699
74845
  };
73700
74846
  /** Base Query type with placeholder field. Extended by individual query files. */
74847
+ export type QueryErrorAnalyticsArgs = {
74848
+ input?: InputMaybe<ErrorAnalyticsInput>;
74849
+ };
74850
+ /** Base Query type with placeholder field. Extended by individual query files. */
73701
74851
  export type QueryEsgMetricArgs = {
73702
74852
  id: Scalars['ID']['input'];
73703
74853
  };
@@ -74054,6 +75204,11 @@ export type QueryExportSecretsArgs = {
74054
75204
  vaultId: Scalars['ID']['input'];
74055
75205
  };
74056
75206
  /** Base Query type with placeholder field. Extended by individual query files. */
75207
+ export type QueryExportWorkflowArgs = {
75208
+ version?: InputMaybe<Scalars['String']['input']>;
75209
+ workflowKey: Scalars['String']['input'];
75210
+ };
75211
+ /** Base Query type with placeholder field. Extended by individual query files. */
74057
75212
  export type QueryFileShareGrantByTokenArgs = {
74058
75213
  token: Scalars['String']['input'];
74059
75214
  };
@@ -78520,6 +79675,17 @@ export type QueryListWidgetsByDashboardArgs = {
78520
79675
  type?: InputMaybe<WidgetType>;
78521
79676
  };
78522
79677
  /** Base Query type with placeholder field. Extended by individual query files. */
79678
+ export type QueryLoadNodeOptionsArgs = {
79679
+ args?: InputMaybe<Scalars['JSON']['input']>;
79680
+ connectionId?: InputMaybe<Scalars['ID']['input']>;
79681
+ labelField: Scalars['String']['input'];
79682
+ nodeType: Scalars['String']['input'];
79683
+ nodeVersion: Scalars['String']['input'];
79684
+ operationName: Scalars['String']['input'];
79685
+ resultPath?: InputMaybe<Scalars['String']['input']>;
79686
+ valueField: Scalars['String']['input'];
79687
+ };
79688
+ /** Base Query type with placeholder field. Extended by individual query files. */
78523
79689
  export type QueryLocationEntriesArgs = {
78524
79690
  filter?: InputMaybe<LocationEntryFilterInput>;
78525
79691
  pagination?: InputMaybe<PaginationInput>;
@@ -78534,6 +79700,10 @@ export type QueryLocationStatsArgs = {
78534
79700
  startDate?: InputMaybe<Scalars['DateTime']['input']>;
78535
79701
  };
78536
79702
  /** Base Query type with placeholder field. Extended by individual query files. */
79703
+ export type QueryLogStreamDestinationArgs = {
79704
+ id: Scalars['ID']['input'];
79705
+ };
79706
+ /** Base Query type with placeholder field. Extended by individual query files. */
78537
79707
  export type QueryLookupUserActorByEmailArgs = {
78538
79708
  email: Scalars['String']['input'];
78539
79709
  scopeId: Scalars['String']['input'];
@@ -78578,6 +79748,10 @@ export type QueryManErpConnectionArgs = {
78578
79748
  id: Scalars['ID']['input'];
78579
79749
  };
78580
79750
  /** Base Query type with placeholder field. Extended by individual query files. */
79751
+ export type QueryManFindMaterialSerialsArgs = {
79752
+ serialNumber: Scalars['String']['input'];
79753
+ };
79754
+ /** Base Query type with placeholder field. Extended by individual query files. */
78581
79755
  export type QueryManInspectionArgs = {
78582
79756
  id: Scalars['ID']['input'];
78583
79757
  };
@@ -78586,6 +79760,10 @@ export type QueryManInventoryItemArgs = {
78586
79760
  id: Scalars['ID']['input'];
78587
79761
  };
78588
79762
  /** Base Query type with placeholder field. Extended by individual query files. */
79763
+ export type QueryManInventoryItemBySkuArgs = {
79764
+ sku: Scalars['String']['input'];
79765
+ };
79766
+ /** Base Query type with placeholder field. Extended by individual query files. */
78589
79767
  export type QueryManListAssetsArgs = {
78590
79768
  pagination?: InputMaybe<PaginationInput>;
78591
79769
  status?: InputMaybe<ManAssetStatus>;
@@ -78655,6 +79833,11 @@ export type QueryManListMaterialRequirementsArgs = {
78655
79833
  productionOrderId: Scalars['ID']['input'];
78656
79834
  };
78657
79835
  /** Base Query type with placeholder field. Extended by individual query files. */
79836
+ export type QueryManListMaterialSerialsArgs = {
79837
+ filter?: InputMaybe<ManMaterialSerialFilterInput>;
79838
+ pagination?: InputMaybe<PaginationInput>;
79839
+ };
79840
+ /** Base Query type with placeholder field. Extended by individual query files. */
78658
79841
  export type QueryManListNonConformancesArgs = {
78659
79842
  pagination?: InputMaybe<PaginationInput>;
78660
79843
  severity?: InputMaybe<ManSeverity>;
@@ -78676,6 +79859,22 @@ export type QueryManMachineTagReadingArgs = {
78676
79859
  id: Scalars['ID']['input'];
78677
79860
  };
78678
79861
  /** Base Query type with placeholder field. Extended by individual query files. */
79862
+ export type QueryManMaintenanceWorkOrderArgs = {
79863
+ id: Scalars['ID']['input'];
79864
+ };
79865
+ /** Base Query type with placeholder field. Extended by individual query files. */
79866
+ export type QueryManMaterialLotArgs = {
79867
+ id: Scalars['ID']['input'];
79868
+ };
79869
+ /** Base Query type with placeholder field. Extended by individual query files. */
79870
+ export type QueryManMaterialSerialArgs = {
79871
+ id: Scalars['ID']['input'];
79872
+ };
79873
+ /** Base Query type with placeholder field. Extended by individual query files. */
79874
+ export type QueryManMaterialSerialRecallArgs = {
79875
+ id: Scalars['ID']['input'];
79876
+ };
79877
+ /** Base Query type with placeholder field. Extended by individual query files. */
78679
79878
  export type QueryManMyLegalAcceptancesArgs = {
78680
79879
  checkpointType: ManLegalCheckpointType;
78681
79880
  pagination?: InputMaybe<PaginationInput>;
@@ -78685,10 +79884,20 @@ export type QueryManNonConformanceArgs = {
78685
79884
  id: Scalars['ID']['input'];
78686
79885
  };
78687
79886
  /** Base Query type with placeholder field. Extended by individual query files. */
79887
+ export type QueryManNonConformancesForEntityArgs = {
79888
+ entityId: Scalars['ID']['input'];
79889
+ entityType: ManNonConformanceLinkType;
79890
+ };
79891
+ /** Base Query type with placeholder field. Extended by individual query files. */
78688
79892
  export type QueryManProductionOrderArgs = {
78689
79893
  id: Scalars['ID']['input'];
78690
79894
  };
78691
79895
  /** Base Query type with placeholder field. Extended by individual query files. */
79896
+ export type QueryManValidateMaterialSerialsArgs = {
79897
+ entry: ManSerialEntryInput;
79898
+ materialSku: Scalars['String']['input'];
79899
+ };
79900
+ /** Base Query type with placeholder field. Extended by individual query files. */
78692
79901
  export type QueryManWorkCenterArgs = {
78693
79902
  id: Scalars['ID']['input'];
78694
79903
  };
@@ -79084,6 +80293,11 @@ export type QueryPendingApprovalsArgs = {
79084
80293
  pagination?: InputMaybe<PaginationInput>;
79085
80294
  };
79086
80295
  /** Base Query type with placeholder field. Extended by individual query files. */
80296
+ export type QueryPendingToolApprovalsArgs = {
80297
+ limit?: InputMaybe<Scalars['Int']['input']>;
80298
+ offset?: InputMaybe<Scalars['Int']['input']>;
80299
+ };
80300
+ /** Base Query type with placeholder field. Extended by individual query files. */
79087
80301
  export type QueryPermissionAuditLogArgs = {
79088
80302
  filter?: InputMaybe<AuditLogFilterInput>;
79089
80303
  pagination?: InputMaybe<PaginationInput>;
@@ -81151,6 +82365,10 @@ export type QueryTimeEntryStatsArgs = {
81151
82365
  startDate?: InputMaybe<Scalars['DateTime']['input']>;
81152
82366
  };
81153
82367
  /** Base Query type with placeholder field. Extended by individual query files. */
82368
+ export type QueryToolApprovalRequestArgs = {
82369
+ id: Scalars['ID']['input'];
82370
+ };
82371
+ /** Base Query type with placeholder field. Extended by individual query files. */
81154
82372
  export type QueryTopApplicationsArgs = {
81155
82373
  endDate?: InputMaybe<Scalars['DateTime']['input']>;
81156
82374
  pagination?: InputMaybe<PaginationInput>;
@@ -81569,6 +82787,10 @@ export type QueryWorkPatternsArgs = {
81569
82787
  userId?: InputMaybe<Scalars['ID']['input']>;
81570
82788
  };
81571
82789
  /** Base Query type with placeholder field. Extended by individual query files. */
82790
+ export type QueryWorkerDataTableGetRowsArgs = {
82791
+ input: WorkerDataTableRowsQueryInput;
82792
+ };
82793
+ /** Base Query type with placeholder field. Extended by individual query files. */
81572
82794
  export type QueryWorkerGetExecutionContextArgs = {
81573
82795
  runId: Scalars['ID']['input'];
81574
82796
  version: Scalars['String']['input'];
@@ -81579,6 +82801,16 @@ export type QueryWorkerGetNodeStatesArgs = {
81579
82801
  runId: Scalars['ID']['input'];
81580
82802
  };
81581
82803
  /** Base Query type with placeholder field. Extended by individual query files. */
82804
+ export type QueryWorkerGetWorkflowStaticDataArgs = {
82805
+ workflowKey: Scalars['String']['input'];
82806
+ workspaceId: Scalars['ID']['input'];
82807
+ };
82808
+ /** Base Query type with placeholder field. Extended by individual query files. */
82809
+ export type QueryWorkerGetWorkflowVariablesArgs = {
82810
+ projectId?: InputMaybe<Scalars['ID']['input']>;
82811
+ workspaceId: Scalars['ID']['input'];
82812
+ };
82813
+ /** Base Query type with placeholder field. Extended by individual query files. */
81582
82814
  export type QueryWorkerResolveNodeEndpointArgs = {
81583
82815
  nodeType: Scalars['String']['input'];
81584
82816
  nodeVersion?: InputMaybe<Scalars['String']['input']>;
@@ -81648,10 +82880,35 @@ export type QueryWorkflowScheduledJobsArgs = {
81648
82880
  workflowKey?: InputMaybe<Scalars['String']['input']>;
81649
82881
  };
81650
82882
  /** Base Query type with placeholder field. Extended by individual query files. */
82883
+ export type QueryWorkflowStaticDataArgs = {
82884
+ nodeId?: InputMaybe<Scalars['String']['input']>;
82885
+ scope: StaticDataScope;
82886
+ workflowKey: Scalars['String']['input'];
82887
+ };
82888
+ /** Base Query type with placeholder field. Extended by individual query files. */
82889
+ export type QueryWorkflowStaticDataListArgs = {
82890
+ workflowKey: Scalars['String']['input'];
82891
+ };
82892
+ /** Base Query type with placeholder field. Extended by individual query files. */
81651
82893
  export type QueryWorkflowSummaryArgs = {
81652
82894
  workflowKey: Scalars['String']['input'];
81653
82895
  };
81654
82896
  /** Base Query type with placeholder field. Extended by individual query files. */
82897
+ export type QueryWorkflowVariableArgs = {
82898
+ id: Scalars['ID']['input'];
82899
+ };
82900
+ /** Base Query type with placeholder field. Extended by individual query files. */
82901
+ export type QueryWorkflowVariablesArgs = {
82902
+ projectId?: InputMaybe<Scalars['ID']['input']>;
82903
+ scope?: InputMaybe<VariableScope>;
82904
+ };
82905
+ /** Base Query type with placeholder field. Extended by individual query files. */
82906
+ export type QueryWorkflowVersionDiffArgs = {
82907
+ fromVersion: Scalars['String']['input'];
82908
+ toVersion: Scalars['String']['input'];
82909
+ workflowKey: Scalars['String']['input'];
82910
+ };
82911
+ /** Base Query type with placeholder field. Extended by individual query files. */
81655
82912
  export type QueryWorkflowVersionsArgs = {
81656
82913
  workflowKey: Scalars['String']['input'];
81657
82914
  };
@@ -82296,6 +83553,7 @@ export type RegisterNodeInput = {
82296
83553
  author?: InputMaybe<Scalars['String']['input']>;
82297
83554
  category?: InputMaybe<Scalars['String']['input']>;
82298
83555
  description?: InputMaybe<Scalars['String']['input']>;
83556
+ docsUrl?: InputMaybe<Scalars['String']['input']>;
82299
83557
  endpointUrl: Scalars['String']['input'];
82300
83558
  favicon?: InputMaybe<Scalars['String']['input']>;
82301
83559
  healthCheckUrl?: InputMaybe<Scalars['String']['input']>;
@@ -83216,6 +84474,12 @@ export type RetryWebhookDeliveryResponse = {
83216
84474
  message?: Maybe<Scalars['String']['output']>;
83217
84475
  success: Scalars['Boolean']['output'];
83218
84476
  };
84477
+ export type RevealWorkflowVariableValueResponse = MutationResponse & {
84478
+ __typename?: 'RevealWorkflowVariableValueResponse';
84479
+ message: Scalars['String']['output'];
84480
+ success: Scalars['Boolean']['output'];
84481
+ value?: Maybe<Scalars['String']['output']>;
84482
+ };
83219
84483
  export type RevenueChartPoint = {
83220
84484
  __typename?: 'RevenueChartPoint';
83221
84485
  expenses: Scalars['Float']['output'];
@@ -83578,6 +84842,15 @@ export declare enum RuleRunMode {
83578
84842
  Manual = "MANUAL",
83579
84843
  Realtime = "REALTIME"
83580
84844
  }
84845
+ /** Input for re-running a workflow from a chosen node onward, reusing the upstream node outputs already captured by an earlier run instead of re-executing the whole upstream chain (BOFF-7511). */
84846
+ export type RunFromNodeInput = {
84847
+ /** Manual (TEST) vs real (PRODUCTION) execution. Defaults to TEST — this is a debugging affordance, not a production replay mechanism. */
84848
+ mode?: InputMaybe<RunMode>;
84849
+ /** Node to (re-)execute; everything downstream of it executes normally. */
84850
+ nodeId: Scalars['String']['input'];
84851
+ /** The earlier run to reuse upstream node outputs from. */
84852
+ sourceRunId: Scalars['ID']['input'];
84853
+ };
83581
84854
  /** Severity of a run log line. */
83582
84855
  export declare enum RunLogLevel {
83583
84856
  Debug = "DEBUG",
@@ -83622,6 +84895,11 @@ export declare enum RunLogStream {
83622
84895
  Stdout = "STDOUT",
83623
84896
  System = "SYSTEM"
83624
84897
  }
84898
+ /** Manual/debug (TEST) vs real (PRODUCTION) execution — BOFF-7511. Pinned node data, step-debug and run-from-node are TEST-only affordances. Defaults to PRODUCTION everywhere for backward compatibility with every caller that predates this distinction (webhooks, schedules, existing API/SDK callers). The executor MUST refuse to read pinned data for a PRODUCTION run — this is a hard safety invariant, not a UX default. */
84899
+ export declare enum RunMode {
84900
+ Production = "PRODUCTION",
84901
+ Test = "TEST"
84902
+ }
83625
84903
  export type RunSandboxScriptInput = {
83626
84904
  context: ContextInput;
83627
84905
  /** bash | sh | python | node */
@@ -83639,6 +84917,17 @@ export declare enum RunStatus {
83639
84917
  Terminated = "TERMINATED",
83640
84918
  Waiting = "WAITING"
83641
84919
  }
84920
+ /** Coarse trigger-type filter for the Runs screen (BOFF-7519). Derived from a run's `context` at query time (see `WorkflowRunProvider.runTriggerTypeWhere`) — there is no dedicated trigger-type column. */
84921
+ export declare enum RunTriggerType {
84922
+ /** Started by an internal event, a polling-detected change, or a chained workflow trigger. */
84923
+ Event = "EVENT",
84924
+ /** Builder "Test workflow", the SDK, or a bare API call — the default when nothing else stamped a trigger type. */
84925
+ Manual = "MANUAL",
84926
+ /** Started by a scheduled/cron fire. */
84927
+ Schedule = "SCHEDULE",
84928
+ /** Started by an inbound webhook delivery. */
84929
+ Webhook = "WEBHOOK"
84930
+ }
83642
84931
  export type RunningTimer = {
83643
84932
  __typename?: 'RunningTimer';
83644
84933
  elapsedSeconds: Scalars['Int']['output'];
@@ -84042,6 +85331,16 @@ export type SaveSandboxArtifactInput = {
84042
85331
  /** Assistant session inside the sandbox. */
84043
85332
  sessionId: Scalars['String']['input'];
84044
85333
  };
85334
+ export type SaveSecretsProviderConfigInput = {
85335
+ awsRegion?: InputMaybe<Scalars['String']['input']>;
85336
+ awsSecretsManagerPrefix?: InputMaybe<Scalars['String']['input']>;
85337
+ azureKeyVaultUri?: InputMaybe<Scalars['String']['input']>;
85338
+ gcpProjectId?: InputMaybe<Scalars['String']['input']>;
85339
+ isEnabled?: InputMaybe<Scalars['Boolean']['input']>;
85340
+ provider: SecretProviderType;
85341
+ vaultAddress?: InputMaybe<Scalars['String']['input']>;
85342
+ vaultMountPath?: InputMaybe<Scalars['String']['input']>;
85343
+ };
84045
85344
  export type SaveUiSessionInput = {
84046
85345
  activeSessionId?: InputMaybe<Scalars['ID']['input']>;
84047
85346
  activeVibeId?: InputMaybe<Scalars['ID']['input']>;
@@ -84692,6 +85991,13 @@ export type SecretList = {
84692
85991
  items: Array<Secret>;
84693
85992
  total: Scalars['Int']['output'];
84694
85993
  };
85994
+ export declare enum SecretProviderType {
85995
+ AwsSecretsManager = "AWS_SECRETS_MANAGER",
85996
+ AzureKeyVault = "AZURE_KEY_VAULT",
85997
+ GcpSecretManager = "GCP_SECRET_MANAGER",
85998
+ None = "NONE",
85999
+ Vault = "VAULT"
86000
+ }
84695
86001
  export type SecretRotatedPayload = {
84696
86002
  __typename?: 'SecretRotatedPayload';
84697
86003
  secret: Secret;
@@ -84841,6 +86147,30 @@ export type SecretVersionList = {
84841
86147
  items: Array<SecretVersion>;
84842
86148
  total: Scalars['Int']['output'];
84843
86149
  };
86150
+ export type SecretsProviderConfig = {
86151
+ __typename?: 'SecretsProviderConfig';
86152
+ awsRegion?: Maybe<Scalars['String']['output']>;
86153
+ awsSecretsManagerPrefix?: Maybe<Scalars['String']['output']>;
86154
+ azureKeyVaultUri?: Maybe<Scalars['String']['output']>;
86155
+ createdAt: Scalars['DateTime']['output'];
86156
+ gcpProjectId?: Maybe<Scalars['String']['output']>;
86157
+ id: Scalars['ID']['output'];
86158
+ isEnabled: Scalars['Boolean']['output'];
86159
+ lastTestMessage?: Maybe<Scalars['String']['output']>;
86160
+ lastTestStatus?: Maybe<Scalars['String']['output']>;
86161
+ lastTestedAt?: Maybe<Scalars['DateTime']['output']>;
86162
+ provider: SecretProviderType;
86163
+ updatedAt: Scalars['DateTime']['output'];
86164
+ vaultAddress?: Maybe<Scalars['String']['output']>;
86165
+ vaultMountPath?: Maybe<Scalars['String']['output']>;
86166
+ workspaceId: Scalars['ID']['output'];
86167
+ };
86168
+ export type SecretsProviderConfigResponse = MutationResponse & {
86169
+ __typename?: 'SecretsProviderConfigResponse';
86170
+ config?: Maybe<SecretsProviderConfig>;
86171
+ message: Scalars['String']['output'];
86172
+ success: Scalars['Boolean']['output'];
86173
+ };
84844
86174
  export type SecurityComplianceFramework = {
84845
86175
  __typename?: 'SecurityComplianceFramework';
84846
86176
  createdAt: Scalars['DateTime']['output'];
@@ -86987,6 +88317,10 @@ export type StartTimerInput = {
86987
88317
  tags?: InputMaybe<Scalars['JSON']['input']>;
86988
88318
  taskId?: InputMaybe<Scalars['ID']['input']>;
86989
88319
  };
88320
+ export declare enum StaticDataScope {
88321
+ Global = "GLOBAL",
88322
+ Node = "NODE"
88323
+ }
86990
88324
  /** Status statistics */
86991
88325
  export type StatusStats = {
86992
88326
  __typename?: 'StatusStats';
@@ -88566,6 +89900,16 @@ export declare enum SyncProvider {
88566
89900
  GoogleCalendar = "GOOGLE_CALENDAR",
88567
89901
  OutlookCalendar = "OUTLOOK_CALENDAR"
88568
89902
  }
89903
+ export type SyncWorkflowStaticDataInput = {
89904
+ /** Omit to leave the global blob untouched (no node in the run wrote to it). */
89905
+ global?: InputMaybe<Scalars['JSON']['input']>;
89906
+ /** Only the node-scoped blobs that were actually touched during the run — omitted nodes are left untouched. */
89907
+ nodes?: InputMaybe<Array<WorkerStaticDataNodeWriteInput>>;
89908
+ /** The run this write is attributed to. Re-fetched and re-validated server-side (mode === PRODUCTION, status === COMPLETED) before anything is written — see the module doc comment. The caller's own belief about the run's mode is NEVER trusted on its own. */
89909
+ runId: Scalars['ID']['input'];
89910
+ workflowKey: Scalars['String']['input'];
89911
+ workspaceId: Scalars['ID']['input'];
89912
+ };
88569
89913
  export type SystemConfig = {
88570
89914
  __typename?: 'SystemConfig';
88571
89915
  deploymentType: Scalars['String']['output'];
@@ -90468,6 +91812,11 @@ export type TerraceGarden = {
90468
91812
  /** TAP | BOREWELL | RAINWATER | RO_REJECT | STORED */
90469
91813
  waterSource?: Maybe<Scalars['String']['output']>;
90470
91814
  };
91815
+ export type TestLogStreamDestinationResponse = MutationResponse & {
91816
+ __typename?: 'TestLogStreamDestinationResponse';
91817
+ message: Scalars['String']['output'];
91818
+ success: Scalars['Boolean']['output'];
91819
+ };
90471
91820
  export type TestParserInput = {
90472
91821
  /** BOFF-5518: test the expression against a stored DataSink by id. The backend loads the payload server-side (workspace-scoped, soft-delete-aware, field-masked) — the client sends only the reference. Mutually exclusive with sampleData and with dataSinkKey. */
90473
91822
  dataSinkId?: InputMaybe<Scalars['ID']['input']>;
@@ -90484,6 +91833,11 @@ export type TestPipelineInput = {
90484
91833
  inputData: Scalars['JSON']['input'];
90485
91834
  pipelineId: Scalars['ID']['input'];
90486
91835
  };
91836
+ export type TestSecretsProviderConnectionResponse = MutationResponse & {
91837
+ __typename?: 'TestSecretsProviderConnectionResponse';
91838
+ message: Scalars['String']['output'];
91839
+ success: Scalars['Boolean']['output'];
91840
+ };
90487
91841
  export type TheAsset = {
90488
91842
  __typename?: 'TheAsset';
90489
91843
  /** Areal extent of the asset (field / lease / concession), in square kilometers. */
@@ -92084,6 +93438,58 @@ export type TokenVerificationResult = {
92084
93438
  /** Whether the token is valid */
92085
93439
  valid: Scalars['Boolean']['output'];
92086
93440
  };
93441
+ export type ToolApprovalDecisionInput = {
93442
+ callId: Scalars['ID']['input'];
93443
+ decision: ToolApprovalDecisionValue;
93444
+ reason?: InputMaybe<Scalars['String']['input']>;
93445
+ };
93446
+ /** The decision recorded for one `callId` inside a request's `toolCalls`. */
93447
+ export type ToolApprovalDecisionRecord = {
93448
+ __typename?: 'ToolApprovalDecisionRecord';
93449
+ callId: Scalars['ID']['output'];
93450
+ decision: ToolApprovalDecisionValue;
93451
+ reason?: Maybe<Scalars['String']['output']>;
93452
+ };
93453
+ export declare enum ToolApprovalDecisionValue {
93454
+ Approved = "APPROVED",
93455
+ Rejected = "REJECTED"
93456
+ }
93457
+ /** A batch of AI-agent tool calls parked for human approval. Federated entity identified by id. */
93458
+ export type ToolApprovalRequest = {
93459
+ __typename?: 'ToolApprovalRequest';
93460
+ createdAt: Scalars['DateTime']['output'];
93461
+ decidedAt?: Maybe<Scalars['DateTime']['output']>;
93462
+ decidedBy?: Maybe<Scalars['String']['output']>;
93463
+ decisions?: Maybe<Array<ToolApprovalDecisionRecord>>;
93464
+ id: Scalars['ID']['output'];
93465
+ nodeId: Scalars['String']['output'];
93466
+ requestedAt: Scalars['DateTime']['output'];
93467
+ runId: Scalars['ID']['output'];
93468
+ status: ToolApprovalStatus;
93469
+ timeoutAction: ToolApprovalTimeoutAction;
93470
+ timeoutAt?: Maybe<Scalars['DateTime']['output']>;
93471
+ toolCalls: Array<PendingToolCall>;
93472
+ updatedAt: Scalars['DateTime']['output'];
93473
+ workflowId: Scalars['String']['output'];
93474
+ workflowKey: Scalars['String']['output'];
93475
+ workspaceId: Scalars['String']['output'];
93476
+ };
93477
+ export type ToolApprovalRequestPage = {
93478
+ __typename?: 'ToolApprovalRequestPage';
93479
+ items: Array<ToolApprovalRequest>;
93480
+ totalCount: Scalars['Int']['output'];
93481
+ };
93482
+ export declare enum ToolApprovalStatus {
93483
+ Approved = "APPROVED",
93484
+ Partial = "PARTIAL",
93485
+ Pending = "PENDING",
93486
+ Rejected = "REJECTED",
93487
+ TimedOut = "TIMED_OUT"
93488
+ }
93489
+ export declare enum ToolApprovalTimeoutAction {
93490
+ AutoApprove = "AUTO_APPROVE",
93491
+ AutoReject = "AUTO_REJECT"
93492
+ }
92087
93493
  export declare enum ToolRiskLevel {
92088
93494
  High = "HIGH",
92089
93495
  Low = "LOW",
@@ -92359,6 +93765,8 @@ export type TriggerScheduledCommentInput = {
92359
93765
  /** Input for triggering workflow */
92360
93766
  export type TriggerWorkflowInput = {
92361
93767
  context?: InputMaybe<Scalars['JSON']['input']>;
93768
+ /** Manual (TEST) vs real (PRODUCTION) execution — BOFF-7511. Defaults to PRODUCTION so every existing caller (webhooks, schedules, the SDK, older builder clients) keeps behaving exactly as before. Only a TEST run may use pinned node data — set this to TEST for builder "Test workflow"/step/ run-from-node actions. */
93769
+ mode?: InputMaybe<RunMode>;
92362
93770
  /** Optional: Stop execution after this node ID. When set, workflow executes from trigger up to and including this node, then marks the run as COMPLETED without continuing to subsequent nodes. Used for step-by-step debugging (n8n-style "Execute step" feature). */
92363
93771
  stopAtNodeId?: InputMaybe<Scalars['String']['input']>;
92364
93772
  triggerData?: InputMaybe<Scalars['JSON']['input']>;
@@ -93880,6 +95288,12 @@ export type UpdateDataSinkLinkInput = {
93880
95288
  isEnabled?: InputMaybe<Scalars['Boolean']['input']>;
93881
95289
  priority?: InputMaybe<Scalars['Int']['input']>;
93882
95290
  };
95291
+ export type UpdateDataTableInput = {
95292
+ /** Replaces the full column list. Existing rows are NOT retroactively re-validated against a narrowed schema (e.g. a column newly marked `required`) — only rows written AFTER the change are validated against it. */
95293
+ columns?: InputMaybe<Array<DataTableColumnInput>>;
95294
+ description?: InputMaybe<Scalars['String']['input']>;
95295
+ name?: InputMaybe<Scalars['String']['input']>;
95296
+ };
93883
95297
  export type UpdateDeliveryJobInput = {
93884
95298
  cargoItems?: InputMaybe<Scalars['JSON']['input']>;
93885
95299
  context?: InputMaybe<ContextInput>;
@@ -93889,6 +95303,7 @@ export type UpdateDeliveryJobInput = {
93889
95303
  pickupAddress?: InputMaybe<Scalars['JSON']['input']>;
93890
95304
  pricing?: InputMaybe<Scalars['JSON']['input']>;
93891
95305
  priority?: InputMaybe<DeliveryPriority>;
95306
+ routeId?: InputMaybe<Scalars['ID']['input']>;
93892
95307
  scheduledDelivery?: InputMaybe<Scalars['DateTime']['input']>;
93893
95308
  specialInstructions?: InputMaybe<Scalars['String']['input']>;
93894
95309
  status?: InputMaybe<DeliveryJobStatus>;
@@ -93917,6 +95332,7 @@ export type UpdateDriverInput = {
93917
95332
  status?: InputMaybe<DriverStatus>;
93918
95333
  userId?: InputMaybe<Scalars['String']['input']>;
93919
95334
  vehicleId?: InputMaybe<Scalars['String']['input']>;
95335
+ vehicleIds?: InputMaybe<Array<Scalars['ID']['input']>>;
93920
95336
  };
93921
95337
  export type UpdateEmailTimeEntryInput = {
93922
95338
  category?: InputMaybe<Scalars['String']['input']>;
@@ -95247,6 +96663,15 @@ export type UpdateLocationEntryInput = {
95247
96663
  projectId?: InputMaybe<Scalars['ID']['input']>;
95248
96664
  startTime?: InputMaybe<Scalars['DateTime']['input']>;
95249
96665
  };
96666
+ export type UpdateLogStreamDestinationInput = {
96667
+ config?: InputMaybe<Scalars['JSON']['input']>;
96668
+ endpoint?: InputMaybe<Scalars['String']['input']>;
96669
+ eventFilters?: InputMaybe<Array<LogStreamEventType>>;
96670
+ isEnabled?: InputMaybe<Scalars['Boolean']['input']>;
96671
+ name?: InputMaybe<Scalars['String']['input']>;
96672
+ /** WEBHOOK only. Pass null-omit to leave unchanged; pass an empty string to clear a previously configured secret. */
96673
+ secret?: InputMaybe<Scalars['String']['input']>;
96674
+ };
95250
96675
  export type UpdateMcpConnectionInput = {
95251
96676
  config?: InputMaybe<Scalars['JSON']['input']>;
95252
96677
  credentials?: InputMaybe<Scalars['JSON']['input']>;
@@ -96501,6 +97926,13 @@ export type UpdateWorkflowInput = {
96501
97926
  name?: InputMaybe<Scalars['String']['input']>;
96502
97927
  status?: InputMaybe<FluidGridsWorkflowStatus>;
96503
97928
  };
97929
+ export type UpdateWorkflowVariableInput = {
97930
+ description?: InputMaybe<Scalars['String']['input']>;
97931
+ externalProvider?: InputMaybe<SecretProviderType>;
97932
+ externalRef?: InputMaybe<Scalars['String']['input']>;
97933
+ isSecret?: InputMaybe<Scalars['Boolean']['input']>;
97934
+ value?: InputMaybe<Scalars['String']['input']>;
97935
+ };
96504
97936
  export type UpdateWorkspaceDefaultsInput = {
96505
97937
  agentAutoReconnect?: InputMaybe<Scalars['Boolean']['input']>;
96506
97938
  agentHeartbeatInterval?: InputMaybe<Scalars['Int']['input']>;
@@ -97103,6 +98535,10 @@ export declare enum ValidationMethod {
97103
98535
  None = "NONE",
97104
98536
  Signature = "SIGNATURE"
97105
98537
  }
98538
+ export declare enum VariableScope {
98539
+ Project = "PROJECT",
98540
+ Workspace = "WORKSPACE"
98541
+ }
97106
98542
  export type Vault = {
97107
98543
  __typename?: 'Vault';
97108
98544
  /** Contextual IDs for filtering and scoping (workspaceId, userId, projectId, etc.) */
@@ -97572,6 +99008,7 @@ export type VaultUpdatedPayload = {
97572
99008
  workspaceId: Scalars['String']['output'];
97573
99009
  };
97574
99010
  export type VehicleFilterInput = {
99011
+ driverId?: InputMaybe<Scalars['ID']['input']>;
97575
99012
  search?: InputMaybe<Scalars['String']['input']>;
97576
99013
  status?: InputMaybe<VehicleStatus>;
97577
99014
  type?: InputMaybe<VehicleType>;
@@ -100512,6 +101949,93 @@ export type WorkerCreateNodeStateInput = {
100512
101949
  runId: Scalars['ID']['input'];
100513
101950
  status: NodeStatus;
100514
101951
  };
101952
+ /** Input for recording a pending tool-approval request. */
101953
+ export type WorkerCreateToolApprovalRequestInput = {
101954
+ nodeId: Scalars['String']['input'];
101955
+ nodeStateId: Scalars['ID']['input'];
101956
+ runId: Scalars['ID']['input'];
101957
+ timeoutAction?: InputMaybe<ToolApprovalTimeoutAction>;
101958
+ /** Minutes from now before the timeout sweep auto-resolves this request. Omitted/0 means no timeout (it waits indefinitely for a human). */
101959
+ timeoutMinutes?: InputMaybe<Scalars['Int']['input']>;
101960
+ /** JSON array of `{ callId, name, argsJson }` — the calls awaiting a decision. */
101961
+ toolCalls: Scalars['JSON']['input'];
101962
+ workflowId: Scalars['String']['input'];
101963
+ workflowKey: Scalars['String']['input'];
101964
+ workspaceId: Scalars['String']['input'];
101965
+ };
101966
+ export type WorkerDataTableDeleteResponse = {
101967
+ __typename?: 'WorkerDataTableDeleteResponse';
101968
+ affected: Scalars['Int']['output'];
101969
+ error?: Maybe<Scalars['String']['output']>;
101970
+ success: Scalars['Boolean']['output'];
101971
+ };
101972
+ export type WorkerDataTableDeleteRowsInput = {
101973
+ filters?: InputMaybe<Array<DataTableRowFilterInput>>;
101974
+ rowIds?: InputMaybe<Array<Scalars['ID']['input']>>;
101975
+ tableId?: InputMaybe<Scalars['ID']['input']>;
101976
+ tableName?: InputMaybe<Scalars['String']['input']>;
101977
+ workspaceId: Scalars['ID']['input'];
101978
+ };
101979
+ export type WorkerDataTableInsertRowInput = {
101980
+ data: Scalars['JSON']['input'];
101981
+ tableId?: InputMaybe<Scalars['ID']['input']>;
101982
+ tableName?: InputMaybe<Scalars['String']['input']>;
101983
+ workspaceId: Scalars['ID']['input'];
101984
+ };
101985
+ export type WorkerDataTableRowResponse = {
101986
+ __typename?: 'WorkerDataTableRowResponse';
101987
+ error?: Maybe<Scalars['String']['output']>;
101988
+ row?: Maybe<Scalars['JSON']['output']>;
101989
+ success: Scalars['Boolean']['output'];
101990
+ };
101991
+ export type WorkerDataTableRowsQueryInput = {
101992
+ filters?: InputMaybe<Array<DataTableRowFilterInput>>;
101993
+ limit?: InputMaybe<Scalars['Int']['input']>;
101994
+ tableId?: InputMaybe<Scalars['ID']['input']>;
101995
+ tableName?: InputMaybe<Scalars['String']['input']>;
101996
+ workspaceId: Scalars['ID']['input'];
101997
+ };
101998
+ /** WORKER-INTERNAL: response shape for the Data Table node's operations. Mirrors the user-facing responses but never throws on a business-logic failure (quota exceeded, validation failed, row not found) — the Data Table node surfaces `error` as a normal node failure instead of an unhandled GraphQL exception. */
101999
+ export type WorkerDataTableRowsResponse = {
102000
+ __typename?: 'WorkerDataTableRowsResponse';
102001
+ error?: Maybe<Scalars['String']['output']>;
102002
+ rows: Scalars['JSON']['output'];
102003
+ success: Scalars['Boolean']['output'];
102004
+ total: Scalars['Int']['output'];
102005
+ };
102006
+ export type WorkerDataTableUpdateRowInput = {
102007
+ data: Scalars['JSON']['input'];
102008
+ rowId: Scalars['ID']['input'];
102009
+ tableId?: InputMaybe<Scalars['ID']['input']>;
102010
+ tableName?: InputMaybe<Scalars['String']['input']>;
102011
+ workspaceId: Scalars['ID']['input'];
102012
+ };
102013
+ export type WorkerDataTableUpsertRowInput = {
102014
+ data: Scalars['JSON']['input'];
102015
+ matchColumns: Array<Scalars['String']['input']>;
102016
+ tableId?: InputMaybe<Scalars['ID']['input']>;
102017
+ tableName?: InputMaybe<Scalars['String']['input']>;
102018
+ workspaceId: Scalars['ID']['input'];
102019
+ };
102020
+ export type WorkerDedupeCheckAndMarkInput = {
102021
+ /** SHA-256 hex digests of each item's compare-key (never the raw item value — see the `WorkflowDedupeSeen` model doc comment). */
102022
+ hashes: Array<Scalars['String']['input']>;
102023
+ /** Cap on distinct values remembered per node — oldest entries are pruned once exceeded. Defaults to 10000. */
102024
+ maxTracked?: InputMaybe<Scalars['Int']['input']>;
102025
+ /** The Dedupe node's id in the DAG — scopes the "seen" set to this one node instance, matching PollState's (workflowKey, triggerNodeId) scoping. */
102026
+ nodeId: Scalars['String']['input'];
102027
+ /** Only treat a previously-seen hash as "still seen" if it was recorded within the last N seconds. Omitted = remember indefinitely (until `maxTracked` pruning). */
102028
+ windowSeconds?: InputMaybe<Scalars['Int']['input']>;
102029
+ workflowKey: Scalars['String']['input'];
102030
+ workspaceId: Scalars['ID']['input'];
102031
+ };
102032
+ export type WorkerDedupeCheckAndMarkResponse = {
102033
+ __typename?: 'WorkerDedupeCheckAndMarkResponse';
102034
+ error?: Maybe<Scalars['String']['output']>;
102035
+ /** Subset of the input `hashes` that were NOT already seen (within the window, if any) — these are the ones this call just recorded as seen. */
102036
+ newHashes: Array<Scalars['String']['output']>;
102037
+ success: Scalars['Boolean']['output'];
102038
+ };
100515
102039
  /** Definition data for worker execution */
100516
102040
  export type WorkerDefinitionData = {
100517
102041
  __typename?: 'WorkerDefinitionData';
@@ -100568,6 +102092,8 @@ export type WorkerNodeState = {
100568
102092
  runId: Scalars['String']['output'];
100569
102093
  startTime?: Maybe<Scalars['DateTime']['output']>;
100570
102094
  status: NodeStatus;
102095
+ /** True when this node's output came from pinned data instead of a real call (BOFF-7511). The executor decides this itself from the job message's own `mode`/pinned data (never a server round-trip) and stamps the result here purely for the UI/audit trail — the server never reads this to decide behavior. */
102096
+ usedPinnedData?: Maybe<Scalars['Boolean']['output']>;
100571
102097
  };
100572
102098
  /** Response for node state operations */
100573
102099
  export type WorkerNodeStateResponse = {
@@ -100595,6 +102121,8 @@ export type WorkerRunData = {
100595
102121
  __typename?: 'WorkerRunData';
100596
102122
  context?: Maybe<Scalars['JSON']['output']>;
100597
102123
  id: Scalars['ID']['output'];
102124
+ /** BOFF-7650: cached by the executor alongside the rest of this record so `completeRun` can gate static-data persistence on it without a second round trip. Re-verified independently server-side in `StaticDataProvider.syncForRun` regardless — this field is a convenience for the caller, never the source of truth for the safety check. */
102125
+ mode: RunMode;
100598
102126
  parentRunId?: Maybe<Scalars['String']['output']>;
100599
102127
  startedAt?: Maybe<Scalars['DateTime']['output']>;
100600
102128
  status: RunStatus;
@@ -100626,6 +102154,33 @@ export type WorkerRunStatusResponse = {
100626
102154
  run?: Maybe<WorkerRunData>;
100627
102155
  success: Scalars['Boolean']['output'];
100628
102156
  };
102157
+ export type WorkerStaticDataNodeWriteInput = {
102158
+ data: Scalars['JSON']['input'];
102159
+ nodeId: Scalars['String']['input'];
102160
+ };
102161
+ /** WORKER-INTERNAL: current persisted static data for a workflow, hydrated by fluidgrids-workers at the start of every node execution that might read it. */
102162
+ export type WorkerStaticDataResponse = {
102163
+ __typename?: 'WorkerStaticDataResponse';
102164
+ error?: Maybe<Scalars['String']['output']>;
102165
+ /** Global-scope blob (`{}` when never written). */
102166
+ global: Scalars['JSON']['output'];
102167
+ /** Node-scope blobs, keyed by nodeId (`{}` when a given node has never written one). */
102168
+ nodes: Scalars['JSON']['output'];
102169
+ success: Scalars['Boolean']['output'];
102170
+ };
102171
+ export type WorkerStaticDataSyncResponse = {
102172
+ __typename?: 'WorkerStaticDataSyncResponse';
102173
+ error?: Maybe<Scalars['String']['output']>;
102174
+ /** True only when at least one blob's `data` actually changed content (server-side content compare) — lets the caller avoid bumping `version` unnecessarily and gives the run log a meaningful "persisted" vs "no-op" line. */
102175
+ persisted: Scalars['Boolean']['output'];
102176
+ success: Scalars['Boolean']['output'];
102177
+ };
102178
+ export type WorkerToolApprovalRequestResponse = {
102179
+ __typename?: 'WorkerToolApprovalRequestResponse';
102180
+ error?: Maybe<Scalars['String']['output']>;
102181
+ request?: Maybe<ToolApprovalRequest>;
102182
+ success: Scalars['Boolean']['output'];
102183
+ };
100629
102184
  /** Input for updating node state */
100630
102185
  export type WorkerUpdateNodeStateInput = {
100631
102186
  attemptCount?: InputMaybe<Scalars['Int']['input']>;
@@ -100638,6 +102193,8 @@ export type WorkerUpdateNodeStateInput = {
100638
102193
  output?: InputMaybe<Scalars['JSON']['input']>;
100639
102194
  startTime?: InputMaybe<Scalars['DateTime']['input']>;
100640
102195
  status: NodeStatus;
102196
+ /** Set true when the executor used pinned data instead of actually calling the node (BOFF-7511). */
102197
+ usedPinnedData?: InputMaybe<Scalars['Boolean']['input']>;
100641
102198
  };
100642
102199
  /** Input for updating run status */
100643
102200
  export type WorkerUpdateRunStatusInput = {
@@ -100648,6 +102205,16 @@ export type WorkerUpdateRunStatusInput = {
100648
102205
  startedAt?: InputMaybe<Scalars['DateTime']['input']>;
100649
102206
  status: RunStatus;
100650
102207
  };
102208
+ /** Worker-only, execution-time resolution of every variable visible to a run (workspace-scope merged with project-scope overrides), with secret values resolved (local decrypt or external provider fetch). Never exposed to normal user-facing callers — see the `actorTypes: ["service"]` directive below. */
102209
+ export type WorkerVariablesResponse = {
102210
+ __typename?: 'WorkerVariablesResponse';
102211
+ error?: Maybe<Scalars['String']['output']>;
102212
+ /** Keys whose value is secret — the caller (fluidgrids-workers) uses this to scrub the values out of run log lines before they are ever persisted. */
102213
+ secretKeys: Array<Scalars['String']['output']>;
102214
+ success: Scalars['Boolean']['output'];
102215
+ /** Flattened `{ key: value }` map, ready to use as `$vars`. */
102216
+ vars: Scalars['JSON']['output'];
102217
+ };
100651
102218
  /** WorkflowDefinition: Reusable workflow template with versioning Federated entity identified by id */
100652
102219
  export type WorkflowDefinition = {
100653
102220
  __typename?: 'WorkflowDefinition';
@@ -100664,6 +102231,10 @@ export type WorkflowDefinition = {
100664
102231
  /** Computed field: true if status is ACTIVE */
100665
102232
  isActive: Scalars['Boolean']['output'];
100666
102233
  name: Scalars['String']['output'];
102234
+ /** Stable references for the nodes used by this workflow version */
102235
+ nodeReferences: Array<WorkflowNodeReference>;
102236
+ /** Pinned/mock output data, keyed by nodeId (BOFF-7511). Mirrors `definitionJson.pinnedData` as a typed convenience field so the builder doesn't need to reach into the raw definition blob. Each value is `{ data, pinnedAt, pinnedBy }`. Honored ONLY by TEST-mode runs — see `TriggerWorkflowInput.mode` / `RunMode`. */
102237
+ pinnedNodeData: Scalars['JSON']['output'];
100667
102238
  projectId?: Maybe<Scalars['String']['output']>;
100668
102239
  runs: Array<WorkflowRun>;
100669
102240
  status: WorkflowStatus;
@@ -100692,6 +102263,11 @@ export type WorkflowDefinitionListResponse = {
100692
102263
  items: Array<WorkflowDefinition>;
100693
102264
  total: Scalars['Int']['output'];
100694
102265
  };
102266
+ export declare enum WorkflowDiffKind {
102267
+ Added = "ADDED",
102268
+ Changed = "CHANGED",
102269
+ Removed = "REMOVED"
102270
+ }
100695
102271
  /** WorkflowExecutionLog: Detailed execution logs for debugging Note: Consider using tenantmodule-activity for production */
100696
102272
  export type WorkflowExecutionLog = {
100697
102273
  __typename?: 'WorkflowExecutionLog';
@@ -100716,6 +102292,32 @@ export type WorkflowExecutionMetrics = {
100716
102292
  totalDurationSeconds: Scalars['Float']['output'];
100717
102293
  totalRuns: Scalars['Int']['output'];
100718
102294
  };
102295
+ /** Portable workflow document returned by exportWorkflow. */
102296
+ export type WorkflowExport = {
102297
+ __typename?: 'WorkflowExport';
102298
+ category?: Maybe<Scalars['String']['output']>;
102299
+ context?: Maybe<Scalars['JSON']['output']>;
102300
+ definitionJson: Scalars['JSON']['output'];
102301
+ description?: Maybe<Scalars['String']['output']>;
102302
+ exportedAt: Scalars['DateTime']['output'];
102303
+ format: Scalars['String']['output'];
102304
+ icon?: Maybe<Scalars['String']['output']>;
102305
+ name: Scalars['String']['output'];
102306
+ nodeReferences: Array<WorkflowNodeReference>;
102307
+ schemaVersion: Scalars['Int']['output'];
102308
+ tags: Array<Scalars['String']['output']>;
102309
+ tagsV2: Scalars['JSON']['output'];
102310
+ version: Scalars['String']['output'];
102311
+ workflowKey: Scalars['String']['output'];
102312
+ };
102313
+ /** Validation result returned for a workflow import. */
102314
+ export type WorkflowImportValidation = {
102315
+ __typename?: 'WorkflowImportValidation';
102316
+ errors: Array<Scalars['String']['output']>;
102317
+ missingNodes: Array<WorkflowNodeReference>;
102318
+ valid: Scalars['Boolean']['output'];
102319
+ warnings: Array<Scalars['String']['output']>;
102320
+ };
100719
102321
  export type WorkflowInstanceInfo = {
100720
102322
  __typename?: 'WorkflowInstanceInfo';
100721
102323
  createdAt: Scalars['DateTime']['output'];
@@ -100730,6 +102332,13 @@ export type WorkflowInstanceInfo = {
100730
102332
  workflowName: Scalars['String']['output'];
100731
102333
  workflowVersion: Scalars['String']['output'];
100732
102334
  };
102335
+ /** A node reference included in a portable workflow export. */
102336
+ export type WorkflowNodeReference = {
102337
+ __typename?: 'WorkflowNodeReference';
102338
+ nodeId: Scalars['String']['output'];
102339
+ nodeType: Scalars['String']['output'];
102340
+ nodeVersion?: Maybe<Scalars['String']['output']>;
102341
+ };
100733
102342
  /** Pagination input for listing operations */
100734
102343
  export type WorkflowPaginationInput = {
100735
102344
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -100750,12 +102359,16 @@ export type WorkflowRun = {
100750
102359
  failedNodes?: Maybe<Scalars['Int']['output']>;
100751
102360
  id: Scalars['ID']['output'];
100752
102361
  isSubWorkflowRun: Scalars['Boolean']['output'];
102362
+ /** Manual/debug (TEST) vs real (PRODUCTION) run — BOFF-7511. Defaults to PRODUCTION. Only a TEST run may use pinned node data. */
102363
+ mode: RunMode;
100753
102364
  nodeStates: Array<NodeState>;
100754
102365
  parentRun?: Maybe<WorkflowRun>;
100755
102366
  parentRunId?: Maybe<Scalars['String']['output']>;
100756
102367
  progress: Scalars['Float']['output'];
100757
102368
  rootRunId?: Maybe<Scalars['String']['output']>;
100758
102369
  skippedNodes?: Maybe<Scalars['Int']['output']>;
102370
+ /** Debug-in-editor / run-from-node (BOFF-7511): the run this one reused upstream node outputs from, if it was started via `runFromNode`. */
102371
+ sourceRunId?: Maybe<Scalars['String']['output']>;
100759
102372
  startedAt?: Maybe<Scalars['DateTime']['output']>;
100760
102373
  status: RunStatus;
100761
102374
  subworkflowDepth: Scalars['Int']['output'];
@@ -100817,6 +102430,20 @@ export type WorkflowSearchResponse = {
100817
102430
  results: Scalars['JSON']['output'];
100818
102431
  totalResults: Scalars['Int']['output'];
100819
102432
  };
102433
+ export type WorkflowStaticDataRecord = {
102434
+ __typename?: 'WorkflowStaticDataRecord';
102435
+ createdAt: Scalars['DateTime']['output'];
102436
+ data: Scalars['JSON']['output'];
102437
+ id: Scalars['ID']['output'];
102438
+ /** Empty string for GLOBAL-scoped records. */
102439
+ nodeId: Scalars['String']['output'];
102440
+ scope: StaticDataScope;
102441
+ sizeBytes: Scalars['Int']['output'];
102442
+ updatedAt: Scalars['DateTime']['output'];
102443
+ version: Scalars['Int']['output'];
102444
+ workflowKey: Scalars['String']['output'];
102445
+ workspaceId: Scalars['ID']['output'];
102446
+ };
100820
102447
  export declare enum WorkflowStatus {
100821
102448
  Active = "ACTIVE",
100822
102449
  Archived = "ARCHIVED",
@@ -100843,6 +102470,52 @@ export type WorkflowUpdateScheduledJobInput = {
100843
102470
  name?: InputMaybe<Scalars['String']['input']>;
100844
102471
  schedule?: InputMaybe<Scalars['String']['input']>;
100845
102472
  };
102473
+ export type WorkflowVariable = {
102474
+ __typename?: 'WorkflowVariable';
102475
+ createdAt: Scalars['DateTime']['output'];
102476
+ createdBy: Scalars['String']['output'];
102477
+ description?: Maybe<Scalars['String']['output']>;
102478
+ externalProvider: SecretProviderType;
102479
+ externalRef?: Maybe<Scalars['String']['output']>;
102480
+ id: Scalars['ID']['output'];
102481
+ isSecret: Scalars['Boolean']['output'];
102482
+ key: Scalars['String']['output'];
102483
+ projectId?: Maybe<Scalars['ID']['output']>;
102484
+ scope: VariableScope;
102485
+ updatedAt: Scalars['DateTime']['output'];
102486
+ updatedBy?: Maybe<Scalars['String']['output']>;
102487
+ /** Resolved value for display. Always null when `isSecret` is true, or when the variable is externally-backed (`externalProvider != NONE`) — use `revealWorkflowVariableValue` to fetch the real value in either case. */
102488
+ value?: Maybe<Scalars['String']['output']>;
102489
+ workspaceId: Scalars['ID']['output'];
102490
+ };
102491
+ export type WorkflowVariableResponse = MutationResponse & {
102492
+ __typename?: 'WorkflowVariableResponse';
102493
+ message: Scalars['String']['output'];
102494
+ success: Scalars['Boolean']['output'];
102495
+ variable?: Maybe<WorkflowVariable>;
102496
+ };
102497
+ export type WorkflowVariablesListResponse = {
102498
+ __typename?: 'WorkflowVariablesListResponse';
102499
+ total: Scalars['Int']['output'];
102500
+ variables: Array<WorkflowVariable>;
102501
+ };
102502
+ /** Deterministic JSON diff between two versions of one workflow. */
102503
+ export type WorkflowVersionDiff = {
102504
+ __typename?: 'WorkflowVersionDiff';
102505
+ entries: Array<WorkflowVersionDiffEntry>;
102506
+ fromVersion: Scalars['String']['output'];
102507
+ toVersion: Scalars['String']['output'];
102508
+ truncated: Scalars['Boolean']['output'];
102509
+ workflowKey: Scalars['String']['output'];
102510
+ };
102511
+ /** One structural change between two workflow versions. */
102512
+ export type WorkflowVersionDiffEntry = {
102513
+ __typename?: 'WorkflowVersionDiffEntry';
102514
+ after?: Maybe<Scalars['JSON']['output']>;
102515
+ before?: Maybe<Scalars['JSON']['output']>;
102516
+ kind: WorkflowDiffKind;
102517
+ path: Scalars['String']['output'];
102518
+ };
100846
102519
  /** Workspace type (owned by workspace service) */
100847
102520
  export type Workspace = {
100848
102521
  __typename?: 'Workspace';