@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.
@@ -14561,6 +14561,12 @@ export type CreateDataSinkInput = {
14561
14561
  ttl?: InputMaybe<Scalars['Int']['input']>;
14562
14562
  };
14563
14563
 
14564
+ export type CreateDataTableInput = {
14565
+ columns: Array<DataTableColumnInput>;
14566
+ description?: InputMaybe<Scalars['String']['input']>;
14567
+ name: Scalars['String']['input'];
14568
+ };
14569
+
14564
14570
  export type CreateDeliveryJobInput = {
14565
14571
  cargoItems: Scalars['JSON']['input'];
14566
14572
  context?: InputMaybe<ContextInput>;
@@ -14571,6 +14577,7 @@ export type CreateDeliveryJobInput = {
14571
14577
  pickupAddress: Scalars['JSON']['input'];
14572
14578
  pricing?: InputMaybe<Scalars['JSON']['input']>;
14573
14579
  priority?: InputMaybe<DeliveryPriority>;
14580
+ routeId?: InputMaybe<Scalars['ID']['input']>;
14574
14581
  scheduledDelivery?: InputMaybe<Scalars['DateTime']['input']>;
14575
14582
  specialInstructions?: InputMaybe<Scalars['String']['input']>;
14576
14583
  status?: InputMaybe<DeliveryJobStatus>;
@@ -14618,6 +14625,7 @@ export type CreateDriverInput = {
14618
14625
  status?: InputMaybe<DriverStatus>;
14619
14626
  userId?: InputMaybe<Scalars['String']['input']>;
14620
14627
  vehicleId?: InputMaybe<Scalars['String']['input']>;
14628
+ vehicleIds?: InputMaybe<Array<Scalars['ID']['input']>>;
14621
14629
  };
14622
14630
 
14623
14631
  export type CreateEmailTimeEntryInput = {
@@ -16312,6 +16320,17 @@ export type CreateLocationEntryInput = {
16312
16320
  userId: Scalars['ID']['input'];
16313
16321
  };
16314
16322
 
16323
+ export type CreateLogStreamDestinationInput = {
16324
+ config?: InputMaybe<Scalars['JSON']['input']>;
16325
+ endpoint: Scalars['String']['input'];
16326
+ eventFilters?: InputMaybe<Array<LogStreamEventType>>;
16327
+ isEnabled?: InputMaybe<Scalars['Boolean']['input']>;
16328
+ name: Scalars['String']['input'];
16329
+ provider: LogStreamProvider;
16330
+ /** WEBHOOK only: plaintext signing secret, encrypted at rest. Omit for SYSLOG/SENTRY. */
16331
+ secret?: InputMaybe<Scalars['String']['input']>;
16332
+ };
16333
+
16315
16334
  export type CreateMcpConnectionInput = {
16316
16335
  config: Scalars['JSON']['input'];
16317
16336
  credentials?: InputMaybe<Scalars['JSON']['input']>;
@@ -17782,6 +17801,19 @@ export type CreateWorkflowInput = {
17782
17801
  status?: InputMaybe<FluidGridsWorkflowStatus>;
17783
17802
  };
17784
17803
 
17804
+ export type CreateWorkflowVariableInput = {
17805
+ description?: InputMaybe<Scalars['String']['input']>;
17806
+ externalProvider?: InputMaybe<SecretProviderType>;
17807
+ externalRef?: InputMaybe<Scalars['String']['input']>;
17808
+ isSecret?: InputMaybe<Scalars['Boolean']['input']>;
17809
+ key: Scalars['String']['input'];
17810
+ /** Required when scope = PROJECT. */
17811
+ projectId?: InputMaybe<Scalars['ID']['input']>;
17812
+ scope?: InputMaybe<VariableScope>;
17813
+ /** 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. */
17814
+ value?: InputMaybe<Scalars['String']['input']>;
17815
+ };
17816
+
17785
17817
  /** Input for creating a new workflow version */
17786
17818
  export type CreateWorkflowVersionInput = {
17787
17819
  /** Alias to attach to the new version (movable pointer — cleared from any sibling version). Omitted = no alias. */
@@ -19376,6 +19408,10 @@ export type DashboardSummary = {
19376
19408
  runsPendingCount: Scalars['Int']['output'];
19377
19409
  runsRunningCount: Scalars['Int']['output'];
19378
19410
  runsWaitingCount: Scalars['Int']['output'];
19411
+ /** 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. */
19412
+ timeSavedEstimateHours?: Maybe<Scalars['Float']['output']>;
19413
+ /** Workflows with the most FAILED runs, worst-first (BOFF-7519). Capped at 10. */
19414
+ topFailingWorkflows: Array<FailingWorkflowStat>;
19379
19415
  totalNodesExecutedCount: Scalars['Int']['output'];
19380
19416
  userId: Scalars['String']['output'];
19381
19417
  username?: Maybe<Scalars['String']['output']>;
@@ -19922,6 +19958,114 @@ export enum DataSourceType {
19922
19958
  Websocket = 'WEBSOCKET'
19923
19959
  }
19924
19960
 
19961
+ export type DataTable = {
19962
+ __typename?: 'DataTable';
19963
+ columns: Array<DataTableColumn>;
19964
+ createdAt: Scalars['DateTime']['output'];
19965
+ createdBy: Scalars['String']['output'];
19966
+ description?: Maybe<Scalars['String']['output']>;
19967
+ id: Scalars['ID']['output'];
19968
+ name: Scalars['String']['output'];
19969
+ rowCount: Scalars['Int']['output'];
19970
+ sizeBytes: Scalars['Int']['output'];
19971
+ updatedAt: Scalars['DateTime']['output'];
19972
+ updatedBy?: Maybe<Scalars['String']['output']>;
19973
+ workspaceId: Scalars['ID']['output'];
19974
+ };
19975
+
19976
+ export type DataTableColumn = {
19977
+ __typename?: 'DataTableColumn';
19978
+ defaultValue?: Maybe<Scalars['JSON']['output']>;
19979
+ key: Scalars['String']['output'];
19980
+ label: Scalars['String']['output'];
19981
+ required: Scalars['Boolean']['output'];
19982
+ type: DataTableColumnType;
19983
+ };
19984
+
19985
+ export type DataTableColumnInput = {
19986
+ defaultValue?: InputMaybe<Scalars['JSON']['input']>;
19987
+ key: Scalars['String']['input'];
19988
+ label: Scalars['String']['input'];
19989
+ required?: InputMaybe<Scalars['Boolean']['input']>;
19990
+ type: DataTableColumnType;
19991
+ };
19992
+
19993
+ export enum DataTableColumnType {
19994
+ Boolean = 'BOOLEAN',
19995
+ Date = 'DATE',
19996
+ Json = 'JSON',
19997
+ Number = 'NUMBER',
19998
+ String = 'STRING'
19999
+ }
20000
+
20001
+ export enum DataTableFilterOp {
20002
+ Contains = 'CONTAINS',
20003
+ Eq = 'EQ',
20004
+ Gt = 'GT',
20005
+ Gte = 'GTE',
20006
+ IsNotNull = 'IS_NOT_NULL',
20007
+ IsNull = 'IS_NULL',
20008
+ Lt = 'LT',
20009
+ Lte = 'LTE',
20010
+ Neq = 'NEQ'
20011
+ }
20012
+
20013
+ export type DataTableListResponse = {
20014
+ __typename?: 'DataTableListResponse';
20015
+ tables: Array<DataTable>;
20016
+ total: Scalars['Int']['output'];
20017
+ };
20018
+
20019
+ export type DataTableResponse = MutationResponse & {
20020
+ __typename?: 'DataTableResponse';
20021
+ message: Scalars['String']['output'];
20022
+ success: Scalars['Boolean']['output'];
20023
+ table?: Maybe<DataTable>;
20024
+ };
20025
+
20026
+ export type DataTableRow = {
20027
+ __typename?: 'DataTableRow';
20028
+ createdAt: Scalars['DateTime']['output'];
20029
+ data: Scalars['JSON']['output'];
20030
+ id: Scalars['ID']['output'];
20031
+ tableId: Scalars['ID']['output'];
20032
+ updatedAt: Scalars['DateTime']['output'];
20033
+ };
20034
+
20035
+ export type DataTableRowFilterInput = {
20036
+ column: Scalars['String']['input'];
20037
+ op: DataTableFilterOp;
20038
+ /** Omitted/null for IS_NULL / IS_NOT_NULL. */
20039
+ value?: InputMaybe<Scalars['JSON']['input']>;
20040
+ };
20041
+
20042
+ export type DataTableRowResponse = MutationResponse & {
20043
+ __typename?: 'DataTableRowResponse';
20044
+ message: Scalars['String']['output'];
20045
+ row?: Maybe<DataTableRow>;
20046
+ success: Scalars['Boolean']['output'];
20047
+ };
20048
+
20049
+ export type DataTableRowsMutationResponse = MutationResponse & {
20050
+ __typename?: 'DataTableRowsMutationResponse';
20051
+ affected: Scalars['Int']['output'];
20052
+ message: Scalars['String']['output'];
20053
+ success: Scalars['Boolean']['output'];
20054
+ };
20055
+
20056
+ export type DataTableRowsQueryInput = {
20057
+ filters?: InputMaybe<Array<DataTableRowFilterInput>>;
20058
+ limit?: InputMaybe<Scalars['Int']['input']>;
20059
+ offset?: InputMaybe<Scalars['Int']['input']>;
20060
+ tableId: Scalars['ID']['input'];
20061
+ };
20062
+
20063
+ export type DataTableRowsResponse = {
20064
+ __typename?: 'DataTableRowsResponse';
20065
+ rows: Array<DataTableRow>;
20066
+ total: Scalars['Int']['output'];
20067
+ };
20068
+
19925
20069
  /** Standard date range output */
19926
20070
  export type DateRange = {
19927
20071
  __typename?: 'DateRange';
@@ -19988,6 +20132,15 @@ export type DecideHealthyBowlFarmRecommendationInput = {
19988
20132
  id: Scalars['ID']['input'];
19989
20133
  };
19990
20134
 
20135
+ export type DecideToolApprovalResponse = {
20136
+ __typename?: 'DecideToolApprovalResponse';
20137
+ error?: Maybe<Scalars['String']['output']>;
20138
+ request?: Maybe<ToolApprovalRequest>;
20139
+ /** The node the run resumed from, when the decision resumed it. */
20140
+ resumedFromNodeId?: Maybe<Scalars['String']['output']>;
20141
+ success: Scalars['Boolean']['output'];
20142
+ };
20143
+
19991
20144
  /** Returned when explicitly decrypting a secret value. */
19992
20145
  export type DecryptedSecret = {
19993
20146
  __typename?: 'DecryptedSecret';
@@ -20046,6 +20199,7 @@ export type DeliveryJobFilterInput = {
20046
20199
  customerId?: InputMaybe<Scalars['ID']['input']>;
20047
20200
  driverId?: InputMaybe<Scalars['ID']['input']>;
20048
20201
  priority?: InputMaybe<DeliveryPriority>;
20202
+ routeId?: InputMaybe<Scalars['ID']['input']>;
20049
20203
  search?: InputMaybe<Scalars['String']['input']>;
20050
20204
  status?: InputMaybe<DeliveryJobStatus>;
20051
20205
  storeOrderId?: InputMaybe<Scalars['ID']['input']>;
@@ -21854,6 +22008,28 @@ export type EnvVarInput = {
21854
22008
  value: Scalars['String']['input'];
21855
22009
  };
21856
22010
 
22011
+ /** Error analytics for the caller's workspace over a time window (BOFF-7519). */
22012
+ export type ErrorAnalytics = {
22013
+ __typename?: 'ErrorAnalytics';
22014
+ errorsByType: Array<ErrorTypeBreakdown>;
22015
+ /** Worst-first, capped at `input.limit` (default 10). */
22016
+ topFailingNodes: Array<FailingNodeStat>;
22017
+ /** Worst-first, capped at `input.limit` (default 10). */
22018
+ topFailingWorkflows: Array<FailingWorkflowStat>;
22019
+ totalErrors: Scalars['Int']['output'];
22020
+ /** 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. */
22021
+ trend: Array<ErrorTrendPoint>;
22022
+ };
22023
+
22024
+ export type ErrorAnalyticsInput = {
22025
+ /** Defaults to now. */
22026
+ endDate?: InputMaybe<Scalars['DateTime']['input']>;
22027
+ /** Caps topFailingWorkflows/topFailingNodes. Default 10, clamped to 50. */
22028
+ limit?: InputMaybe<Scalars['Int']['input']>;
22029
+ /** Defaults to 30 days before `endDate` (or now, if endDate is also omitted). */
22030
+ startDate?: InputMaybe<Scalars['DateTime']['input']>;
22031
+ };
22032
+
21857
22033
  export type ErrorLogEntry = {
21858
22034
  __typename?: 'ErrorLogEntry';
21859
22035
  errorMessage: Scalars['String']['output'];
@@ -21866,6 +22042,13 @@ export type ErrorLogEntry = {
21866
22042
  userId?: Maybe<Scalars['String']['output']>;
21867
22043
  };
21868
22044
 
22045
+ /** 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. */
22046
+ export type ErrorTrendPoint = {
22047
+ __typename?: 'ErrorTrendPoint';
22048
+ count: Scalars['Int']['output'];
22049
+ date: Scalars['String']['output'];
22050
+ };
22051
+
21869
22052
  export enum ErrorType {
21870
22053
  Authorization = 'AUTHORIZATION',
21871
22054
  Dependency = 'DEPENDENCY',
@@ -21876,6 +22059,13 @@ export enum ErrorType {
21876
22059
  Validation = 'VALIDATION'
21877
22060
  }
21878
22061
 
22062
+ /** Error breakdown by classification, for the Error Analytics screen (BOFF-7519). */
22063
+ export type ErrorTypeBreakdown = {
22064
+ __typename?: 'ErrorTypeBreakdown';
22065
+ count: Scalars['Int']['output'];
22066
+ errorType: ErrorType;
22067
+ };
22068
+
21879
22069
  export type Event = {
21880
22070
  __typename?: 'Event';
21881
22071
  anonymousId?: Maybe<Scalars['String']['output']>;
@@ -23731,6 +23921,27 @@ export type ExternalSync = {
23731
23921
  workspaceId: Scalars['String']['output'];
23732
23922
  };
23733
23923
 
23924
+ /** Per-node failure aggregate for the Error Analytics screen (BOFF-7519). */
23925
+ export type FailingNodeStat = {
23926
+ __typename?: 'FailingNodeStat';
23927
+ failureCount: Scalars['Int']['output'];
23928
+ failureRate: Scalars['Float']['output'];
23929
+ nodeType: Scalars['String']['output'];
23930
+ /** One representative error message from this node's most recent failure, so the screen has something concrete to show without a drill-down. */
23931
+ sampleError?: Maybe<Scalars['String']['output']>;
23932
+ totalExecutions: Scalars['Int']['output'];
23933
+ };
23934
+
23935
+ /** Per-workflow failure aggregate for the Insights/Error Analytics screens (BOFF-7519). */
23936
+ export type FailingWorkflowStat = {
23937
+ __typename?: 'FailingWorkflowStat';
23938
+ failureCount: Scalars['Int']['output'];
23939
+ failureRate: Scalars['Float']['output'];
23940
+ name?: Maybe<Scalars['String']['output']>;
23941
+ totalRuns: Scalars['Int']['output'];
23942
+ workflowKey: Scalars['String']['output'];
23943
+ };
23944
+
23734
23945
  export type Farm = {
23735
23946
  __typename?: 'Farm';
23736
23947
  areaUnit: Scalars['String']['output'];
@@ -39672,6 +39883,35 @@ export type ImportValidationWarning = {
39672
39883
  suggestion?: Maybe<Scalars['String']['output']>;
39673
39884
  };
39674
39885
 
39886
+ /** Input for importing a portable workflow export. */
39887
+ export type ImportWorkflowInput = {
39888
+ alias?: InputMaybe<Scalars['String']['input']>;
39889
+ /** Allow an import to be created while reporting missing installed nodes. */
39890
+ allowMissingNodes?: InputMaybe<Scalars['Boolean']['input']>;
39891
+ category?: InputMaybe<Scalars['String']['input']>;
39892
+ context?: InputMaybe<Scalars['JSON']['input']>;
39893
+ /** Raw definition JSON, or the `definitionJson` member of a WorkflowExport. */
39894
+ definitionJson: Scalars['JSON']['input'];
39895
+ description?: InputMaybe<Scalars['String']['input']>;
39896
+ icon?: InputMaybe<Scalars['String']['input']>;
39897
+ name: Scalars['String']['input'];
39898
+ /** Map source node type/version keys to installed node type/version values. */
39899
+ nodeMappings?: InputMaybe<Scalars['JSON']['input']>;
39900
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
39901
+ tagsV2?: InputMaybe<Scalars['JSON']['input']>;
39902
+ version?: InputMaybe<Scalars['String']['input']>;
39903
+ workflowKey?: InputMaybe<Scalars['String']['input']>;
39904
+ };
39905
+
39906
+ /** Result of importing a portable workflow document. */
39907
+ export type ImportWorkflowResponse = {
39908
+ __typename?: 'ImportWorkflowResponse';
39909
+ message?: Maybe<Scalars['String']['output']>;
39910
+ success: Scalars['Boolean']['output'];
39911
+ validation: WorkflowImportValidation;
39912
+ workflow?: Maybe<WorkflowDefinition>;
39913
+ };
39914
+
39675
39915
  /** Input for importing a workflow from a store template */
39676
39916
  export type ImportWorkflowTemplateInput = {
39677
39917
  /** Category */
@@ -43722,15 +43962,25 @@ export type ListWorkflowDefinitionsInput = {
43722
43962
 
43723
43963
  /** Input for listing runs */
43724
43964
  export type ListWorkflowRunsInput = {
43965
+ /** Filter runs whose duration (seconds) is at most this value (BOFF-7519). Runs still in progress never match. */
43966
+ durationMaxSeconds?: InputMaybe<Scalars['Float']['input']>;
43967
+ /** Filter runs whose duration (seconds) is at least this value (BOFF-7519). Runs still in progress never match. */
43968
+ durationMinSeconds?: InputMaybe<Scalars['Float']['input']>;
43725
43969
  /** Filter runs created at-or-before this instant (inclusive). Bound to `createdAt` on WorkflowRun. */
43726
43970
  endDate?: InputMaybe<Scalars['DateTime']['input']>;
43971
+ /** Filter by the run's terminal error classification (BOFF-7519). */
43972
+ errorType?: InputMaybe<ErrorType>;
43727
43973
  limit?: InputMaybe<Scalars['Int']['input']>;
43974
+ /** Filter to runs that executed — in any status — a node with this id (BOFF-7519). */
43975
+ nodeId?: InputMaybe<Scalars['String']['input']>;
43728
43976
  offset?: InputMaybe<Scalars['Int']['input']>;
43729
43977
  /** 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. */
43730
43978
  search?: InputMaybe<Scalars['String']['input']>;
43731
43979
  /** Filter runs created at-or-after this instant (inclusive). Bound to `createdAt` on WorkflowRun. */
43732
43980
  startDate?: InputMaybe<Scalars['DateTime']['input']>;
43733
43981
  status?: InputMaybe<RunStatus>;
43982
+ /** Filter by coarse trigger type (BOFF-7519). */
43983
+ triggerType?: InputMaybe<RunTriggerType>;
43734
43984
  workflowKey?: InputMaybe<Scalars['String']['input']>;
43735
43985
  };
43736
43986
 
@@ -43902,6 +44152,54 @@ export type LogPlantScanToPestIssueInput = {
43902
44152
  type?: InputMaybe<Scalars['String']['input']>;
43903
44153
  };
43904
44154
 
44155
+ export type LogStreamDestination = {
44156
+ __typename?: 'LogStreamDestination';
44157
+ /** Provider-specific extras (syslog facility/appName, webhook extra headers, Sentry environment/release tag). */
44158
+ config?: Maybe<Scalars['JSON']['output']>;
44159
+ createdAt: Scalars['DateTime']['output'];
44160
+ createdBy: Scalars['String']['output'];
44161
+ /** WEBHOOK: the URL to POST to. SYSLOG: "host:port" (UDP). SENTRY: the DSN. */
44162
+ endpoint: Scalars['String']['output'];
44163
+ eventFilters: Array<LogStreamEventType>;
44164
+ /** True when a WEBHOOK signing secret is configured. The secret itself is never returned by any query. */
44165
+ hasSecret: Scalars['Boolean']['output'];
44166
+ id: Scalars['ID']['output'];
44167
+ isEnabled: Scalars['Boolean']['output'];
44168
+ lastDispatchError?: Maybe<Scalars['String']['output']>;
44169
+ lastDispatchStatus?: Maybe<Scalars['String']['output']>;
44170
+ lastDispatchedAt?: Maybe<Scalars['DateTime']['output']>;
44171
+ name: Scalars['String']['output'];
44172
+ provider: LogStreamProvider;
44173
+ updatedAt: Scalars['DateTime']['output'];
44174
+ updatedBy?: Maybe<Scalars['String']['output']>;
44175
+ workspaceId: Scalars['ID']['output'];
44176
+ };
44177
+
44178
+ export type LogStreamDestinationResponse = MutationResponse & {
44179
+ __typename?: 'LogStreamDestinationResponse';
44180
+ destination?: Maybe<LogStreamDestination>;
44181
+ message: Scalars['String']['output'];
44182
+ success: Scalars['Boolean']['output'];
44183
+ };
44184
+
44185
+ /** 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. */
44186
+ export enum LogStreamEventType {
44187
+ LogError = 'LOG_ERROR',
44188
+ LogWarn = 'LOG_WARN',
44189
+ NodeFailed = 'NODE_FAILED',
44190
+ NodeRetried = 'NODE_RETRIED',
44191
+ RunCancelled = 'RUN_CANCELLED',
44192
+ RunCompleted = 'RUN_COMPLETED',
44193
+ RunFailed = 'RUN_FAILED',
44194
+ RunStarted = 'RUN_STARTED'
44195
+ }
44196
+
44197
+ export enum LogStreamProvider {
44198
+ Sentry = 'SENTRY',
44199
+ Syslog = 'SYSLOG',
44200
+ Webhook = 'WEBHOOK'
44201
+ }
44202
+
43905
44203
  export type McpConnection = {
43906
44204
  __typename?: 'MCPConnection';
43907
44205
  config: Scalars['JSON']['output'];
@@ -44067,15 +44365,24 @@ export type ManAsset = {
44067
44365
  __typename?: 'ManAsset';
44068
44366
  assetTag: Scalars['String']['output'];
44069
44367
  createdAt: Scalars['DateTime']['output'];
44368
+ /** Meter (running hours) at the last completed preventive service — the PM baseline. */
44369
+ hoursAtLastService?: Maybe<Scalars['Float']['output']>;
44370
+ /** Running hours since the last completed preventive service (lifetime hours if never serviced). */
44371
+ hoursSinceService: Scalars['Float']['output'];
44070
44372
  id: Scalars['ID']['output'];
44071
44373
  installedAt?: Maybe<Scalars['DateTime']['output']>;
44072
44374
  lastServicedAt?: Maybe<Scalars['DateTime']['output']>;
44073
44375
  manufacturer?: Maybe<Scalars['String']['output']>;
44074
44376
  model?: Maybe<Scalars['String']['output']>;
44075
44377
  name: Scalars['String']['output'];
44378
+ /** Hours until the next preventive service is due; negative once overdue. Null without a PM interval. */
44379
+ pmDueInHours?: Maybe<Scalars['Float']['output']>;
44076
44380
  pmIntervalHours: Scalars['Float']['output'];
44381
+ pmState: ManPmState;
44077
44382
  runningHours: Scalars['Float']['output'];
44078
44383
  serialNumber?: Maybe<Scalars['String']['output']>;
44384
+ /** Immutable preventive-service history, newest first. */
44385
+ serviceHistory: Array<ManAssetServiceRecord>;
44079
44386
  status: ManAssetStatus;
44080
44387
  tags: Array<Scalars['String']['output']>;
44081
44388
  updatedAt: Scalars['DateTime']['output'];
@@ -44095,6 +44402,16 @@ export type ManAssetConnection = {
44095
44402
  pageInfo: ManPageInfo;
44096
44403
  };
44097
44404
 
44405
+ export type ManAssetServiceRecord = {
44406
+ __typename?: 'ManAssetServiceRecord';
44407
+ actorId: Scalars['ID']['output'];
44408
+ id: Scalars['ID']['output'];
44409
+ /** Meter at service. Null only for services from before meter readings were captured. */
44410
+ meterReading?: Maybe<Scalars['Float']['output']>;
44411
+ servicedAt: Scalars['DateTime']['output'];
44412
+ workOrderId: Scalars['ID']['output'];
44413
+ };
44414
+
44098
44415
  export enum ManAssetStatus {
44099
44416
  Degraded = 'DEGRADED',
44100
44417
  Down = 'DOWN',
@@ -44103,6 +44420,14 @@ export enum ManAssetStatus {
44103
44420
  Retired = 'RETIRED'
44104
44421
  }
44105
44422
 
44423
+ export type ManAssignMaterialSerialInput = {
44424
+ /** Record the unit as consumed (default: allocated). */
44425
+ consume?: InputMaybe<Scalars['Boolean']['input']>;
44426
+ operationId?: InputMaybe<Scalars['ID']['input']>;
44427
+ productionOrderId: Scalars['ID']['input'];
44428
+ reason?: InputMaybe<Scalars['String']['input']>;
44429
+ };
44430
+
44106
44431
  export type ManBillOfMaterial = {
44107
44432
  __typename?: 'ManBillOfMaterial';
44108
44433
  code: Scalars['String']['output'];
@@ -44148,6 +44473,44 @@ export type ManBomLineConnection = {
44148
44473
  pageInfo: ManPageInfo;
44149
44474
  };
44150
44475
 
44476
+ /** Effectiveness check of an NCR's corrective action. Only EFFECTIVE allows the NCR to close. */
44477
+ export enum ManCapaVerificationResult {
44478
+ Effective = 'EFFECTIVE',
44479
+ NotEffective = 'NOT_EFFECTIVE'
44480
+ }
44481
+
44482
+ export enum ManChecklistItemResult {
44483
+ Fail = 'FAIL',
44484
+ Na = 'NA',
44485
+ Pass = 'PASS'
44486
+ }
44487
+
44488
+ export type ManChecklistResult = {
44489
+ __typename?: 'ManChecklistResult';
44490
+ item: Scalars['String']['output'];
44491
+ reading?: Maybe<Scalars['String']['output']>;
44492
+ result: ManChecklistItemResult;
44493
+ };
44494
+
44495
+ export type ManChecklistResultInput = {
44496
+ item: Scalars['String']['input'];
44497
+ reading?: InputMaybe<Scalars['String']['input']>;
44498
+ result: ManChecklistItemResult;
44499
+ };
44500
+
44501
+ export type ManCompleteMaintenanceWorkOrderInput = {
44502
+ checklistResults?: InputMaybe<Array<ManChecklistResultInput>>;
44503
+ /** What was done and found. Required. */
44504
+ completionNotes: Scalars['String']['input'];
44505
+ /** Actual labor time. Must be greater than zero. */
44506
+ laborMinutes: Scalars['Int']['input'];
44507
+ /** Asset meter (running hours) at completion; cannot go below the last service reading. */
44508
+ meterReading?: InputMaybe<Scalars['Float']['input']>;
44509
+ partsUsed?: InputMaybe<Array<ManPartUsedInput>>;
44510
+ /** Accountable technician. Defaults to the assigned technician; one is required. */
44511
+ technicianId?: InputMaybe<Scalars['ID']['input']>;
44512
+ };
44513
+
44151
44514
  export type ManControlChartInput = {
44152
44515
  /** Required for XBAR_R / INDIVIDUAL_MR (the characteristic name as recorded in `measurements`). Ignored for P_CHART/C_CHART. */
44153
44516
  characteristic?: InputMaybe<Scalars['String']['input']>;
@@ -44259,6 +44622,7 @@ export type ManCreateInventoryItemInput = {
44259
44622
  reorderPoint?: InputMaybe<Scalars['Float']['input']>;
44260
44623
  sku: Scalars['String']['input'];
44261
44624
  standardCost?: InputMaybe<Scalars['Float']['input']>;
44625
+ trackingMode?: InputMaybe<ManTrackingMode>;
44262
44626
  uom?: InputMaybe<Scalars['String']['input']>;
44263
44627
  };
44264
44628
 
@@ -44281,14 +44645,19 @@ export type ManCreateMaterialLotInput = {
44281
44645
  productionOrderId?: InputMaybe<Scalars['ID']['input']>;
44282
44646
  quantity?: InputMaybe<Scalars['Float']['input']>;
44283
44647
  receivedAt?: InputMaybe<Scalars['DateTime']['input']>;
44648
+ /** Units received, for a serial-controlled SKU (required then; refused for any other SKU). The lot quantity becomes the number of serials registered. */
44649
+ serials?: InputMaybe<ManSerialEntryInput>;
44284
44650
  supplier?: InputMaybe<Scalars['String']['input']>;
44285
44651
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
44286
44652
  uom?: InputMaybe<Scalars['String']['input']>;
44287
44653
  };
44288
44654
 
44289
44655
  export type ManCreateOperationInput = {
44656
+ /** 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. */
44657
+ idempotencyKey?: InputMaybe<Scalars['String']['input']>;
44290
44658
  name: Scalars['String']['input'];
44291
44659
  productionOrderId: Scalars['ID']['input'];
44660
+ /** Defaults to the next free step (highest sequence in use + 10). */
44292
44661
  sequence?: InputMaybe<Scalars['Int']['input']>;
44293
44662
  workCenterId?: InputMaybe<Scalars['ID']['input']>;
44294
44663
  };
@@ -44326,6 +44695,8 @@ export type ManDowntimeEvent = {
44326
44695
  durationMinutes: Scalars['Int']['output'];
44327
44696
  endedAt?: Maybe<Scalars['DateTime']['output']>;
44328
44697
  id: Scalars['ID']['output'];
44698
+ /** Maintenance work order that caused or resolved this downtime. */
44699
+ maintenanceWorkOrderId?: Maybe<Scalars['ID']['output']>;
44329
44700
  productionOrderId?: Maybe<Scalars['ID']['output']>;
44330
44701
  reason: ManDowntimeReason;
44331
44702
  startedAt: Scalars['DateTime']['output'];
@@ -44466,6 +44837,12 @@ export enum ManInspectionStage {
44466
44837
  InProcess = 'IN_PROCESS'
44467
44838
  }
44468
44839
 
44840
+ export type ManInvalidSerial = {
44841
+ __typename?: 'ManInvalidSerial';
44842
+ reason: Scalars['String']['output'];
44843
+ value: Scalars['String']['output'];
44844
+ };
44845
+
44469
44846
  export type ManInventoryItem = {
44470
44847
  __typename?: 'ManInventoryItem';
44471
44848
  createdAt: Scalars['DateTime']['output'];
@@ -44479,6 +44856,8 @@ export type ManInventoryItem = {
44479
44856
  reorderPoint: Scalars['Float']['output'];
44480
44857
  sku: Scalars['String']['output'];
44481
44858
  standardCost: Scalars['Float']['output'];
44859
+ /** 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). */
44860
+ trackingMode: ManTrackingMode;
44482
44861
  uom: Scalars['String']['output'];
44483
44862
  updatedAt: Scalars['DateTime']['output'];
44484
44863
  workspaceId: Scalars['ID']['output'];
@@ -44527,6 +44906,15 @@ export enum ManLegalCheckpointType {
44527
44906
  TenantDpaAccept = 'TENANT_DPA_ACCEPT'
44528
44907
  }
44529
44908
 
44909
+ export type ManLinkLotToOrderInput = {
44910
+ /** Operation on the order that consumed / produced the material. */
44911
+ operationId?: InputMaybe<Scalars['ID']['input']>;
44912
+ productionOrderId: Scalars['ID']['input'];
44913
+ quantity: Scalars['Float']['input'];
44914
+ reason?: InputMaybe<Scalars['String']['input']>;
44915
+ role: ManMaterialLinkRole;
44916
+ };
44917
+
44530
44918
  export type ManMachineTagReading = {
44531
44919
  __typename?: 'ManMachineTagReading';
44532
44920
  createdAt: Scalars['DateTime']['output'];
@@ -44570,12 +44958,23 @@ export type ManMaintenanceWorkOrder = {
44570
44958
  __typename?: 'ManMaintenanceWorkOrder';
44571
44959
  asset?: Maybe<ManAsset>;
44572
44960
  assetId: Scalars['ID']['output'];
44961
+ checklistResults: Array<ManChecklistResult>;
44573
44962
  completedAt?: Maybe<Scalars['DateTime']['output']>;
44963
+ /** Actor who recorded the completion. */
44964
+ completedBy?: Maybe<Scalars['ID']['output']>;
44965
+ completionNotes?: Maybe<Scalars['String']['output']>;
44574
44966
  createdAt: Scalars['DateTime']['output'];
44575
44967
  description?: Maybe<Scalars['String']['output']>;
44968
+ /** Downtime events recorded against this work order. */
44969
+ downtimeEvents: Array<ManDowntimeEvent>;
44970
+ /** Sum of the downtime events linked to this work order (the single source of downtime). */
44576
44971
  downtimeMinutes: Scalars['Int']['output'];
44972
+ /** Immutable history: creation, every status change, completion evidence. */
44973
+ history: Array<ManMaintenanceWorkOrderEvent>;
44577
44974
  id: Scalars['ID']['output'];
44578
44975
  laborMinutes: Scalars['Int']['output'];
44976
+ meterReadingAtCompletion?: Maybe<Scalars['Float']['output']>;
44977
+ partsUsed: Array<ManPartUsed>;
44579
44978
  scheduledFor?: Maybe<Scalars['DateTime']['output']>;
44580
44979
  startedAt?: Maybe<Scalars['DateTime']['output']>;
44581
44980
  status: ManMaintenanceStatus;
@@ -44593,23 +44992,76 @@ export type ManMaintenanceWorkOrderConnection = {
44593
44992
  pageInfo: ManPageInfo;
44594
44993
  };
44595
44994
 
44995
+ export type ManMaintenanceWorkOrderEvent = {
44996
+ __typename?: 'ManMaintenanceWorkOrderEvent';
44997
+ actorId: Scalars['ID']['output'];
44998
+ /** Completion evidence snapshot for COMPLETED. */
44999
+ changes?: Maybe<Scalars['JSON']['output']>;
45000
+ eventType: ManMaintenanceWorkOrderEventType;
45001
+ fromStatus?: Maybe<ManMaintenanceStatus>;
45002
+ id: Scalars['ID']['output'];
45003
+ occurredAt: Scalars['DateTime']['output'];
45004
+ toStatus?: Maybe<ManMaintenanceStatus>;
45005
+ };
45006
+
45007
+ export enum ManMaintenanceWorkOrderEventType {
45008
+ Completed = 'COMPLETED',
45009
+ Created = 'CREATED',
45010
+ StatusChanged = 'STATUS_CHANGED'
45011
+ }
45012
+
45013
+ /** How a lot relates to a production order. */
45014
+ export enum ManMaterialLinkRole {
45015
+ ByProduct = 'BY_PRODUCT',
45016
+ /** Consumed by the order. */
45017
+ Input = 'INPUT',
45018
+ /** Produced by the order. */
45019
+ Output = 'OUTPUT',
45020
+ /** Returned to stock from the order. */
45021
+ Returned = 'RETURNED'
45022
+ }
45023
+
44596
45024
  export type ManMaterialLot = {
44597
45025
  __typename?: 'ManMaterialLot';
44598
45026
  childLots: ManMaterialLotConnection;
44599
45027
  createdAt: Scalars['DateTime']['output'];
44600
45028
  expiresAt?: Maybe<Scalars['DateTime']['output']>;
44601
- id: Scalars['ID']['output'];
45029
+ /** Immutable status and disposition history, oldest first. */
45030
+ history: Array<ManMaterialLotEvent>;
45031
+ /** Inspection that put the lot on hold, when the quarantine came from one. */
45032
+ holdInspectionId?: Maybe<Scalars['ID']['output']>;
45033
+ /** NCR that put the lot on hold, when the quarantine came from one. */
45034
+ holdNonConformanceId?: Maybe<Scalars['ID']['output']>;
45035
+ id: Scalars['ID']['output'];
45036
+ /** True once expiresAt has passed — expired lots cannot be allocated or consumed. */
45037
+ isExpired: Scalars['Boolean']['output'];
44602
45038
  lotNumber: Scalars['String']['output'];
44603
45039
  materialName: Scalars['String']['output'];
44604
45040
  materialSku: Scalars['String']['output'];
45041
+ /** NCRs linked to this material lot. */
45042
+ nonConformances: Array<ManNonConformance>;
45043
+ /** Every order link — active and reversed — with role, quantity and operation. */
45044
+ orderLinks: Array<ManMaterialLotOrderLink>;
44605
45045
  parentLot?: Maybe<ManMaterialLot>;
44606
45046
  parentLotId?: Maybe<Scalars['ID']['output']>;
45047
+ /** The lot's primary consuming order (legacy single link), resolved for display. */
45048
+ productionOrder?: Maybe<ManProductionOrder>;
44607
45049
  productionOrderId?: Maybe<Scalars['ID']['output']>;
44608
45050
  quantity: Scalars['Float']['output'];
44609
45051
  receivedAt?: Maybe<Scalars['DateTime']['output']>;
45052
+ /** Unit count per status for a serial-controlled lot. */
45053
+ serialCounts: Array<ManSerialStatusCount>;
45054
+ /** Units in a serial-controlled lot (empty for other lots). */
45055
+ serials: ManMaterialSerialConnection;
44610
45056
  status: ManMaterialLotStatus;
45057
+ /** Every other status, each marked allowed or blocked with the reason. A quarantined lot offers none here: it leaves quarantine only through manReleaseMaterialLot. */
45058
+ statusOptions: Array<ManMaterialLotStatusOption>;
45059
+ /** Reason recorded with the most recent status change (quarantine, release, scrap). */
45060
+ statusReason?: Maybe<Scalars['String']['output']>;
44611
45061
  supplier?: Maybe<Scalars['String']['output']>;
44612
45062
  tags: Array<Scalars['String']['output']>;
45063
+ /** Tracking mode of the SKU when the lot was received. SERIAL lots hold uniquely identified units. */
45064
+ trackingMode: ManTrackingMode;
44613
45065
  uom: Scalars['String']['output'];
44614
45066
  updatedAt: Scalars['DateTime']['output'];
44615
45067
  workspaceId: Scalars['ID']['output'];
@@ -44620,12 +45072,75 @@ export type ManMaterialLotChildLotsArgs = {
44620
45072
  pagination?: InputMaybe<PaginationInput>;
44621
45073
  };
44622
45074
 
45075
+
45076
+ export type ManMaterialLotSerialsArgs = {
45077
+ pagination?: InputMaybe<PaginationInput>;
45078
+ search?: InputMaybe<Scalars['String']['input']>;
45079
+ status?: InputMaybe<ManMaterialLotStatus>;
45080
+ };
45081
+
44623
45082
  export type ManMaterialLotConnection = {
44624
45083
  __typename?: 'ManMaterialLotConnection';
44625
45084
  items: Array<ManMaterialLot>;
44626
45085
  pageInfo: ManPageInfo;
44627
45086
  };
44628
45087
 
45088
+ export type ManMaterialLotEvent = {
45089
+ __typename?: 'ManMaterialLotEvent';
45090
+ actorId: Scalars['ID']['output'];
45091
+ /** Field diff for UPDATED ({ field: { from, to } }). */
45092
+ changes?: Maybe<Scalars['JSON']['output']>;
45093
+ eventType: ManMaterialLotEventType;
45094
+ fromStatus?: Maybe<ManMaterialLotStatus>;
45095
+ id: Scalars['ID']['output'];
45096
+ inspectionId?: Maybe<Scalars['ID']['output']>;
45097
+ nonConformanceId?: Maybe<Scalars['ID']['output']>;
45098
+ occurredAt: Scalars['DateTime']['output'];
45099
+ productionOrderId?: Maybe<Scalars['ID']['output']>;
45100
+ reason?: Maybe<Scalars['String']['output']>;
45101
+ toStatus?: Maybe<ManMaterialLotStatus>;
45102
+ };
45103
+
45104
+ /** Kind of immutable material-lot history event. */
45105
+ export enum ManMaterialLotEventType {
45106
+ Created = 'CREATED',
45107
+ Dispositioned = 'DISPOSITIONED',
45108
+ Linked = 'LINKED',
45109
+ LinkReversed = 'LINK_REVERSED',
45110
+ Quarantined = 'QUARANTINED',
45111
+ Released = 'RELEASED',
45112
+ StatusChanged = 'STATUS_CHANGED',
45113
+ Updated = 'UPDATED'
45114
+ }
45115
+
45116
+ export type ManMaterialLotOrderLink = {
45117
+ __typename?: 'ManMaterialLotOrderLink';
45118
+ createdAt: Scalars['DateTime']['output'];
45119
+ createdBy: Scalars['ID']['output'];
45120
+ id: Scalars['ID']['output'];
45121
+ materialLot?: Maybe<ManMaterialLot>;
45122
+ materialLotId: Scalars['ID']['output'];
45123
+ operation?: Maybe<ManProductionOperation>;
45124
+ operationId?: Maybe<Scalars['ID']['output']>;
45125
+ productionOrder?: Maybe<ManProductionOrder>;
45126
+ productionOrderId: Scalars['ID']['output'];
45127
+ quantity: Scalars['Float']['output'];
45128
+ reason?: Maybe<Scalars['String']['output']>;
45129
+ reversalReason?: Maybe<Scalars['String']['output']>;
45130
+ /** Set when the link was reversed (corrections reverse + re-link; nothing is edited). */
45131
+ reversedAt?: Maybe<Scalars['DateTime']['output']>;
45132
+ reversedBy?: Maybe<Scalars['ID']['output']>;
45133
+ role: ManMaterialLinkRole;
45134
+ };
45135
+
45136
+ /** Outcome of a quarantine review. */
45137
+ export enum ManMaterialLotReleaseDecision {
45138
+ /** Return the lot to AVAILABLE. */
45139
+ Release = 'RELEASE',
45140
+ /** Disposition the lot as SCRAPPED. */
45141
+ Scrap = 'SCRAP'
45142
+ }
45143
+
44629
45144
  export enum ManMaterialLotStatus {
44630
45145
  Allocated = 'ALLOCATED',
44631
45146
  Available = 'AVAILABLE',
@@ -44634,6 +45149,16 @@ export enum ManMaterialLotStatus {
44634
45149
  Scrapped = 'SCRAPPED'
44635
45150
  }
44636
45151
 
45152
+ export type ManMaterialLotStatusOption = {
45153
+ __typename?: 'ManMaterialLotStatusOption';
45154
+ allowed: Scalars['Boolean']['output'];
45155
+ /** Why the move is blocked. Null when allowed. */
45156
+ reason?: Maybe<Scalars['String']['output']>;
45157
+ /** The move must carry a reason (quarantine, scrap). */
45158
+ requiresReason: Scalars['Boolean']['output'];
45159
+ status: ManMaterialLotStatus;
45160
+ };
45161
+
44637
45162
  /** 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. */
44638
45163
  export type ManMaterialRequirement = {
44639
45164
  __typename?: 'ManMaterialRequirement';
@@ -44650,26 +45175,117 @@ export type ManMaterialRequirement = {
44650
45175
  workspaceId: Scalars['ID']['output'];
44651
45176
  };
44652
45177
 
45178
+ export type ManMaterialSerial = {
45179
+ __typename?: 'ManMaterialSerial';
45180
+ createdAt: Scalars['DateTime']['output'];
45181
+ createdBy: Scalars['ID']['output'];
45182
+ /** The unit is held because its whole lot is quarantined (released with the lot). */
45183
+ heldByLot: Scalars['Boolean']['output'];
45184
+ /** Immutable per-unit history, oldest first. */
45185
+ history: Array<ManMaterialSerialEvent>;
45186
+ /** NCR behind the unit's quarantine, when it came from one. */
45187
+ holdNonConformanceId?: Maybe<Scalars['ID']['output']>;
45188
+ id: Scalars['ID']['output'];
45189
+ /** True once the unit's lot has expired — expired units cannot be allocated or consumed. */
45190
+ isExpired: Scalars['Boolean']['output'];
45191
+ materialLot?: Maybe<ManMaterialLot>;
45192
+ materialLotId: Scalars['ID']['output'];
45193
+ materialSku: Scalars['String']['output'];
45194
+ operation?: Maybe<ManProductionOperation>;
45195
+ operationId?: Maybe<Scalars['ID']['output']>;
45196
+ productionOrder?: Maybe<ManProductionOrder>;
45197
+ /** Order the unit is allocated to or was consumed by. */
45198
+ productionOrderId?: Maybe<Scalars['ID']['output']>;
45199
+ serialNumber: Scalars['String']['output'];
45200
+ status: ManMaterialLotStatus;
45201
+ /** 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. */
45202
+ statusOptions: Array<ManMaterialLotStatusOption>;
45203
+ /** Reason recorded with the most recent change. */
45204
+ statusReason?: Maybe<Scalars['String']['output']>;
45205
+ updatedAt: Scalars['DateTime']['output'];
45206
+ workspaceId: Scalars['ID']['output'];
45207
+ };
45208
+
45209
+ export type ManMaterialSerialConnection = {
45210
+ __typename?: 'ManMaterialSerialConnection';
45211
+ items: Array<ManMaterialSerial>;
45212
+ pageInfo: ManPageInfo;
45213
+ };
45214
+
45215
+ export type ManMaterialSerialEvent = {
45216
+ __typename?: 'ManMaterialSerialEvent';
45217
+ actorId: Scalars['ID']['output'];
45218
+ eventType: ManMaterialSerialEventType;
45219
+ fromStatus?: Maybe<ManMaterialLotStatus>;
45220
+ id: Scalars['ID']['output'];
45221
+ nonConformanceId?: Maybe<Scalars['ID']['output']>;
45222
+ occurredAt: Scalars['DateTime']['output'];
45223
+ operationId?: Maybe<Scalars['ID']['output']>;
45224
+ productionOrderId?: Maybe<Scalars['ID']['output']>;
45225
+ reason?: Maybe<Scalars['String']['output']>;
45226
+ toStatus?: Maybe<ManMaterialLotStatus>;
45227
+ };
45228
+
45229
+ /** Kind of immutable per-unit history event. */
45230
+ export enum ManMaterialSerialEventType {
45231
+ /** Allocated to / consumed by a production order. */
45232
+ Assigned = 'ASSIGNED',
45233
+ Dispositioned = 'DISPOSITIONED',
45234
+ Quarantined = 'QUARANTINED',
45235
+ Received = 'RECEIVED',
45236
+ Released = 'RELEASED',
45237
+ StatusChanged = 'STATUS_CHANGED',
45238
+ /** Order allocation removed (unassigned, or cleared by a hold). */
45239
+ Unassigned = 'UNASSIGNED'
45240
+ }
45241
+
45242
+ export type ManMaterialSerialFilterInput = {
45243
+ materialLotId?: InputMaybe<Scalars['ID']['input']>;
45244
+ materialSku?: InputMaybe<Scalars['String']['input']>;
45245
+ productionOrderId?: InputMaybe<Scalars['ID']['input']>;
45246
+ /** Case-insensitive part of the serial number. */
45247
+ search?: InputMaybe<Scalars['String']['input']>;
45248
+ status?: InputMaybe<ManMaterialLotStatus>;
45249
+ };
45250
+
44653
45251
  export type ManNonConformance = {
44654
45252
  __typename?: 'ManNonConformance';
45253
+ /** Immediate containment performed (quarantine, sort, hold). */
45254
+ containmentAction?: Maybe<Scalars['String']['output']>;
44655
45255
  correctiveAction?: Maybe<Scalars['String']['output']>;
44656
45256
  createdAt: Scalars['DateTime']['output'];
45257
+ createdBy: Scalars['ID']['output'];
44657
45258
  description?: Maybe<Scalars['String']['output']>;
44658
45259
  disposition: ManNonConformanceDisposition;
45260
+ /** Why the chosen disposition is acceptable. */
45261
+ dispositionJustification?: Maybe<Scalars['String']['output']>;
44659
45262
  dueDate?: Maybe<Scalars['DateTime']['output']>;
45263
+ /** Immutable audit trail, oldest first. */
45264
+ history: Array<ManNonConformanceEvent>;
44660
45265
  id: Scalars['ID']['output'];
44661
45266
  inspection?: Maybe<ManQualityInspection>;
44662
45267
  inspectionId?: Maybe<Scalars['ID']['output']>;
45268
+ /** Active affected-entity links. */
45269
+ links: Array<ManNonConformanceLink>;
44663
45270
  ncrNumber: Scalars['String']['output'];
45271
+ /** Legal next statuses, each with the evidence still missing before the move is accepted. Empty for a CLOSED NCR (use manReopenNonConformance). */
45272
+ nextTransitions: Array<ManNonConformanceTransitionOption>;
44664
45273
  ownerId?: Maybe<Scalars['ID']['output']>;
44665
45274
  quantityAffected: Scalars['Float']['output'];
44666
45275
  resolvedAt?: Maybe<Scalars['DateTime']['output']>;
44667
45276
  rootCause?: Maybe<Scalars['String']['output']>;
44668
45277
  severity: ManSeverity;
45278
+ /** Why the NCR is not tied to an order, operation, lot or inspection. */
45279
+ standaloneReason?: Maybe<Scalars['String']['output']>;
44669
45280
  status: ManNonConformanceStatus;
44670
45281
  tags: Array<Scalars['String']['output']>;
44671
45282
  title: Scalars['String']['output'];
44672
45283
  updatedAt: Scalars['DateTime']['output'];
45284
+ verificationNotes?: Maybe<Scalars['String']['output']>;
45285
+ verificationResult?: Maybe<ManCapaVerificationResult>;
45286
+ verifiedAt?: Maybe<Scalars['DateTime']['output']>;
45287
+ /** Actor who recorded the verification. */
45288
+ verifiedBy?: Maybe<Scalars['ID']['output']>;
44673
45289
  workspaceId: Scalars['ID']['output'];
44674
45290
  };
44675
45291
 
@@ -44687,6 +45303,54 @@ export enum ManNonConformanceDisposition {
44687
45303
  UseAsIs = 'USE_AS_IS'
44688
45304
  }
44689
45305
 
45306
+ export type ManNonConformanceEvent = {
45307
+ __typename?: 'ManNonConformanceEvent';
45308
+ actorId: Scalars['ID']['output'];
45309
+ /** Field diff for UPDATED ({ field: { from, to } }); the link for LINK_ADDED / LINK_REMOVED. */
45310
+ changes?: Maybe<Scalars['JSON']['output']>;
45311
+ comment?: Maybe<Scalars['String']['output']>;
45312
+ eventType: ManNonConformanceEventType;
45313
+ fromStatus?: Maybe<ManNonConformanceStatus>;
45314
+ id: Scalars['ID']['output'];
45315
+ occurredAt: Scalars['DateTime']['output'];
45316
+ toStatus?: Maybe<ManNonConformanceStatus>;
45317
+ };
45318
+
45319
+ /** Kind of immutable NCR audit event. */
45320
+ export enum ManNonConformanceEventType {
45321
+ Created = 'CREATED',
45322
+ LinkAdded = 'LINK_ADDED',
45323
+ LinkRemoved = 'LINK_REMOVED',
45324
+ Reopened = 'REOPENED',
45325
+ StatusChanged = 'STATUS_CHANGED',
45326
+ Updated = 'UPDATED',
45327
+ Verified = 'VERIFIED'
45328
+ }
45329
+
45330
+ export type ManNonConformanceLink = {
45331
+ __typename?: 'ManNonConformanceLink';
45332
+ createdAt: Scalars['DateTime']['output'];
45333
+ createdBy: Scalars['ID']['output'];
45334
+ entityId: Scalars['ID']['output'];
45335
+ entityType: ManNonConformanceLinkType;
45336
+ id: Scalars['ID']['output'];
45337
+ materialLot?: Maybe<ManMaterialLot>;
45338
+ operation?: Maybe<ManProductionOperation>;
45339
+ productionOrder?: Maybe<ManProductionOrder>;
45340
+ };
45341
+
45342
+ export type ManNonConformanceLinkInput = {
45343
+ entityId: Scalars['ID']['input'];
45344
+ entityType: ManNonConformanceLinkType;
45345
+ };
45346
+
45347
+ /** Entity an NCR can be linked to. Inspections link through ManNonConformance.inspectionId. */
45348
+ export enum ManNonConformanceLinkType {
45349
+ MaterialLot = 'MATERIAL_LOT',
45350
+ Operation = 'OPERATION',
45351
+ ProductionOrder = 'PRODUCTION_ORDER'
45352
+ }
45353
+
44690
45354
  export enum ManNonConformanceStatus {
44691
45355
  Closed = 'CLOSED',
44692
45356
  Contained = 'CONTAINED',
@@ -44695,6 +45359,13 @@ export enum ManNonConformanceStatus {
44695
45359
  Open = 'OPEN'
44696
45360
  }
44697
45361
 
45362
+ export type ManNonConformanceTransitionOption = {
45363
+ __typename?: 'ManNonConformanceTransitionOption';
45364
+ /** Field names that must be recorded first. Empty means the move is allowed. */
45365
+ missingFields: Array<Scalars['String']['output']>;
45366
+ status: ManNonConformanceStatus;
45367
+ };
45368
+
44698
45369
  export enum ManOperationStatus {
44699
45370
  Done = 'DONE',
44700
45371
  Pending = 'PENDING',
@@ -44737,13 +45408,41 @@ export type ManPageInfo = {
44737
45408
  hasMore: Scalars['Boolean']['output'];
44738
45409
  };
44739
45410
 
45411
+ export type ManPartUsed = {
45412
+ __typename?: 'ManPartUsed';
45413
+ description?: Maybe<Scalars['String']['output']>;
45414
+ lotNumber?: Maybe<Scalars['String']['output']>;
45415
+ partNumber: Scalars['String']['output'];
45416
+ quantity: Scalars['Float']['output'];
45417
+ serialNumber?: Maybe<Scalars['String']['output']>;
45418
+ };
45419
+
45420
+ export type ManPartUsedInput = {
45421
+ description?: InputMaybe<Scalars['String']['input']>;
45422
+ lotNumber?: InputMaybe<Scalars['String']['input']>;
45423
+ partNumber: Scalars['String']['input'];
45424
+ quantity: Scalars['Float']['input'];
45425
+ serialNumber?: InputMaybe<Scalars['String']['input']>;
45426
+ };
45427
+
45428
+ export enum ManPmState {
45429
+ DueSoon = 'DUE_SOON',
45430
+ NotScheduled = 'NOT_SCHEDULED',
45431
+ Ok = 'OK',
45432
+ Overdue = 'OVERDUE'
45433
+ }
45434
+
44740
45435
  export type ManProductionOperation = {
44741
45436
  __typename?: 'ManProductionOperation';
45437
+ /** True while the step is PENDING and unstarted — only then can it be edited or removed. */
45438
+ canEditRouting: Scalars['Boolean']['output'];
44742
45439
  completedAt?: Maybe<Scalars['DateTime']['output']>;
44743
45440
  createdAt: Scalars['DateTime']['output'];
44744
45441
  goodCount: Scalars['Float']['output'];
44745
45442
  id: Scalars['ID']['output'];
44746
45443
  name: Scalars['String']['output'];
45444
+ /** NCRs linked to this operation. */
45445
+ nonConformances: Array<ManNonConformance>;
44747
45446
  operatorId?: Maybe<Scalars['ID']['output']>;
44748
45447
  plannedEnd?: Maybe<Scalars['DateTime']['output']>;
44749
45448
  /** Finite-capacity schedule output (BOFF-4287) — set by manScheduleProductionOrders. Null until a schedule run has placed this operation. */
@@ -44775,7 +45474,11 @@ export type ManProductionOrder = {
44775
45474
  dueDate?: Maybe<Scalars['DateTime']['output']>;
44776
45475
  erpReference?: Maybe<Scalars['String']['output']>;
44777
45476
  id: Scalars['ID']['output'];
45477
+ /** Material linked to this order (consumed, produced, by-product, returned), active and reversed. */
45478
+ materialLinks: Array<ManMaterialLotOrderLink>;
44778
45479
  materialLots: ManMaterialLotConnection;
45480
+ /** NCRs linked to this production order. */
45481
+ nonConformances: Array<ManNonConformance>;
44779
45482
  notes?: Maybe<Scalars['String']['output']>;
44780
45483
  operations: ManProductionOperationConnection;
44781
45484
  orderNumber: Scalars['String']['output'];
@@ -44786,6 +45489,10 @@ export type ManProductionOrder = {
44786
45489
  productSku: Scalars['String']['output'];
44787
45490
  quantity: Scalars['Float']['output'];
44788
45491
  quantityDone: Scalars['Float']['output'];
45492
+ /** Immutable routing-change history (operations added, edited, removed), oldest first. */
45493
+ routingHistory: Array<ManRoutingEvent>;
45494
+ /** Serial-controlled units allocated to or consumed by this order. */
45495
+ serials: ManMaterialSerialConnection;
44789
45496
  status: ManProductionOrderStatus;
44790
45497
  tags: Array<Scalars['String']['output']>;
44791
45498
  uom: Scalars['String']['output'];
@@ -44803,6 +45510,11 @@ export type ManProductionOrderOperationsArgs = {
44803
45510
  pagination?: InputMaybe<PaginationInput>;
44804
45511
  };
44805
45512
 
45513
+
45514
+ export type ManProductionOrderSerialsArgs = {
45515
+ pagination?: InputMaybe<PaginationInput>;
45516
+ };
45517
+
44806
45518
  export type ManProductionOrderConnection = {
44807
45519
  __typename?: 'ManProductionOrderConnection';
44808
45520
  items: Array<ManProductionOrder>;
@@ -44860,6 +45572,8 @@ export type ManQualityInspectionConnection = {
44860
45572
  };
44861
45573
 
44862
45574
  export type ManRaiseNonConformanceInput = {
45575
+ /** Production orders, operations and material lots the defect affects. At least one affected entity, an inspectionId, or a standaloneReason is required. */
45576
+ affected?: InputMaybe<Array<ManNonConformanceLinkInput>>;
44863
45577
  description?: InputMaybe<Scalars['String']['input']>;
44864
45578
  disposition?: InputMaybe<ManNonConformanceDisposition>;
44865
45579
  dueDate?: InputMaybe<Scalars['DateTime']['input']>;
@@ -44868,15 +45582,18 @@ export type ManRaiseNonConformanceInput = {
44868
45582
  ownerId?: InputMaybe<Scalars['ID']['input']>;
44869
45583
  quantityAffected?: InputMaybe<Scalars['Float']['input']>;
44870
45584
  severity?: InputMaybe<ManSeverity>;
45585
+ standaloneReason?: InputMaybe<Scalars['String']['input']>;
44871
45586
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
44872
45587
  title: Scalars['String']['input'];
44873
45588
  };
44874
45589
 
44875
45590
  export type ManRecordDowntimeInput = {
45591
+ /** Optional when maintenanceWorkOrderId is given (the work order's asset is used); must match it otherwise. */
44876
45592
  assetId?: InputMaybe<Scalars['ID']['input']>;
44877
45593
  description?: InputMaybe<Scalars['String']['input']>;
44878
45594
  durationMinutes?: InputMaybe<Scalars['Int']['input']>;
44879
45595
  endedAt?: InputMaybe<Scalars['DateTime']['input']>;
45596
+ maintenanceWorkOrderId?: InputMaybe<Scalars['ID']['input']>;
44880
45597
  productionOrderId?: InputMaybe<Scalars['ID']['input']>;
44881
45598
  reason?: InputMaybe<ManDowntimeReason>;
44882
45599
  startedAt: Scalars['DateTime']['input'];
@@ -44920,6 +45637,32 @@ export type ManRecordOperationInput = {
44920
45637
  status?: InputMaybe<ManOperationStatus>;
44921
45638
  };
44922
45639
 
45640
+ export type ManReleaseMaterialLotInput = {
45641
+ decision: ManMaterialLotReleaseDecision;
45642
+ /** Why the material is fit for use (or why it is scrapped). Required. */
45643
+ reason: Scalars['String']['input'];
45644
+ };
45645
+
45646
+ export type ManRoutingEvent = {
45647
+ __typename?: 'ManRoutingEvent';
45648
+ actorId: Scalars['ID']['output'];
45649
+ /** Operation snapshot for ADDED/REMOVED; { field: { from, to } } for CHANGED. */
45650
+ changes?: Maybe<Scalars['JSON']['output']>;
45651
+ eventType: ManRoutingEventType;
45652
+ id: Scalars['ID']['output'];
45653
+ occurredAt: Scalars['DateTime']['output'];
45654
+ operationId: Scalars['ID']['output'];
45655
+ /** Removal reason (REMOVED). */
45656
+ reason?: Maybe<Scalars['String']['output']>;
45657
+ };
45658
+
45659
+ /** Kind of immutable routing-change event. */
45660
+ export enum ManRoutingEventType {
45661
+ Added = 'ADDED',
45662
+ Changed = 'CHANGED',
45663
+ Removed = 'REMOVED'
45664
+ }
45665
+
44923
45666
  export type ManScheduleProductionOrdersInput = {
44924
45667
  /** Scheduling horizon in days from today. Default 30, max 90. */
44925
45668
  horizonDays?: InputMaybe<Scalars['Int']['input']>;
@@ -44945,6 +45688,61 @@ export type ManScheduledOperation = {
44945
45688
  workCenterId: Scalars['ID']['output'];
44946
45689
  };
44947
45690
 
45691
+ /** 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. */
45692
+ export type ManSerialEntryInput = {
45693
+ bulkText?: InputMaybe<Scalars['String']['input']>;
45694
+ range?: InputMaybe<ManSerialRangeInput>;
45695
+ serialNumbers?: InputMaybe<Array<Scalars['String']['input']>>;
45696
+ };
45697
+
45698
+ /** What a receipt would register, and every problem with it — nothing is written. */
45699
+ export type ManSerialEntryReport = {
45700
+ __typename?: 'ManSerialEntryReport';
45701
+ /** Serials that would be registered (well-formed, unique, not yet registered). */
45702
+ accepted: Array<Scalars['String']['output']>;
45703
+ alreadyRegistered: Array<Scalars['String']['output']>;
45704
+ duplicatesInInput: Array<Scalars['String']['output']>;
45705
+ /** Problems with the entry itself (bad range, over the limit, SKU not serial-controlled). */
45706
+ errors: Array<Scalars['String']['output']>;
45707
+ invalid: Array<ManInvalidSerial>;
45708
+ materialSku: Scalars['String']['output'];
45709
+ /** The whole entry can be registered as entered. */
45710
+ ok: Scalars['Boolean']['output'];
45711
+ /** Distinct, well-formed serials in the entry. */
45712
+ total: Scalars['Int']['output'];
45713
+ trackingMode: ManTrackingMode;
45714
+ };
45715
+
45716
+ /** A counter range: prefix + zero-padded number + suffix, start..end inclusive. */
45717
+ export type ManSerialRangeInput = {
45718
+ end: Scalars['Int']['input'];
45719
+ /** Minimum digits for the counter (zero-padded). */
45720
+ padding?: InputMaybe<Scalars['Int']['input']>;
45721
+ prefix?: InputMaybe<Scalars['String']['input']>;
45722
+ start: Scalars['Int']['input'];
45723
+ suffix?: InputMaybe<Scalars['String']['input']>;
45724
+ };
45725
+
45726
+ /** Recall scope for one unit: its lot and everything received with it. */
45727
+ export type ManSerialRecall = {
45728
+ __typename?: 'ManSerialRecall';
45729
+ /** Orders that consumed or hold units from the same lot. */
45730
+ affectedOrders: Array<ManProductionOrder>;
45731
+ lot?: Maybe<ManMaterialLot>;
45732
+ /** Every unit received in the same lot (up to 2000), with status and order. */
45733
+ lotUnits: Array<ManMaterialSerial>;
45734
+ serial: ManMaterialSerial;
45735
+ statusCounts: Array<ManSerialStatusCount>;
45736
+ /** More units exist in the lot than lotUnits lists. */
45737
+ truncated: Scalars['Boolean']['output'];
45738
+ };
45739
+
45740
+ export type ManSerialStatusCount = {
45741
+ __typename?: 'ManSerialStatusCount';
45742
+ count: Scalars['Int']['output'];
45743
+ status: ManMaterialLotStatus;
45744
+ };
45745
+
44948
45746
  export enum ManSeverity {
44949
45747
  Critical = 'CRITICAL',
44950
45748
  Major = 'MAJOR',
@@ -44964,6 +45762,16 @@ export enum ManTagSource {
44964
45762
  OpcUa = 'OPC_UA'
44965
45763
  }
44966
45764
 
45765
+ /** How received units of a material are identified. */
45766
+ export enum ManTrackingMode {
45767
+ /** Traced by lot number with an aggregate quantity. */
45768
+ Lot = 'LOT',
45769
+ /** Not individually traced. */
45770
+ None = 'NONE',
45771
+ /** Every unit carries its own unique serial number. */
45772
+ Serial = 'SERIAL'
45773
+ }
45774
+
44967
45775
  export type ManUnscheduledOperation = {
44968
45776
  __typename?: 'ManUnscheduledOperation';
44969
45777
  operationId: Scalars['ID']['output'];
@@ -44997,6 +45805,7 @@ export type ManUpdateInventoryItemInput = {
44997
45805
  name?: InputMaybe<Scalars['String']['input']>;
44998
45806
  reorderPoint?: InputMaybe<Scalars['Float']['input']>;
44999
45807
  standardCost?: InputMaybe<Scalars['Float']['input']>;
45808
+ trackingMode?: InputMaybe<ManTrackingMode>;
45000
45809
  uom?: InputMaybe<Scalars['String']['input']>;
45001
45810
  };
45002
45811
 
@@ -45012,18 +45821,27 @@ export type ManUpdateMaterialLotInput = {
45012
45821
  };
45013
45822
 
45014
45823
  export type ManUpdateNonConformanceInput = {
45824
+ containmentAction?: InputMaybe<Scalars['String']['input']>;
45015
45825
  correctiveAction?: InputMaybe<Scalars['String']['input']>;
45016
45826
  description?: InputMaybe<Scalars['String']['input']>;
45017
45827
  disposition?: InputMaybe<ManNonConformanceDisposition>;
45828
+ dispositionJustification?: InputMaybe<Scalars['String']['input']>;
45018
45829
  dueDate?: InputMaybe<Scalars['DateTime']['input']>;
45019
45830
  ownerId?: InputMaybe<Scalars['ID']['input']>;
45020
45831
  quantityAffected?: InputMaybe<Scalars['Float']['input']>;
45021
45832
  rootCause?: InputMaybe<Scalars['String']['input']>;
45022
45833
  severity?: InputMaybe<ManSeverity>;
45834
+ standaloneReason?: InputMaybe<Scalars['String']['input']>;
45023
45835
  tags?: InputMaybe<Array<Scalars['String']['input']>>;
45024
45836
  title?: InputMaybe<Scalars['String']['input']>;
45025
45837
  };
45026
45838
 
45839
+ export type ManUpdateOperationInput = {
45840
+ name?: InputMaybe<Scalars['String']['input']>;
45841
+ sequence?: InputMaybe<Scalars['Int']['input']>;
45842
+ workCenterId?: InputMaybe<Scalars['ID']['input']>;
45843
+ };
45844
+
45027
45845
  export type ManUpdateProductionOrderInput = {
45028
45846
  dueDate?: InputMaybe<Scalars['DateTime']['input']>;
45029
45847
  erpReference?: InputMaybe<Scalars['String']['input']>;
@@ -45047,6 +45865,12 @@ export type ManUpdateWorkCenterInput = {
45047
45865
  type?: InputMaybe<ManWorkCenterType>;
45048
45866
  };
45049
45867
 
45868
+ export type ManVerifyNonConformanceInput = {
45869
+ /** Required when result is NOT_EFFECTIVE. */
45870
+ notes?: InputMaybe<Scalars['String']['input']>;
45871
+ result: ManCapaVerificationResult;
45872
+ };
45873
+
45050
45874
  export type ManWorkCenter = {
45051
45875
  __typename?: 'ManWorkCenter';
45052
45876
  capacityHours: Scalars['Float']['output'];
@@ -46085,6 +46909,8 @@ export type MtwDeliveryJob = {
46085
46909
  pickupAddress: Scalars['JSON']['output'];
46086
46910
  pricing?: Maybe<Scalars['JSON']['output']>;
46087
46911
  priority: DeliveryPriority;
46912
+ route?: Maybe<MtwRoute>;
46913
+ routeId?: Maybe<Scalars['ID']['output']>;
46088
46914
  scheduledDelivery?: Maybe<Scalars['DateTime']['output']>;
46089
46915
  shipment?: Maybe<MtwShipment>;
46090
46916
  specialInstructions?: Maybe<Scalars['String']['output']>;
@@ -46190,7 +47016,13 @@ export type MtwDriver = {
46190
47016
  updatedAt: Scalars['DateTime']['output'];
46191
47017
  updatedBy?: Maybe<Scalars['String']['output']>;
46192
47018
  userId?: Maybe<Scalars['String']['output']>;
47019
+ /**
47020
+ * Deprecated: use the many-to-many vehicleIds relationship.
47021
+ * @deprecated Use vehicles/vehicleIds for many-to-many fleet assignments.
47022
+ */
46193
47023
  vehicleId?: Maybe<Scalars['String']['output']>;
47024
+ /** Vehicles linked to this driver through the workspace fleet relationship. */
47025
+ vehicles: Array<MtwVehicle>;
46194
47026
  workspaceId: Scalars['ID']['output'];
46195
47027
  };
46196
47028
 
@@ -46649,6 +47481,7 @@ export type MtwVehicle = {
46649
47481
  createdBy: Scalars['String']['output'];
46650
47482
  currentLocation?: Maybe<Scalars['JSON']['output']>;
46651
47483
  deletedAt?: Maybe<Scalars['DateTime']['output']>;
47484
+ drivers: Array<MtwDriver>;
46652
47485
  fuelEfficiencyLPer100Km?: Maybe<Scalars['Float']['output']>;
46653
47486
  fuelLevel?: Maybe<Scalars['Float']['output']>;
46654
47487
  fuelType?: Maybe<FuelType>;
@@ -47690,6 +48523,7 @@ export type Mutation = {
47690
48523
  createDashboardView: DashboardView;
47691
48524
  /** Create a data sink */
47692
48525
  createDataSink: DataSink;
48526
+ createDataTable: DataTableResponse;
47693
48527
  createDeliveryJob: MtwDeliveryJob;
47694
48528
  createDigitalTwin: DigitalTwin;
47695
48529
  /** 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. */
@@ -47930,6 +48764,7 @@ export type Mutation = {
47930
48764
  createLegalHold: LegalHold;
47931
48765
  createLifeGoal: TimeCampusLifeGoal;
47932
48766
  createLocationEntry: LocationEntry;
48767
+ createLogStreamDestination: LogStreamDestinationResponse;
47933
48768
  createMCPConnection: McpConnection;
47934
48769
  /** Create a recurring maintenance schedule on an asset (BOFF-6031). */
47935
48770
  createMaintenancePlan: MaintenancePlan;
@@ -48067,6 +48902,7 @@ export type Mutation = {
48067
48902
  createWorkflowSandbox: Sandbox;
48068
48903
  /** Create a new scheduled job */
48069
48904
  createWorkflowScheduledJob: ScheduledJobResponse;
48905
+ createWorkflowVariable: WorkflowVariableResponse;
48070
48906
  createWorkflowVersion: CreateWorkflowVersionResponse;
48071
48907
  /** Create a new workspace. Tenant ID is read from gateway context (x-tenant-id header). Owner defaults to authenticated actor (x-actor-id header). */
48072
48908
  createWorkspace: Workspace;
@@ -48088,6 +48924,8 @@ export type Mutation = {
48088
48924
  decideHealthyBowlAgronomyDecision: AgronomyDecision;
48089
48925
  /** 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. */
48090
48926
  decideHealthyBowlFarmRecommendation: HealthyBowlFarmRecommendation;
48927
+ /** 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). */
48928
+ decideToolApproval: DecideToolApprovalResponse;
48091
48929
  declareLifeValue: TimeCampusLifeValue;
48092
48930
  /** Decline a file/folder share invitation. */
48093
48931
  declineFileShare: Scalars['Boolean']['output'];
@@ -48158,6 +48996,8 @@ export type Mutation = {
48158
48996
  deleteDashboardView: Scalars['Boolean']['output'];
48159
48997
  /** Delete a data sink (soft delete) */
48160
48998
  deleteDataSink: DataSink;
48999
+ deleteDataTable: DeleteConfigResponse;
49000
+ deleteDataTableRows: DataTableRowsMutationResponse;
48161
49001
  deleteDeliveryJob: Scalars['Boolean']['output'];
48162
49002
  /** Remove a component's deployment record for an environment. */
48163
49003
  deleteDeployment: Scalars['Boolean']['output'];
@@ -48351,6 +49191,7 @@ export type Mutation = {
48351
49191
  deleteLifeGoal: TimeCampusLifeGoal;
48352
49192
  deleteLifeValue: TimeCampusLifeValue;
48353
49193
  deleteLocationEntry: LocationEntry;
49194
+ deleteLogStreamDestination: DeleteConfigResponse;
48354
49195
  deleteMCPConnection: Scalars['Boolean']['output'];
48355
49196
  /** 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. */
48356
49197
  deleteMaintenancePlan: Scalars['Boolean']['output'];
@@ -48471,6 +49312,7 @@ export type Mutation = {
48471
49312
  deleteWorkflowDefinition: Scalars['Boolean']['output'];
48472
49313
  /** Delete a scheduled job (soft delete) */
48473
49314
  deleteWorkflowScheduledJob: DeleteConfigResponse;
49315
+ deleteWorkflowVariable: DeleteConfigResponse;
48474
49316
  /** 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). */
48475
49317
  deleteWorkspace: Scalars['Boolean']['output'];
48476
49318
  /** Delete a workspace resource */
@@ -49094,6 +49936,8 @@ export type Mutation = {
49094
49936
  importSecrets: SecretImportResult;
49095
49937
  /** Import hosts from SSH config scan as targets (batch create). */
49096
49938
  importTargetsFromConfig: TargetImportResult;
49939
+ /** Import a portable workflow JSON document as a new DRAFT. */
49940
+ importWorkflow: ImportWorkflowResponse;
49097
49941
  /** 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). */
49098
49942
  importWorkflowTemplate: ImportWorkflowTemplateResponse;
49099
49943
  /** Import a resource configuration to create a new resource. Workspace ID is read from gateway context (x-workspace-id header). */
@@ -49123,6 +49967,7 @@ export type Mutation = {
49123
49967
  initiateOAuth: OAuthInitiationResult;
49124
49968
  /** Initiate a new upload session Returns session details and initial presigned URLs */
49125
49969
  initiateUpload: UploadSessionWithUrls;
49970
+ insertDataTableRow: DataTableRowResponse;
49126
49971
  /** Install an action from the store (creates a local instance) */
49127
49972
  installActionFromStore: Action;
49128
49973
  installAgentOnTarget: InstallJob;
@@ -49375,10 +50220,15 @@ export type Mutation = {
49375
50220
  /** Self-report an interruption during the caller's own ACTIVE focus session. Returns the updated session (with the new interruption included). */
49376
50221
  logTimeCampusFocusInterruption: TimeCampusFocusSession;
49377
50222
  manAddBomLine: ManBomLine;
50223
+ /** 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. */
49378
50224
  manAddOperation: ManProductionOperation;
49379
50225
  manArchiveWorkCenter: Scalars['Boolean']['output'];
50226
+ /** Allocate a unit to (or consume it on) a production order, optionally naming the operation. */
50227
+ manAssignMaterialSerial: ManMaterialSerial;
49380
50228
  /** 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. */
49381
50229
  manCalculateMaterialRequirements: Array<ManMaterialRequirement>;
50230
+ /** 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. */
50231
+ manCompleteMaintenanceWorkOrder: ManMaintenanceWorkOrder;
49382
50232
  manCreateAsset: ManAsset;
49383
50233
  manCreateBom: ManBillOfMaterial;
49384
50234
  manCreateErpConnection: ManErpConnection;
@@ -49394,7 +50244,13 @@ export type Mutation = {
49394
50244
  manErpPushInventoryItem: ManErpSyncRecord;
49395
50245
  /** 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). */
49396
50246
  manIngestTagReading: ManMachineTagReading;
50247
+ /** 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. */
50248
+ manLinkMaterialLotToOrder: ManMaterialLotOrderLink;
50249
+ /** Link an affected production order, operation or material lot. Idempotent. */
50250
+ manLinkNonConformanceEntity: ManNonConformance;
49397
50251
  manRaiseNonConformance: ManNonConformance;
50252
+ /** Partial receipt: register more units into an AVAILABLE serial lot. Rejected with MAN_SERIAL_DUPLICATE (already registered / entered twice) or MAN_SERIAL_INVALID. */
50253
+ manReceiveMaterialSerials: ManMaterialLot;
49398
50254
  manRecordDowntime: ManDowntimeEvent;
49399
50255
  manRecordInspection: ManQualityInspection;
49400
50256
  /** 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. */
@@ -49403,23 +50259,44 @@ export type Mutation = {
49403
50259
  manRecordMeasurement: ManQualityInspection;
49404
50260
  /** Record progress against a routing operation (setup/run time, good/scrap counts). */
49405
50261
  manRecordOperation: ManProductionOperation;
50262
+ /** 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. */
50263
+ manReleaseMaterialLot: ManMaterialLot;
50264
+ /** 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. */
50265
+ manReleaseMaterialSerial: ManMaterialSerial;
50266
+ /** Remove a routing step that has not started. Soft removal: the step and the required reason stay on the routing history. */
50267
+ manRemoveOperation: ManProductionOperation;
50268
+ /** Reopen a CLOSED NCR (returns to INVESTIGATING). The reason is recorded on the audit trail; the previous verification is cleared. */
50269
+ manReopenNonConformance: ManNonConformance;
50270
+ /** 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). */
50271
+ manReverseMaterialLotLink: ManMaterialLotOrderLink;
49406
50272
  /** 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. */
49407
50273
  manScheduleProductionOrders: ManScheduleResult;
50274
+ /** 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. */
49408
50275
  manSetMaterialLotStatus: ManMaterialLot;
49409
- /** Advance a maintenance work order through its lifecycle (validated transitions). */
50276
+ /** Quarantine or scrap one unit (reason required; a quarantine may cite its NCR). Quarantining an allocated unit releases its order allocation. */
50277
+ manSetMaterialSerialStatus: ManMaterialSerial;
50278
+ /** 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. */
49410
50279
  manTransitionMaintenanceWorkOrder: ManMaintenanceWorkOrder;
49411
- /** Advance an NCR/CAPA through its resolution lifecycle (validated transitions). */
50280
+ /** 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. */
49412
50281
  manTransitionNonConformance: ManNonConformance;
49413
50282
  /** Advance a production order through its execution lifecycle (validated transitions). */
49414
50283
  manTransitionProductionOrder: ManProductionOrder;
50284
+ /** Free an allocated unit (reason required). Consumed units are final (MAN_SERIAL_LOCKED). */
50285
+ manUnassignMaterialSerial: ManMaterialSerial;
50286
+ /** Remove an affected-entity link. The removal stays on the audit trail. */
50287
+ manUnlinkNonConformanceEntity: ManNonConformance;
49415
50288
  manUpdateAsset: ManAsset;
49416
50289
  manUpdateErpConnection: ManErpConnection;
49417
50290
  manUpdateInventoryItem: ManInventoryItem;
49418
50291
  /** Partially update a material lot's descriptive fields (name, quantity, uom, supplier, receipt/expiry dates, tags). Status changes go through `manSetMaterialLotStatus`. */
49419
50292
  manUpdateMaterialLot: ManMaterialLot;
49420
50293
  manUpdateNonConformance: ManNonConformance;
50294
+ /** Correct a routing step that has not started (MAN_OPERATION_STARTED once it has). Recorded on the order's routing history. */
50295
+ manUpdateOperation: ManProductionOperation;
49421
50296
  manUpdateProductionOrder: ManProductionOrder;
49422
50297
  manUpdateWorkCenter: ManWorkCenter;
50298
+ /** 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. */
50299
+ manVerifyNonConformance: ManNonConformance;
49423
50300
  /** 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). */
49424
50301
  manageContainers: ContainerActionResponse;
49425
50302
  /** Execute AI-powered workflow management */
@@ -49520,6 +50397,8 @@ export type Mutation = {
49520
50397
  /** Pin or unpin a comment */
49521
50398
  pinEntityComment: EntityComment;
49522
50399
  pinMessage: Message;
50400
+ /** 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. */
50401
+ pinNodeData: WorkflowDefinition;
49523
50402
  /** Pin a note */
49524
50403
  pinNote: VibecontrolsNote;
49525
50404
  /** Place a bid on a live auction. Fails if the auction is not live, has ended, or the amount is below the minimum. */
@@ -50143,6 +51022,8 @@ export type Mutation = {
50143
51022
  replaceSecretTags: Array<SecretTagAssignment>;
50144
51023
  replaceVibecontrolsEntityTags: Array<EntityTagAssignment>;
50145
51024
  replaceWorkspaceTags: Array<WorkspaceTagAssignment>;
51025
+ /** 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. */
51026
+ replayWorkflowRun: TriggerResponse;
50146
51027
  /** 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. */
50147
51028
  reportAgentMeshLink: AgentMeshLink;
50148
51029
  /** 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. */
@@ -50179,6 +51060,8 @@ export type Mutation = {
50179
51060
  resetVibecontrolsAgent: ResetAgentResult;
50180
51061
  /** Reset webhook failure count */
50181
51062
  resetWebhookFailures: Webhook;
51063
+ /** 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). */
51064
+ resetWorkflowStaticData: DeleteConfigResponse;
50182
51065
  resolveContextConversation: ResolveContextConversationPayload;
50183
51066
  /** Mark a comment resolved or unresolved. */
50184
51067
  resolveDashboardComment: DashboardComment;
@@ -50246,6 +51129,10 @@ export type Mutation = {
50246
51129
  retrySubmission: Submission;
50247
51130
  retryWebhookDelivery: RetryWebhookDeliveryResponse;
50248
51131
  retryWebhookExecution: WebhookExecution;
51132
+ /** 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. */
51133
+ retryWorkflowRuns: Array<TriggerResponse>;
51134
+ /** Explicit reveal action for a secret-flagged (or externally-backed) variable's real value — audited via trackOperation. */
51135
+ revealWorkflowVariableValue: RevealWorkflowVariableValueResponse;
50249
51136
  reviewHousingvistaRentalApplication: HousingVistaRentalApplication;
50250
51137
  reviewVaultSecurityEvent: VaultSecurityEvent;
50251
51138
  revokeActionShare: ShareGrant;
@@ -50359,6 +51246,8 @@ export type Mutation = {
50359
51246
  runAgentCommand: AgentProxyResponse;
50360
51247
  /** 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. */
50361
51248
  runExecution: Execution;
51249
+ /** 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`. */
51250
+ runFromNode: TriggerResponse;
50362
51251
  /** Idempotent sweep: certificate expiry ladder, banned inputs, MRL breaches, overdue inspections, missing documents. */
50363
51252
  runHealthyBowlComplianceScan: HealthyBowlComplianceScanResult;
50364
51253
  /** 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). */
@@ -50388,6 +51277,7 @@ export type Mutation = {
50388
51277
  saveMyNavPreferences: NavPreferences;
50389
51278
  /** 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. */
50390
51279
  saveSandboxArtifactToFiles: File;
51280
+ saveSecretsProviderConfig: SecretsProviderConfigResponse;
50391
51281
  /** Save UI session */
50392
51282
  saveUISession: UiSession;
50393
51283
  /** 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. */
@@ -50468,6 +51358,7 @@ export type Mutation = {
50468
51358
  setDefaultVibecontrolsAgentProfile: VibecontrolsAgentProfile;
50469
51359
  /** Set a view as the default */
50470
51360
  setDefaultView: DashboardView;
51361
+ setDriverVehicles: MtwDriver;
50471
51362
  setEventWebhook: WebhookConfig;
50472
51363
  /** BOFF-6030 — publish or update a consultant's weekly availability. One rule per weekday. */
50473
51364
  setHealthyBowlConsultAvailability: Scalars['ID']['output'];
@@ -50782,8 +51673,12 @@ export type Mutation = {
50782
51673
  terminateWorkflow: TerminateWorkflowResponse;
50783
51674
  testConnection: ConnectionTestResult;
50784
51675
  testLlmConnection: Scalars['Boolean']['output'];
51676
+ /** Send a synthetic test event to the destination right now, without waiting for a real run to fire one. Does not require `isEnabled`. */
51677
+ testLogStreamDestination: TestLogStreamDestinationResponse;
50785
51678
  testMCPConnection: Scalars['Boolean']['output'];
50786
51679
  testPipeline: PipelineExecution;
51680
+ /** Connection test button: validates the configured provider without persisting a secret. */
51681
+ testSecretsProviderConnection: TestSecretsProviderConnectionResponse;
50787
51682
  testTarget: TargetTestResult;
50788
51683
  /** Test webhook */
50789
51684
  testWebhook: Scalars['Boolean']['output'];
@@ -50904,6 +51799,8 @@ export type Mutation = {
50904
51799
  unmuteConversation: ConversationMembership;
50905
51800
  unpinConversation: ConversationMembership;
50906
51801
  unpinMessage: Message;
51802
+ /** Remove pinned data from a node (BOFF-7511). */
51803
+ unpinNodeData: WorkflowDefinition;
50907
51804
  /** Unpin a note */
50908
51805
  unpinNote: VibecontrolsNote;
50909
51806
  /** Hides the storefront from the public query without deleting it. */
@@ -51040,6 +51937,8 @@ export type Mutation = {
51040
51937
  updateDataSink: DataSink;
51041
51938
  /** Update a DataSink-Workflow link */
51042
51939
  updateDataSinkLink: DataSinkWorkflowLink;
51940
+ updateDataTable: DataTableResponse;
51941
+ updateDataTableRow: DataTableRowResponse;
51043
51942
  updateDeliveryJob: MtwDeliveryJob;
51044
51943
  updateDeliveryJobStatus: MtwDeliveryJob;
51045
51944
  updateDocsBuildImage: VibecontrolsDocsBuildImage;
@@ -51261,6 +52160,7 @@ export type Mutation = {
51261
52160
  updateLifeValue: TimeCampusLifeValue;
51262
52161
  /** 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). */
51263
52162
  updateLocationEntry: LocationEntry;
52163
+ updateLogStreamDestination: LogStreamDestinationResponse;
51264
52164
  updateMCPConnection: McpConnection;
51265
52165
  updateMCPTool: McpTool;
51266
52166
  updateMaintenancePlan: MaintenancePlan;
@@ -51418,6 +52318,7 @@ export type Mutation = {
51418
52318
  updateWorkflowDefinition: WorkflowDefinition;
51419
52319
  /** Update an existing scheduled job */
51420
52320
  updateWorkflowScheduledJob: ScheduledJobResponse;
52321
+ updateWorkflowVariable: WorkflowVariableResponse;
51421
52322
  /** Update an existing workspace */
51422
52323
  updateWorkspace: Workspace;
51423
52324
  /** Update workspace-level defaults. Requires admin permission. Merges provided fields with existing values. */
@@ -51473,8 +52374,22 @@ export type Mutation = {
51473
52374
  workerCompleteRun: WorkerCompleteRunResponse;
51474
52375
  /** Create a new node state (for pending nodes) INTERNAL: Requires actorType SERVICE */
51475
52376
  workerCreateNodeState: WorkerNodeStateResponse;
52377
+ /** 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 */
52378
+ workerCreateToolApprovalRequest: WorkerToolApprovalRequestResponse;
52379
+ /** WORKER-INTERNAL: Data Table node's delete operation — by explicit row ids or by filter. */
52380
+ workerDataTableDeleteRows: WorkerDataTableDeleteResponse;
52381
+ /** WORKER-INTERNAL: Data Table node's insert operation. */
52382
+ workerDataTableInsertRow: WorkerDataTableRowResponse;
52383
+ /** WORKER-INTERNAL: Data Table node's update operation. */
52384
+ workerDataTableUpdateRow: WorkerDataTableRowResponse;
52385
+ /** WORKER-INTERNAL: Data Table node's upsert operation — matches an existing row by `matchColumns`, updates it if found, otherwise inserts. */
52386
+ workerDataTableUpsertRow: WorkerDataTableRowResponse;
52387
+ /** 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. */
52388
+ workerDedupeCheckAndMark: WorkerDedupeCheckAndMarkResponse;
51476
52389
  /** Get or create node state (atomic operation) INTERNAL: Requires actorType SERVICE */
51477
52390
  workerGetOrCreateNodeState: WorkerNodeStateResponse;
52391
+ /** 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. */
52392
+ workerSyncWorkflowStaticData: WorkerStaticDataSyncResponse;
51478
52393
  /** Update an existing node state INTERNAL: Requires actorType SERVICE */
51479
52394
  workerUpdateNodeState: WorkerNodeStateResponse;
51480
52395
  /** Update workflow run status INTERNAL: Requires actorType SERVICE */
@@ -55643,6 +56558,12 @@ export type MutationCreateDataSinkArgs = {
55643
56558
  };
55644
56559
 
55645
56560
 
56561
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56562
+ export type MutationCreateDataTableArgs = {
56563
+ input: CreateDataTableInput;
56564
+ };
56565
+
56566
+
55646
56567
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
55647
56568
  export type MutationCreateDeliveryJobArgs = {
55648
56569
  input: CreateDeliveryJobInput;
@@ -56752,6 +57673,12 @@ export type MutationCreateLocationEntryArgs = {
56752
57673
  };
56753
57674
 
56754
57675
 
57676
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
57677
+ export type MutationCreateLogStreamDestinationArgs = {
57678
+ input: CreateLogStreamDestinationInput;
57679
+ };
57680
+
57681
+
56755
57682
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
56756
57683
  export type MutationCreateMcpConnectionArgs = {
56757
57684
  input: CreateMcpConnectionInput;
@@ -57366,6 +58293,12 @@ export type MutationCreateWorkflowScheduledJobArgs = {
57366
58293
  };
57367
58294
 
57368
58295
 
58296
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58297
+ export type MutationCreateWorkflowVariableArgs = {
58298
+ input: CreateWorkflowVariableInput;
58299
+ };
58300
+
58301
+
57369
58302
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
57370
58303
  export type MutationCreateWorkflowVersionArgs = {
57371
58304
  input: CreateWorkflowVersionInput;
@@ -57434,6 +58367,13 @@ export type MutationDecideHealthyBowlFarmRecommendationArgs = {
57434
58367
  };
57435
58368
 
57436
58369
 
58370
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58371
+ export type MutationDecideToolApprovalArgs = {
58372
+ decisions: Array<ToolApprovalDecisionInput>;
58373
+ id: Scalars['ID']['input'];
58374
+ };
58375
+
58376
+
57437
58377
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
57438
58378
  export type MutationDeclareLifeValueArgs = {
57439
58379
  input: TimeCampusLifeValueInput;
@@ -57757,6 +58697,19 @@ export type MutationDeleteDataSinkArgs = {
57757
58697
  };
57758
58698
 
57759
58699
 
58700
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58701
+ export type MutationDeleteDataTableArgs = {
58702
+ id: Scalars['ID']['input'];
58703
+ };
58704
+
58705
+
58706
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58707
+ export type MutationDeleteDataTableRowsArgs = {
58708
+ ids: Array<Scalars['ID']['input']>;
58709
+ tableId: Scalars['ID']['input'];
58710
+ };
58711
+
58712
+
57760
58713
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
57761
58714
  export type MutationDeleteDeliveryJobArgs = {
57762
58715
  id: Scalars['ID']['input'];
@@ -58787,6 +59740,12 @@ export type MutationDeleteLocationEntryArgs = {
58787
59740
  };
58788
59741
 
58789
59742
 
59743
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59744
+ export type MutationDeleteLogStreamDestinationArgs = {
59745
+ id: Scalars['ID']['input'];
59746
+ };
59747
+
59748
+
58790
59749
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
58791
59750
  export type MutationDeleteMcpConnectionArgs = {
58792
59751
  id: Scalars['ID']['input'];
@@ -59329,6 +60288,12 @@ export type MutationDeleteWorkflowScheduledJobArgs = {
59329
60288
  };
59330
60289
 
59331
60290
 
60291
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
60292
+ export type MutationDeleteWorkflowVariableArgs = {
60293
+ id: Scalars['ID']['input'];
60294
+ };
60295
+
60296
+
59332
60297
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59333
60298
  export type MutationDeleteWorkspaceArgs = {
59334
60299
  id: Scalars['ID']['input'];
@@ -62077,6 +63042,12 @@ export type MutationImportTargetsFromConfigArgs = {
62077
63042
  };
62078
63043
 
62079
63044
 
63045
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63046
+ export type MutationImportWorkflowArgs = {
63047
+ input: ImportWorkflowInput;
63048
+ };
63049
+
63050
+
62080
63051
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
62081
63052
  export type MutationImportWorkflowTemplateArgs = {
62082
63053
  input: ImportWorkflowTemplateInput;
@@ -62169,6 +63140,13 @@ export type MutationInitiateUploadArgs = {
62169
63140
  };
62170
63141
 
62171
63142
 
63143
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63144
+ export type MutationInsertDataTableRowArgs = {
63145
+ data: Scalars['JSON']['input'];
63146
+ tableId: Scalars['ID']['input'];
63147
+ };
63148
+
63149
+
62172
63150
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
62173
63151
  export type MutationInstallActionFromStoreArgs = {
62174
63152
  name?: InputMaybe<Scalars['String']['input']>;
@@ -63273,12 +64251,26 @@ export type MutationManArchiveWorkCenterArgs = {
63273
64251
  };
63274
64252
 
63275
64253
 
64254
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64255
+ export type MutationManAssignMaterialSerialArgs = {
64256
+ id: Scalars['ID']['input'];
64257
+ input: ManAssignMaterialSerialInput;
64258
+ };
64259
+
64260
+
63276
64261
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63277
64262
  export type MutationManCalculateMaterialRequirementsArgs = {
63278
64263
  productionOrderId: Scalars['ID']['input'];
63279
64264
  };
63280
64265
 
63281
64266
 
64267
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64268
+ export type MutationManCompleteMaintenanceWorkOrderArgs = {
64269
+ id: Scalars['ID']['input'];
64270
+ input: ManCompleteMaintenanceWorkOrderInput;
64271
+ };
64272
+
64273
+
63282
64274
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63283
64275
  export type MutationManCreateAssetArgs = {
63284
64276
  input: ManCreateAssetInput;
@@ -63352,12 +64344,33 @@ export type MutationManIngestTagReadingArgs = {
63352
64344
  };
63353
64345
 
63354
64346
 
64347
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64348
+ export type MutationManLinkMaterialLotToOrderArgs = {
64349
+ input: ManLinkLotToOrderInput;
64350
+ lotId: Scalars['ID']['input'];
64351
+ };
64352
+
64353
+
64354
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64355
+ export type MutationManLinkNonConformanceEntityArgs = {
64356
+ id: Scalars['ID']['input'];
64357
+ input: ManNonConformanceLinkInput;
64358
+ };
64359
+
64360
+
63355
64361
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63356
64362
  export type MutationManRaiseNonConformanceArgs = {
63357
64363
  input: ManRaiseNonConformanceInput;
63358
64364
  };
63359
64365
 
63360
64366
 
64367
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64368
+ export type MutationManReceiveMaterialSerialsArgs = {
64369
+ entry: ManSerialEntryInput;
64370
+ lotId: Scalars['ID']['input'];
64371
+ };
64372
+
64373
+
63361
64374
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63362
64375
  export type MutationManRecordDowntimeArgs = {
63363
64376
  input: ManRecordDowntimeInput;
@@ -63390,6 +64403,41 @@ export type MutationManRecordOperationArgs = {
63390
64403
  };
63391
64404
 
63392
64405
 
64406
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64407
+ export type MutationManReleaseMaterialLotArgs = {
64408
+ id: Scalars['ID']['input'];
64409
+ input: ManReleaseMaterialLotInput;
64410
+ };
64411
+
64412
+
64413
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64414
+ export type MutationManReleaseMaterialSerialArgs = {
64415
+ id: Scalars['ID']['input'];
64416
+ input: ManReleaseMaterialLotInput;
64417
+ };
64418
+
64419
+
64420
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64421
+ export type MutationManRemoveOperationArgs = {
64422
+ id: Scalars['ID']['input'];
64423
+ reason: Scalars['String']['input'];
64424
+ };
64425
+
64426
+
64427
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64428
+ export type MutationManReopenNonConformanceArgs = {
64429
+ id: Scalars['ID']['input'];
64430
+ reason: Scalars['String']['input'];
64431
+ };
64432
+
64433
+
64434
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64435
+ export type MutationManReverseMaterialLotLinkArgs = {
64436
+ linkId: Scalars['ID']['input'];
64437
+ reason: Scalars['String']['input'];
64438
+ };
64439
+
64440
+
63393
64441
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63394
64442
  export type MutationManScheduleProductionOrdersArgs = {
63395
64443
  input: ManScheduleProductionOrdersInput;
@@ -63399,6 +64447,18 @@ export type MutationManScheduleProductionOrdersArgs = {
63399
64447
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63400
64448
  export type MutationManSetMaterialLotStatusArgs = {
63401
64449
  id: Scalars['ID']['input'];
64450
+ inspectionId?: InputMaybe<Scalars['ID']['input']>;
64451
+ nonConformanceId?: InputMaybe<Scalars['ID']['input']>;
64452
+ reason?: InputMaybe<Scalars['String']['input']>;
64453
+ status: ManMaterialLotStatus;
64454
+ };
64455
+
64456
+
64457
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64458
+ export type MutationManSetMaterialSerialStatusArgs = {
64459
+ id: Scalars['ID']['input'];
64460
+ nonConformanceId?: InputMaybe<Scalars['ID']['input']>;
64461
+ reason?: InputMaybe<Scalars['String']['input']>;
63402
64462
  status: ManMaterialLotStatus;
63403
64463
  };
63404
64464
 
@@ -63412,6 +64472,7 @@ export type MutationManTransitionMaintenanceWorkOrderArgs = {
63412
64472
 
63413
64473
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63414
64474
  export type MutationManTransitionNonConformanceArgs = {
64475
+ comment?: InputMaybe<Scalars['String']['input']>;
63415
64476
  id: Scalars['ID']['input'];
63416
64477
  status: ManNonConformanceStatus;
63417
64478
  };
@@ -63424,6 +64485,20 @@ export type MutationManTransitionProductionOrderArgs = {
63424
64485
  };
63425
64486
 
63426
64487
 
64488
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64489
+ export type MutationManUnassignMaterialSerialArgs = {
64490
+ id: Scalars['ID']['input'];
64491
+ reason: Scalars['String']['input'];
64492
+ };
64493
+
64494
+
64495
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64496
+ export type MutationManUnlinkNonConformanceEntityArgs = {
64497
+ id: Scalars['ID']['input'];
64498
+ linkId: Scalars['ID']['input'];
64499
+ };
64500
+
64501
+
63427
64502
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63428
64503
  export type MutationManUpdateAssetArgs = {
63429
64504
  id: Scalars['ID']['input'];
@@ -63459,6 +64534,13 @@ export type MutationManUpdateNonConformanceArgs = {
63459
64534
  };
63460
64535
 
63461
64536
 
64537
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64538
+ export type MutationManUpdateOperationArgs = {
64539
+ id: Scalars['ID']['input'];
64540
+ input: ManUpdateOperationInput;
64541
+ };
64542
+
64543
+
63462
64544
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63463
64545
  export type MutationManUpdateProductionOrderArgs = {
63464
64546
  id: Scalars['ID']['input'];
@@ -63473,6 +64555,13 @@ export type MutationManUpdateWorkCenterArgs = {
63473
64555
  };
63474
64556
 
63475
64557
 
64558
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64559
+ export type MutationManVerifyNonConformanceArgs = {
64560
+ id: Scalars['ID']['input'];
64561
+ input: ManVerifyNonConformanceInput;
64562
+ };
64563
+
64564
+
63476
64565
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63477
64566
  export type MutationManageContainersArgs = {
63478
64567
  action: Scalars['String']['input'];
@@ -63929,6 +65018,14 @@ export type MutationPinMessageArgs = {
63929
65018
  };
63930
65019
 
63931
65020
 
65021
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
65022
+ export type MutationPinNodeDataArgs = {
65023
+ data: Scalars['JSON']['input'];
65024
+ id: Scalars['ID']['input'];
65025
+ nodeId: Scalars['String']['input'];
65026
+ };
65027
+
65028
+
63932
65029
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63933
65030
  export type MutationPinNoteArgs = {
63934
65031
  id: Scalars['ID']['input'];
@@ -66395,6 +67492,12 @@ export type MutationReplaceWorkspaceTagsArgs = {
66395
67492
  };
66396
67493
 
66397
67494
 
67495
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67496
+ export type MutationReplayWorkflowRunArgs = {
67497
+ runId: Scalars['ID']['input'];
67498
+ };
67499
+
67500
+
66398
67501
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
66399
67502
  export type MutationReportAgentMeshLinkArgs = {
66400
67503
  input: ReportAgentMeshLinkInput;
@@ -66527,6 +67630,14 @@ export type MutationResetWebhookFailuresArgs = {
66527
67630
  };
66528
67631
 
66529
67632
 
67633
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67634
+ export type MutationResetWorkflowStaticDataArgs = {
67635
+ nodeId?: InputMaybe<Scalars['String']['input']>;
67636
+ scope: StaticDataScope;
67637
+ workflowKey: Scalars['String']['input'];
67638
+ };
67639
+
67640
+
66530
67641
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
66531
67642
  export type MutationResolveContextConversationArgs = {
66532
67643
  input: ResolveContextConversationInput;
@@ -66816,6 +67927,18 @@ export type MutationRetryWebhookExecutionArgs = {
66816
67927
  };
66817
67928
 
66818
67929
 
67930
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67931
+ export type MutationRetryWorkflowRunsArgs = {
67932
+ runIds: Array<Scalars['ID']['input']>;
67933
+ };
67934
+
67935
+
67936
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67937
+ export type MutationRevealWorkflowVariableValueArgs = {
67938
+ id: Scalars['ID']['input'];
67939
+ };
67940
+
67941
+
66819
67942
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
66820
67943
  export type MutationReviewHousingvistaRentalApplicationArgs = {
66821
67944
  id: Scalars['ID']['input'];
@@ -67324,6 +68447,12 @@ export type MutationRunExecutionArgs = {
67324
68447
  };
67325
68448
 
67326
68449
 
68450
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
68451
+ export type MutationRunFromNodeArgs = {
68452
+ input: RunFromNodeInput;
68453
+ };
68454
+
68455
+
67327
68456
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67328
68457
  export type MutationRunHealthyBowlComplianceScanArgs = {
67329
68458
  context: ContextInput;
@@ -67425,6 +68554,12 @@ export type MutationSaveSandboxArtifactToFilesArgs = {
67425
68554
  };
67426
68555
 
67427
68556
 
68557
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
68558
+ export type MutationSaveSecretsProviderConfigArgs = {
68559
+ input: SaveSecretsProviderConfigInput;
68560
+ };
68561
+
68562
+
67428
68563
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67429
68564
  export type MutationSaveUiSessionArgs = {
67430
68565
  input: SaveUiSessionInput;
@@ -67786,6 +68921,13 @@ export type MutationSetDefaultViewArgs = {
67786
68921
  };
67787
68922
 
67788
68923
 
68924
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
68925
+ export type MutationSetDriverVehiclesArgs = {
68926
+ id: Scalars['ID']['input'];
68927
+ vehicleIds: Array<Scalars['ID']['input']>;
68928
+ };
68929
+
68930
+
67789
68931
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67790
68932
  export type MutationSetEventWebhookArgs = {
67791
68933
  config: WebhookConfigInput;
@@ -69154,6 +70296,12 @@ export type MutationTestLlmConnectionArgs = {
69154
70296
  };
69155
70297
 
69156
70298
 
70299
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
70300
+ export type MutationTestLogStreamDestinationArgs = {
70301
+ id: Scalars['ID']['input'];
70302
+ };
70303
+
70304
+
69157
70305
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
69158
70306
  export type MutationTestMcpConnectionArgs = {
69159
70307
  id: Scalars['ID']['input'];
@@ -69166,6 +70314,12 @@ export type MutationTestPipelineArgs = {
69166
70314
  };
69167
70315
 
69168
70316
 
70317
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
70318
+ export type MutationTestSecretsProviderConnectionArgs = {
70319
+ provider: SecretProviderType;
70320
+ };
70321
+
70322
+
69169
70323
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
69170
70324
  export type MutationTestTargetArgs = {
69171
70325
  id: Scalars['ID']['input'];
@@ -69688,6 +70842,13 @@ export type MutationUnpinMessageArgs = {
69688
70842
  };
69689
70843
 
69690
70844
 
70845
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
70846
+ export type MutationUnpinNodeDataArgs = {
70847
+ id: Scalars['ID']['input'];
70848
+ nodeId: Scalars['String']['input'];
70849
+ };
70850
+
70851
+
69691
70852
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
69692
70853
  export type MutationUnpinNoteArgs = {
69693
70854
  id: Scalars['ID']['input'];
@@ -70389,6 +71550,20 @@ export type MutationUpdateDataSinkLinkArgs = {
70389
71550
  };
70390
71551
 
70391
71552
 
71553
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
71554
+ export type MutationUpdateDataTableArgs = {
71555
+ id: Scalars['ID']['input'];
71556
+ input: UpdateDataTableInput;
71557
+ };
71558
+
71559
+
71560
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
71561
+ export type MutationUpdateDataTableRowArgs = {
71562
+ data: Scalars['JSON']['input'];
71563
+ id: Scalars['ID']['input'];
71564
+ };
71565
+
71566
+
70392
71567
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
70393
71568
  export type MutationUpdateDeliveryJobArgs = {
70394
71569
  id: Scalars['ID']['input'];
@@ -71570,6 +72745,13 @@ export type MutationUpdateLocationEntryArgs = {
71570
72745
  };
71571
72746
 
71572
72747
 
72748
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72749
+ export type MutationUpdateLogStreamDestinationArgs = {
72750
+ id: Scalars['ID']['input'];
72751
+ input: UpdateLogStreamDestinationInput;
72752
+ };
72753
+
72754
+
71573
72755
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
71574
72756
  export type MutationUpdateMcpConnectionArgs = {
71575
72757
  id: Scalars['ID']['input'];
@@ -72382,6 +73564,13 @@ export type MutationUpdateWorkflowScheduledJobArgs = {
72382
73564
  };
72383
73565
 
72384
73566
 
73567
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73568
+ export type MutationUpdateWorkflowVariableArgs = {
73569
+ id: Scalars['ID']['input'];
73570
+ input: UpdateWorkflowVariableInput;
73571
+ };
73572
+
73573
+
72385
73574
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72386
73575
  export type MutationUpdateWorkspaceArgs = {
72387
73576
  id: Scalars['ID']['input'];
@@ -72588,12 +73777,54 @@ export type MutationWorkerCreateNodeStateArgs = {
72588
73777
  };
72589
73778
 
72590
73779
 
73780
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73781
+ export type MutationWorkerCreateToolApprovalRequestArgs = {
73782
+ input: WorkerCreateToolApprovalRequestInput;
73783
+ };
73784
+
73785
+
73786
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73787
+ export type MutationWorkerDataTableDeleteRowsArgs = {
73788
+ input: WorkerDataTableDeleteRowsInput;
73789
+ };
73790
+
73791
+
73792
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73793
+ export type MutationWorkerDataTableInsertRowArgs = {
73794
+ input: WorkerDataTableInsertRowInput;
73795
+ };
73796
+
73797
+
73798
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73799
+ export type MutationWorkerDataTableUpdateRowArgs = {
73800
+ input: WorkerDataTableUpdateRowInput;
73801
+ };
73802
+
73803
+
73804
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73805
+ export type MutationWorkerDataTableUpsertRowArgs = {
73806
+ input: WorkerDataTableUpsertRowInput;
73807
+ };
73808
+
73809
+
73810
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73811
+ export type MutationWorkerDedupeCheckAndMarkArgs = {
73812
+ input: WorkerDedupeCheckAndMarkInput;
73813
+ };
73814
+
73815
+
72591
73816
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72592
73817
  export type MutationWorkerGetOrCreateNodeStateArgs = {
72593
73818
  input: WorkerCreateNodeStateInput;
72594
73819
  };
72595
73820
 
72596
73821
 
73822
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73823
+ export type MutationWorkerSyncWorkflowStaticDataArgs = {
73824
+ input: SyncWorkflowStaticDataInput;
73825
+ };
73826
+
73827
+
72597
73828
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72598
73829
  export type MutationWorkerUpdateNodeStateArgs = {
72599
73830
  input: WorkerUpdateNodeStateInput;
@@ -73556,6 +74787,7 @@ export type NodeEndpointConfig = {
73556
74787
  category?: Maybe<Scalars['String']['output']>;
73557
74788
  createdAt: Scalars['DateTime']['output'];
73558
74789
  description?: Maybe<Scalars['String']['output']>;
74790
+ docsUrl?: Maybe<Scalars['String']['output']>;
73559
74791
  endpointUrl: Scalars['String']['output'];
73560
74792
  favicon?: Maybe<Scalars['String']['output']>;
73561
74793
  healthCheckUrl?: Maybe<Scalars['String']['output']>;
@@ -73636,6 +74868,13 @@ export type NodeIntrospection = {
73636
74868
  operations: Scalars['JSON']['output'];
73637
74869
  };
73638
74870
 
74871
+ /** 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. */
74872
+ export type NodeLoadOption = {
74873
+ __typename?: 'NodeLoadOption';
74874
+ label: Scalars['String']['output'];
74875
+ value: Scalars['String']['output'];
74876
+ };
74877
+
73639
74878
  export type NodeLogsResponse = {
73640
74879
  __typename?: 'NodeLogsResponse';
73641
74880
  logCount: Scalars['Int']['output'];
@@ -73679,10 +74918,14 @@ export type NodeState = {
73679
74918
  nodeVersion: Scalars['String']['output'];
73680
74919
  output?: Maybe<Scalars['JSON']['output']>;
73681
74920
  resumeTime?: Maybe<Scalars['DateTime']['output']>;
74921
+ /** Set when `runFromNode` copied this node's state from an earlier run instead of executing it in this one (BOFF-7511). */
74922
+ reusedFromRunId?: Maybe<Scalars['String']['output']>;
73682
74923
  run?: Maybe<WorkflowRun>;
73683
74924
  runId: Scalars['String']['output'];
73684
74925
  startTime?: Maybe<Scalars['DateTime']['output']>;
73685
74926
  status: NodeStatus;
74927
+ /** True when this node's output came from pinned data instead of a real call (BOFF-7511). Always false on a PRODUCTION run. */
74928
+ usedPinnedData: Scalars['Boolean']['output'];
73686
74929
  };
73687
74930
 
73688
74931
  /** Node relationship statistics */
@@ -74207,6 +75450,15 @@ export type PayHealthyBowlInsurancePremiumInput = {
74207
75450
  paymentMethodId?: InputMaybe<Scalars['String']['input']>;
74208
75451
  };
74209
75452
 
75453
+ /** One tool call the agent proposed, awaiting (or already given) a decision. */
75454
+ export type PendingToolCall = {
75455
+ __typename?: 'PendingToolCall';
75456
+ /** JSON-encoded arguments the agent proposed for this call. */
75457
+ argsJson: Scalars['String']['output'];
75458
+ callId: Scalars['ID']['output'];
75459
+ name: Scalars['String']['output'];
75460
+ };
75461
+
74210
75462
  /** Permission audit log entry */
74211
75463
  export type PermissionAuditLog = {
74212
75464
  __typename?: 'PermissionAuditLog';
@@ -80035,6 +81287,9 @@ export type Query = {
80035
81287
  dashboardOverview: DashboardOverview;
80036
81288
  dashboardSummary: DashboardSummary;
80037
81289
  dashboards: Array<AnalyticsDashboard>;
81290
+ dataTable?: Maybe<DataTable>;
81291
+ dataTableRows: DataTableRowsResponse;
81292
+ dataTables: DataTableListResponse;
80038
81293
  deadLetterQueueEntries: DeadLetterQueueConnection;
80039
81294
  deadLetterQueueEntry?: Maybe<DeadLetterQueue>;
80040
81295
  decryptSecret?: Maybe<DecryptedSecret>;
@@ -80137,6 +81392,8 @@ export type Query = {
80137
81392
  envTopology: Array<EnvTopologyRow>;
80138
81393
  /** 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. */
80139
81394
  epod?: Maybe<MtwProofOfDelivery>;
81395
+ /** Error analytics (breakdown by type/workflow/node + a daily trend) for the Error Analytics screen (BOFF-7519). */
81396
+ errorAnalytics: ErrorAnalytics;
80140
81397
  esgMetric?: Maybe<EcoMetric>;
80141
81398
  /** 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. */
80142
81399
  esgMetrics: Array<EcoMetric>;
@@ -80211,6 +81468,8 @@ export type Query = {
80211
81468
  exportEventToIcs: Scalars['String']['output'];
80212
81469
  /** 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. */
80213
81470
  exportSecrets: SecretExportResult;
81471
+ /** Export a workflow version as a portable JSON document. */
81472
+ exportWorkflow: WorkflowExport;
80214
81473
  /** Pre-login preview of a file/folder share invite by token. */
80215
81474
  fileShareGrantByToken?: Maybe<ShareGrantPreview>;
80216
81475
  /** File/folder grants where the current user is the accepted grantee. */
@@ -81562,12 +82821,17 @@ export type Query = {
81562
82821
  listWidgets: WidgetConnection;
81563
82822
  /** List all widgets for a dashboard (across all pages) */
81564
82823
  listWidgetsByDashboard: Array<Widget>;
82824
+ loadNodeOptions: Array<NodeLoadOption>;
81565
82825
  /** 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). */
81566
82826
  locationEntries: LocationEntryListResponse;
81567
82827
  /** 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. */
81568
82828
  locationEntry?: Maybe<LocationEntry>;
81569
82829
  /** Aggregate location statistics for the workspace (no raw coordinates) — the intended manager/admin visibility surface, mirroring the workpattern module's team-summary pattern. */
81570
82830
  locationStats: LocationStats;
82831
+ /** Get a single log streaming destination by id (owner-filtered to the caller's workspace). */
82832
+ logStreamDestination?: Maybe<LogStreamDestination>;
82833
+ /** List the log streaming destinations configured for the caller's workspace. */
82834
+ logStreamDestinations: Array<LogStreamDestination>;
81571
82835
  /** Resolve a user email to an actor identity for workspace role assignment. */
81572
82836
  lookupUserActorByEmail?: Maybe<UserActorLookupResult>;
81573
82837
  maintenanceLog: Array<MaintenanceRecord>;
@@ -81581,10 +82845,14 @@ export type Query = {
81581
82845
  /** 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. */
81582
82846
  manControlChart: ManControlChartResult;
81583
82847
  manErpConnection?: Maybe<ManErpConnection>;
82848
+ /** Exact serial-number lookup across SKUs (traceability / recall entry point). */
82849
+ manFindMaterialSerials: Array<ManMaterialSerial>;
81584
82850
  /** Liveness/identity probe for the Manufacturedops subgraph. */
81585
82851
  manHealth: Scalars['String']['output'];
81586
82852
  manInspection?: Maybe<ManQualityInspection>;
81587
82853
  manInventoryItem?: Maybe<ManInventoryItem>;
82854
+ /** The item master row for a SKU (null when the SKU has none) — lot intake reads its tracking mode. */
82855
+ manInventoryItemBySku?: Maybe<ManInventoryItem>;
81588
82856
  manListAssets: ManAssetConnection;
81589
82857
  manListBoms: ManBillOfMaterialConnection;
81590
82858
  manListDowntimeEvents: ManDowntimeEventConnection;
@@ -81598,16 +82866,30 @@ export type Query = {
81598
82866
  manListMaterialLots: ManMaterialLotConnection;
81599
82867
  /** The latest persisted MRP run's requirement rows for one production order. */
81600
82868
  manListMaterialRequirements: Array<ManMaterialRequirement>;
82869
+ /** Units, filtered by lot, SKU, status, order or part of the serial number — also the export feed. */
82870
+ manListMaterialSerials: ManMaterialSerialConnection;
81601
82871
  manListNonConformances: ManNonConformanceConnection;
81602
82872
  manListProductionOrders: ManProductionOrderConnection;
81603
82873
  manListWorkCenters: ManWorkCenterConnection;
81604
82874
  manMachineTagReading?: Maybe<ManMachineTagReading>;
82875
+ /** One maintenance work order, with its completion evidence, linked downtime and history. */
82876
+ manMaintenanceWorkOrder?: Maybe<ManMaintenanceWorkOrder>;
82877
+ /** One material lot, with its status options and history. */
82878
+ manMaterialLot?: Maybe<ManMaterialLot>;
82879
+ /** One unit with its status options and history. */
82880
+ manMaterialSerial?: Maybe<ManMaterialSerial>;
82881
+ /** Recall scope for one unit. */
82882
+ manMaterialSerialRecall: ManSerialRecall;
81605
82883
  /** 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. */
81606
82884
  manMyLegalAcceptances: ManLegalAcceptanceConnection;
81607
82885
  manNonConformance?: Maybe<ManNonConformance>;
82886
+ /** NCRs with an active link to one production order, operation or material lot. */
82887
+ manNonConformancesForEntity: Array<ManNonConformance>;
81608
82888
  /** 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. */
81609
82889
  manOperationsSummary: ManOperationsSummary;
81610
82890
  manProductionOrder?: Maybe<ManProductionOrder>;
82891
+ /** Bulk-import preview: validate serials for a SKU without registering them. */
82892
+ manValidateMaterialSerials: ManSerialEntryReport;
81611
82893
  manWorkCenter?: Maybe<ManWorkCenter>;
81612
82894
  meeting?: Maybe<MeetingMeta>;
81613
82895
  meetingStats: MeetingStats;
@@ -81748,6 +83030,8 @@ export type Query = {
81748
83030
  organizationCount: Scalars['Int']['output'];
81749
83031
  parser?: Maybe<Parser>;
81750
83032
  pendingApprovals: Array<TimeApprovalRequest>;
83033
+ /** Pending tool-approval requests for the caller's workspace — the approval inbox. Ordered newest-first. */
83034
+ pendingToolApprovals: ToolApprovalRequestPage;
81751
83035
  /** Get permission check audit log */
81752
83036
  permissionAuditLog: Array<PermissionAuditLog>;
81753
83037
  /** Get permission check audit logs with bounded offset metadata. */
@@ -82138,6 +83422,8 @@ export type Query = {
82138
83422
  secretShareLinkInfo?: Maybe<SecretShareLinkInfo>;
82139
83423
  /** List the shares on a vault (or a specific secret). Vault view access required. */
82140
83424
  secretShares: SecretShareList;
83425
+ /** List the external secrets provider configurations for the caller's workspace. */
83426
+ secretsProviderConfigs: Array<SecretsProviderConfig>;
82141
83427
  securityComplianceFramework?: Maybe<SecurityComplianceFramework>;
82142
83428
  securityComplianceFrameworks: SecurityComplianceFrameworkList;
82143
83429
  securityFindings: SecurityFindingList;
@@ -82394,6 +83680,7 @@ export type Query = {
82394
83680
  timeEntryStats: TimeEntryStats;
82395
83681
  todayFocusScore?: Maybe<FocusScore>;
82396
83682
  todayWorkPattern?: Maybe<WorkPattern>;
83683
+ toolApprovalRequest?: Maybe<ToolApprovalRequest>;
82397
83684
  topApplications: Array<AppUsageRank>;
82398
83685
  trackingAlerts: Array<MtwTrackingAlert>;
82399
83686
  transaction?: Maybe<AssetTransaction>;
@@ -82561,10 +83848,16 @@ export type Query = {
82561
83848
  workPatternSummary: WorkPatternSummary;
82562
83849
  /** 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. */
82563
83850
  workPatterns: Array<WorkPattern>;
83851
+ /** WORKER-INTERNAL: read rows for the Data Table node's get/list operation. */
83852
+ workerDataTableGetRows: WorkerDataTableRowsResponse;
82564
83853
  /** Get execution context for a workflow run Returns run data, workflow definition, and all necessary context INTERNAL: Requires actorType SERVICE */
82565
83854
  workerGetExecutionContext: WorkerExecutionContext;
82566
83855
  /** Get all node states for a run INTERNAL: Requires actorType SERVICE */
82567
83856
  workerGetNodeStates: Array<WorkerNodeState>;
83857
+ /** 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`. */
83858
+ workerGetWorkflowStaticData: WorkerStaticDataResponse;
83859
+ /** 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). */
83860
+ workerGetWorkflowVariables: WorkerVariablesResponse;
82568
83861
  /** Resolve node endpoint from registry INTERNAL: Requires actorType SERVICE */
82569
83862
  workerResolveNodeEndpoint: WorkerNodeEndpointResponse;
82570
83863
  /** Get a single workflow by ID */
@@ -82593,8 +83886,18 @@ export type Query = {
82593
83886
  workflowScheduledJobs: ScheduledJobsListResponse;
82594
83887
  /** Get status of all scheduled jobs */
82595
83888
  workflowScheduledJobsStatus: Scalars['JSON']['output'];
83889
+ /** Read a single static-data blob (debug/inspection UI). GLOBAL scope ignores `nodeId`; NODE scope requires it. */
83890
+ workflowStaticData?: Maybe<WorkflowStaticDataRecord>;
83891
+ /** List every static-data blob (global + all nodes) persisted for a workflow key. */
83892
+ workflowStaticDataList: Array<WorkflowStaticDataRecord>;
82596
83893
  /** Get workflow summary with execution statistics */
82597
83894
  workflowSummary: WorkflowSummaryResponse;
83895
+ /** Get a single variable by id (owner-filtered to the caller's workspace). */
83896
+ workflowVariable?: Maybe<WorkflowVariable>;
83897
+ /** List variables visible in the caller's workspace (optionally filtered to one project's scope). */
83898
+ workflowVariables: WorkflowVariablesListResponse;
83899
+ /** Compare the definition JSON of two versions. */
83900
+ workflowVersionDiff: WorkflowVersionDiff;
82598
83901
  /** Get all versions of a workflow */
82599
83902
  workflowVersions: Array<WorkflowDefinition>;
82600
83903
  /** Get all workflows in the workspace */
@@ -85284,6 +86587,26 @@ export type QueryDashboardsArgs = {
85284
86587
  };
85285
86588
 
85286
86589
 
86590
+ /** Base Query type with placeholder field. Extended by individual query files. */
86591
+ export type QueryDataTableArgs = {
86592
+ id: Scalars['ID']['input'];
86593
+ };
86594
+
86595
+
86596
+ /** Base Query type with placeholder field. Extended by individual query files. */
86597
+ export type QueryDataTableRowsArgs = {
86598
+ input: DataTableRowsQueryInput;
86599
+ };
86600
+
86601
+
86602
+ /** Base Query type with placeholder field. Extended by individual query files. */
86603
+ export type QueryDataTablesArgs = {
86604
+ limit?: InputMaybe<Scalars['Int']['input']>;
86605
+ offset?: InputMaybe<Scalars['Int']['input']>;
86606
+ search?: InputMaybe<Scalars['String']['input']>;
86607
+ };
86608
+
86609
+
85287
86610
  /** Base Query type with placeholder field. Extended by individual query files. */
85288
86611
  export type QueryDeadLetterQueueEntriesArgs = {
85289
86612
  filter?: InputMaybe<JobFilterInput>;
@@ -85768,6 +87091,12 @@ export type QueryEpodArgs = {
85768
87091
  };
85769
87092
 
85770
87093
 
87094
+ /** Base Query type with placeholder field. Extended by individual query files. */
87095
+ export type QueryErrorAnalyticsArgs = {
87096
+ input?: InputMaybe<ErrorAnalyticsInput>;
87097
+ };
87098
+
87099
+
85771
87100
  /** Base Query type with placeholder field. Extended by individual query files. */
85772
87101
  export type QueryEsgMetricArgs = {
85773
87102
  id: Scalars['ID']['input'];
@@ -86248,6 +87577,13 @@ export type QueryExportSecretsArgs = {
86248
87577
  };
86249
87578
 
86250
87579
 
87580
+ /** Base Query type with placeholder field. Extended by individual query files. */
87581
+ export type QueryExportWorkflowArgs = {
87582
+ version?: InputMaybe<Scalars['String']['input']>;
87583
+ workflowKey: Scalars['String']['input'];
87584
+ };
87585
+
87586
+
86251
87587
  /** Base Query type with placeholder field. Extended by individual query files. */
86252
87588
  export type QueryFileShareGrantByTokenArgs = {
86253
87589
  token: Scalars['String']['input'];
@@ -92488,6 +93824,19 @@ export type QueryListWidgetsByDashboardArgs = {
92488
93824
  };
92489
93825
 
92490
93826
 
93827
+ /** Base Query type with placeholder field. Extended by individual query files. */
93828
+ export type QueryLoadNodeOptionsArgs = {
93829
+ args?: InputMaybe<Scalars['JSON']['input']>;
93830
+ connectionId?: InputMaybe<Scalars['ID']['input']>;
93831
+ labelField: Scalars['String']['input'];
93832
+ nodeType: Scalars['String']['input'];
93833
+ nodeVersion: Scalars['String']['input'];
93834
+ operationName: Scalars['String']['input'];
93835
+ resultPath?: InputMaybe<Scalars['String']['input']>;
93836
+ valueField: Scalars['String']['input'];
93837
+ };
93838
+
93839
+
92491
93840
  /** Base Query type with placeholder field. Extended by individual query files. */
92492
93841
  export type QueryLocationEntriesArgs = {
92493
93842
  filter?: InputMaybe<LocationEntryFilterInput>;
@@ -92508,6 +93857,12 @@ export type QueryLocationStatsArgs = {
92508
93857
  };
92509
93858
 
92510
93859
 
93860
+ /** Base Query type with placeholder field. Extended by individual query files. */
93861
+ export type QueryLogStreamDestinationArgs = {
93862
+ id: Scalars['ID']['input'];
93863
+ };
93864
+
93865
+
92511
93866
  /** Base Query type with placeholder field. Extended by individual query files. */
92512
93867
  export type QueryLookupUserActorByEmailArgs = {
92513
93868
  email: Scalars['String']['input'];
@@ -92572,6 +93927,12 @@ export type QueryManErpConnectionArgs = {
92572
93927
  };
92573
93928
 
92574
93929
 
93930
+ /** Base Query type with placeholder field. Extended by individual query files. */
93931
+ export type QueryManFindMaterialSerialsArgs = {
93932
+ serialNumber: Scalars['String']['input'];
93933
+ };
93934
+
93935
+
92575
93936
  /** Base Query type with placeholder field. Extended by individual query files. */
92576
93937
  export type QueryManInspectionArgs = {
92577
93938
  id: Scalars['ID']['input'];
@@ -92584,6 +93945,12 @@ export type QueryManInventoryItemArgs = {
92584
93945
  };
92585
93946
 
92586
93947
 
93948
+ /** Base Query type with placeholder field. Extended by individual query files. */
93949
+ export type QueryManInventoryItemBySkuArgs = {
93950
+ sku: Scalars['String']['input'];
93951
+ };
93952
+
93953
+
92587
93954
  /** Base Query type with placeholder field. Extended by individual query files. */
92588
93955
  export type QueryManListAssetsArgs = {
92589
93956
  pagination?: InputMaybe<PaginationInput>;
@@ -92677,6 +94044,13 @@ export type QueryManListMaterialRequirementsArgs = {
92677
94044
  };
92678
94045
 
92679
94046
 
94047
+ /** Base Query type with placeholder field. Extended by individual query files. */
94048
+ export type QueryManListMaterialSerialsArgs = {
94049
+ filter?: InputMaybe<ManMaterialSerialFilterInput>;
94050
+ pagination?: InputMaybe<PaginationInput>;
94051
+ };
94052
+
94053
+
92680
94054
  /** Base Query type with placeholder field. Extended by individual query files. */
92681
94055
  export type QueryManListNonConformancesArgs = {
92682
94056
  pagination?: InputMaybe<PaginationInput>;
@@ -92706,6 +94080,30 @@ export type QueryManMachineTagReadingArgs = {
92706
94080
  };
92707
94081
 
92708
94082
 
94083
+ /** Base Query type with placeholder field. Extended by individual query files. */
94084
+ export type QueryManMaintenanceWorkOrderArgs = {
94085
+ id: Scalars['ID']['input'];
94086
+ };
94087
+
94088
+
94089
+ /** Base Query type with placeholder field. Extended by individual query files. */
94090
+ export type QueryManMaterialLotArgs = {
94091
+ id: Scalars['ID']['input'];
94092
+ };
94093
+
94094
+
94095
+ /** Base Query type with placeholder field. Extended by individual query files. */
94096
+ export type QueryManMaterialSerialArgs = {
94097
+ id: Scalars['ID']['input'];
94098
+ };
94099
+
94100
+
94101
+ /** Base Query type with placeholder field. Extended by individual query files. */
94102
+ export type QueryManMaterialSerialRecallArgs = {
94103
+ id: Scalars['ID']['input'];
94104
+ };
94105
+
94106
+
92709
94107
  /** Base Query type with placeholder field. Extended by individual query files. */
92710
94108
  export type QueryManMyLegalAcceptancesArgs = {
92711
94109
  checkpointType: ManLegalCheckpointType;
@@ -92719,12 +94117,26 @@ export type QueryManNonConformanceArgs = {
92719
94117
  };
92720
94118
 
92721
94119
 
94120
+ /** Base Query type with placeholder field. Extended by individual query files. */
94121
+ export type QueryManNonConformancesForEntityArgs = {
94122
+ entityId: Scalars['ID']['input'];
94123
+ entityType: ManNonConformanceLinkType;
94124
+ };
94125
+
94126
+
92722
94127
  /** Base Query type with placeholder field. Extended by individual query files. */
92723
94128
  export type QueryManProductionOrderArgs = {
92724
94129
  id: Scalars['ID']['input'];
92725
94130
  };
92726
94131
 
92727
94132
 
94133
+ /** Base Query type with placeholder field. Extended by individual query files. */
94134
+ export type QueryManValidateMaterialSerialsArgs = {
94135
+ entry: ManSerialEntryInput;
94136
+ materialSku: Scalars['String']['input'];
94137
+ };
94138
+
94139
+
92728
94140
  /** Base Query type with placeholder field. Extended by individual query files. */
92729
94141
  export type QueryManWorkCenterArgs = {
92730
94142
  id: Scalars['ID']['input'];
@@ -93280,6 +94692,13 @@ export type QueryPendingApprovalsArgs = {
93280
94692
  };
93281
94693
 
93282
94694
 
94695
+ /** Base Query type with placeholder field. Extended by individual query files. */
94696
+ export type QueryPendingToolApprovalsArgs = {
94697
+ limit?: InputMaybe<Scalars['Int']['input']>;
94698
+ offset?: InputMaybe<Scalars['Int']['input']>;
94699
+ };
94700
+
94701
+
93283
94702
  /** Base Query type with placeholder field. Extended by individual query files. */
93284
94703
  export type QueryPermissionAuditLogArgs = {
93285
94704
  filter?: InputMaybe<AuditLogFilterInput>;
@@ -96163,6 +97582,12 @@ export type QueryTimeEntryStatsArgs = {
96163
97582
  };
96164
97583
 
96165
97584
 
97585
+ /** Base Query type with placeholder field. Extended by individual query files. */
97586
+ export type QueryToolApprovalRequestArgs = {
97587
+ id: Scalars['ID']['input'];
97588
+ };
97589
+
97590
+
96166
97591
  /** Base Query type with placeholder field. Extended by individual query files. */
96167
97592
  export type QueryTopApplicationsArgs = {
96168
97593
  endDate?: InputMaybe<Scalars['DateTime']['input']>;
@@ -96763,6 +98188,12 @@ export type QueryWorkPatternsArgs = {
96763
98188
  };
96764
98189
 
96765
98190
 
98191
+ /** Base Query type with placeholder field. Extended by individual query files. */
98192
+ export type QueryWorkerDataTableGetRowsArgs = {
98193
+ input: WorkerDataTableRowsQueryInput;
98194
+ };
98195
+
98196
+
96766
98197
  /** Base Query type with placeholder field. Extended by individual query files. */
96767
98198
  export type QueryWorkerGetExecutionContextArgs = {
96768
98199
  runId: Scalars['ID']['input'];
@@ -96777,6 +98208,20 @@ export type QueryWorkerGetNodeStatesArgs = {
96777
98208
  };
96778
98209
 
96779
98210
 
98211
+ /** Base Query type with placeholder field. Extended by individual query files. */
98212
+ export type QueryWorkerGetWorkflowStaticDataArgs = {
98213
+ workflowKey: Scalars['String']['input'];
98214
+ workspaceId: Scalars['ID']['input'];
98215
+ };
98216
+
98217
+
98218
+ /** Base Query type with placeholder field. Extended by individual query files. */
98219
+ export type QueryWorkerGetWorkflowVariablesArgs = {
98220
+ projectId?: InputMaybe<Scalars['ID']['input']>;
98221
+ workspaceId: Scalars['ID']['input'];
98222
+ };
98223
+
98224
+
96780
98225
  /** Base Query type with placeholder field. Extended by individual query files. */
96781
98226
  export type QueryWorkerResolveNodeEndpointArgs = {
96782
98227
  nodeType: Scalars['String']['input'];
@@ -96874,12 +98319,47 @@ export type QueryWorkflowScheduledJobsArgs = {
96874
98319
  };
96875
98320
 
96876
98321
 
98322
+ /** Base Query type with placeholder field. Extended by individual query files. */
98323
+ export type QueryWorkflowStaticDataArgs = {
98324
+ nodeId?: InputMaybe<Scalars['String']['input']>;
98325
+ scope: StaticDataScope;
98326
+ workflowKey: Scalars['String']['input'];
98327
+ };
98328
+
98329
+
98330
+ /** Base Query type with placeholder field. Extended by individual query files. */
98331
+ export type QueryWorkflowStaticDataListArgs = {
98332
+ workflowKey: Scalars['String']['input'];
98333
+ };
98334
+
98335
+
96877
98336
  /** Base Query type with placeholder field. Extended by individual query files. */
96878
98337
  export type QueryWorkflowSummaryArgs = {
96879
98338
  workflowKey: Scalars['String']['input'];
96880
98339
  };
96881
98340
 
96882
98341
 
98342
+ /** Base Query type with placeholder field. Extended by individual query files. */
98343
+ export type QueryWorkflowVariableArgs = {
98344
+ id: Scalars['ID']['input'];
98345
+ };
98346
+
98347
+
98348
+ /** Base Query type with placeholder field. Extended by individual query files. */
98349
+ export type QueryWorkflowVariablesArgs = {
98350
+ projectId?: InputMaybe<Scalars['ID']['input']>;
98351
+ scope?: InputMaybe<VariableScope>;
98352
+ };
98353
+
98354
+
98355
+ /** Base Query type with placeholder field. Extended by individual query files. */
98356
+ export type QueryWorkflowVersionDiffArgs = {
98357
+ fromVersion: Scalars['String']['input'];
98358
+ toVersion: Scalars['String']['input'];
98359
+ workflowKey: Scalars['String']['input'];
98360
+ };
98361
+
98362
+
96883
98363
  /** Base Query type with placeholder field. Extended by individual query files. */
96884
98364
  export type QueryWorkflowVersionsArgs = {
96885
98365
  workflowKey: Scalars['String']['input'];
@@ -97621,6 +99101,7 @@ export type RegisterNodeInput = {
97621
99101
  author?: InputMaybe<Scalars['String']['input']>;
97622
99102
  category?: InputMaybe<Scalars['String']['input']>;
97623
99103
  description?: InputMaybe<Scalars['String']['input']>;
99104
+ docsUrl?: InputMaybe<Scalars['String']['input']>;
97624
99105
  endpointUrl: Scalars['String']['input'];
97625
99106
  favicon?: InputMaybe<Scalars['String']['input']>;
97626
99107
  healthCheckUrl?: InputMaybe<Scalars['String']['input']>;
@@ -98643,6 +100124,13 @@ export type RetryWebhookDeliveryResponse = {
98643
100124
  success: Scalars['Boolean']['output'];
98644
100125
  };
98645
100126
 
100127
+ export type RevealWorkflowVariableValueResponse = MutationResponse & {
100128
+ __typename?: 'RevealWorkflowVariableValueResponse';
100129
+ message: Scalars['String']['output'];
100130
+ success: Scalars['Boolean']['output'];
100131
+ value?: Maybe<Scalars['String']['output']>;
100132
+ };
100133
+
98646
100134
  export type RevenueChartPoint = {
98647
100135
  __typename?: 'RevenueChartPoint';
98648
100136
  expenses: Scalars['Float']['output'];
@@ -99034,6 +100522,16 @@ export enum RuleRunMode {
99034
100522
  Realtime = 'REALTIME'
99035
100523
  }
99036
100524
 
100525
+ /** 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). */
100526
+ export type RunFromNodeInput = {
100527
+ /** Manual (TEST) vs real (PRODUCTION) execution. Defaults to TEST — this is a debugging affordance, not a production replay mechanism. */
100528
+ mode?: InputMaybe<RunMode>;
100529
+ /** Node to (re-)execute; everything downstream of it executes normally. */
100530
+ nodeId: Scalars['String']['input'];
100531
+ /** The earlier run to reuse upstream node outputs from. */
100532
+ sourceRunId: Scalars['ID']['input'];
100533
+ };
100534
+
99037
100535
  /** Severity of a run log line. */
99038
100536
  export enum RunLogLevel {
99039
100537
  Debug = 'DEBUG',
@@ -99082,6 +100580,12 @@ export enum RunLogStream {
99082
100580
  System = 'SYSTEM'
99083
100581
  }
99084
100582
 
100583
+ /** 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. */
100584
+ export enum RunMode {
100585
+ Production = 'PRODUCTION',
100586
+ Test = 'TEST'
100587
+ }
100588
+
99085
100589
  export type RunSandboxScriptInput = {
99086
100590
  context: ContextInput;
99087
100591
  /** bash | sh | python | node */
@@ -99101,6 +100605,18 @@ export enum RunStatus {
99101
100605
  Waiting = 'WAITING'
99102
100606
  }
99103
100607
 
100608
+ /** 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. */
100609
+ export enum RunTriggerType {
100610
+ /** Started by an internal event, a polling-detected change, or a chained workflow trigger. */
100611
+ Event = 'EVENT',
100612
+ /** Builder "Test workflow", the SDK, or a bare API call — the default when nothing else stamped a trigger type. */
100613
+ Manual = 'MANUAL',
100614
+ /** Started by a scheduled/cron fire. */
100615
+ Schedule = 'SCHEDULE',
100616
+ /** Started by an inbound webhook delivery. */
100617
+ Webhook = 'WEBHOOK'
100618
+ }
100619
+
99104
100620
  export type RunningTimer = {
99105
100621
  __typename?: 'RunningTimer';
99106
100622
  elapsedSeconds: Scalars['Int']['output'];
@@ -99544,6 +101060,17 @@ export type SaveSandboxArtifactInput = {
99544
101060
  sessionId: Scalars['String']['input'];
99545
101061
  };
99546
101062
 
101063
+ export type SaveSecretsProviderConfigInput = {
101064
+ awsRegion?: InputMaybe<Scalars['String']['input']>;
101065
+ awsSecretsManagerPrefix?: InputMaybe<Scalars['String']['input']>;
101066
+ azureKeyVaultUri?: InputMaybe<Scalars['String']['input']>;
101067
+ gcpProjectId?: InputMaybe<Scalars['String']['input']>;
101068
+ isEnabled?: InputMaybe<Scalars['Boolean']['input']>;
101069
+ provider: SecretProviderType;
101070
+ vaultAddress?: InputMaybe<Scalars['String']['input']>;
101071
+ vaultMountPath?: InputMaybe<Scalars['String']['input']>;
101072
+ };
101073
+
99547
101074
  export type SaveUiSessionInput = {
99548
101075
  activeSessionId?: InputMaybe<Scalars['ID']['input']>;
99549
101076
  activeVibeId?: InputMaybe<Scalars['ID']['input']>;
@@ -100256,6 +101783,14 @@ export type SecretList = {
100256
101783
  total: Scalars['Int']['output'];
100257
101784
  };
100258
101785
 
101786
+ export enum SecretProviderType {
101787
+ AwsSecretsManager = 'AWS_SECRETS_MANAGER',
101788
+ AzureKeyVault = 'AZURE_KEY_VAULT',
101789
+ GcpSecretManager = 'GCP_SECRET_MANAGER',
101790
+ None = 'NONE',
101791
+ Vault = 'VAULT'
101792
+ }
101793
+
100259
101794
  export type SecretRotatedPayload = {
100260
101795
  __typename?: 'SecretRotatedPayload';
100261
101796
  secret: Secret;
@@ -100421,6 +101956,32 @@ export type SecretVersionList = {
100421
101956
  total: Scalars['Int']['output'];
100422
101957
  };
100423
101958
 
101959
+ export type SecretsProviderConfig = {
101960
+ __typename?: 'SecretsProviderConfig';
101961
+ awsRegion?: Maybe<Scalars['String']['output']>;
101962
+ awsSecretsManagerPrefix?: Maybe<Scalars['String']['output']>;
101963
+ azureKeyVaultUri?: Maybe<Scalars['String']['output']>;
101964
+ createdAt: Scalars['DateTime']['output'];
101965
+ gcpProjectId?: Maybe<Scalars['String']['output']>;
101966
+ id: Scalars['ID']['output'];
101967
+ isEnabled: Scalars['Boolean']['output'];
101968
+ lastTestMessage?: Maybe<Scalars['String']['output']>;
101969
+ lastTestStatus?: Maybe<Scalars['String']['output']>;
101970
+ lastTestedAt?: Maybe<Scalars['DateTime']['output']>;
101971
+ provider: SecretProviderType;
101972
+ updatedAt: Scalars['DateTime']['output'];
101973
+ vaultAddress?: Maybe<Scalars['String']['output']>;
101974
+ vaultMountPath?: Maybe<Scalars['String']['output']>;
101975
+ workspaceId: Scalars['ID']['output'];
101976
+ };
101977
+
101978
+ export type SecretsProviderConfigResponse = MutationResponse & {
101979
+ __typename?: 'SecretsProviderConfigResponse';
101980
+ config?: Maybe<SecretsProviderConfig>;
101981
+ message: Scalars['String']['output'];
101982
+ success: Scalars['Boolean']['output'];
101983
+ };
101984
+
100424
101985
  export type SecurityComplianceFramework = {
100425
101986
  __typename?: 'SecurityComplianceFramework';
100426
101987
  createdAt: Scalars['DateTime']['output'];
@@ -102776,6 +104337,11 @@ export type StartTimerInput = {
102776
104337
  taskId?: InputMaybe<Scalars['ID']['input']>;
102777
104338
  };
102778
104339
 
104340
+ export enum StaticDataScope {
104341
+ Global = 'GLOBAL',
104342
+ Node = 'NODE'
104343
+ }
104344
+
102779
104345
  /** Status statistics */
102780
104346
  export type StatusStats = {
102781
104347
  __typename?: 'StatusStats';
@@ -104662,6 +106228,17 @@ export enum SyncProvider {
104662
106228
  OutlookCalendar = 'OUTLOOK_CALENDAR'
104663
106229
  }
104664
106230
 
106231
+ export type SyncWorkflowStaticDataInput = {
106232
+ /** Omit to leave the global blob untouched (no node in the run wrote to it). */
106233
+ global?: InputMaybe<Scalars['JSON']['input']>;
106234
+ /** Only the node-scoped blobs that were actually touched during the run — omitted nodes are left untouched. */
106235
+ nodes?: InputMaybe<Array<WorkerStaticDataNodeWriteInput>>;
106236
+ /** 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. */
106237
+ runId: Scalars['ID']['input'];
106238
+ workflowKey: Scalars['String']['input'];
106239
+ workspaceId: Scalars['ID']['input'];
106240
+ };
106241
+
104665
106242
  export type SystemConfig = {
104666
106243
  __typename?: 'SystemConfig';
104667
106244
  deploymentType: Scalars['String']['output'];
@@ -106774,6 +108351,12 @@ export type TerraceGarden = {
106774
108351
  waterSource?: Maybe<Scalars['String']['output']>;
106775
108352
  };
106776
108353
 
108354
+ export type TestLogStreamDestinationResponse = MutationResponse & {
108355
+ __typename?: 'TestLogStreamDestinationResponse';
108356
+ message: Scalars['String']['output'];
108357
+ success: Scalars['Boolean']['output'];
108358
+ };
108359
+
106777
108360
  export type TestParserInput = {
106778
108361
  /** 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. */
106779
108362
  dataSinkId?: InputMaybe<Scalars['ID']['input']>;
@@ -106792,6 +108375,12 @@ export type TestPipelineInput = {
106792
108375
  pipelineId: Scalars['ID']['input'];
106793
108376
  };
106794
108377
 
108378
+ export type TestSecretsProviderConnectionResponse = MutationResponse & {
108379
+ __typename?: 'TestSecretsProviderConnectionResponse';
108380
+ message: Scalars['String']['output'];
108381
+ success: Scalars['Boolean']['output'];
108382
+ };
108383
+
106795
108384
  export type TheAsset = {
106796
108385
  __typename?: 'TheAsset';
106797
108386
  /** Areal extent of the asset (field / lease / concession), in square kilometers. */
@@ -108561,6 +110150,65 @@ export type TokenVerificationResult = {
108561
110150
  valid: Scalars['Boolean']['output'];
108562
110151
  };
108563
110152
 
110153
+ export type ToolApprovalDecisionInput = {
110154
+ callId: Scalars['ID']['input'];
110155
+ decision: ToolApprovalDecisionValue;
110156
+ reason?: InputMaybe<Scalars['String']['input']>;
110157
+ };
110158
+
110159
+ /** The decision recorded for one `callId` inside a request's `toolCalls`. */
110160
+ export type ToolApprovalDecisionRecord = {
110161
+ __typename?: 'ToolApprovalDecisionRecord';
110162
+ callId: Scalars['ID']['output'];
110163
+ decision: ToolApprovalDecisionValue;
110164
+ reason?: Maybe<Scalars['String']['output']>;
110165
+ };
110166
+
110167
+ export enum ToolApprovalDecisionValue {
110168
+ Approved = 'APPROVED',
110169
+ Rejected = 'REJECTED'
110170
+ }
110171
+
110172
+ /** A batch of AI-agent tool calls parked for human approval. Federated entity identified by id. */
110173
+ export type ToolApprovalRequest = {
110174
+ __typename?: 'ToolApprovalRequest';
110175
+ createdAt: Scalars['DateTime']['output'];
110176
+ decidedAt?: Maybe<Scalars['DateTime']['output']>;
110177
+ decidedBy?: Maybe<Scalars['String']['output']>;
110178
+ decisions?: Maybe<Array<ToolApprovalDecisionRecord>>;
110179
+ id: Scalars['ID']['output'];
110180
+ nodeId: Scalars['String']['output'];
110181
+ requestedAt: Scalars['DateTime']['output'];
110182
+ runId: Scalars['ID']['output'];
110183
+ status: ToolApprovalStatus;
110184
+ timeoutAction: ToolApprovalTimeoutAction;
110185
+ timeoutAt?: Maybe<Scalars['DateTime']['output']>;
110186
+ toolCalls: Array<PendingToolCall>;
110187
+ updatedAt: Scalars['DateTime']['output'];
110188
+ workflowId: Scalars['String']['output'];
110189
+ workflowKey: Scalars['String']['output'];
110190
+ workspaceId: Scalars['String']['output'];
110191
+ };
110192
+
110193
+ export type ToolApprovalRequestPage = {
110194
+ __typename?: 'ToolApprovalRequestPage';
110195
+ items: Array<ToolApprovalRequest>;
110196
+ totalCount: Scalars['Int']['output'];
110197
+ };
110198
+
110199
+ export enum ToolApprovalStatus {
110200
+ Approved = 'APPROVED',
110201
+ Partial = 'PARTIAL',
110202
+ Pending = 'PENDING',
110203
+ Rejected = 'REJECTED',
110204
+ TimedOut = 'TIMED_OUT'
110205
+ }
110206
+
110207
+ export enum ToolApprovalTimeoutAction {
110208
+ AutoApprove = 'AUTO_APPROVE',
110209
+ AutoReject = 'AUTO_REJECT'
110210
+ }
110211
+
108564
110212
  export enum ToolRiskLevel {
108565
110213
  High = 'HIGH',
108566
110214
  Low = 'LOW',
@@ -108859,6 +110507,8 @@ export type TriggerScheduledCommentInput = {
108859
110507
  /** Input for triggering workflow */
108860
110508
  export type TriggerWorkflowInput = {
108861
110509
  context?: InputMaybe<Scalars['JSON']['input']>;
110510
+ /** 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. */
110511
+ mode?: InputMaybe<RunMode>;
108862
110512
  /** 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). */
108863
110513
  stopAtNodeId?: InputMaybe<Scalars['String']['input']>;
108864
110514
  triggerData?: InputMaybe<Scalars['JSON']['input']>;
@@ -110510,6 +112160,13 @@ export type UpdateDataSinkLinkInput = {
110510
112160
  priority?: InputMaybe<Scalars['Int']['input']>;
110511
112161
  };
110512
112162
 
112163
+ export type UpdateDataTableInput = {
112164
+ /** 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. */
112165
+ columns?: InputMaybe<Array<DataTableColumnInput>>;
112166
+ description?: InputMaybe<Scalars['String']['input']>;
112167
+ name?: InputMaybe<Scalars['String']['input']>;
112168
+ };
112169
+
110513
112170
  export type UpdateDeliveryJobInput = {
110514
112171
  cargoItems?: InputMaybe<Scalars['JSON']['input']>;
110515
112172
  context?: InputMaybe<ContextInput>;
@@ -110519,6 +112176,7 @@ export type UpdateDeliveryJobInput = {
110519
112176
  pickupAddress?: InputMaybe<Scalars['JSON']['input']>;
110520
112177
  pricing?: InputMaybe<Scalars['JSON']['input']>;
110521
112178
  priority?: InputMaybe<DeliveryPriority>;
112179
+ routeId?: InputMaybe<Scalars['ID']['input']>;
110522
112180
  scheduledDelivery?: InputMaybe<Scalars['DateTime']['input']>;
110523
112181
  specialInstructions?: InputMaybe<Scalars['String']['input']>;
110524
112182
  status?: InputMaybe<DeliveryJobStatus>;
@@ -110549,6 +112207,7 @@ export type UpdateDriverInput = {
110549
112207
  status?: InputMaybe<DriverStatus>;
110550
112208
  userId?: InputMaybe<Scalars['String']['input']>;
110551
112209
  vehicleId?: InputMaybe<Scalars['String']['input']>;
112210
+ vehicleIds?: InputMaybe<Array<Scalars['ID']['input']>>;
110552
112211
  };
110553
112212
 
110554
112213
  export type UpdateEmailTimeEntryInput = {
@@ -111987,6 +113646,16 @@ export type UpdateLocationEntryInput = {
111987
113646
  startTime?: InputMaybe<Scalars['DateTime']['input']>;
111988
113647
  };
111989
113648
 
113649
+ export type UpdateLogStreamDestinationInput = {
113650
+ config?: InputMaybe<Scalars['JSON']['input']>;
113651
+ endpoint?: InputMaybe<Scalars['String']['input']>;
113652
+ eventFilters?: InputMaybe<Array<LogStreamEventType>>;
113653
+ isEnabled?: InputMaybe<Scalars['Boolean']['input']>;
113654
+ name?: InputMaybe<Scalars['String']['input']>;
113655
+ /** WEBHOOK only. Pass null-omit to leave unchanged; pass an empty string to clear a previously configured secret. */
113656
+ secret?: InputMaybe<Scalars['String']['input']>;
113657
+ };
113658
+
111990
113659
  export type UpdateMcpConnectionInput = {
111991
113660
  config?: InputMaybe<Scalars['JSON']['input']>;
111992
113661
  credentials?: InputMaybe<Scalars['JSON']['input']>;
@@ -113345,6 +115014,14 @@ export type UpdateWorkflowInput = {
113345
115014
  status?: InputMaybe<FluidGridsWorkflowStatus>;
113346
115015
  };
113347
115016
 
115017
+ export type UpdateWorkflowVariableInput = {
115018
+ description?: InputMaybe<Scalars['String']['input']>;
115019
+ externalProvider?: InputMaybe<SecretProviderType>;
115020
+ externalRef?: InputMaybe<Scalars['String']['input']>;
115021
+ isSecret?: InputMaybe<Scalars['Boolean']['input']>;
115022
+ value?: InputMaybe<Scalars['String']['input']>;
115023
+ };
115024
+
113348
115025
  export type UpdateWorkspaceDefaultsInput = {
113349
115026
  agentAutoReconnect?: InputMaybe<Scalars['Boolean']['input']>;
113350
115027
  agentHeartbeatInterval?: InputMaybe<Scalars['Int']['input']>;
@@ -114001,6 +115678,11 @@ export enum ValidationMethod {
114001
115678
  Signature = 'SIGNATURE'
114002
115679
  }
114003
115680
 
115681
+ export enum VariableScope {
115682
+ Project = 'PROJECT',
115683
+ Workspace = 'WORKSPACE'
115684
+ }
115685
+
114004
115686
  export type Vault = {
114005
115687
  __typename?: 'Vault';
114006
115688
  /** Contextual IDs for filtering and scoping (workspaceId, userId, projectId, etc.) */
@@ -114515,6 +116197,7 @@ export type VaultUpdatedPayload = {
114515
116197
  };
114516
116198
 
114517
116199
  export type VehicleFilterInput = {
116200
+ driverId?: InputMaybe<Scalars['ID']['input']>;
114518
116201
  search?: InputMaybe<Scalars['String']['input']>;
114519
116202
  status?: InputMaybe<VehicleStatus>;
114520
116203
  type?: InputMaybe<VehicleType>;
@@ -117674,6 +119357,104 @@ export type WorkerCreateNodeStateInput = {
117674
119357
  status: NodeStatus;
117675
119358
  };
117676
119359
 
119360
+ /** Input for recording a pending tool-approval request. */
119361
+ export type WorkerCreateToolApprovalRequestInput = {
119362
+ nodeId: Scalars['String']['input'];
119363
+ nodeStateId: Scalars['ID']['input'];
119364
+ runId: Scalars['ID']['input'];
119365
+ timeoutAction?: InputMaybe<ToolApprovalTimeoutAction>;
119366
+ /** Minutes from now before the timeout sweep auto-resolves this request. Omitted/0 means no timeout (it waits indefinitely for a human). */
119367
+ timeoutMinutes?: InputMaybe<Scalars['Int']['input']>;
119368
+ /** JSON array of `{ callId, name, argsJson }` — the calls awaiting a decision. */
119369
+ toolCalls: Scalars['JSON']['input'];
119370
+ workflowId: Scalars['String']['input'];
119371
+ workflowKey: Scalars['String']['input'];
119372
+ workspaceId: Scalars['String']['input'];
119373
+ };
119374
+
119375
+ export type WorkerDataTableDeleteResponse = {
119376
+ __typename?: 'WorkerDataTableDeleteResponse';
119377
+ affected: Scalars['Int']['output'];
119378
+ error?: Maybe<Scalars['String']['output']>;
119379
+ success: Scalars['Boolean']['output'];
119380
+ };
119381
+
119382
+ export type WorkerDataTableDeleteRowsInput = {
119383
+ filters?: InputMaybe<Array<DataTableRowFilterInput>>;
119384
+ rowIds?: InputMaybe<Array<Scalars['ID']['input']>>;
119385
+ tableId?: InputMaybe<Scalars['ID']['input']>;
119386
+ tableName?: InputMaybe<Scalars['String']['input']>;
119387
+ workspaceId: Scalars['ID']['input'];
119388
+ };
119389
+
119390
+ export type WorkerDataTableInsertRowInput = {
119391
+ data: Scalars['JSON']['input'];
119392
+ tableId?: InputMaybe<Scalars['ID']['input']>;
119393
+ tableName?: InputMaybe<Scalars['String']['input']>;
119394
+ workspaceId: Scalars['ID']['input'];
119395
+ };
119396
+
119397
+ export type WorkerDataTableRowResponse = {
119398
+ __typename?: 'WorkerDataTableRowResponse';
119399
+ error?: Maybe<Scalars['String']['output']>;
119400
+ row?: Maybe<Scalars['JSON']['output']>;
119401
+ success: Scalars['Boolean']['output'];
119402
+ };
119403
+
119404
+ export type WorkerDataTableRowsQueryInput = {
119405
+ filters?: InputMaybe<Array<DataTableRowFilterInput>>;
119406
+ limit?: InputMaybe<Scalars['Int']['input']>;
119407
+ tableId?: InputMaybe<Scalars['ID']['input']>;
119408
+ tableName?: InputMaybe<Scalars['String']['input']>;
119409
+ workspaceId: Scalars['ID']['input'];
119410
+ };
119411
+
119412
+ /** 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. */
119413
+ export type WorkerDataTableRowsResponse = {
119414
+ __typename?: 'WorkerDataTableRowsResponse';
119415
+ error?: Maybe<Scalars['String']['output']>;
119416
+ rows: Scalars['JSON']['output'];
119417
+ success: Scalars['Boolean']['output'];
119418
+ total: Scalars['Int']['output'];
119419
+ };
119420
+
119421
+ export type WorkerDataTableUpdateRowInput = {
119422
+ data: Scalars['JSON']['input'];
119423
+ rowId: Scalars['ID']['input'];
119424
+ tableId?: InputMaybe<Scalars['ID']['input']>;
119425
+ tableName?: InputMaybe<Scalars['String']['input']>;
119426
+ workspaceId: Scalars['ID']['input'];
119427
+ };
119428
+
119429
+ export type WorkerDataTableUpsertRowInput = {
119430
+ data: Scalars['JSON']['input'];
119431
+ matchColumns: Array<Scalars['String']['input']>;
119432
+ tableId?: InputMaybe<Scalars['ID']['input']>;
119433
+ tableName?: InputMaybe<Scalars['String']['input']>;
119434
+ workspaceId: Scalars['ID']['input'];
119435
+ };
119436
+
119437
+ export type WorkerDedupeCheckAndMarkInput = {
119438
+ /** SHA-256 hex digests of each item's compare-key (never the raw item value — see the `WorkflowDedupeSeen` model doc comment). */
119439
+ hashes: Array<Scalars['String']['input']>;
119440
+ /** Cap on distinct values remembered per node — oldest entries are pruned once exceeded. Defaults to 10000. */
119441
+ maxTracked?: InputMaybe<Scalars['Int']['input']>;
119442
+ /** The Dedupe node's id in the DAG — scopes the "seen" set to this one node instance, matching PollState's (workflowKey, triggerNodeId) scoping. */
119443
+ nodeId: Scalars['String']['input'];
119444
+ /** Only treat a previously-seen hash as "still seen" if it was recorded within the last N seconds. Omitted = remember indefinitely (until `maxTracked` pruning). */
119445
+ windowSeconds?: InputMaybe<Scalars['Int']['input']>;
119446
+ workflowKey: Scalars['String']['input'];
119447
+ workspaceId: Scalars['ID']['input'];
119448
+ };
119449
+
119450
+ export type WorkerDedupeCheckAndMarkResponse = {
119451
+ __typename?: 'WorkerDedupeCheckAndMarkResponse';
119452
+ error?: Maybe<Scalars['String']['output']>;
119453
+ /** 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. */
119454
+ newHashes: Array<Scalars['String']['output']>;
119455
+ success: Scalars['Boolean']['output'];
119456
+ };
119457
+
117677
119458
  /** Definition data for worker execution */
117678
119459
  export type WorkerDefinitionData = {
117679
119460
  __typename?: 'WorkerDefinitionData';
@@ -117734,6 +119515,8 @@ export type WorkerNodeState = {
117734
119515
  runId: Scalars['String']['output'];
117735
119516
  startTime?: Maybe<Scalars['DateTime']['output']>;
117736
119517
  status: NodeStatus;
119518
+ /** 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. */
119519
+ usedPinnedData?: Maybe<Scalars['Boolean']['output']>;
117737
119520
  };
117738
119521
 
117739
119522
  /** Response for node state operations */
@@ -117765,6 +119548,8 @@ export type WorkerRunData = {
117765
119548
  __typename?: 'WorkerRunData';
117766
119549
  context?: Maybe<Scalars['JSON']['output']>;
117767
119550
  id: Scalars['ID']['output'];
119551
+ /** 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. */
119552
+ mode: RunMode;
117768
119553
  parentRunId?: Maybe<Scalars['String']['output']>;
117769
119554
  startedAt?: Maybe<Scalars['DateTime']['output']>;
117770
119555
  status: RunStatus;
@@ -117799,6 +119584,37 @@ export type WorkerRunStatusResponse = {
117799
119584
  success: Scalars['Boolean']['output'];
117800
119585
  };
117801
119586
 
119587
+ export type WorkerStaticDataNodeWriteInput = {
119588
+ data: Scalars['JSON']['input'];
119589
+ nodeId: Scalars['String']['input'];
119590
+ };
119591
+
119592
+ /** WORKER-INTERNAL: current persisted static data for a workflow, hydrated by fluidgrids-workers at the start of every node execution that might read it. */
119593
+ export type WorkerStaticDataResponse = {
119594
+ __typename?: 'WorkerStaticDataResponse';
119595
+ error?: Maybe<Scalars['String']['output']>;
119596
+ /** Global-scope blob (`{}` when never written). */
119597
+ global: Scalars['JSON']['output'];
119598
+ /** Node-scope blobs, keyed by nodeId (`{}` when a given node has never written one). */
119599
+ nodes: Scalars['JSON']['output'];
119600
+ success: Scalars['Boolean']['output'];
119601
+ };
119602
+
119603
+ export type WorkerStaticDataSyncResponse = {
119604
+ __typename?: 'WorkerStaticDataSyncResponse';
119605
+ error?: Maybe<Scalars['String']['output']>;
119606
+ /** 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. */
119607
+ persisted: Scalars['Boolean']['output'];
119608
+ success: Scalars['Boolean']['output'];
119609
+ };
119610
+
119611
+ export type WorkerToolApprovalRequestResponse = {
119612
+ __typename?: 'WorkerToolApprovalRequestResponse';
119613
+ error?: Maybe<Scalars['String']['output']>;
119614
+ request?: Maybe<ToolApprovalRequest>;
119615
+ success: Scalars['Boolean']['output'];
119616
+ };
119617
+
117802
119618
  /** Input for updating node state */
117803
119619
  export type WorkerUpdateNodeStateInput = {
117804
119620
  attemptCount?: InputMaybe<Scalars['Int']['input']>;
@@ -117811,6 +119627,8 @@ export type WorkerUpdateNodeStateInput = {
117811
119627
  output?: InputMaybe<Scalars['JSON']['input']>;
117812
119628
  startTime?: InputMaybe<Scalars['DateTime']['input']>;
117813
119629
  status: NodeStatus;
119630
+ /** Set true when the executor used pinned data instead of actually calling the node (BOFF-7511). */
119631
+ usedPinnedData?: InputMaybe<Scalars['Boolean']['input']>;
117814
119632
  };
117815
119633
 
117816
119634
  /** Input for updating run status */
@@ -117823,6 +119641,17 @@ export type WorkerUpdateRunStatusInput = {
117823
119641
  status: RunStatus;
117824
119642
  };
117825
119643
 
119644
+ /** 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. */
119645
+ export type WorkerVariablesResponse = {
119646
+ __typename?: 'WorkerVariablesResponse';
119647
+ error?: Maybe<Scalars['String']['output']>;
119648
+ /** 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. */
119649
+ secretKeys: Array<Scalars['String']['output']>;
119650
+ success: Scalars['Boolean']['output'];
119651
+ /** Flattened `{ key: value }` map, ready to use as `$vars`. */
119652
+ vars: Scalars['JSON']['output'];
119653
+ };
119654
+
117826
119655
  /** WorkflowDefinition: Reusable workflow template with versioning Federated entity identified by id */
117827
119656
  export type WorkflowDefinition = {
117828
119657
  __typename?: 'WorkflowDefinition';
@@ -117839,6 +119668,10 @@ export type WorkflowDefinition = {
117839
119668
  /** Computed field: true if status is ACTIVE */
117840
119669
  isActive: Scalars['Boolean']['output'];
117841
119670
  name: Scalars['String']['output'];
119671
+ /** Stable references for the nodes used by this workflow version */
119672
+ nodeReferences: Array<WorkflowNodeReference>;
119673
+ /** 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`. */
119674
+ pinnedNodeData: Scalars['JSON']['output'];
117842
119675
  projectId?: Maybe<Scalars['String']['output']>;
117843
119676
  runs: Array<WorkflowRun>;
117844
119677
  status: WorkflowStatus;
@@ -117871,6 +119704,12 @@ export type WorkflowDefinitionListResponse = {
117871
119704
  total: Scalars['Int']['output'];
117872
119705
  };
117873
119706
 
119707
+ export enum WorkflowDiffKind {
119708
+ Added = 'ADDED',
119709
+ Changed = 'CHANGED',
119710
+ Removed = 'REMOVED'
119711
+ }
119712
+
117874
119713
  /** WorkflowExecutionLog: Detailed execution logs for debugging Note: Consider using tenantmodule-activity for production */
117875
119714
  export type WorkflowExecutionLog = {
117876
119715
  __typename?: 'WorkflowExecutionLog';
@@ -117897,6 +119736,34 @@ export type WorkflowExecutionMetrics = {
117897
119736
  totalRuns: Scalars['Int']['output'];
117898
119737
  };
117899
119738
 
119739
+ /** Portable workflow document returned by exportWorkflow. */
119740
+ export type WorkflowExport = {
119741
+ __typename?: 'WorkflowExport';
119742
+ category?: Maybe<Scalars['String']['output']>;
119743
+ context?: Maybe<Scalars['JSON']['output']>;
119744
+ definitionJson: Scalars['JSON']['output'];
119745
+ description?: Maybe<Scalars['String']['output']>;
119746
+ exportedAt: Scalars['DateTime']['output'];
119747
+ format: Scalars['String']['output'];
119748
+ icon?: Maybe<Scalars['String']['output']>;
119749
+ name: Scalars['String']['output'];
119750
+ nodeReferences: Array<WorkflowNodeReference>;
119751
+ schemaVersion: Scalars['Int']['output'];
119752
+ tags: Array<Scalars['String']['output']>;
119753
+ tagsV2: Scalars['JSON']['output'];
119754
+ version: Scalars['String']['output'];
119755
+ workflowKey: Scalars['String']['output'];
119756
+ };
119757
+
119758
+ /** Validation result returned for a workflow import. */
119759
+ export type WorkflowImportValidation = {
119760
+ __typename?: 'WorkflowImportValidation';
119761
+ errors: Array<Scalars['String']['output']>;
119762
+ missingNodes: Array<WorkflowNodeReference>;
119763
+ valid: Scalars['Boolean']['output'];
119764
+ warnings: Array<Scalars['String']['output']>;
119765
+ };
119766
+
117900
119767
  export type WorkflowInstanceInfo = {
117901
119768
  __typename?: 'WorkflowInstanceInfo';
117902
119769
  createdAt: Scalars['DateTime']['output'];
@@ -117912,6 +119779,14 @@ export type WorkflowInstanceInfo = {
117912
119779
  workflowVersion: Scalars['String']['output'];
117913
119780
  };
117914
119781
 
119782
+ /** A node reference included in a portable workflow export. */
119783
+ export type WorkflowNodeReference = {
119784
+ __typename?: 'WorkflowNodeReference';
119785
+ nodeId: Scalars['String']['output'];
119786
+ nodeType: Scalars['String']['output'];
119787
+ nodeVersion?: Maybe<Scalars['String']['output']>;
119788
+ };
119789
+
117915
119790
  /** Pagination input for listing operations */
117916
119791
  export type WorkflowPaginationInput = {
117917
119792
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -117933,12 +119808,16 @@ export type WorkflowRun = {
117933
119808
  failedNodes?: Maybe<Scalars['Int']['output']>;
117934
119809
  id: Scalars['ID']['output'];
117935
119810
  isSubWorkflowRun: Scalars['Boolean']['output'];
119811
+ /** Manual/debug (TEST) vs real (PRODUCTION) run — BOFF-7511. Defaults to PRODUCTION. Only a TEST run may use pinned node data. */
119812
+ mode: RunMode;
117936
119813
  nodeStates: Array<NodeState>;
117937
119814
  parentRun?: Maybe<WorkflowRun>;
117938
119815
  parentRunId?: Maybe<Scalars['String']['output']>;
117939
119816
  progress: Scalars['Float']['output'];
117940
119817
  rootRunId?: Maybe<Scalars['String']['output']>;
117941
119818
  skippedNodes?: Maybe<Scalars['Int']['output']>;
119819
+ /** Debug-in-editor / run-from-node (BOFF-7511): the run this one reused upstream node outputs from, if it was started via `runFromNode`. */
119820
+ sourceRunId?: Maybe<Scalars['String']['output']>;
117942
119821
  startedAt?: Maybe<Scalars['DateTime']['output']>;
117943
119822
  status: RunStatus;
117944
119823
  subworkflowDepth: Scalars['Int']['output'];
@@ -118006,6 +119885,21 @@ export type WorkflowSearchResponse = {
118006
119885
  totalResults: Scalars['Int']['output'];
118007
119886
  };
118008
119887
 
119888
+ export type WorkflowStaticDataRecord = {
119889
+ __typename?: 'WorkflowStaticDataRecord';
119890
+ createdAt: Scalars['DateTime']['output'];
119891
+ data: Scalars['JSON']['output'];
119892
+ id: Scalars['ID']['output'];
119893
+ /** Empty string for GLOBAL-scoped records. */
119894
+ nodeId: Scalars['String']['output'];
119895
+ scope: StaticDataScope;
119896
+ sizeBytes: Scalars['Int']['output'];
119897
+ updatedAt: Scalars['DateTime']['output'];
119898
+ version: Scalars['Int']['output'];
119899
+ workflowKey: Scalars['String']['output'];
119900
+ workspaceId: Scalars['ID']['output'];
119901
+ };
119902
+
118009
119903
  export enum WorkflowStatus {
118010
119904
  Active = 'ACTIVE',
118011
119905
  Archived = 'ARCHIVED',
@@ -118036,6 +119930,57 @@ export type WorkflowUpdateScheduledJobInput = {
118036
119930
  schedule?: InputMaybe<Scalars['String']['input']>;
118037
119931
  };
118038
119932
 
119933
+ export type WorkflowVariable = {
119934
+ __typename?: 'WorkflowVariable';
119935
+ createdAt: Scalars['DateTime']['output'];
119936
+ createdBy: Scalars['String']['output'];
119937
+ description?: Maybe<Scalars['String']['output']>;
119938
+ externalProvider: SecretProviderType;
119939
+ externalRef?: Maybe<Scalars['String']['output']>;
119940
+ id: Scalars['ID']['output'];
119941
+ isSecret: Scalars['Boolean']['output'];
119942
+ key: Scalars['String']['output'];
119943
+ projectId?: Maybe<Scalars['ID']['output']>;
119944
+ scope: VariableScope;
119945
+ updatedAt: Scalars['DateTime']['output'];
119946
+ updatedBy?: Maybe<Scalars['String']['output']>;
119947
+ /** 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. */
119948
+ value?: Maybe<Scalars['String']['output']>;
119949
+ workspaceId: Scalars['ID']['output'];
119950
+ };
119951
+
119952
+ export type WorkflowVariableResponse = MutationResponse & {
119953
+ __typename?: 'WorkflowVariableResponse';
119954
+ message: Scalars['String']['output'];
119955
+ success: Scalars['Boolean']['output'];
119956
+ variable?: Maybe<WorkflowVariable>;
119957
+ };
119958
+
119959
+ export type WorkflowVariablesListResponse = {
119960
+ __typename?: 'WorkflowVariablesListResponse';
119961
+ total: Scalars['Int']['output'];
119962
+ variables: Array<WorkflowVariable>;
119963
+ };
119964
+
119965
+ /** Deterministic JSON diff between two versions of one workflow. */
119966
+ export type WorkflowVersionDiff = {
119967
+ __typename?: 'WorkflowVersionDiff';
119968
+ entries: Array<WorkflowVersionDiffEntry>;
119969
+ fromVersion: Scalars['String']['output'];
119970
+ toVersion: Scalars['String']['output'];
119971
+ truncated: Scalars['Boolean']['output'];
119972
+ workflowKey: Scalars['String']['output'];
119973
+ };
119974
+
119975
+ /** One structural change between two workflow versions. */
119976
+ export type WorkflowVersionDiffEntry = {
119977
+ __typename?: 'WorkflowVersionDiffEntry';
119978
+ after?: Maybe<Scalars['JSON']['output']>;
119979
+ before?: Maybe<Scalars['JSON']['output']>;
119980
+ kind: WorkflowDiffKind;
119981
+ path: Scalars['String']['output'];
119982
+ };
119983
+
118039
119984
  /** Workspace type (owned by workspace service) */
118040
119985
  export type Workspace = {
118041
119986
  __typename?: 'Workspace';