@burdenoff/microfe-technospam 2026.1030.4 → 2026.1030.5

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.
Files changed (67) hide show
  1. package/dist/generated/wspace-types.d.ts +1501 -11
  2. package/dist/generated/wspace-types.d.ts.map +1 -1
  3. package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +1 -1
  4. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +1 -1
  5. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +1 -1
  6. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +1 -1
  7. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +1 -1
  8. package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +1 -1
  9. package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +1 -1
  10. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +1 -1
  11. package/dist/node_modules/sonner/dist/index.js.map +1 -1
  12. package/dist/stories/fixtures/technospamFixtures.d.ts +1 -0
  13. package/dist/stories/fixtures/technospamFixtures.d.ts.map +1 -1
  14. package/dist/stories/journeys/Courses.stories.d.ts +5 -2
  15. package/dist/stories/journeys/Courses.stories.d.ts.map +1 -1
  16. package/dist/stories/journeys/Dashboard.stories.d.ts +2 -2
  17. package/dist/stories/journeys/Dashboard.stories.d.ts.map +1 -1
  18. package/dist/technospam/TechnoSpamRoutes.d.ts.map +1 -1
  19. package/dist/technospam/TechnoSpamRoutes.js +31 -27
  20. package/dist/technospam/TechnoSpamRoutes.js.map +1 -1
  21. package/dist/technospam/api/technospamApi.d.ts +101 -5
  22. package/dist/technospam/api/technospamApi.d.ts.map +1 -1
  23. package/dist/technospam/api/technospamApi.js +278 -146
  24. package/dist/technospam/api/technospamApi.js.map +1 -1
  25. package/dist/technospam/components/lesson/InteractiveWorkspace.d.ts +15 -0
  26. package/dist/technospam/components/lesson/InteractiveWorkspace.d.ts.map +1 -0
  27. package/dist/technospam/components/lesson/InteractiveWorkspace.js +195 -0
  28. package/dist/technospam/components/lesson/InteractiveWorkspace.js.map +1 -0
  29. package/dist/technospam/components/lesson/LessonKindFields.d.ts +15 -0
  30. package/dist/technospam/components/lesson/LessonKindFields.d.ts.map +1 -0
  31. package/dist/technospam/components/lesson/LessonKindFields.js +150 -0
  32. package/dist/technospam/components/lesson/LessonKindFields.js.map +1 -0
  33. package/dist/technospam/components/lesson/QuizLesson.d.ts +14 -0
  34. package/dist/technospam/components/lesson/QuizLesson.d.ts.map +1 -0
  35. package/dist/technospam/components/lesson/QuizLesson.js +105 -0
  36. package/dist/technospam/components/lesson/QuizLesson.js.map +1 -0
  37. package/dist/technospam/components/lesson/lessonAuthoring.d.ts +47 -0
  38. package/dist/technospam/components/lesson/lessonAuthoring.d.ts.map +1 -0
  39. package/dist/technospam/components/lesson/lessonAuthoring.js +80 -0
  40. package/dist/technospam/components/lesson/lessonAuthoring.js.map +1 -0
  41. package/dist/technospam/hooks/useTechnoSpamAnalytics.d.ts +1 -1
  42. package/dist/technospam/hooks/useTechnoSpamAnalytics.d.ts.map +1 -1
  43. package/dist/technospam/hooks/useTechnoSpamAnalytics.js.map +1 -1
  44. package/dist/technospam/pages/AdminAdminDashboardPagePage.d.ts.map +1 -1
  45. package/dist/technospam/pages/AdminAdminDashboardPagePage.js +230 -207
  46. package/dist/technospam/pages/AdminAdminDashboardPagePage.js.map +1 -1
  47. package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -1
  48. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +130 -132
  49. package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
  50. package/dist/technospam/pages/CoursesLessonPlayerPagePage.d.ts +9 -0
  51. package/dist/technospam/pages/CoursesLessonPlayerPagePage.d.ts.map +1 -0
  52. package/dist/technospam/pages/CoursesLessonPlayerPagePage.js +291 -0
  53. package/dist/technospam/pages/CoursesLessonPlayerPagePage.js.map +1 -0
  54. package/dist/technospam/pages/CoursesMyLearningPagePage.d.ts.map +1 -1
  55. package/dist/technospam/pages/CoursesMyLearningPagePage.js +80 -78
  56. package/dist/technospam/pages/CoursesMyLearningPagePage.js.map +1 -1
  57. package/dist/technospam/pages/DashboardDashboardPagePage.d.ts.map +1 -1
  58. package/dist/technospam/pages/DashboardDashboardPagePage.js +136 -133
  59. package/dist/technospam/pages/DashboardDashboardPagePage.js.map +1 -1
  60. package/dist/technospam/utils/lessonPath.d.ts +15 -0
  61. package/dist/technospam/utils/lessonPath.d.ts.map +1 -0
  62. package/dist/technospam/utils/lessonPath.js +15 -0
  63. package/dist/technospam/utils/lessonPath.js.map +1 -0
  64. package/dist/technospam/utils/pageContext.d.ts.map +1 -1
  65. package/dist/technospam/utils/pageContext.js +10 -0
  66. package/dist/technospam/utils/pageContext.js.map +1 -1
  67. package/package.json +1 -1
@@ -12089,6 +12089,18 @@ export type CodeBundleInput = {
12089
12089
  sdkVersion: Scalars['String']['input'];
12090
12090
  uploadId: Scalars['ID']['input'];
12091
12091
  };
12092
+ /**
12093
+ * What a workflow_code_replacements job is (spec code-first 06 §4, 11 §2.27): a hotfix of a version's
12094
+ * bundle, the check that activates a version while AUTO_UPGRADE runs are open, the check that moves
12095
+ * one run to another bundle for a versioning override, or the check of a rollout's raised percent.
12096
+ */
12097
+ export declare enum CodeReplaceKind {
12098
+ Activation = "ACTIVATION",
12099
+ Hotfix = "HOTFIX",
12100
+ /** Raising a rollout's percent: in-flight AUTO_UPGRADE runs of the new buckets replay against its target first. */
12101
+ Rollout = "ROLLOUT",
12102
+ RunOverride = "RUN_OVERRIDE"
12103
+ }
12092
12104
  /** The state of a hotfix that replaces a version's code bundle. */
12093
12105
  export declare enum CodeReplaceStatus {
12094
12106
  Pending = "PENDING",
@@ -23409,6 +23421,33 @@ export type DraftMessage = {
23409
23421
  updatedAt: Scalars['DateTime']['output'];
23410
23422
  userId: Scalars['ID']['output'];
23411
23423
  };
23424
+ /** Whether a version still serves runs (spec code-first 11 §2.27). */
23425
+ export type DrainageInfo = {
23426
+ __typename?: 'DrainageInfo';
23427
+ /** When the newest run of this version was created. */
23428
+ lastRunStartedAt?: Maybe<Scalars['DateTime']['output']>;
23429
+ /**
23430
+ * Open durable-function runs that this version's bundle serves: PINNED ones, and AUTO_UPGRADE ones
23431
+ * that have not moved off it (including those that cannot: the ACTIVE version does not export their
23432
+ * function, or they upgraded through a rollout that was lowered or removed). Every run of the
23433
+ * workspace is counted.
23434
+ */
23435
+ openRuns: Scalars['Int']['output'];
23436
+ /** The version is the target of a rollout with a positive percent. */
23437
+ rolloutTarget: Scalars['Boolean']['output'];
23438
+ status: DrainageStatus;
23439
+ version: Scalars['String']['output'];
23440
+ workflowKey: Scalars['String']['output'];
23441
+ };
23442
+ /** Whether a version still serves runs (workflowVersionDrainage, spec code-first 11 §2.27). */
23443
+ export declare enum DrainageStatus {
23444
+ /** The ACTIVE version, or the target of a rollout: it takes new starts. */
23445
+ Active = "ACTIVE",
23446
+ /** No open PINNED run uses its bundle: a worker serving only its build may retire. */
23447
+ Drained = "DRAINED",
23448
+ /** Takes no new starts but open PINNED runs still use its bundle. */
23449
+ Draining = "DRAINING"
23450
+ }
23412
23451
  export type DriverFilterInput = {
23413
23452
  licenseClass?: InputMaybe<Scalars['String']['input']>;
23414
23453
  search?: InputMaybe<Scalars['String']['input']>;
@@ -36656,6 +36695,8 @@ export type HeadshotmarketingUpdateAutomationWorkflowInput = {
36656
36695
  triggerType?: InputMaybe<HeadshotmarketingAutomationTriggerType>;
36657
36696
  };
36658
36697
  export type HeadshotmarketingUpdateContentItemInput = {
36698
+ /** AI tool execution whose output was inserted into this item while editing (for example the editor's AI Assist). The service validates it against the workspace's execution ledger and marks the item as AI-assisted; an item that already carries AI provenance keeps its original record. */
36699
+ aiToolExecutionId?: InputMaybe<Scalars['ID']['input']>;
36659
36700
  body?: InputMaybe<Scalars['String']['input']>;
36660
36701
  campaignId?: InputMaybe<Scalars['ID']['input']>;
36661
36702
  metadata?: InputMaybe<Scalars['JSON']['input']>;
@@ -46690,6 +46731,8 @@ export type ListWorkflowDefinitionsInput = {
46690
46731
  };
46691
46732
  /** Input for listing runs */
46692
46733
  export type ListWorkflowRunsInput = {
46734
+ /** Only runs with this workflow id (parity: needs fluidgrids.durable-parity). */
46735
+ businessId?: InputMaybe<Scalars['String']['input']>;
46693
46736
  /** Filter runs whose duration (seconds) is at most this value (BOFF-7519). Runs still in progress never match. */
46694
46737
  durationMaxSeconds?: InputMaybe<Scalars['Float']['input']>;
46695
46738
  /** Filter runs whose duration (seconds) is at least this value (BOFF-7519). Runs still in progress never match. */
@@ -46700,10 +46743,16 @@ export type ListWorkflowRunsInput = {
46700
46743
  errorType?: InputMaybe<ErrorType>;
46701
46744
  /** Only canvas runs (GRAPH) or only durable-function runs (DURABLE_FN) (BOFF-9905). */
46702
46745
  executionKind?: InputMaybe<ExecutionKind>;
46746
+ /** Only the runs of the continue-as-new chain that started with this run (parity). */
46747
+ firstRunId?: InputMaybe<Scalars['ID']['input']>;
46703
46748
  limit?: InputMaybe<Scalars['Int']['input']>;
46749
+ /** Only runs whose memo contains this object (JSON containment, not indexed; parity). */
46750
+ memo?: InputMaybe<Scalars['JSON']['input']>;
46704
46751
  /** Filter to runs that executed — in any status — a node with this id (BOFF-7519). */
46705
46752
  nodeId?: InputMaybe<Scalars['String']['input']>;
46706
46753
  offset?: InputMaybe<Scalars['Int']['input']>;
46754
+ /** Only the runs under this root run of a call tree (parity). */
46755
+ rootRunId?: InputMaybe<Scalars['ID']['input']>;
46707
46756
  /**
46708
46757
  * Free-text filter for the Runs screen's search box. Case-insensitive; matches
46709
46758
  * a run whose id starts with the term, or whose workflow key or workflow name
@@ -49966,6 +50015,29 @@ export declare enum MtwContainerSuitability {
49966
50015
  Rejected = "REJECTED",
49967
50016
  ReviewRequired = "REVIEW_REQUIRED"
49968
50017
  }
50018
+ export type MtwCreateServiceOfferingInput = {
50019
+ availability?: InputMaybe<MtwServiceAvailability>;
50020
+ category: MtwServiceOfferingCategory;
50021
+ currency?: InputMaybe<Scalars['String']['input']>;
50022
+ description?: InputMaybe<Scalars['String']['input']>;
50023
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
50024
+ name: Scalars['String']['input'];
50025
+ price?: InputMaybe<Scalars['Float']['input']>;
50026
+ pricingUnit?: InputMaybe<Scalars['String']['input']>;
50027
+ providerId: Scalars['ID']['input'];
50028
+ transitDays?: InputMaybe<Scalars['Int']['input']>;
50029
+ };
50030
+ export type MtwCreateServiceProviderInput = {
50031
+ contactInfo?: InputMaybe<Scalars['JSON']['input']>;
50032
+ description?: InputMaybe<Scalars['String']['input']>;
50033
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
50034
+ isVerified?: InputMaybe<Scalars['Boolean']['input']>;
50035
+ name: Scalars['String']['input'];
50036
+ rating?: InputMaybe<Scalars['Float']['input']>;
50037
+ serviceAreas?: InputMaybe<Array<Scalars['String']['input']>>;
50038
+ services?: InputMaybe<Array<Scalars['String']['input']>>;
50039
+ type: MtwServiceProviderType;
50040
+ };
49969
50041
  export type MtwCustomer = {
49970
50042
  __typename?: 'MtwCustomer';
49971
50043
  address?: Maybe<Scalars['JSON']['output']>;
@@ -51349,6 +51421,15 @@ export type MtwInventoryTransferResult = {
51349
51421
  destination: MtwInventoryItem;
51350
51422
  source: MtwInventoryItem;
51351
51423
  };
51424
+ export type MtwMarketplaceStats = {
51425
+ __typename?: 'MtwMarketplaceStats';
51426
+ activeProviders: Scalars['Int']['output'];
51427
+ /** Average provider rating, or null when no provider has been rated. */
51428
+ avgRating?: Maybe<Scalars['Float']['output']>;
51429
+ offerings: Scalars['Int']['output'];
51430
+ providers: Scalars['Int']['output'];
51431
+ verifiedProviders: Scalars['Int']['output'];
51432
+ };
51352
51433
  export type MtwMoveReviewSource = {
51353
51434
  __typename?: 'MtwMoveReviewSource';
51354
51435
  reference: Scalars['String']['output'];
@@ -52105,6 +52186,67 @@ export type MtwRevenueMetrics = {
52105
52186
  deliveredRevenue: Scalars['Float']['output'];
52106
52187
  totalRevenue: Scalars['Float']['output'];
52107
52188
  };
52189
+ /**
52190
+ * Deterministic delivery-risk forecast for a shipment, computed from its legs,
52191
+ * routes, tracking events, assigned vehicle and the carrier's recent history.
52192
+ */
52193
+ export type MtwRiskForecast = {
52194
+ __typename?: 'MtwRiskForecast';
52195
+ /** True when the promise is still in the future but predicted to be missed. */
52196
+ atRisk: Scalars['Boolean']['output'];
52197
+ /** True when the promised delivery has already passed without delivery. */
52198
+ breached: Scalars['Boolean']['output'];
52199
+ evaluatedAt: Scalars['DateTime']['output'];
52200
+ /** Forecasting method, e.g. DETERMINISTIC_V1. */
52201
+ method: Scalars['String']['output'];
52202
+ predictedDeliveryEarliest?: Maybe<Scalars['DateTime']['output']>;
52203
+ predictedDeliveryLatest?: Maybe<Scalars['DateTime']['output']>;
52204
+ predictedSlipMinutes: Scalars['Int']['output'];
52205
+ promisedDelivery?: Maybe<Scalars['DateTime']['output']>;
52206
+ recommendedAction: MtwRiskRecommendedAction;
52207
+ /** Name of the mutation that carries out the recommended action, if any. */
52208
+ recommendedMutation?: Maybe<Scalars['String']['output']>;
52209
+ riskLevel: MtwRiskLevel;
52210
+ riskScore: Scalars['Int']['output'];
52211
+ shipmentId: Scalars['ID']['output'];
52212
+ shipmentNumber: Scalars['String']['output'];
52213
+ signals: Array<MtwRiskSignal>;
52214
+ status: ShipmentStatus;
52215
+ };
52216
+ export declare enum MtwRiskLevel {
52217
+ High = "HIGH",
52218
+ Low = "LOW",
52219
+ Medium = "MEDIUM",
52220
+ None = "NONE"
52221
+ }
52222
+ export declare enum MtwRiskRecommendedAction {
52223
+ Monitor = "MONITOR",
52224
+ None = "NONE",
52225
+ ReassignVehicle = "REASSIGN_VEHICLE",
52226
+ RepromiseDelivery = "REPROMISE_DELIVERY",
52227
+ RequestTrackingUpdate = "REQUEST_TRACKING_UPDATE"
52228
+ }
52229
+ /**
52230
+ * One piece of evidence behind a risk forecast. `weight` is the number of risk
52231
+ * score points it contributed; `minutes` is the time behind plan (or without
52232
+ * tracking), `ratio` the carrier late-delivery rate.
52233
+ */
52234
+ export type MtwRiskSignal = {
52235
+ __typename?: 'MtwRiskSignal';
52236
+ code: MtwRiskSignalCode;
52237
+ minutes?: Maybe<Scalars['Int']['output']>;
52238
+ ratio?: Maybe<Scalars['Float']['output']>;
52239
+ weight: Scalars['Int']['output'];
52240
+ };
52241
+ export declare enum MtwRiskSignalCode {
52242
+ CarrierLateHistory = "CARRIER_LATE_HISTORY",
52243
+ ExcessDwell = "EXCESS_DWELL",
52244
+ LegSlip = "LEG_SLIP",
52245
+ OpenLegOverdue = "OPEN_LEG_OVERDUE",
52246
+ RouteDurationOverrun = "ROUTE_DURATION_OVERRUN",
52247
+ TrackingStale = "TRACKING_STALE",
52248
+ VehicleUnavailable = "VEHICLE_UNAVAILABLE"
52249
+ }
52108
52250
  export type MtwRoute = {
52109
52251
  __typename?: 'MtwRoute';
52110
52252
  actualDistance?: Maybe<Scalars['Float']['output']>;
@@ -52141,6 +52283,124 @@ export type MtwRouteStats = {
52141
52283
  totalDistance: Scalars['Float']['output'];
52142
52284
  totalDuration: Scalars['Float']['output'];
52143
52285
  };
52286
+ /** Whether the provider currently has capacity for an offering. */
52287
+ export declare enum MtwServiceAvailability {
52288
+ Available = "AVAILABLE",
52289
+ Limited = "LIMITED",
52290
+ Unavailable = "UNAVAILABLE"
52291
+ }
52292
+ /** A discoverable service a provider offers, with indicative price and availability. */
52293
+ export type MtwServiceOffering = {
52294
+ __typename?: 'MtwServiceOffering';
52295
+ availability: MtwServiceAvailability;
52296
+ category: MtwServiceOfferingCategory;
52297
+ createdAt: Scalars['DateTime']['output'];
52298
+ createdBy: Scalars['String']['output'];
52299
+ /** ISO 4217 currency code. */
52300
+ currency: Scalars['String']['output'];
52301
+ deletedAt?: Maybe<Scalars['DateTime']['output']>;
52302
+ description?: Maybe<Scalars['String']['output']>;
52303
+ id: Scalars['ID']['output'];
52304
+ isActive: Scalars['Boolean']['output'];
52305
+ name: Scalars['String']['output'];
52306
+ onBehalfOf?: Maybe<Scalars['String']['output']>;
52307
+ /** Indicative price in `currency`, per `pricingUnit`. Null when priced on request. */
52308
+ price?: Maybe<Scalars['Float']['output']>;
52309
+ /** What the price is charged per, for example "per km", "per pallet" or "per shipment". */
52310
+ pricingUnit?: Maybe<Scalars['String']['output']>;
52311
+ /** The provider offering this service. Resolves even if the provider was later deleted. */
52312
+ provider?: Maybe<MtwServiceProvider>;
52313
+ providerId: Scalars['ID']['output'];
52314
+ /** Typical door-to-door transit time in days. */
52315
+ transitDays?: Maybe<Scalars['Int']['output']>;
52316
+ updatedAt: Scalars['DateTime']['output'];
52317
+ updatedBy?: Maybe<Scalars['String']['output']>;
52318
+ workspaceId: Scalars['ID']['output'];
52319
+ };
52320
+ /** What an offering provides. */
52321
+ export declare enum MtwServiceOfferingCategory {
52322
+ AirFreight = "AIR_FREIGHT",
52323
+ ColdChain = "COLD_CHAIN",
52324
+ CustomsClearance = "CUSTOMS_CLEARANCE",
52325
+ Express = "EXPRESS",
52326
+ FullTruckload = "FULL_TRUCKLOAD",
52327
+ LastMile = "LAST_MILE",
52328
+ LessThanTruckload = "LESS_THAN_TRUCKLOAD",
52329
+ OceanFreight = "OCEAN_FREIGHT",
52330
+ Other = "OTHER",
52331
+ RailFreight = "RAIL_FREIGHT",
52332
+ Warehousing = "WAREHOUSING"
52333
+ }
52334
+ export type MtwServiceOfferingFilterInput = {
52335
+ availability?: InputMaybe<MtwServiceAvailability>;
52336
+ category?: InputMaybe<MtwServiceOfferingCategory>;
52337
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
52338
+ /** Only offerings at or below this price. */
52339
+ maxPrice?: InputMaybe<Scalars['Float']['input']>;
52340
+ providerId?: InputMaybe<Scalars['ID']['input']>;
52341
+ /** Case-insensitive match on name and description. */
52342
+ search?: InputMaybe<Scalars['String']['input']>;
52343
+ };
52344
+ /**
52345
+ * A vetted service provider (carrier, 3PL, warehouse, specialist) in this workspace's marketplace
52346
+ * directory. A provider becomes a shipment's carrier through `assignShipmentServiceProvider`.
52347
+ */
52348
+ export type MtwServiceProvider = {
52349
+ __typename?: 'MtwServiceProvider';
52350
+ /** Free-form contact details (for example contactName, email, phone, website). */
52351
+ contactInfo?: Maybe<Scalars['JSON']['output']>;
52352
+ createdAt: Scalars['DateTime']['output'];
52353
+ createdBy: Scalars['String']['output'];
52354
+ deletedAt?: Maybe<Scalars['DateTime']['output']>;
52355
+ description?: Maybe<Scalars['String']['output']>;
52356
+ id: Scalars['ID']['output'];
52357
+ isActive: Scalars['Boolean']['output'];
52358
+ /** Set by the workspace once it has vetted the provider. */
52359
+ isVerified: Scalars['Boolean']['output'];
52360
+ name: Scalars['String']['output'];
52361
+ /** The provider's live (not deleted) offerings, newest first. */
52362
+ offerings: Array<MtwServiceOffering>;
52363
+ /** Number of live offerings. */
52364
+ offeringsCount: Scalars['Int']['output'];
52365
+ onBehalfOf?: Maybe<Scalars['String']['output']>;
52366
+ /** The workspace's own rating of this provider, 0 to 5. Null when not yet rated. */
52367
+ rating?: Maybe<Scalars['Float']['output']>;
52368
+ /** Regions, lanes or cities the provider covers. */
52369
+ serviceAreas: Array<Scalars['String']['output']>;
52370
+ /** Short service tags, for example "reefer" or "hazmat". */
52371
+ services: Array<Scalars['String']['output']>;
52372
+ type: MtwServiceProviderType;
52373
+ updatedAt: Scalars['DateTime']['output'];
52374
+ updatedBy?: Maybe<Scalars['String']['output']>;
52375
+ workspaceId: Scalars['ID']['output'];
52376
+ };
52377
+ /**
52378
+ * A vetted service provider (carrier, 3PL, warehouse, specialist) in this workspace's marketplace
52379
+ * directory. A provider becomes a shipment's carrier through `assignShipmentServiceProvider`.
52380
+ */
52381
+ export type MtwServiceProviderOfferingsArgs = {
52382
+ pagination?: InputMaybe<PaginationInput>;
52383
+ };
52384
+ export type MtwServiceProviderFilterInput = {
52385
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
52386
+ isVerified?: InputMaybe<Scalars['Boolean']['input']>;
52387
+ /** Only providers with at least this rating. */
52388
+ minRating?: InputMaybe<Scalars['Float']['input']>;
52389
+ /** Case-insensitive match on name, description, services and service areas. */
52390
+ search?: InputMaybe<Scalars['String']['input']>;
52391
+ type?: InputMaybe<MtwServiceProviderType>;
52392
+ };
52393
+ /** Kind of service provider in the workspace marketplace directory (BOFF-3988, MOV-UC-13). */
52394
+ export declare enum MtwServiceProviderType {
52395
+ Carrier = "CARRIER",
52396
+ Courier = "COURIER",
52397
+ CustomsBroker = "CUSTOMS_BROKER",
52398
+ FreightForwarder = "FREIGHT_FORWARDER",
52399
+ LastMile = "LAST_MILE",
52400
+ Other = "OTHER",
52401
+ ThirdPartyLogistics = "THIRD_PARTY_LOGISTICS",
52402
+ Warehouse = "WAREHOUSE"
52403
+ }
52144
52404
  export type MtwShipment = {
52145
52405
  __typename?: 'MtwShipment';
52146
52406
  actualDelivery?: Maybe<Scalars['DateTime']['output']>;
@@ -52165,6 +52425,11 @@ export type MtwShipment = {
52165
52425
  onBehalfOf: Scalars['String']['output'];
52166
52426
  origin: Scalars['JSON']['output'];
52167
52427
  primaryMode: TransportMode;
52428
+ /**
52429
+ * The marketplace provider this shipment's carrier points at, when `carrierId` references one.
52430
+ * Resolves even if the provider was later deleted, so historical shipments keep their carrier.
52431
+ */
52432
+ serviceProvider?: Maybe<MtwServiceProvider>;
52168
52433
  shipmentNumber: Scalars['String']['output'];
52169
52434
  status: ShipmentStatus;
52170
52435
  statusAuthority: ShipmentStatusAuthority;
@@ -52568,12 +52833,21 @@ export type MtwStockObservationPage = {
52568
52833
  export declare enum MtwStockObservationStatus {
52569
52834
  Unresolved = "UNRESOLVED"
52570
52835
  }
52836
+ /**
52837
+ * A tracking alert. `alertType` is `DELAYED` once the promised delivery has
52838
+ * passed, or `AT_RISK` when the deterministic forecast predicts the promise will
52839
+ * be missed while it is still in the future. The risk fields are set only for
52840
+ * `AT_RISK` alerts.
52841
+ */
52571
52842
  export type MtwTrackingAlert = {
52572
52843
  __typename?: 'MtwTrackingAlert';
52573
52844
  alertType: Scalars['String']['output'];
52574
52845
  message: Scalars['String']['output'];
52846
+ predictedDelivery?: Maybe<Scalars['DateTime']['output']>;
52847
+ riskScore?: Maybe<Scalars['Int']['output']>;
52575
52848
  shipmentId: Scalars['ID']['output'];
52576
52849
  shipmentNumber: Scalars['String']['output'];
52850
+ signals?: Maybe<Array<MtwRiskSignalCode>>;
52577
52851
  };
52578
52852
  export type MtwTrackingEvent = {
52579
52853
  __typename?: 'MtwTrackingEvent';
@@ -52675,6 +52949,28 @@ export type MtwTripUtilizationSummary = {
52675
52949
  tripId: Scalars['ID']['output'];
52676
52950
  unknownFactsSegmentCount: Scalars['Int']['output'];
52677
52951
  };
52952
+ export type MtwUpdateServiceOfferingInput = {
52953
+ availability?: InputMaybe<MtwServiceAvailability>;
52954
+ category?: InputMaybe<MtwServiceOfferingCategory>;
52955
+ currency?: InputMaybe<Scalars['String']['input']>;
52956
+ description?: InputMaybe<Scalars['String']['input']>;
52957
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
52958
+ name?: InputMaybe<Scalars['String']['input']>;
52959
+ price?: InputMaybe<Scalars['Float']['input']>;
52960
+ pricingUnit?: InputMaybe<Scalars['String']['input']>;
52961
+ transitDays?: InputMaybe<Scalars['Int']['input']>;
52962
+ };
52963
+ export type MtwUpdateServiceProviderInput = {
52964
+ contactInfo?: InputMaybe<Scalars['JSON']['input']>;
52965
+ description?: InputMaybe<Scalars['String']['input']>;
52966
+ isActive?: InputMaybe<Scalars['Boolean']['input']>;
52967
+ isVerified?: InputMaybe<Scalars['Boolean']['input']>;
52968
+ name?: InputMaybe<Scalars['String']['input']>;
52969
+ rating?: InputMaybe<Scalars['Float']['input']>;
52970
+ serviceAreas?: InputMaybe<Array<Scalars['String']['input']>>;
52971
+ services?: InputMaybe<Array<Scalars['String']['input']>>;
52972
+ type?: InputMaybe<MtwServiceProviderType>;
52973
+ };
52678
52974
  export declare enum MtwUtilizationCapacityBasis {
52679
52975
  Measured = "MEASURED",
52680
52976
  Rated = "RATED"
@@ -52881,7 +53177,16 @@ export type Mutation = {
52881
53177
  activateHealthyBowlFarmingContract: HealthyBowlFarmingContract;
52882
53178
  activateResourcePlan: ResourcePlan;
52883
53179
  activateSchedule: ScheduledJob;
52884
- /** Activate a workflow definition (sets status to ACTIVE, enables scheduled triggers) */
53180
+ /**
53181
+ * Activate a workflow definition (sets status to ACTIVE, enables scheduled triggers).
53182
+ *
53183
+ * Durable-function parity (spec code-first 11 §2.27): while open AUTO_UPGRADE runs of the workflow
53184
+ * would move to this version's bundle, the version is not activated at once. An ACTIVATION check
53185
+ * replays up to 50 of them first and activates the version only if they all replay; read it from
53186
+ * `activationCheck` (poll workflowCodeReplace with its id). `force: true` activates without the
53187
+ * check (audited; runs that do not replay keep failing their workflow task until a fix ships) and
53188
+ * needs fluidgrids.durable-parity.
53189
+ */
52885
53190
  activateWorkflowDefinition: WorkflowDefinition;
52886
53191
  adaArchiveAdapter: Scalars['Boolean']['output'];
52887
53192
  adaArchivePolicy: Scalars['Boolean']['output'];
@@ -53003,6 +53308,8 @@ export type Mutation = {
53003
53308
  applyHeadshotmarketingAdBudgetRecommendation: HeadshotmarketingAdBudgetRecommendation;
53004
53309
  applyHealthyBowlCertificationStandard: CertificationDetail;
53005
53310
  applyHealthyBowlCompostBatch: CompostBatch;
53311
+ /** Apply a workspace template: create its projects and tasks and install its applets. */
53312
+ applyTimeCampusWorkspaceTemplate: TimeCampusTemplateApplication;
53006
53313
  /** Apply a template's metrics to an entity, creating its scorecard if needed. Existing metrics with the same name are left untouched. */
53007
53314
  applyVibecontrolsScorecardTemplate?: Maybe<VibecontrolsScorecard>;
53008
53315
  /**
@@ -53111,6 +53418,12 @@ export type Mutation = {
53111
53418
  /** Assign a role to an actor */
53112
53419
  assignRoleToActor: ActorRoleAssignment;
53113
53420
  assignRoleToGroup: GroupRoleAssignment;
53421
+ /**
53422
+ * Makes a marketplace provider the shipment's carrier (sets `carrierId`), or clears the carrier when
53423
+ * `providerId` is null. Inactive or unverified providers are allowed; the flags are surfaced so the
53424
+ * operator decides.
53425
+ */
53426
+ assignShipmentServiceProvider: MtwShipment;
53114
53427
  assignTag: UniversalTagAssignment;
53115
53428
  /** Assign (or upsert) a quota to a workspace after a successful purchase. If an assignment already exists for (workspaceId, quotaName, subscriptionId), its limit and metadata are updated rather than creating a duplicate. Restricted to billing: `service` actors (global-billing-svc via crossLayerQuery), or `super_admin` with the plan-assign secret (PLAN_ASSIGN_SECRET, the same secret billing's assignPlanFree / assignQuotaFree require). Workspace roles are never enough. */
53116
53429
  assignWorkspaceQuota: WorkspaceQuotaAssignment;
@@ -53490,6 +53803,12 @@ export type Mutation = {
53490
53803
  /** Cancel a proposal that is still PROCESSING. */
53491
53804
  cancelWorkflowProposal: WorkflowProposal;
53492
53805
  cancelWorkflowRun: WorkflowRun;
53806
+ /**
53807
+ * cancelWorkflowRun for a run target (parity): a durable-function run records
53808
+ * WORKFLOW_CANCEL_REQUESTED and its code decides, a graph run moves to CANCELLED. Needs
53809
+ * fluidgrids.durable-parity.
53810
+ */
53811
+ cancelWorkflowRunByTarget: WorkflowRun;
53493
53812
  /** Sender-side: cancel a pending invite. No-op if already terminal. */
53494
53813
  cancelWorkspaceInvite: WorkspaceInvite;
53495
53814
  /**
@@ -53499,6 +53818,7 @@ export type Mutation = {
53499
53818
  * (and its shipment, if any) DELIVERED.
53500
53819
  */
53501
53820
  captureEpod: MtwProofOfDelivery;
53821
+ /** Re-categorize an application across the caller's usage records (bulk). Requires `confirm: true` (BOFF-3894) because it rewrites many records. */
53502
53822
  categorizeApplication: Array<ApplicationUsage>;
53503
53823
  /** Charges one completed model call against `<productKey>.ai.credits`, priced server-side and recorded once per (sessionId, messageId). Best-effort: a pricing or recording failure is returned as SKIPPED, never thrown, because the answer was already produced. Only a malformed report is rejected. */
53504
53824
  chargeAiInvocation: PromptAiCreditCharge;
@@ -53739,6 +54059,8 @@ export type Mutation = {
53739
54059
  /** Connect this workspace to a catalog listing. Only AVAILABLE listings with connectionType WEBHOOK can be connected today — everything else (OAUTH/ API_KEY listings, which are all currently ROADMAP) requires real platform developer-account approval this environment does not have. */
53740
54060
  connectHeadshotmarketingIntegration: HeadshotmarketingWorkspaceIntegrationConnection;
53741
54061
  connectHealthyBowlAccountingIntegration: HealthyBowlAccountingIntegration;
54062
+ /** Register a new capture source. Its id is the channelId the source sends when ingesting events. */
54063
+ connectTimeCampusCaptureChannel: TimeCampusCaptureChannel;
53742
54064
  /** Send a natural-language message (with optional current spec + history) to the conversational agent and receive an updated spec plus a reply. */
53743
54065
  conversationalDashboardEdit: ConversationalEditResult;
53744
54066
  /** Erase the subject's conversations data in every workspace (called with no workspace, like the export). With dryRun=true, reports what would change without mutating. The CONTENT of the subject's AI-assistant history is purged (messages deleted; each chat reduced to a content-free tombstone that stops a late save from recreating it), except chats under a legal hold (one placed while the erase runs included; the hold count is taken after it). In human conversations message bodies are RETAINED for thread integrity and the subject's authorship is anonymised; mention / reaction / read-receipt / poll-vote / call / report / draft records keyed to the subject are deleted. Reported back via `retainedForLegalReason`: "thread-integrity", plus "legal-hold" when a hold retained assistant chats and "erasure-tombstones" when content-free assistant tombstones remain (all joined with "; "). FAILS (code SERVICE_UNAVAILABLE, i18nKey privacy.errors.assistantHistoryEraseIncomplete) when any unheld assistant history still holds content after the erase's passes -- after every other step has run. Every step is idempotent: run the erase again. */
@@ -54339,6 +54661,8 @@ export type Mutation = {
54339
54661
  * Restricted to `service` / `super_admin` actors.
54340
54662
  */
54341
54663
  createServiceConnection: IntegrationConnection;
54664
+ createServiceOffering: MtwServiceOffering;
54665
+ createServiceProvider: MtwServiceProvider;
54342
54666
  /** Create a new session */
54343
54667
  createSession: Session;
54344
54668
  createSessionGrantShareLink: ShareGrant;
@@ -54500,6 +54824,7 @@ export type Mutation = {
54500
54824
  deleteAllocation: ResourceAllocation;
54501
54825
  deleteAppAgent: Scalars['Boolean']['output'];
54502
54826
  deleteAppTemplate: Scalars['Boolean']['output'];
54827
+ /** Soft-delete one usage record. Requires `confirm: true` (BOFF-3894): the UI sets it after the person confirms, and an AI agent must ask first. */
54503
54828
  deleteApplicationUsage: ApplicationUsage;
54504
54829
  /** Delete an artifact */
54505
54830
  deleteArtifact: MutationResponse;
@@ -54820,6 +55145,9 @@ export type Mutation = {
54820
55145
  deleteSecret: Scalars['Boolean']['output'];
54821
55146
  deleteSecurityComplianceFramework: Scalars['Boolean']['output'];
54822
55147
  deleteSecurityGovernancePolicy: Scalars['Boolean']['output'];
55148
+ deleteServiceOffering: Scalars['Boolean']['output'];
55149
+ /** Soft-deletes the provider and its offerings. Shipments that already reference it keep the reference. */
55150
+ deleteServiceProvider: Scalars['Boolean']['output'];
54823
55151
  /** Delete a settings secret by key. */
54824
55152
  deleteSettingsSecret: Scalars['Boolean']['output'];
54825
55153
  deleteShipment: Scalars['Boolean']['output'];
@@ -54835,6 +55163,9 @@ export type Mutation = {
54835
55163
  deleteTask: Task;
54836
55164
  /** Delete a template */
54837
55165
  deleteTemplate: Scalars['Boolean']['output'];
55166
+ /** Remove a channel from the registry. Events it captured are kept (purge them first if they should go too); a removed channel's id stays refused at ingestion. Requires `confirm: true` (BOFF-3894). */
55167
+ deleteTimeCampusCaptureChannel: TimeCampusCaptureChannel;
55168
+ /** Soft-delete one of the caller's capture events. Requires `confirm: true` (BOFF-3894): the UI sets it after the person confirms, and an AI agent must ask the person first. */
54838
55169
  deleteTimeCampusCaptureEvent: TimeCampusCaptureEvent;
54839
55170
  /** Deletes a DRAFT invoice and releases its time entries back to the un-invoiced pool. SENT/PAID invoices cannot be deleted (immutable record). */
54840
55171
  deleteTimeCampusInvoiceDraft: Scalars['Boolean']['output'];
@@ -54881,6 +55212,12 @@ export type Mutation = {
54881
55212
  /** Delete a FluidGrids Workflow (soft delete) */
54882
55213
  deleteWorkflow: Scalars['Boolean']['output'];
54883
55214
  deleteWorkflowDefinition: Scalars['Boolean']['output'];
55215
+ /**
55216
+ * Remove a rollout (audited WorkflowRolloutDeleted): every automatic start runs the ACTIVE version
55217
+ * again. Runs that upgraded to its target stay there until another version is activated. False when
55218
+ * there was none.
55219
+ */
55220
+ deleteWorkflowRollout: Scalars['Boolean']['output'];
54884
55221
  /**
54885
55222
  * Permanently delete one finished workflow run and everything recorded for it:
54886
55223
  * node states and their inputs and outputs, run logs, execution logs, tool
@@ -54930,6 +55267,8 @@ export type Mutation = {
54930
55267
  /** Disconnect a social media account (revoke tokens and mark disconnected) */
54931
55268
  disconnectHeadshotmarketingSocialAccount: HeadshotmarketingSocialAccount;
54932
55269
  disconnectHealthyBowlAccountingIntegration: HealthyBowlAccountingIntegration;
55270
+ /** Disconnect a channel: further events from it are refused. Already captured events are kept. */
55271
+ disconnectTimeCampusCaptureChannel: TimeCampusCaptureChannel;
54933
55272
  dismissHealthyBowlComplianceFlag: ComplianceFlag;
54934
55273
  dismissRecommendation: TimeCampusRecommendation;
54935
55274
  /**
@@ -55679,7 +56018,7 @@ export type Mutation = {
55679
56018
  ingestHealthyBowlNdviReading: HbNdviIngestResult;
55680
56019
  /** Ingest one live probe reading. Persists it, refreshes the probe + soil snapshot, evaluates the field's thresholds, and raises an in-app alert on a breach. Accepts a workspace member OR the FluidGrids service actor (M2M via wspace-int-gateway). */
55681
56020
  ingestHealthyBowlSensorReading: IngestSensorReadingResult;
55682
- /** Batch-ingest normalized activity events from an integration (browser extension, IDE plugin, CLI, calendar sync, API). Idempotent per (channelId, externalId). The integration registry is owned by wspace-integrations-svc; this resolver only stores the opaque channelId reference and the caller-supplied source label. */
56021
+ /** Batch-ingest normalized activity events from an integration (browser extension, IDE plugin, CLI, calendar sync, API). Idempotent per (channelId, externalId). When channelId is a registered capture channel (see connectTimeCampusCaptureChannel) it must belong to the caller; events for a paused, disconnected or removed channel are refused (channelBlocked), and the channel's privacy mode and retention window are applied. An unregistered channelId is stored as an opaque reference. */
55683
56022
  ingestTimeCampusCaptureEvents: TimeCampusIngestCaptureEventsResult;
55684
56023
  initializeDisposableWorkspaceMembers: Array<WorkspaceMember>;
55685
56024
  /** Initialize a new workspace from global tenant service (service-to-service call) Creates workspace with provided ID and initializes default resources. Restricted to service actors only via gateway. */
@@ -55710,6 +56049,8 @@ export type Mutation = {
55710
56049
  installProviderPlugin: IntegrationProvider;
55711
56050
  /** Install a plugin on an agent sourced from the Burdenoff store. Bridges store-svc ↔ vibecontrols-agent: the backend validates the caller's entitlement via store-svc, reads the product manifest for the npm package name + version, then calls the agent's /api/plugins/install endpoint. Records an AppInstallation in store-svc on success. */
55712
56051
  installStorePluginOnAgent: AgentPluginActionResult;
56052
+ /** Install an applet for the whole workspace. Idempotent. */
56053
+ installTimeCampusApplet: TimeCampusApplet;
55713
56054
  /** Install (enable) a registered widget type for a workspace, so it appears in that workspace's builder palette. */
55714
56055
  installWidgetType: BigConsoleWidgetTypeRegistration;
55715
56056
  /** Install an app in one or more workspaces Pass single workspaceId in array for single workspace installation */
@@ -56880,6 +57221,8 @@ export type Mutation = {
56880
57221
  /** Publish a component as a reusable template (snapshots the component) */
56881
57222
  publishVibecontrolsComponentAsTemplate: VibecontrolsTemplate;
56882
57223
  publishWorkflow: WorkflowDefinition;
57224
+ /** Permanently delete events captured by this channel, all of them or only those older than `olderThanDays`. Requires `confirm: true` (BOFF-3894). */
57225
+ purgeTimeCampusCaptureChannelEvents: TimeCampusCaptureChannelPurgeResult;
56883
57226
  /** Push gateway auth configuration (OAuth2 credentials) to an agent. The backend proxies the request to the agent's REST API (POST /api/agent/gateway-auth). */
56884
57227
  pushAgentGatewayAuth: AgentPluginActionResult;
56885
57228
  /** Real budget push to a connected ad platform (WEBHOOK relay or native API). Every attempt is logged; transient failures are retried automatically. */
@@ -57241,6 +57584,8 @@ export type Mutation = {
57241
57584
  /** Reset settings for a category back to defaults. For user-scoped categories, deletes the user's overrides. For workspace-scoped categories, deletes the workspace overrides. */
57242
57585
  resetSettings: Scalars['Boolean']['output'];
57243
57586
  resetTimeCampusDemoData: TimeCampusAdminMutationResult;
57587
+ /** Self-scoped: drop the caller's saved layout and return to the default. */
57588
+ resetTimeCampusMyWidgetLayout: TimeCampusWidgetLayout;
57244
57589
  /** Wipe the agent's local state via POST /api/agent/reset on the agent. Deletes config.json, the encrypted Skalex DB, logs, and the plugins manifest, then transitions the agent back to 'awaiting-config' WITHOUT exiting the process — HTTP server + tunnel stay alive so the platform can re-onboard via addVibecontrolsAgentFromTunnel. Returns the new agent API key generated during reset; the platform must rotate its stored credentials to the returned value before re-onboarding, otherwise subsequent calls will get 401. */
57245
57590
  resetVibecontrolsAgent: ResetAgentResult;
57246
57591
  /** Reset webhook failure count */
@@ -57362,6 +57707,8 @@ export type Mutation = {
57362
57707
  retryWorkflowRuns: Array<TriggerResponse>;
57363
57708
  /** Explicit reveal action for a secret-flagged (or externally-backed) variable's real value — audited via trackOperation. */
57364
57709
  revealWorkflowVariableValue: RevealWorkflowVariableValueResponse;
57710
+ /** Revert the model's timeline categorisations for the calling user over [from, to) (max 62 days): each AI-categorised event goes back to the user's learned correction or the keyword rules, and its AI provenance is cleared. Only the caller's own events are touched. Requires `confirm: true` because it rewrites many records (BOFF-3894). */
57711
+ revertTimeCampusAiCategorizations: TimeCampusAiRevertResult;
57365
57712
  reviewHousingvistaRentalApplication: HousingVistaRentalApplication;
57366
57713
  reviewVaultSecurityEvent: VaultSecurityEvent;
57367
57714
  revokeActionShare: ShareGrant;
@@ -57679,6 +58026,25 @@ export type Mutation = {
57679
58026
  /** Set the lifecycle status (AVAILABLE | DEPRECATED | DISABLED) of a registered widget type. Operator control; survives boot re-seeds. */
57680
58027
  setWidgetTypeStatus: BigConsoleWidgetTypeRegistration;
57681
58028
  setWorkOrderChecklistItem: WorkOrder;
58029
+ /**
58030
+ * Create or change the PROD rollout of a workflow (audited WorkflowRolloutSet). New starts follow
58031
+ * `percent` at once; raising it while in-flight AUTO_UPGRADE runs of the new buckets are on another
58032
+ * bundle queues a ROLLOUT check (`activationCheck`), and those runs move only once it passes.
58033
+ * `percent: 100` activates `toVersion` (with the activation check of activateWorkflowDefinition) and
58034
+ * removes the rollout. Refused while the workspace locks production to approved promotions.
58035
+ */
58036
+ setWorkflowRollout: WorkflowRollout;
58037
+ /**
58038
+ * Set or remove (`override: null`) an open durable-function run's versioning override (spec
58039
+ * code-first 11 §2.27), recorded as VERSIONING_OVERRIDE_SET. A change that moves the run to another
58040
+ * bundle first replays the run against it (a RUN_OVERRIDE check, `pendingOverride` on
58041
+ * `WorkflowRun.versioning`), and the run moves only if it replays: pinning to a version whose bundle
58042
+ * differs from the run's, and making the run AUTO_UPGRADE (the override, or removing a PINNED
58043
+ * override from an AUTO_UPGRADE run) while the bundle it would upgrade to differs from its own.
58044
+ * Every other change applies at once and supersedes a pending check. Removing an override never
58045
+ * moves a run that stays PINNED: it keeps the bundle that serves it. Needs fluidgrids.durable-parity.
58046
+ */
58047
+ setWorkflowRunVersioningOverride: WorkflowRun;
57682
58048
  /** Enable or disable an installed workspace app */
57683
58049
  setWorkspaceAppEnabled: WorkspaceInstalledApp;
57684
58050
  /** Split the proceeds back to contributing members, writing an INCOME transaction into each member's own workspace. SAFE TO CALL AGAIN. Settlement crosses workspaces and cannot run in one transaction, so a run that times out leaves the lot SETTLING and is resumed by calling this again; the allocation is deterministic, so a resumed run pays exactly what the interrupted one would have. Check outstandingCount — non-zero means keep going. Settlement is NOT reversible in v1. */
@@ -57763,6 +58129,16 @@ export type Mutation = {
57763
58129
  * Usage tracking: each start consumes one unit of the workspace's fluidgrids.runs.monthly quota.
57764
58130
  */
57765
58131
  startWorkflow: StartWorkflowResult;
58132
+ /**
58133
+ * Start a durable-function run with a workflow id, terminating the open run of that id first
58134
+ * (`idConflictPolicy: TERMINATE_EXISTING`, reason ID_CONFLICT; durable-function runs only). Ending
58135
+ * another run needs the workflow-run delete permission, which startWorkflow does not check, so
58136
+ * startWorkflow refuses TERMINATE_EXISTING and this field carries it. Needs a `workflowId` and
58137
+ * `idConflictPolicy: TERMINATE_EXISTING`. Durable-function parity: needs fluidgrids.durable-parity.
58138
+ *
58139
+ * Usage tracking: each start consumes one unit of the workspace's fluidgrids.runs.monthly quota.
58140
+ */
58141
+ startWorkflowTerminateExisting: StartWorkflowResult;
57766
58142
  /** Start a stopped or inactive resource */
57767
58143
  startWorkspaceResource: WorkspaceResource;
57768
58144
  stopCallRecording: CallRecording;
@@ -57922,6 +58298,7 @@ export type Mutation = {
57922
58298
  tecAddPortfolioItem: TecPortfolioItem;
57923
58299
  /** Approve a pending mentor profile (PENDING -> ACTIVE). */
57924
58300
  tecApproveMentor: TecMentor;
58301
+ /** DESTRUCTIVE: archives the course, removing it from the learner catalog. An agent or UI must get explicit user confirmation before calling this. */
57925
58302
  tecArchiveCourse: Scalars['Boolean']['output'];
57926
58303
  /** Archive (soft-delete) a plan the calling learner owns. */
57927
58304
  tecArchiveStudyPlan: Scalars['Boolean']['output'];
@@ -57929,9 +58306,12 @@ export type Mutation = {
57929
58306
  tecBecomeMentor: TecMentor;
57930
58307
  /** Book a 1:1 session with a mentor as the calling mentee. */
57931
58308
  tecBookSession: TecMentorSession;
58309
+ /** DESTRUCTIVE: cancels a booked mentoring session for both the mentor and the mentee; a cancelled session cannot be reinstated. An agent or UI must get explicit user confirmation before calling this. */
57932
58310
  tecCancelSession: TecMentorSession;
57933
- /** Complete a hackathon after judging (JUDGING -> COMPLETED). */
58311
+ /** DESTRUCTIVE: completes a hackathon after judging (JUDGING -> COMPLETED), locking judging and final results. An agent or UI must get explicit user confirmation before calling this. */
57934
58312
  tecCompleteHackathon: TecHackathon;
58313
+ /** Mark one lesson complete for the calling learner (BOFF-4107) and recompute their enrollment progress from completed lessons. Self-scoped (Type B): the enrollment is looked up by the authenticated actor, and a learner who is not enrolled gets NOT_FOUND. QUIZ lessons and INTERACTIVE lessons with an expected output cannot be completed manually; they are completed by tecSubmitLessonQuiz / tecRunLessonCode. Idempotent. */
58314
+ tecCompleteLesson: TecEnrollment;
57935
58315
  tecCompleteSession: TecMentorSession;
57936
58316
  tecConfirmSession: TecMentorSession;
57937
58317
  tecCreateCourse: TecCourse;
@@ -57940,6 +58320,7 @@ export type Mutation = {
57940
58320
  tecCreateProblem: TecProblem;
57941
58321
  /** Add a test-case fixture to a problem. Authoring permission on the problem. */
57942
58322
  tecCreateProblemTestCase: TecProblemTestCase;
58323
+ /** DESTRUCTIVE: deletes a test-case fixture from a problem, changing how every future submission is graded. An agent or UI must get explicit user confirmation before calling this. */
57943
58324
  tecDeleteProblemTestCase: Scalars['Boolean']['output'];
57944
58325
  tecEnroll: TecEnrollment;
57945
58326
  /** Generate a new, deterministic study plan for the calling learner (see the module honesty note above -- this is rule-based, not AI-personalized). */
@@ -57965,13 +58346,20 @@ export type Mutation = {
57965
58346
  tecRemovePortfolioItem: Scalars['Boolean']['output'];
57966
58347
  /** Reorder the calling learner's portfolio items. */
57967
58348
  tecReorderPortfolioItems: TecPortfolio;
58349
+ /** Explain one of the calling learner's own graded submissions: what failed, why, which concepts to revisit and which problems to practise next. Self-scoped (Type B): the submission is read with the authenticated actor as owner in the same query, so another learner's submission is NOT_FOUND. Returns the stored review when one exists for the current verdict; otherwise writes a new one (rate limited per learner). PENDING submissions are rejected with BAD_USER_INPUT. */
58350
+ tecReviewSubmission: TecSubmissionReview;
58351
+ /** DESTRUCTIVE: rescinds a learner's issued certificate, their proof of completed work. An agent or UI must get explicit user confirmation before calling this. */
57968
58352
  tecRevokeCertificate: TecCertificate;
57969
- /** Record a judge score for a team and optionally mark it WINNER. */
58353
+ /** Run the calling learner's code for an INTERACTIVE lesson in the isolated code sandbox (BOFF-4107). Never executes in this service. When the lesson has an expected output and stdout matches it, the lesson is completed for the learner. Rate limited per actor. */
58354
+ tecRunLessonCode: TecLessonCodeRun;
58355
+ /** DESTRUCTIVE: records a judge score for a team and optionally marks it WINNER, overwriting any previous score. An agent or UI must get explicit user confirmation before calling this. */
57970
58356
  tecScoreTeam: TecHackathonTeam;
57971
58357
  /** Move a hackathon into its running window (REGISTRATION_OPEN -> IN_PROGRESS). */
57972
58358
  tecStartHackathon: TecHackathon;
57973
58359
  /** Move a hackathon into judging (IN_PROGRESS -> JUDGING). */
57974
58360
  tecStartJudging: TecHackathon;
58361
+ /** Grade a QUIZ lesson attempt server-side (BOFF-4107). A passing attempt completes the lesson for the calling learner when they are enrolled. */
58362
+ tecSubmitLessonQuiz: TecQuizResult;
57975
58363
  /** Submit a team's project for judging (sets status SUBMITTED). */
57976
58364
  tecSubmitProject: TecHackathonTeam;
57977
58365
  /** Submit a solution to a problem; the grader runs it against the problem's test cases and the returned row already carries the verdict. If the problem has no test cases yet, the language isn't supported by the grader, or the sandbox call fails, the submission is returned PENDING and can be retried with tecRegradeSubmission. */
@@ -58121,6 +58509,8 @@ export type Mutation = {
58121
58509
  uninstallParserType: Scalars['Boolean']['output'];
58122
58510
  uninstallProviderPlugin: Scalars['Boolean']['output'];
58123
58511
  uninstallRemoteAgent: Scalars['Boolean']['output'];
58512
+ /** Uninstall an applet from the workspace. Idempotent; its widgets leave every layout. */
58513
+ uninstallTimeCampusApplet: TimeCampusApplet;
58124
58514
  /** Uninstall (disable) a widget type for a workspace, removing it from the palette. */
58125
58515
  uninstallWidgetType: Scalars['Boolean']['output'];
58126
58516
  /** Uninstall a workspace app by ID */
@@ -58589,6 +58979,8 @@ export type Mutation = {
58589
58979
  /** Change the role of an account share. */
58590
58980
  updateSecretShareRole: SecretShare;
58591
58981
  updateSecurityFindingStatus: SecurityFinding;
58982
+ updateServiceOffering: MtwServiceOffering;
58983
+ updateServiceProvider: MtwServiceProvider;
58592
58984
  /** Update an existing session */
58593
58985
  updateSession: Session;
58594
58986
  updateSessionGrantShareRole: ShareGrant;
@@ -58614,10 +59006,14 @@ export type Mutation = {
58614
59006
  /** Update a template */
58615
59007
  updateTemplate: BigConsoleDashboardTemplate;
58616
59008
  updateTemplateShareRole: ShareGrant;
59009
+ /** Rename, pause/resume, or change the privacy, retention or sync settings of a channel. */
59010
+ updateTimeCampusCaptureChannel: TimeCampusCaptureChannel;
58617
59011
  /** Save the caller's focus preferences (partial update; unspecified fields keep their value). */
58618
59012
  updateTimeCampusFocusPreferences: TimeCampusFocusPreferences;
58619
59013
  /** Moves an invoice forward through DRAFT -> SENT -> PAID. Backward transitions are rejected. */
58620
59014
  updateTimeCampusInvoiceStatus: TimeCampusInvoice;
59015
+ /** Self-scoped: save the caller's widget layout (ordered widget keys). */
59016
+ updateTimeCampusMyWidgetLayout: TimeCampusWidgetLayout;
58621
59017
  updateTimeCampusProject: TimeCampusProject;
58622
59018
  updateTimeEntry: TimeEntry;
58623
59019
  /** Update an existing tunnel (metadata, target host/port, basic auth, etc.). */
@@ -58897,7 +59293,11 @@ export type Mutation = {
58897
59293
  */
58898
59294
  workerRecordRunAiInvocations: WorkerRecordRunAiInvocationsResponse;
58899
59295
  /**
58900
- * Renew a workflow-task lease while local activities run (Phase B parity).
59296
+ * Renew a workflow-task lease while local activities run (Phase B parity). The lease never reaches
59297
+ * past the task's start plus its local-activity budget (localActivityBudgetMs) and a grace; a
59298
+ * heartbeat past that point is refused with STALE_TASK. Each local activity in localActivities is
59299
+ * granted (its result is accepted even if fluidgrids.durable-parity is turned off before the task
59300
+ * completes) while the flag is on; send them before running them.
58901
59301
  * INTERNAL: Requires actorType SERVICE
58902
59302
  */
58903
59303
  workerRecordWorkflowTaskHeartbeat: WorkflowTaskHeartbeatAck;
@@ -59043,6 +59443,7 @@ export type MutationActivateScheduleArgs = {
59043
59443
  };
59044
59444
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59045
59445
  export type MutationActivateWorkflowDefinitionArgs = {
59446
+ force?: InputMaybe<Scalars['Boolean']['input']>;
59046
59447
  id: Scalars['ID']['input'];
59047
59448
  };
59048
59449
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
@@ -59412,6 +59813,11 @@ export type MutationApplyHealthyBowlCompostBatchArgs = {
59412
59813
  input: ApplyCompostBatchInput;
59413
59814
  };
59414
59815
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59816
+ export type MutationApplyTimeCampusWorkspaceTemplateArgs = {
59817
+ input?: InputMaybe<TimeCampusApplyTemplateInput>;
59818
+ key: Scalars['ID']['input'];
59819
+ };
59820
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59415
59821
  export type MutationApplyVibecontrolsScorecardTemplateArgs = {
59416
59822
  ownerId: Scalars['ID']['input'];
59417
59823
  ownerType: ScorecardOwnerType;
@@ -59733,6 +60139,11 @@ export type MutationAssignRoleToGroupArgs = {
59733
60139
  input: AssignGroupRoleInput;
59734
60140
  };
59735
60141
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
60142
+ export type MutationAssignShipmentServiceProviderArgs = {
60143
+ providerId?: InputMaybe<Scalars['ID']['input']>;
60144
+ shipmentId: Scalars['ID']['input'];
60145
+ };
60146
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
59736
60147
  export type MutationAssignTagArgs = {
59737
60148
  input: AssignTagInput;
59738
60149
  };
@@ -60766,6 +61177,10 @@ export type MutationCancelWorkflowRunArgs = {
60766
61177
  id: Scalars['ID']['input'];
60767
61178
  };
60768
61179
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
61180
+ export type MutationCancelWorkflowRunByTargetArgs = {
61181
+ target: RunTargetInput;
61182
+ };
61183
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
60769
61184
  export type MutationCancelWorkspaceInviteArgs = {
60770
61185
  id: Scalars['ID']['input'];
60771
61186
  };
@@ -60777,6 +61192,7 @@ export type MutationCaptureEpodArgs = {
60777
61192
  export type MutationCategorizeApplicationArgs = {
60778
61193
  applicationName: Scalars['String']['input'];
60779
61194
  category: Scalars['String']['input'];
61195
+ confirm?: InputMaybe<Scalars['Boolean']['input']>;
60780
61196
  };
60781
61197
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
60782
61198
  export type MutationChargeAiInvocationArgs = {
@@ -61461,6 +61877,10 @@ export type MutationConnectHealthyBowlAccountingIntegrationArgs = {
61461
61877
  input: ConnectHealthyBowlAccountingIntegrationInput;
61462
61878
  };
61463
61879
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
61880
+ export type MutationConnectTimeCampusCaptureChannelArgs = {
61881
+ input: TimeCampusConnectCaptureChannelInput;
61882
+ };
61883
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
61464
61884
  export type MutationConversationalDashboardEditArgs = {
61465
61885
  input: ConversationalEditInput;
61466
61886
  };
@@ -63232,6 +63652,14 @@ export type MutationCreateServiceConnectionArgs = {
63232
63652
  input: CreateServiceConnectionInput;
63233
63653
  };
63234
63654
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63655
+ export type MutationCreateServiceOfferingArgs = {
63656
+ input: MtwCreateServiceOfferingInput;
63657
+ };
63658
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63659
+ export type MutationCreateServiceProviderArgs = {
63660
+ input: MtwCreateServiceProviderInput;
63661
+ };
63662
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63235
63663
  export type MutationCreateSessionArgs = {
63236
63664
  input: CreateSessionInput;
63237
63665
  };
@@ -63636,6 +64064,7 @@ export type MutationDeleteAppTemplateArgs = {
63636
64064
  };
63637
64065
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
63638
64066
  export type MutationDeleteApplicationUsageArgs = {
64067
+ confirm?: InputMaybe<Scalars['Boolean']['input']>;
63639
64068
  id: Scalars['ID']['input'];
63640
64069
  };
63641
64070
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
@@ -64718,6 +65147,14 @@ export type MutationDeleteSecurityGovernancePolicyArgs = {
64718
65147
  id: Scalars['ID']['input'];
64719
65148
  };
64720
65149
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
65150
+ export type MutationDeleteServiceOfferingArgs = {
65151
+ id: Scalars['ID']['input'];
65152
+ };
65153
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
65154
+ export type MutationDeleteServiceProviderArgs = {
65155
+ id: Scalars['ID']['input'];
65156
+ };
65157
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64721
65158
  export type MutationDeleteSettingsSecretArgs = {
64722
65159
  key: Scalars['String']['input'];
64723
65160
  };
@@ -64771,7 +65208,13 @@ export type MutationDeleteTemplateArgs = {
64771
65208
  id: Scalars['ID']['input'];
64772
65209
  };
64773
65210
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
65211
+ export type MutationDeleteTimeCampusCaptureChannelArgs = {
65212
+ confirm?: InputMaybe<Scalars['Boolean']['input']>;
65213
+ id: Scalars['ID']['input'];
65214
+ };
65215
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64774
65216
  export type MutationDeleteTimeCampusCaptureEventArgs = {
65217
+ confirm?: InputMaybe<Scalars['Boolean']['input']>;
64775
65218
  id: Scalars['ID']['input'];
64776
65219
  };
64777
65220
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
@@ -64901,6 +65344,11 @@ export type MutationDeleteWorkflowDefinitionArgs = {
64901
65344
  workflowKey: Scalars['String']['input'];
64902
65345
  };
64903
65346
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
65347
+ export type MutationDeleteWorkflowRolloutArgs = {
65348
+ environment?: InputMaybe<WorkflowEnvironment>;
65349
+ workflowKey: Scalars['String']['input'];
65350
+ };
65351
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
64904
65352
  export type MutationDeleteWorkflowRunArgs = {
64905
65353
  id: Scalars['ID']['input'];
64906
65354
  };
@@ -65022,6 +65470,10 @@ export type MutationDisconnectHealthyBowlAccountingIntegrationArgs = {
65022
65470
  provider: Scalars['String']['input'];
65023
65471
  };
65024
65472
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
65473
+ export type MutationDisconnectTimeCampusCaptureChannelArgs = {
65474
+ id: Scalars['ID']['input'];
65475
+ };
65476
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
65025
65477
  export type MutationDismissHealthyBowlComplianceFlagArgs = {
65026
65478
  input: DismissComplianceFlagInput;
65027
65479
  };
@@ -67206,6 +67658,10 @@ export type MutationInstallStorePluginOnAgentArgs = {
67206
67658
  productId: Scalars['ID']['input'];
67207
67659
  };
67208
67660
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67661
+ export type MutationInstallTimeCampusAppletArgs = {
67662
+ key: Scalars['ID']['input'];
67663
+ };
67664
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
67209
67665
  export type MutationInstallWidgetTypeArgs = {
67210
67666
  input: BigConsoleInstallWidgetTypeInput;
67211
67667
  };
@@ -70340,6 +70796,12 @@ export type MutationPublishWorkflowArgs = {
70340
70796
  id: Scalars['ID']['input'];
70341
70797
  };
70342
70798
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
70799
+ export type MutationPurgeTimeCampusCaptureChannelEventsArgs = {
70800
+ confirm?: InputMaybe<Scalars['Boolean']['input']>;
70801
+ id: Scalars['ID']['input'];
70802
+ olderThanDays?: InputMaybe<Scalars['Int']['input']>;
70803
+ };
70804
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
70343
70805
  export type MutationPushAgentGatewayAuthArgs = {
70344
70806
  input: PushAgentGatewayAuthInput;
70345
70807
  };
@@ -71565,6 +72027,12 @@ export type MutationRevealWorkflowVariableValueArgs = {
71565
72027
  id: Scalars['ID']['input'];
71566
72028
  };
71567
72029
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72030
+ export type MutationRevertTimeCampusAiCategorizationsArgs = {
72031
+ confirm?: InputMaybe<Scalars['Boolean']['input']>;
72032
+ from: Scalars['DateTime']['input'];
72033
+ to: Scalars['DateTime']['input'];
72034
+ };
72035
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
71568
72036
  export type MutationReviewHousingvistaRentalApplicationArgs = {
71569
72037
  id: Scalars['ID']['input'];
71570
72038
  input: HousingVistaReviewRentalApplicationInput;
@@ -72443,6 +72911,18 @@ export type MutationSetWorkOrderChecklistItemArgs = {
72443
72911
  workOrderId: Scalars['ID']['input'];
72444
72912
  };
72445
72913
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72914
+ export type MutationSetWorkflowRolloutArgs = {
72915
+ input: WorkflowRolloutInput;
72916
+ workflowKey: Scalars['String']['input'];
72917
+ };
72918
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72919
+ export type MutationSetWorkflowRunVersioningOverrideArgs = {
72920
+ override?: InputMaybe<VersioningOverrideInput>;
72921
+ reason?: InputMaybe<Scalars['String']['input']>;
72922
+ runId?: InputMaybe<Scalars['ID']['input']>;
72923
+ target?: InputMaybe<RunTargetInput>;
72924
+ };
72925
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72446
72926
  export type MutationSetWorkspaceAppEnabledArgs = {
72447
72927
  enabled: Scalars['Boolean']['input'];
72448
72928
  id: Scalars['ID']['input'];
@@ -72561,7 +73041,8 @@ export type MutationSignalWorkflowRunArgs = {
72561
73041
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
72562
73042
  name: Scalars['String']['input'];
72563
73043
  payload?: InputMaybe<Scalars['JSON']['input']>;
72564
- runId: Scalars['ID']['input'];
73044
+ runId?: InputMaybe<Scalars['ID']['input']>;
73045
+ target?: InputMaybe<RunTargetInput>;
72565
73046
  };
72566
73047
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72567
73048
  export type MutationSnoozeHealthyBowlWeatherAlertArgs = {
@@ -72680,6 +73161,10 @@ export type MutationStartWorkflowArgs = {
72680
73161
  input: StartWorkflowInput;
72681
73162
  };
72682
73163
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73164
+ export type MutationStartWorkflowTerminateExistingArgs = {
73165
+ input: StartWorkflowInput;
73166
+ };
73167
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
72683
73168
  export type MutationStartWorkspaceResourceArgs = {
72684
73169
  id: Scalars['ID']['input'];
72685
73170
  };
@@ -73155,6 +73640,10 @@ export type MutationTecCompleteHackathonArgs = {
73155
73640
  id: Scalars['ID']['input'];
73156
73641
  };
73157
73642
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73643
+ export type MutationTecCompleteLessonArgs = {
73644
+ lessonId: Scalars['ID']['input'];
73645
+ };
73646
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73158
73647
  export type MutationTecCompleteSessionArgs = {
73159
73648
  feedback?: InputMaybe<Scalars['String']['input']>;
73160
73649
  id: Scalars['ID']['input'];
@@ -73242,11 +73731,19 @@ export type MutationTecReorderPortfolioItemsArgs = {
73242
73731
  input: TecReorderPortfolioItemsInput;
73243
73732
  };
73244
73733
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73734
+ export type MutationTecReviewSubmissionArgs = {
73735
+ submissionId: Scalars['ID']['input'];
73736
+ };
73737
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73245
73738
  export type MutationTecRevokeCertificateArgs = {
73246
73739
  id: Scalars['ID']['input'];
73247
73740
  reason?: InputMaybe<Scalars['String']['input']>;
73248
73741
  };
73249
73742
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73743
+ export type MutationTecRunLessonCodeArgs = {
73744
+ input: TecRunLessonCodeInput;
73745
+ };
73746
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73250
73747
  export type MutationTecScoreTeamArgs = {
73251
73748
  id: Scalars['ID']['input'];
73252
73749
  score: Scalars['Int']['input'];
@@ -73261,6 +73758,11 @@ export type MutationTecStartJudgingArgs = {
73261
73758
  id: Scalars['ID']['input'];
73262
73759
  };
73263
73760
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73761
+ export type MutationTecSubmitLessonQuizArgs = {
73762
+ answers: Array<Scalars['Int']['input']>;
73763
+ lessonId: Scalars['ID']['input'];
73764
+ };
73765
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73264
73766
  export type MutationTecSubmitProjectArgs = {
73265
73767
  input: TecSubmitProjectInput;
73266
73768
  };
@@ -73327,7 +73829,8 @@ export type MutationTerminateWorkflowArgs = {
73327
73829
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73328
73830
  export type MutationTerminateWorkflowRunArgs = {
73329
73831
  reason?: InputMaybe<Scalars['String']['input']>;
73330
- runId: Scalars['ID']['input'];
73832
+ runId?: InputMaybe<Scalars['ID']['input']>;
73833
+ target?: InputMaybe<RunTargetInput>;
73331
73834
  };
73332
73835
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73333
73836
  export type MutationTestConnectionArgs = {
@@ -73670,6 +74173,10 @@ export type MutationUninstallRemoteAgentArgs = {
73670
74173
  sshTargetId: Scalars['ID']['input'];
73671
74174
  };
73672
74175
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
74176
+ export type MutationUninstallTimeCampusAppletArgs = {
74177
+ key: Scalars['ID']['input'];
74178
+ };
74179
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
73673
74180
  export type MutationUninstallWidgetTypeArgs = {
73674
74181
  input: BigConsoleUninstallWidgetTypeInput;
73675
74182
  };
@@ -75344,6 +75851,16 @@ export type MutationUpdateSecurityFindingStatusArgs = {
75344
75851
  status: SecurityFindingStatus;
75345
75852
  };
75346
75853
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
75854
+ export type MutationUpdateServiceOfferingArgs = {
75855
+ id: Scalars['ID']['input'];
75856
+ input: MtwUpdateServiceOfferingInput;
75857
+ };
75858
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
75859
+ export type MutationUpdateServiceProviderArgs = {
75860
+ id: Scalars['ID']['input'];
75861
+ input: MtwUpdateServiceProviderInput;
75862
+ };
75863
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
75347
75864
  export type MutationUpdateSessionArgs = {
75348
75865
  id: Scalars['ID']['input'];
75349
75866
  input: UpdateSessionInput;
@@ -75441,6 +75958,11 @@ export type MutationUpdateTemplateShareRoleArgs = {
75441
75958
  input: UpdateShareRoleInput;
75442
75959
  };
75443
75960
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
75961
+ export type MutationUpdateTimeCampusCaptureChannelArgs = {
75962
+ id: Scalars['ID']['input'];
75963
+ input: TimeCampusUpdateCaptureChannelInput;
75964
+ };
75965
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
75444
75966
  export type MutationUpdateTimeCampusFocusPreferencesArgs = {
75445
75967
  input: TimeCampusFocusPreferencesInput;
75446
75968
  };
@@ -75449,6 +75971,10 @@ export type MutationUpdateTimeCampusInvoiceStatusArgs = {
75449
75971
  input: UpdateTimeCampusInvoiceStatusInput;
75450
75972
  };
75451
75973
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
75974
+ export type MutationUpdateTimeCampusMyWidgetLayoutArgs = {
75975
+ widgetKeys: Array<Scalars['String']['input']>;
75976
+ };
75977
+ /** Base Mutation type with placeholder field. Extended by individual mutation files. */
75452
75978
  export type MutationUpdateTimeCampusProjectArgs = {
75453
75979
  id: Scalars['ID']['input'];
75454
75980
  input: UpdateTimeCampusProjectInput;
@@ -75931,6 +76457,7 @@ export type MutationWorkerRecordRunAiInvocationsArgs = {
75931
76457
  };
75932
76458
  /** Base Mutation type with placeholder field. Extended by individual mutation files. */
75933
76459
  export type MutationWorkerRecordWorkflowTaskHeartbeatArgs = {
76460
+ localActivities?: InputMaybe<Array<WorkflowTaskLocalActivityInput>>;
75934
76461
  runId: Scalars['ID']['input'];
75935
76462
  taskId: Scalars['ID']['input'];
75936
76463
  };
@@ -89474,6 +90001,7 @@ export type Query = {
89474
90001
  /** Bulk-import preview: validate serials for a SKU without registering them. */
89475
90002
  manValidateMaterialSerials: ManSerialEntryReport;
89476
90003
  manWorkCenter?: Maybe<ManWorkCenter>;
90004
+ marketplaceStats: MtwMarketplaceStats;
89477
90005
  /** Where MCP clients reach this workspace's tools. */
89478
90006
  mcpEndpoint: McpEndpointInfo;
89479
90007
  /** Workflows and connector operations opted in as MCP tools. */
@@ -89544,6 +90072,7 @@ export type Query = {
89544
90072
  mtwReuseProposalPage: MtwReuseProposalPage;
89545
90073
  mtwReuseReservationPage: MtwReuseReservationPage;
89546
90074
  mtwReuseReservationTransitionPage: MtwReuseReservationTransitionPage;
90075
+ mtwShipmentRiskForecast: MtwRiskForecast;
89547
90076
  mtwStockBindingAssessment: MtwStockBindingAssessment;
89548
90077
  mtwStockBindingAssessmentPage: MtwStockBindingAssessmentPage;
89549
90078
  mtwStockObservation: MtwStockObservation;
@@ -89626,6 +90155,10 @@ export type Query = {
89626
90155
  /** Credentials shared with the calling actor (across all workspaces). */
89627
90156
  mySharedCredentials: SecretShareList;
89628
90157
  mySourceConsents: Array<TimeCampusSourceConsent>;
90158
+ /** One of the calling user's capture channels. */
90159
+ myTimeCampusCaptureChannel: TimeCampusCaptureChannel;
90160
+ /** The calling user's capture channels, newest first. Disconnected channels are included unless excluded. */
90161
+ myTimeCampusCaptureChannels: Array<TimeCampusCaptureChannel>;
89629
90162
  myTimeWellSpent: TimeCampusTimeWellSpent;
89630
90163
  myVibeLlmContextPreview: VibeLlmContextPreview;
89631
90164
  myVibeLlmContextSettings: VibeLlmContextSettings;
@@ -90333,6 +90866,11 @@ export type Query = {
90333
90866
  semQueryRun?: Maybe<SemQueryRun>;
90334
90867
  /** The governed result rows of a SUCCEEDED query run, paginated with pagination.limit (default 100, max 500) and pagination.offset (use the previous page's nextOffset). Only the actor the run executed for can read its rows: they are the output of that actor's access-policy evaluation. Any other caller gets NOT_FOUND. */
90335
90868
  semQueryRunResult: SemQueryRunResult;
90869
+ serviceOffering?: Maybe<MtwServiceOffering>;
90870
+ serviceOfferings: Array<MtwServiceOffering>;
90871
+ serviceProvider?: Maybe<MtwServiceProvider>;
90872
+ serviceProviders: Array<MtwServiceProvider>;
90873
+ serviceProvidersCount: Scalars['Int']['output'];
90336
90874
  /** Get specific session by ID */
90337
90875
  session?: Maybe<Session>;
90338
90876
  /** Get active collaborators for a session */
@@ -90460,10 +90998,18 @@ export type Query = {
90460
90998
  teamWorkPatterns: Array<TeamWorkPatternEntry>;
90461
90999
  /** Preview the cost of a session with a mentor before booking it -- does not create anything. Read access mirrors tecMentor (reading the mentor's rate). */
90462
91000
  tecCalculateSessionCost: TecSessionCostEstimate;
91001
+ /** A single certificate by id, for the instructor/admin view (BOFF-3863). Same "list-all" gating as tecListCertificates. A learner reading their own certificate must use tecMyCertificate instead. */
91002
+ tecCertificate?: Maybe<TecCertificate>;
90463
91003
  tecCourse?: Maybe<TecCourse>;
91004
+ /** A single enrollment by id, for the instructor/admin view (BOFF-3863). Gated behind "list-all" like tecListEnrollments, because it can return any learner's enrollment. A learner reading their own enrollment must use tecMyEnrollment instead. Returns null for an id outside the workspace. */
91005
+ tecEnrollment?: Maybe<TecEnrollment>;
90464
91006
  tecHackathon?: Maybe<TecHackathon>;
90465
91007
  /** Liveness/identity probe for the Technospam subgraph. */
90466
91008
  tecHealth: Scalars['String']['output'];
91009
+ /** A single lesson by id (BOFF-3863). Same read gate as tecListLessons; premium-gated lesson content is still locked by the TecLesson field resolvers. Returns null for an id outside the caller's workspace. */
91010
+ tecLesson?: Maybe<TecLesson>;
91011
+ /** Lesson-author view of a QUIZ lesson including the answer key (BOFF-4107). Gated on technospam-lesson update, the same permission that edits it, so a learner can never read the key. Empty for a lesson without a quiz. */
91012
+ tecLessonQuizKey: Array<TecQuizQuestionKey>;
90467
91013
  /** Cross-learner, instructor/admin view of certificates — same "list-all" gating as tecListEnrollments. A learner viewing their own certificates must use tecMyCertificates instead. */
90468
91014
  tecListCertificates: Array<TecCertificate>;
90469
91015
  tecListCourses: TecCourseConnection;
@@ -90485,8 +91031,12 @@ export type Query = {
90485
91031
  tecListSubmissions: TecSubmissionConnection;
90486
91032
  tecListTeams: TecHackathonTeamConnection;
90487
91033
  tecMentor?: Maybe<TecMentor>;
91034
+ /** One of the calling learner's own certificates (BOFF-3863). Self-scoped (Type B): owner-filtered by the authenticated actor; null otherwise. */
91035
+ tecMyCertificate?: Maybe<TecCertificate>;
90488
91036
  /** The calling learner's own certificates. Self-scoped (Type C): identity comes from the authenticated actor, never from a client-supplied argument — the resolver forces learnerId = ctx.actor.id server-side. */
90489
91037
  tecMyCertificates: Array<TecCertificate>;
91038
+ /** One of the calling learner's own enrollments (BOFF-3863). Self-scoped (Type B): the id is a client argument, but the resolver owner-filters by the authenticated actor and returns null for an enrollment that does not exist or belongs to someone else, so existence is never leaked. */
91039
+ tecMyEnrollment?: Maybe<TecEnrollment>;
90490
91040
  /** The calling learner's own enrollments. Self-scoped (Type C): identity comes from the authenticated actor, never from a client-supplied argument — the resolver forces learnerId = ctx.actor.id server-side. */
90491
91041
  tecMyEnrollments: TecEnrollmentConnection;
90492
91042
  /** Return the most recent acceptance of each type for the calling actor in the current workspace. Self-scoped: result is always filtered by ctx.actorId. */
@@ -90495,17 +91045,29 @@ export type Query = {
90495
91045
  tecMyPayouts: TecMentorPayoutConnection;
90496
91046
  /** The calling learner's own portfolio. Self-scoped (Type C). Get-or-create: auto-provisions an (unpublished) portfolio the first time a learner touches this surface, so the client never has to branch on "no portfolio yet". */
90497
91047
  tecMyPortfolio: TecPortfolio;
91048
+ /** A session the calling actor takes part in (BOFF-3863), as mentee directly or as mentor via their TecMentor profile, mirroring tecMySessions. Self-scoped (Type B): returns null for any other session. */
91049
+ tecMySession?: Maybe<TecMentorSession>;
90498
91050
  /** The calling actor's own sessions — as mentee directly, or as mentor via their TecMentor profile. Self-scoped (Type C): identity comes from the authenticated actor, never from a client-supplied mentorId/menteeId — the resolver filters server-side. */
90499
91051
  tecMySessions: TecMentorSessionConnection;
90500
91052
  /** A single plan owned by the calling learner. Self-scoped (Type B): the id is a client argument, but the resolver owner-filters by `learnerId = ctx.actor.id` and throws NOT_FOUND (never FORBIDDEN) for a plan belonging to someone else -- never leaking whether it exists. */
90501
91053
  tecMyStudyPlan?: Maybe<TecStudyPlan>;
90502
91054
  /** The calling learner's own study plans. Self-scoped (Type C): identity comes from the authenticated actor, never from a client-supplied argument. */
90503
91055
  tecMyStudyPlans: TecStudyPlanConnection;
91056
+ /** One of the calling learner's own submissions (BOFF-3863). Self-scoped (Type B): the id is a client argument, but the resolver owner-filters by the authenticated actor and returns null for a submission that does not exist or belongs to someone else. */
91057
+ tecMySubmission?: Maybe<TecSubmission>;
91058
+ /** The stored review of one of the calling learner's own submissions, or null when none has been requested yet. Self-scoped (Type B): owner-filtered by the authenticated actor; another learner's submission resolves to null. */
91059
+ tecMySubmissionReview?: Maybe<TecSubmissionReview>;
90504
91060
  /** The calling learner's own submissions. Self-scoped (Type C — RBAC guide §"scopeType: self"): identity comes from the authenticated actor, never from a client-supplied argument. The resolver forces learnerId = ctx.actor.id server-side. Available to every authenticated workspace member, including a plain Viewer — no elevated permission required. */
90505
91061
  tecMySubmissions: TecSubmissionConnection;
90506
91062
  tecProblem?: Maybe<TecProblem>;
90507
91063
  /** Public, unauthenticated read of a published portfolio by its shareable slug. Returns null for an unknown slug or an unpublished portfolio -- never distinguishes the two, so a guessed slug cannot be used to probe for the existence of an unpublished portfolio. */
90508
91064
  tecPublicPortfolio?: Maybe<TecPublicPortfolio>;
91065
+ /** A single mentoring session by id, for the instructor/admin view (BOFF-3863). Same "list-all" gating as tecListSessions. A mentor or mentee reading their own session must use tecMySession instead. */
91066
+ tecSession?: Maybe<TecMentorSession>;
91067
+ /** A single submission by id, for the instructor/admin view (BOFF-3863). Same "list-all" gating as tecListSubmissions, because it can return any learner's submission. A learner reading their own submission (for example an assistant explaining "why was this rejected?") must use tecMySubmission instead. Returns null for an id outside the workspace. */
91068
+ tecSubmission?: Maybe<TecSubmission>;
91069
+ /** A single hackathon team by id (BOFF-3863). Same read gate as tecListTeams. Returns null for an id outside the caller's workspace. */
91070
+ tecTeam?: Maybe<TecHackathonTeam>;
90509
91071
  testParserExpression: ParserTestResult;
90510
91072
  theAsset?: Maybe<TheAsset>;
90511
91073
  theComplianceCert?: Maybe<TheComplianceCert>;
@@ -90532,6 +91094,9 @@ export type Query = {
90532
91094
  /** The caller's currently ACTIVE focus session, if any. Self-scoped, no arg. */
90533
91095
  timeCampusActiveFocusSession?: Maybe<TimeCampusFocusSession>;
90534
91096
  timeCampusAdminWorkspaceState: TimeCampusAdminWorkspaceState;
91097
+ timeCampusApplet: TimeCampusApplet;
91098
+ /** The applet store with this workspace's install state. */
91099
+ timeCampusApplets: Array<TimeCampusApplet>;
90535
91100
  timeCampusCaptureEvent?: Maybe<TimeCampusCaptureEvent>;
90536
91101
  timeCampusCaptureEvents: TimeCampusCaptureEventListResponse;
90537
91102
  timeCampusDataErasureRequests: Array<TimeCampusDataErasureRequest>;
@@ -90562,12 +91127,20 @@ export type Query = {
90562
91127
  timeCampusInvoices: TimeCampusInvoiceListResponse;
90563
91128
  timeCampusLakeDatasets: Array<TimeCampusLakeDataset>;
90564
91129
  timeCampusLakeRows?: Maybe<TimeCampusLakePage>;
91130
+ /** Self-scoped: the caller's own widget layout (the default until they save one). */
91131
+ timeCampusMyWidgetLayout: TimeCampusWidgetLayout;
90565
91132
  timeCampusProject?: Maybe<TimeCampusProject>;
90566
91133
  timeCampusProjectStats: ProjectStats;
90567
91134
  timeCampusProjects: TimeCampusProjectListResponse;
91135
+ /** Templates applied to this workspace, newest first. */
91136
+ timeCampusTemplateApplications: Array<TimeCampusTemplateApplication>;
90568
91137
  /** The self-assembling timeline: capture events, time entries, meetings, pomodoro sessions, email activity and (on your own timeline) focus sessions and planned focus blocks merged into one chronological, categorized view with an honest summary (focus ratio, context switches). Planned blocks are shown but never counted in the summary. */
90569
91138
  timeCampusTimeline: TimeCampusTimeline;
91139
+ /** The widget catalogue, with which widgets can be placed in this workspace. */
91140
+ timeCampusWidgets: Array<TimeCampusWidget>;
90570
91141
  timeCampusWorkspaceQuotaOverview: TimeCampusWorkspaceQuotaOverview;
91142
+ timeCampusWorkspaceTemplate: TimeCampusWorkspaceTemplate;
91143
+ timeCampusWorkspaceTemplates: Array<TimeCampusWorkspaceTemplate>;
90571
91144
  timeEntries: TimeEntryListResponse;
90572
91145
  timeEntriesByDate: Array<TimeEntry>;
90573
91146
  timeEntry?: Maybe<TimeEntry>;
@@ -90827,7 +91400,7 @@ export type Query = {
90827
91400
  workflowByKey?: Maybe<FluidGridsWorkflow>;
90828
91401
  /** The code bundle of a version; null for a version without code. */
90829
91402
  workflowCodeBundle?: Maybe<WorkflowCodeBundle>;
90830
- /** A hotfix job of this workspace. */
91403
+ /** A hotfix or versioning check job of this workspace. */
90831
91404
  workflowCodeReplace: WorkflowCodeReplaceResult;
90832
91405
  /** The project files of a version's bundle, at most 1 MiB; null for a version without stored sources. */
90833
91406
  workflowCodeSource?: Maybe<WorkflowCodeSource>;
@@ -90895,7 +91468,16 @@ export type Query = {
90895
91468
  workflowPromotionRequests: Array<WorkflowPromotionRequest>;
90896
91469
  /** A workflow proposal started by the current user. Poll while status is PROCESSING. */
90897
91470
  workflowProposal?: Maybe<WorkflowProposal>;
91471
+ /** The rollouts of a workflow (at most one per environment). */
91472
+ workflowRollouts: Array<WorkflowRollout>;
90898
91473
  workflowRun?: Maybe<WorkflowRun>;
91474
+ /**
91475
+ * The latest run of a workflow id (spec code-first 11 §2.1): the newest run of the key that carries
91476
+ * the id, followed along continue-as-new to the end of its chain. `firstRunId` pins the chain
91477
+ * (VALIDATION when the latest run belongs to another one). Null when no run the caller can see has
91478
+ * the id. Durable-function parity: needs fluidgrids.durable-parity.
91479
+ */
91480
+ workflowRunByWorkflowId?: Maybe<WorkflowRun>;
90899
91481
  /** Whether a durable-function run's workflow task is failing, and why. */
90900
91482
  workflowRunDeterminismStatus: WorkflowRunDeterminismStatus;
90901
91483
  /**
@@ -90922,6 +91504,13 @@ export type Query = {
90922
91504
  */
90923
91505
  workflowRunStackTrace: WorkflowRunStackTrace;
90924
91506
  workflowRuns: WorkflowRunListResponse;
91507
+ /**
91508
+ * How many runs the workflowRuns list returns for `filter` (the same filters and the same
91509
+ * visibility; `limit` and `offset` do not apply), in total and per group of at most two
91510
+ * `groupBy` columns, largest groups first (at most 1000). Durable-function parity: needs
91511
+ * fluidgrids.durable-parity.
91512
+ */
91513
+ workflowRunsCount: RunCountResult;
90925
91514
  /** Get a specific scheduled job by ID */
90926
91515
  workflowScheduledJob?: Maybe<WorkflowScheduledJob>;
90927
91516
  /** Get list of scheduled jobs */
@@ -90943,6 +91532,8 @@ export type Query = {
90943
91532
  workflowVariables: WorkflowVariablesListResponse;
90944
91533
  /** Compare the definition JSON of two versions. */
90945
91534
  workflowVersionDiff: WorkflowVersionDiff;
91535
+ /** Whether a version's bundle still serves open runs. */
91536
+ workflowVersionDrainage: DrainageInfo;
90946
91537
  /** Get all versions of a workflow */
90947
91538
  workflowVersions: Array<WorkflowDefinition>;
90948
91539
  /** Get all workflows in the workspace */
@@ -99107,6 +99698,10 @@ export type QueryMtwReuseReservationTransitionPageArgs = {
99107
99698
  reservationId: Scalars['ID']['input'];
99108
99699
  };
99109
99700
  /** Base Query type with placeholder field. Extended by individual query files. */
99701
+ export type QueryMtwShipmentRiskForecastArgs = {
99702
+ shipmentId: Scalars['ID']['input'];
99703
+ };
99704
+ /** Base Query type with placeholder field. Extended by individual query files. */
99110
99705
  export type QueryMtwStockBindingAssessmentArgs = {
99111
99706
  id: Scalars['ID']['input'];
99112
99707
  inventoryItemId: Scalars['ID']['input'];
@@ -99304,6 +99899,14 @@ export type QueryMySourceConsentsArgs = {
99304
99899
  pagination?: InputMaybe<PaginationInput>;
99305
99900
  };
99306
99901
  /** Base Query type with placeholder field. Extended by individual query files. */
99902
+ export type QueryMyTimeCampusCaptureChannelArgs = {
99903
+ id: Scalars['ID']['input'];
99904
+ };
99905
+ /** Base Query type with placeholder field. Extended by individual query files. */
99906
+ export type QueryMyTimeCampusCaptureChannelsArgs = {
99907
+ includeDisconnected?: InputMaybe<Scalars['Boolean']['input']>;
99908
+ };
99909
+ /** Base Query type with placeholder field. Extended by individual query files. */
99307
99910
  export type QueryMyTimeWellSpentArgs = {
99308
99911
  from: Scalars['DateTime']['input'];
99309
99912
  to: Scalars['DateTime']['input'];
@@ -101438,6 +102041,28 @@ export type QuerySemQueryRunResultArgs = {
101438
102041
  runId: Scalars['ID']['input'];
101439
102042
  };
101440
102043
  /** Base Query type with placeholder field. Extended by individual query files. */
102044
+ export type QueryServiceOfferingArgs = {
102045
+ id: Scalars['ID']['input'];
102046
+ };
102047
+ /** Base Query type with placeholder field. Extended by individual query files. */
102048
+ export type QueryServiceOfferingsArgs = {
102049
+ filter?: InputMaybe<MtwServiceOfferingFilterInput>;
102050
+ pagination?: InputMaybe<PaginationInput>;
102051
+ };
102052
+ /** Base Query type with placeholder field. Extended by individual query files. */
102053
+ export type QueryServiceProviderArgs = {
102054
+ id: Scalars['ID']['input'];
102055
+ };
102056
+ /** Base Query type with placeholder field. Extended by individual query files. */
102057
+ export type QueryServiceProvidersArgs = {
102058
+ filter?: InputMaybe<MtwServiceProviderFilterInput>;
102059
+ pagination?: InputMaybe<PaginationInput>;
102060
+ };
102061
+ /** Base Query type with placeholder field. Extended by individual query files. */
102062
+ export type QueryServiceProvidersCountArgs = {
102063
+ filter?: InputMaybe<MtwServiceProviderFilterInput>;
102064
+ };
102065
+ /** Base Query type with placeholder field. Extended by individual query files. */
101441
102066
  export type QuerySessionArgs = {
101442
102067
  id: Scalars['ID']['input'];
101443
102068
  };
@@ -101829,14 +102454,30 @@ export type QueryTecCalculateSessionCostArgs = {
101829
102454
  mentorId: Scalars['ID']['input'];
101830
102455
  };
101831
102456
  /** Base Query type with placeholder field. Extended by individual query files. */
102457
+ export type QueryTecCertificateArgs = {
102458
+ id: Scalars['ID']['input'];
102459
+ };
102460
+ /** Base Query type with placeholder field. Extended by individual query files. */
101832
102461
  export type QueryTecCourseArgs = {
101833
102462
  id: Scalars['ID']['input'];
101834
102463
  };
101835
102464
  /** Base Query type with placeholder field. Extended by individual query files. */
102465
+ export type QueryTecEnrollmentArgs = {
102466
+ id: Scalars['ID']['input'];
102467
+ };
102468
+ /** Base Query type with placeholder field. Extended by individual query files. */
101836
102469
  export type QueryTecHackathonArgs = {
101837
102470
  id: Scalars['ID']['input'];
101838
102471
  };
101839
102472
  /** Base Query type with placeholder field. Extended by individual query files. */
102473
+ export type QueryTecLessonArgs = {
102474
+ id: Scalars['ID']['input'];
102475
+ };
102476
+ /** Base Query type with placeholder field. Extended by individual query files. */
102477
+ export type QueryTecLessonQuizKeyArgs = {
102478
+ lessonId: Scalars['ID']['input'];
102479
+ };
102480
+ /** Base Query type with placeholder field. Extended by individual query files. */
101840
102481
  export type QueryTecListCertificatesArgs = {
101841
102482
  courseId?: InputMaybe<Scalars['ID']['input']>;
101842
102483
  learnerId?: InputMaybe<Scalars['ID']['input']>;
@@ -101920,11 +102561,19 @@ export type QueryTecMentorArgs = {
101920
102561
  id: Scalars['ID']['input'];
101921
102562
  };
101922
102563
  /** Base Query type with placeholder field. Extended by individual query files. */
102564
+ export type QueryTecMyCertificateArgs = {
102565
+ id: Scalars['ID']['input'];
102566
+ };
102567
+ /** Base Query type with placeholder field. Extended by individual query files. */
101923
102568
  export type QueryTecMyCertificatesArgs = {
101924
102569
  courseId?: InputMaybe<Scalars['ID']['input']>;
101925
102570
  pagination?: InputMaybe<PaginationInput>;
101926
102571
  };
101927
102572
  /** Base Query type with placeholder field. Extended by individual query files. */
102573
+ export type QueryTecMyEnrollmentArgs = {
102574
+ id: Scalars['ID']['input'];
102575
+ };
102576
+ /** Base Query type with placeholder field. Extended by individual query files. */
101928
102577
  export type QueryTecMyEnrollmentsArgs = {
101929
102578
  courseId?: InputMaybe<Scalars['ID']['input']>;
101930
102579
  endDate?: InputMaybe<Scalars['DateTime']['input']>;
@@ -101937,6 +102586,10 @@ export type QueryTecMyPayoutsArgs = {
101937
102586
  status?: InputMaybe<TecPayoutStatus>;
101938
102587
  };
101939
102588
  /** Base Query type with placeholder field. Extended by individual query files. */
102589
+ export type QueryTecMySessionArgs = {
102590
+ id: Scalars['ID']['input'];
102591
+ };
102592
+ /** Base Query type with placeholder field. Extended by individual query files. */
101940
102593
  export type QueryTecMySessionsArgs = {
101941
102594
  pagination?: InputMaybe<PaginationInput>;
101942
102595
  status?: InputMaybe<TecSessionStatus>;
@@ -101950,6 +102603,14 @@ export type QueryTecMyStudyPlansArgs = {
101950
102603
  pagination?: InputMaybe<PaginationInput>;
101951
102604
  };
101952
102605
  /** Base Query type with placeholder field. Extended by individual query files. */
102606
+ export type QueryTecMySubmissionArgs = {
102607
+ id: Scalars['ID']['input'];
102608
+ };
102609
+ /** Base Query type with placeholder field. Extended by individual query files. */
102610
+ export type QueryTecMySubmissionReviewArgs = {
102611
+ submissionId: Scalars['ID']['input'];
102612
+ };
102613
+ /** Base Query type with placeholder field. Extended by individual query files. */
101953
102614
  export type QueryTecMySubmissionsArgs = {
101954
102615
  endDate?: InputMaybe<Scalars['DateTime']['input']>;
101955
102616
  pagination?: InputMaybe<PaginationInput>;
@@ -101965,6 +102626,18 @@ export type QueryTecPublicPortfolioArgs = {
101965
102626
  slug: Scalars['String']['input'];
101966
102627
  };
101967
102628
  /** Base Query type with placeholder field. Extended by individual query files. */
102629
+ export type QueryTecSessionArgs = {
102630
+ id: Scalars['ID']['input'];
102631
+ };
102632
+ /** Base Query type with placeholder field. Extended by individual query files. */
102633
+ export type QueryTecSubmissionArgs = {
102634
+ id: Scalars['ID']['input'];
102635
+ };
102636
+ /** Base Query type with placeholder field. Extended by individual query files. */
102637
+ export type QueryTecTeamArgs = {
102638
+ id: Scalars['ID']['input'];
102639
+ };
102640
+ /** Base Query type with placeholder field. Extended by individual query files. */
101968
102641
  export type QueryTestParserExpressionArgs = {
101969
102642
  input: TestParserInput;
101970
102643
  };
@@ -102073,6 +102746,14 @@ export type QueryTimeCampusAdminWorkspaceStateArgs = {
102073
102746
  workspaceId: Scalars['ID']['input'];
102074
102747
  };
102075
102748
  /** Base Query type with placeholder field. Extended by individual query files. */
102749
+ export type QueryTimeCampusAppletArgs = {
102750
+ key: Scalars['ID']['input'];
102751
+ };
102752
+ /** Base Query type with placeholder field. Extended by individual query files. */
102753
+ export type QueryTimeCampusAppletsArgs = {
102754
+ filter?: InputMaybe<TimeCampusAppletFilterInput>;
102755
+ };
102756
+ /** Base Query type with placeholder field. Extended by individual query files. */
102076
102757
  export type QueryTimeCampusCaptureEventArgs = {
102077
102758
  id: Scalars['ID']['input'];
102078
102759
  };
@@ -102168,6 +102849,10 @@ export type QueryTimeCampusProjectsArgs = {
102168
102849
  pagination?: InputMaybe<PaginationInput>;
102169
102850
  };
102170
102851
  /** Base Query type with placeholder field. Extended by individual query files. */
102852
+ export type QueryTimeCampusTemplateApplicationsArgs = {
102853
+ pagination?: InputMaybe<PaginationInput>;
102854
+ };
102855
+ /** Base Query type with placeholder field. Extended by individual query files. */
102171
102856
  export type QueryTimeCampusTimelineArgs = {
102172
102857
  from: Scalars['DateTime']['input'];
102173
102858
  to: Scalars['DateTime']['input'];
@@ -102178,6 +102863,14 @@ export type QueryTimeCampusWorkspaceQuotaOverviewArgs = {
102178
102863
  workspaceId: Scalars['ID']['input'];
102179
102864
  };
102180
102865
  /** Base Query type with placeholder field. Extended by individual query files. */
102866
+ export type QueryTimeCampusWorkspaceTemplateArgs = {
102867
+ key: Scalars['ID']['input'];
102868
+ };
102869
+ /** Base Query type with placeholder field. Extended by individual query files. */
102870
+ export type QueryTimeCampusWorkspaceTemplatesArgs = {
102871
+ category?: InputMaybe<TimeCampusTemplateCategory>;
102872
+ };
102873
+ /** Base Query type with placeholder field. Extended by individual query files. */
102181
102874
  export type QueryTimeEntriesArgs = {
102182
102875
  filter?: InputMaybe<TimeEntryFilterInput>;
102183
102876
  orderBy?: InputMaybe<TimeEntryOrderByInput>;
@@ -102796,10 +103489,20 @@ export type QueryWorkflowProposalArgs = {
102796
103489
  id: Scalars['ID']['input'];
102797
103490
  };
102798
103491
  /** Base Query type with placeholder field. Extended by individual query files. */
103492
+ export type QueryWorkflowRolloutsArgs = {
103493
+ workflowKey: Scalars['String']['input'];
103494
+ };
103495
+ /** Base Query type with placeholder field. Extended by individual query files. */
102799
103496
  export type QueryWorkflowRunArgs = {
102800
103497
  id: Scalars['ID']['input'];
102801
103498
  };
102802
103499
  /** Base Query type with placeholder field. Extended by individual query files. */
103500
+ export type QueryWorkflowRunByWorkflowIdArgs = {
103501
+ firstRunId?: InputMaybe<Scalars['ID']['input']>;
103502
+ workflowId: Scalars['String']['input'];
103503
+ workflowKey: Scalars['String']['input'];
103504
+ };
103505
+ /** Base Query type with placeholder field. Extended by individual query files. */
102803
103506
  export type QueryWorkflowRunDeterminismStatusArgs = {
102804
103507
  runId: Scalars['ID']['input'];
102805
103508
  };
@@ -102811,7 +103514,8 @@ export type QueryWorkflowRunHierarchyArgs = {
102811
103514
  export type QueryWorkflowRunHistoryArgs = {
102812
103515
  after?: InputMaybe<Scalars['Int']['input']>;
102813
103516
  limit?: InputMaybe<Scalars['Int']['input']>;
102814
- runId: Scalars['ID']['input'];
103517
+ runId?: InputMaybe<Scalars['ID']['input']>;
103518
+ target?: InputMaybe<RunTargetInput>;
102815
103519
  };
102816
103520
  /** Base Query type with placeholder field. Extended by individual query files. */
102817
103521
  export type QueryWorkflowRunLogsArgs = {
@@ -102826,13 +103530,20 @@ export type QueryWorkflowRunLogsArgs = {
102826
103530
  /** Base Query type with placeholder field. Extended by individual query files. */
102827
103531
  export type QueryWorkflowRunStackTraceArgs = {
102828
103532
  enhanced?: InputMaybe<Scalars['Boolean']['input']>;
102829
- runId: Scalars['ID']['input'];
103533
+ metadata?: InputMaybe<Scalars['Boolean']['input']>;
103534
+ runId?: InputMaybe<Scalars['ID']['input']>;
103535
+ target?: InputMaybe<RunTargetInput>;
102830
103536
  };
102831
103537
  /** Base Query type with placeholder field. Extended by individual query files. */
102832
103538
  export type QueryWorkflowRunsArgs = {
102833
103539
  input: ListWorkflowRunsInput;
102834
103540
  };
102835
103541
  /** Base Query type with placeholder field. Extended by individual query files. */
103542
+ export type QueryWorkflowRunsCountArgs = {
103543
+ filter?: InputMaybe<ListWorkflowRunsInput>;
103544
+ groupBy?: InputMaybe<Array<RunGroupBy>>;
103545
+ };
103546
+ /** Base Query type with placeholder field. Extended by individual query files. */
102836
103547
  export type QueryWorkflowScheduledJobArgs = {
102837
103548
  jobId: Scalars['ID']['input'];
102838
103549
  };
@@ -102872,6 +103583,11 @@ export type QueryWorkflowVersionDiffArgs = {
102872
103583
  workflowKey: Scalars['String']['input'];
102873
103584
  };
102874
103585
  /** Base Query type with placeholder field. Extended by individual query files. */
103586
+ export type QueryWorkflowVersionDrainageArgs = {
103587
+ version: Scalars['String']['input'];
103588
+ workflowKey: Scalars['String']['input'];
103589
+ };
103590
+ /** Base Query type with placeholder field. Extended by individual query files. */
102875
103591
  export type QueryWorkflowVersionsArgs = {
102876
103592
  workflowKey: Scalars['String']['input'];
102877
103593
  };
@@ -105141,6 +105857,41 @@ export declare enum RuleRunMode {
105141
105857
  Manual = "MANUAL",
105142
105858
  Realtime = "REALTIME"
105143
105859
  }
105860
+ /**
105861
+ * The completion callback of a run started with `completionCallbackUrl` (spec code-first 11 §2.32).
105862
+ * The headers and the signing secret are never returned.
105863
+ */
105864
+ export type RunCallbackDelivery = {
105865
+ __typename?: 'RunCallbackDelivery';
105866
+ attempts: Scalars['Int']['output'];
105867
+ deliveredAt?: Maybe<Scalars['DateTime']['output']>;
105868
+ lastAttemptAt?: Maybe<Scalars['DateTime']['output']>;
105869
+ lastError?: Maybe<Scalars['String']['output']>;
105870
+ lastStatusCode?: Maybe<Scalars['Int']['output']>;
105871
+ nextAttemptAt?: Maybe<Scalars['DateTime']['output']>;
105872
+ /** PENDING (the run is open, or the next attempt is due), DELIVERING, DELIVERED or FAILED. */
105873
+ status: Scalars['String']['output'];
105874
+ /** The callback URL without its user info and query. */
105875
+ url: Scalars['String']['output'];
105876
+ };
105877
+ /** One group of workflowRunsCount. */
105878
+ export type RunCountGroup = {
105879
+ __typename?: 'RunCountGroup';
105880
+ count: Scalars['Int']['output'];
105881
+ /** The group's values joined by `/`, a missing value as an empty string. */
105882
+ key: Scalars['String']['output'];
105883
+ /** The group's value for each `groupBy` column, in order; null when the run has none. */
105884
+ values: Array<Maybe<Scalars['String']['output']>>;
105885
+ };
105886
+ /** The outcome of workflowRunsCount. */
105887
+ export type RunCountResult = {
105888
+ __typename?: 'RunCountResult';
105889
+ groups: Array<RunCountGroup>;
105890
+ /** More than 1000 groups matched; the smallest were left out. */
105891
+ groupsTruncated: Scalars['Boolean']['output'];
105892
+ /** Every run the list returns for the filter. */
105893
+ total: Scalars['Int']['output'];
105894
+ };
105144
105895
  /** What a person should do about a cluster of failures. */
105145
105896
  export declare enum RunFailureBucket {
105146
105897
  /** A node is missing a setting or has an invalid one. */
@@ -105278,6 +106029,17 @@ export type RunFromNodeInput = {
105278
106029
  /** The earlier run to reuse upstream node outputs from. */
105279
106030
  sourceRunId: Scalars['ID']['input'];
105280
106031
  };
106032
+ /**
106033
+ * A column workflowRunsCount groups by (spec code-first 11 §2.34). Durable-function parity: needs
106034
+ * fluidgrids.durable-parity.
106035
+ */
106036
+ export declare enum RunGroupBy {
106037
+ ExecutionKind = "EXECUTION_KIND",
106038
+ Status = "STATUS",
106039
+ /** The run's task queue; graph runs have none and fall in the group with an empty key. */
106040
+ TaskQueue = "TASK_QUEUE",
106041
+ WorkflowKey = "WORKFLOW_KEY"
106042
+ }
105281
106043
  /** Severity of a run log line. */
105282
106044
  export declare enum RunLogLevel {
105283
106045
  Debug = "DEBUG",
@@ -105356,6 +106118,72 @@ export declare enum RunMode {
105356
106118
  Production = "PRODUCTION",
105357
106119
  Test = "TEST"
105358
106120
  }
106121
+ /**
106122
+ * An open activity of a run (WorkflowRun.pending). For a durable-function run, one activity the code
106123
+ * scheduled: SCHEDULED (waiting for a worker or for its next attempt, `nextAttemptAt`), STARTED or
106124
+ * CANCEL_REQUESTED. For a graph run, one node that is running or waiting.
106125
+ */
106126
+ export type RunPendingActivity = {
106127
+ __typename?: 'RunPendingActivity';
106128
+ activityId: Scalars['ID']['output'];
106129
+ /** The node type the activity runs (a graph run: the node's type). */
106130
+ activityType: Scalars['String']['output'];
106131
+ /** The attempt in flight or due next, 1-based. */
106132
+ attempt: Scalars['Int']['output'];
106133
+ /** The last heartbeat's details, following the run's privacy settings. */
106134
+ heartbeatDetails?: Maybe<Scalars['JSON']['output']>;
106135
+ /** The last attempt's failure, following the run's privacy settings. */
106136
+ lastFailure?: Maybe<Scalars['JSON']['output']>;
106137
+ lastHeartbeatAt?: Maybe<Scalars['DateTime']['output']>;
106138
+ lastStartedAt?: Maybe<Scalars['DateTime']['output']>;
106139
+ /** Null when the retry policy sets no limit. */
106140
+ maxAttempts?: Maybe<Scalars['Int']['output']>;
106141
+ nextAttemptAt?: Maybe<Scalars['DateTime']['output']>;
106142
+ scheduledAt?: Maybe<Scalars['DateTime']['output']>;
106143
+ state: Scalars['String']['output'];
106144
+ summary?: Maybe<Scalars['String']['output']>;
106145
+ };
106146
+ /** An open child run (WorkflowRun.pending). */
106147
+ export type RunPendingChild = {
106148
+ __typename?: 'RunPendingChild';
106149
+ runId: Scalars['ID']['output'];
106150
+ startedAt?: Maybe<Scalars['DateTime']['output']>;
106151
+ status: RunStatus;
106152
+ version: Scalars['String']['output'];
106153
+ workflowKey: Scalars['String']['output'];
106154
+ };
106155
+ /**
106156
+ * What a run is waiting on (spec code-first 11 §2.34), at most 200 entries per list. Updates are
106157
+ * Phase C. Empty for a closed run.
106158
+ */
106159
+ export type RunPendingState = {
106160
+ __typename?: 'RunPendingState';
106161
+ activities: Array<RunPendingActivity>;
106162
+ /** Signals kept for a Wait for Signal node that has not parked yet (graph runs). */
106163
+ bufferedSignals: Scalars['Int']['output'];
106164
+ children: Array<RunPendingChild>;
106165
+ timers: Array<RunPendingTimer>;
106166
+ /** Null for a graph run, or when no workflow task is open. */
106167
+ workflowTask?: Maybe<RunPendingWorkflowTask>;
106168
+ };
106169
+ /** A pending timer (WorkflowRun.pending); for a graph run, a Wait node with a resume time. */
106170
+ export type RunPendingTimer = {
106171
+ __typename?: 'RunPendingTimer';
106172
+ fireAt: Scalars['DateTime']['output'];
106173
+ summary?: Maybe<Scalars['String']['output']>;
106174
+ timerId: Scalars['ID']['output'];
106175
+ };
106176
+ /** The open workflow task of a durable-function run (WorkflowRun.pending). */
106177
+ export type RunPendingWorkflowTask = {
106178
+ __typename?: 'RunPendingWorkflowTask';
106179
+ /** Attempts of the current failure streak (0 before the first start). */
106180
+ attempt: Scalars['Int']['output'];
106181
+ /** Why the last attempt failed, while the task is failing. */
106182
+ failureCause?: Maybe<WorkflowTaskFailureCause>;
106183
+ startedAt?: Maybe<Scalars['DateTime']['output']>;
106184
+ /** SCHEDULED, STARTED or BACKOFF (a failed attempt waiting for its retry). */
106185
+ state?: Maybe<Scalars['String']['output']>;
106186
+ };
105359
106187
  export type RunSandboxScriptInput = {
105360
106188
  context: ContextInput;
105361
106189
  /** bash | sh | python | node */
@@ -105373,6 +106201,19 @@ export declare enum RunStatus {
105373
106201
  Terminated = "TERMINATED",
105374
106202
  Waiting = "WAITING"
105375
106203
  }
106204
+ /**
106205
+ * A run named by id, or by workflow id: `{ workflowKey, workflowId }` reaches the latest run of the
106206
+ * chain (following continue-as-new), and `firstRunId` refuses with VALIDATION when that chain is
106207
+ * another one. Give either `runId` or `workflowKey` with `workflowId`. Durable-function parity: needs
106208
+ * fluidgrids.durable-parity.
106209
+ */
106210
+ export type RunTargetInput = {
106211
+ firstRunId?: InputMaybe<Scalars['ID']['input']>;
106212
+ runId?: InputMaybe<Scalars['ID']['input']>;
106213
+ /** The workflow id (the run's businessId). */
106214
+ workflowId?: InputMaybe<Scalars['String']['input']>;
106215
+ workflowKey?: InputMaybe<Scalars['String']['input']>;
106216
+ };
105376
106217
  /**
105377
106218
  * Coarse trigger-type filter for the Runs screen (BOFF-7519). Derived from a
105378
106219
  * run's `context` at query time (see `WorkflowRunProvider.runTriggerTypeWhere`)
@@ -105388,6 +106229,33 @@ export declare enum RunTriggerType {
105388
106229
  /** Started by an inbound webhook delivery. */
105389
106230
  Webhook = "WEBHOOK"
105390
106231
  }
106232
+ /** Which bundle a durable-function run uses (spec code-first 11 §2.27). */
106233
+ export type RunVersioning = {
106234
+ __typename?: 'RunVersioning';
106235
+ /** The behaviour the run follows now: its override, else its own behaviour. */
106236
+ behavior: VersioningBehavior;
106237
+ buildId?: Maybe<Scalars['String']['output']>;
106238
+ /**
106239
+ * AUTO_UPGRADE: the ACTIVE version the run does not move back to, because it upgraded past it
106240
+ * (through a rollout, or a verified override) and that version's bundle never replayed it. It moves
106241
+ * again once another version is activated, or a rollout check takes it on.
106242
+ */
106243
+ heldFromVersion?: Maybe<Scalars['String']['output']>;
106244
+ override?: Maybe<RunVersioningOverride>;
106245
+ /** An override change waiting for its replay check (poll workflowCodeReplace with its id). */
106246
+ pendingOverride?: Maybe<WorkflowCodeReplaceResult>;
106247
+ /** The version whose bundle serves the run: the one it started on unless an upgrade or a pin moved it. */
106248
+ servingVersion: Scalars['String']['output'];
106249
+ /** The behaviour the run started with; null for runs started without durable-function parity (PINNED). */
106250
+ startBehavior?: Maybe<VersioningBehavior>;
106251
+ };
106252
+ /** A run's versioning override (spec code-first 11 §2.27). */
106253
+ export type RunVersioningOverride = {
106254
+ __typename?: 'RunVersioningOverride';
106255
+ behavior: VersioningBehavior;
106256
+ /** PINNED: the version whose bundle the run is pinned to. */
106257
+ version?: Maybe<Scalars['String']['output']>;
106258
+ };
105391
106259
  export type RunningTimer = {
105392
106260
  __typename?: 'RunningTimer';
105393
106261
  elapsedSeconds: Scalars['Int']['output'];
@@ -109228,6 +110096,33 @@ export type StartTimerInput = {
109228
110096
  };
109229
110097
  /** Start a durable-function run of one workflow function of a version's code bundle. */
109230
110098
  export type StartWorkflowInput = {
110099
+ /** Extra request headers of the callback: an object of strings, at most 16 KiB. Write-only. Parity. */
110100
+ completionCallbackHeaders?: InputMaybe<Scalars['JSON']['input']>;
110101
+ /**
110102
+ * The HMAC-SHA256 key of the callback's `x-fluidgrids-signature` header (`sha256=<hex>` of the
110103
+ * body), 16 to 512 characters. Write-only. Parity.
110104
+ */
110105
+ completionCallbackSigningSecret?: InputMaybe<Scalars['String']['input']>;
110106
+ /**
110107
+ * POSTed to once the run (the last run of its continue-as-new or retry chain) closes, with the
110108
+ * run's outcome (spec code-first 11 §2.32): retried with a backoff from 30 s to 1 h for 24 hours.
110109
+ * An http(s) URL that passes the HTTP node's outbound rules (no private or internal addresses).
110110
+ * A USE_EXISTING start that returns the open run does not attach it. Parity.
110111
+ */
110112
+ completionCallbackUrl?: InputMaybe<Scalars['String']['input']>;
110113
+ /** The run's memo, read by the code as `ctx.info.context` (an object, at most 64 KiB of JSON). Parity. */
110114
+ context?: InputMaybe<Scalars['JSON']['input']>;
110115
+ /** Markdown shown on the run page (at most 20 KiB). Parity. */
110116
+ details?: InputMaybe<Scalars['String']['input']>;
110117
+ /** Bounds the whole chain under the workflow id (continue-as-new and run retries), as a duration. Parity. */
110118
+ executionTimeout?: InputMaybe<Scalars['String']['input']>;
110119
+ /**
110120
+ * What an open run with the same workflow id does. Parity, like `workflowId`. TERMINATE_EXISTING is
110121
+ * taken only by startWorkflowTerminateExisting (it needs the workflow-run delete permission).
110122
+ */
110123
+ idConflictPolicy?: InputMaybe<WorkflowIdConflictPolicy>;
110124
+ /** What a closed run with the same workflow id allows. Parity, like `workflowId`. */
110125
+ idReusePolicy?: InputMaybe<WorkflowIdReusePolicy>;
109231
110126
  /**
109232
110127
  * Repeating a start with the same key and the same request returns the original run with
109233
110128
  * `existing: true`; the same key with another request is a CONFLICT.
@@ -109235,20 +110130,48 @@ export type StartWorkflowInput = {
109235
110130
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
109236
110131
  /** The function's input, validated against its declared input schema. */
109237
110132
  input?: InputMaybe<Scalars['JSON']['input']>;
110133
+ /** Stored and inherited by children (1 is the highest, 5 the lowest; 3 by default). Parity. */
110134
+ priority?: InputMaybe<Scalars['Int']['input']>;
110135
+ /** Bounds this run; restarts on continue-as-new and on a run retry. A duration. Parity. */
110136
+ runTimeout?: InputMaybe<Scalars['String']['input']>;
109238
110137
  /** Signals appended right after WORKFLOW_STARTED, before the first workflow task (at most 100). */
109239
110138
  signals?: InputMaybe<Array<StartWorkflowSignalInput>>;
110139
+ /**
110140
+ * Wait this long before the first workflow task (at most 30 days): milliseconds, or a duration such
110141
+ * as `30s`, `2m` or `PT2H`. A signal ends the delay at once; a cancel ends the run CANCELLED. Parity.
110142
+ */
110143
+ startDelay?: InputMaybe<Scalars['String']['input']>;
110144
+ /** One line shown in run lists and the run header (at most 200 characters). Parity. */
110145
+ summary?: InputMaybe<Scalars['String']['input']>;
109240
110146
  /** An exact version, an alias, or `active` (the default). */
109241
110147
  version?: InputMaybe<Scalars['String']['input']>;
110148
+ /**
110149
+ * PINNED keeps the run on its version's bundle; AUTO_UPGRADE moves each new workflow task to the
110150
+ * ACTIVE version's bundle (spec code-first 11 §2.27). Default: the function's `workflow()` config,
110151
+ * else PINNED. Parity.
110152
+ */
110153
+ versioningBehavior?: InputMaybe<VersioningBehavior>;
109242
110154
  /**
109243
110155
  * The workflow function to run. When omitted: the function of the version's single Code workflow
109244
110156
  * node, else the bundle's single export; otherwise the start is refused.
109245
110157
  */
109246
110158
  workflowFn?: InputMaybe<Scalars['String']['input']>;
110159
+ /**
110160
+ * The run's workflow id (1 to 256 characters), unique among the open runs of the workflow key in
110161
+ * the workspace. Without it the run's id is its workflow id. Read back as `WorkflowRun.businessId`.
110162
+ * Durable-function parity: needs fluidgrids.durable-parity.
110163
+ */
110164
+ workflowId?: InputMaybe<Scalars['String']['input']>;
109247
110165
  workflowKey: Scalars['String']['input'];
110166
+ /** The run's workflow-task budget (at most 120 s), as a duration. Parity. */
110167
+ workflowTaskTimeout?: InputMaybe<Scalars['String']['input']>;
109248
110168
  };
109249
110169
  export type StartWorkflowResult = {
109250
110170
  __typename?: 'StartWorkflowResult';
109251
- /** True when the idempotency key matched an earlier identical start. */
110171
+ /**
110172
+ * True when the idempotency key matched an earlier identical start, or when `idConflictPolicy:
110173
+ * USE_EXISTING` returned the open run of the workflow id.
110174
+ */
109252
110175
  existing: Scalars['Boolean']['output'];
109253
110176
  run: WorkflowRun;
109254
110177
  };
@@ -112145,10 +113068,15 @@ export type TecCreateLessonInput = {
112145
113068
  content?: InputMaybe<Scalars['String']['input']>;
112146
113069
  courseId: Scalars['ID']['input'];
112147
113070
  estimatedMinutes?: InputMaybe<Scalars['Int']['input']>;
113071
+ expectedOutput?: InputMaybe<Scalars['String']['input']>;
112148
113072
  fileId?: InputMaybe<Scalars['ID']['input']>;
112149
113073
  isPreview?: InputMaybe<Scalars['Boolean']['input']>;
112150
113074
  kind?: InputMaybe<TecLessonKind>;
113075
+ language?: InputMaybe<Scalars['String']['input']>;
112151
113076
  position?: InputMaybe<Scalars['Int']['input']>;
113077
+ quizQuestions?: InputMaybe<Array<TecQuizQuestionInput>>;
113078
+ sampleInput?: InputMaybe<Scalars['String']['input']>;
113079
+ starterCode?: InputMaybe<Scalars['String']['input']>;
112152
113080
  title: Scalars['String']['input'];
112153
113081
  };
112154
113082
  export type TecCreateMentorInput = {
@@ -112191,6 +113119,8 @@ export type TecEnrollInput = {
112191
113119
  export type TecEnrollment = {
112192
113120
  __typename?: 'TecEnrollment';
112193
113121
  completedAt?: Maybe<Scalars['DateTime']['output']>;
113122
+ /** Lessons finished in this enrollment (BOFF-4107), oldest first. */
113123
+ completions: Array<TecLessonCompletion>;
112194
113124
  course?: Maybe<TecCourse>;
112195
113125
  courseId: Scalars['ID']['output'];
112196
113126
  createdAt: Scalars['DateTime']['output'];
@@ -112198,6 +113128,8 @@ export type TecEnrollment = {
112198
113128
  lastActiveAt?: Maybe<Scalars['DateTime']['output']>;
112199
113129
  learnerId: Scalars['ID']['output'];
112200
113130
  lessonsCompleted: Scalars['Int']['output'];
113131
+ /** The first lesson (by position) not yet completed; null when every lesson is done. "Resume" / "Continue learning" deep-link here. */
113132
+ nextLessonId?: Maybe<Scalars['ID']['output']>;
112201
113133
  progressPct: Scalars['Int']['output'];
112202
113134
  startedAt: Scalars['DateTime']['output'];
112203
113135
  status: TecEnrollmentStatus;
@@ -112312,12 +113244,16 @@ export declare enum TecLegalAcceptanceType {
112312
113244
  }
112313
113245
  export type TecLesson = {
112314
113246
  __typename?: 'TecLesson';
113247
+ /** True when the calling learner has completed this lesson. */
113248
+ completedByMe: Scalars['Boolean']['output'];
112315
113249
  /** Null when `isLocked` is true (BOFF-4416 free-tier gating) -- the gate is enforced here at the API layer, not left to the client to respect. */
112316
113250
  content?: Maybe<Scalars['String']['output']>;
112317
113251
  course?: Maybe<TecCourse>;
112318
113252
  courseId: Scalars['ID']['output'];
112319
113253
  createdAt: Scalars['DateTime']['output'];
112320
113254
  estimatedMinutes: Scalars['Int']['output'];
113255
+ /** INTERACTIVE lessons: the output a correct program prints. When set, a matching run completes the lesson automatically. Null when `isLocked`. */
113256
+ expectedOutput?: Maybe<Scalars['String']['output']>;
112321
113257
  /** Reference to a wspace-files-svc File (video / attachment). Null when `isLocked` is true. */
112322
113258
  file?: Maybe<File>;
112323
113259
  id: Scalars['ID']['output'];
@@ -112325,11 +113261,58 @@ export type TecLesson = {
112325
113261
  isLocked: Scalars['Boolean']['output'];
112326
113262
  isPreview: Scalars['Boolean']['output'];
112327
113263
  kind: TecLessonKind;
113264
+ /** INTERACTIVE lessons (BOFF-4107): language slug the runnable workspace executes, e.g. "python". Null for other kinds. */
113265
+ language?: Maybe<Scalars['String']['output']>;
112328
113266
  position: Scalars['Int']['output'];
113267
+ /** QUIZ lessons: the questions, without the answer key (grading happens server-side in tecSubmitLessonQuiz). Empty when `isLocked`. */
113268
+ quizQuestions: Array<TecQuizQuestion>;
113269
+ /** INTERACTIVE lessons: default stdin for a run. Null when `isLocked`. */
113270
+ sampleInput?: Maybe<Scalars['String']['output']>;
113271
+ /** INTERACTIVE lessons: code pre-filled in the editor. Null when `isLocked`. */
113272
+ starterCode?: Maybe<Scalars['String']['output']>;
112329
113273
  title: Scalars['String']['output'];
112330
113274
  updatedAt: Scalars['DateTime']['output'];
112331
113275
  workspaceId: Scalars['ID']['output'];
112332
113276
  };
113277
+ /** Result of tecRunLessonCode. */
113278
+ export type TecLessonCodeRun = {
113279
+ __typename?: 'TecLessonCodeRun';
113280
+ compileFailed: Scalars['Boolean']['output'];
113281
+ durationMs: Scalars['Int']['output'];
113282
+ /** The learner's enrollment after the run. Null when not enrolled. */
113283
+ enrollment?: Maybe<TecEnrollment>;
113284
+ exitCode: Scalars['Int']['output'];
113285
+ language: Scalars['String']['output'];
113286
+ /** True when this run completed the lesson (first matching run). */
113287
+ lessonCompleted: Scalars['Boolean']['output'];
113288
+ lessonId: Scalars['ID']['output'];
113289
+ /** Null when the lesson has no expected output or nothing ran; otherwise whether stdout matched it. */
113290
+ matchedExpected?: Maybe<Scalars['Boolean']['output']>;
113291
+ memoryLimitExceeded: Scalars['Boolean']['output'];
113292
+ status: TecLessonRunStatus;
113293
+ stderr: Scalars['String']['output'];
113294
+ stdout: Scalars['String']['output'];
113295
+ timedOut: Scalars['Boolean']['output'];
113296
+ };
113297
+ /** A lesson the learner finished inside an enrollment (BOFF-4107). */
113298
+ export type TecLessonCompletion = {
113299
+ __typename?: 'TecLessonCompletion';
113300
+ completedAt: Scalars['DateTime']['output'];
113301
+ enrollmentId: Scalars['ID']['output'];
113302
+ id: Scalars['ID']['output'];
113303
+ lessonId: Scalars['ID']['output'];
113304
+ method: TecLessonCompletionMethod;
113305
+ score?: Maybe<Scalars['Int']['output']>;
113306
+ };
113307
+ /** How a lesson was completed (BOFF-4107). */
113308
+ export declare enum TecLessonCompletionMethod {
113309
+ /** The learner's code produced the lesson's expected output (tecRunLessonCode). */
113310
+ CodePassed = "CODE_PASSED",
113311
+ /** The learner marked an ARTICLE / VIDEO / PROJECT lesson (or an INTERACTIVE lesson with no expected output) as done. */
113312
+ Manual = "MANUAL",
113313
+ /** The learner passed the lesson's quiz (tecSubmitLessonQuiz). */
113314
+ QuizPassed = "QUIZ_PASSED"
113315
+ }
112333
113316
  export type TecLessonConnection = {
112334
113317
  __typename?: 'TecLessonConnection';
112335
113318
  items: Array<TecLesson>;
@@ -112342,6 +113325,15 @@ export declare enum TecLessonKind {
112342
113325
  Quiz = "QUIZ",
112343
113326
  Video = "VIDEO"
112344
113327
  }
113328
+ /** Outcome of one tecRunLessonCode call (BOFF-4107). */
113329
+ export declare enum TecLessonRunStatus {
113330
+ /** The code ran in the sandbox; see stdout/stderr/exitCode. */
113331
+ Completed = "COMPLETED",
113332
+ /** The sandbox could not be reached or failed. Nothing ran; retry later. */
113333
+ Unavailable = "UNAVAILABLE",
113334
+ /** The code sandbox was cold and is starting. Nothing ran; call tecRunLessonCode again in a few seconds. */
113335
+ Warming = "WARMING"
113336
+ }
112345
113337
  export type TecMentor = {
112346
113338
  __typename?: 'TecMentor';
112347
113339
  bio?: Maybe<Scalars['String']['output']>;
@@ -112563,6 +113555,52 @@ export type TecPublicPortfolioItem = {
112563
113555
  order: Scalars['Int']['output'];
112564
113556
  title: Scalars['String']['output'];
112565
113557
  };
113558
+ /** One multiple-choice question of a QUIZ lesson, as a learner sees it. */
113559
+ export type TecQuizQuestion = {
113560
+ __typename?: 'TecQuizQuestion';
113561
+ options: Array<Scalars['String']['output']>;
113562
+ prompt: Scalars['String']['output'];
113563
+ };
113564
+ /** One quiz question with its answer key, as a lesson author writes it. */
113565
+ export type TecQuizQuestionInput = {
113566
+ /** Zero-based index into `options` of the correct answer. */
113567
+ correctOption: Scalars['Int']['input'];
113568
+ explanation?: InputMaybe<Scalars['String']['input']>;
113569
+ /** Two to eight answer options. */
113570
+ options: Array<Scalars['String']['input']>;
113571
+ prompt: Scalars['String']['input'];
113572
+ };
113573
+ /** One quiz question with its answer key (lesson-author view). */
113574
+ export type TecQuizQuestionKey = {
113575
+ __typename?: 'TecQuizQuestionKey';
113576
+ correctOption: Scalars['Int']['output'];
113577
+ explanation?: Maybe<Scalars['String']['output']>;
113578
+ options: Array<Scalars['String']['output']>;
113579
+ prompt: Scalars['String']['output'];
113580
+ };
113581
+ /** Per-question feedback returned after a quiz attempt. */
113582
+ export type TecQuizQuestionResult = {
113583
+ __typename?: 'TecQuizQuestionResult';
113584
+ correct: Scalars['Boolean']['output'];
113585
+ correctOption: Scalars['Int']['output'];
113586
+ explanation?: Maybe<Scalars['String']['output']>;
113587
+ index: Scalars['Int']['output'];
113588
+ selectedOption?: Maybe<Scalars['Int']['output']>;
113589
+ };
113590
+ /** Result of tecSubmitLessonQuiz. */
113591
+ export type TecQuizResult = {
113592
+ __typename?: 'TecQuizResult';
113593
+ correctCount: Scalars['Int']['output'];
113594
+ /** The learner's enrollment after the attempt (progress updated when passed). Null when the learner is not enrolled (preview lessons). */
113595
+ enrollment?: Maybe<TecEnrollment>;
113596
+ lessonId: Scalars['ID']['output'];
113597
+ passed: Scalars['Boolean']['output'];
113598
+ /** Minimum score (percent) needed to pass. */
113599
+ passingScore: Scalars['Int']['output'];
113600
+ results: Array<TecQuizQuestionResult>;
113601
+ score: Scalars['Int']['output'];
113602
+ totalCount: Scalars['Int']['output'];
113603
+ };
112566
113604
  export type TecRecordLegalAcceptanceInput = {
112567
113605
  acceptanceType: TecLegalAcceptanceType;
112568
113606
  acceptedAt?: InputMaybe<Scalars['DateTime']['input']>;
@@ -112582,6 +113620,19 @@ export type TecReorderPortfolioItemsInput = {
112582
113620
  /** Every existing item id for the calling learner's portfolio, in the desired display order. Must be a permutation of the current item set. */
112583
113621
  itemIds: Array<Scalars['ID']['input']>;
112584
113622
  };
113623
+ /** Who wrote a review: AI when a language model wrote the explanation, RULES when the service built it from the grader output alone (no model provider configured, or every provider failed). */
113624
+ export declare enum TecReviewSource {
113625
+ Ai = "AI",
113626
+ Rules = "RULES"
113627
+ }
113628
+ export type TecRunLessonCodeInput = {
113629
+ code: Scalars['String']['input'];
113630
+ /** Defaults to the lesson's language. */
113631
+ language?: InputMaybe<Scalars['String']['input']>;
113632
+ lessonId: Scalars['ID']['input'];
113633
+ /** Defaults to the lesson's sampleInput. */
113634
+ stdin?: InputMaybe<Scalars['String']['input']>;
113635
+ };
112585
113636
  /** Read-only preview of what a session with a given mentor and duration would cost, computed from the mentor's real current hourlyRate -- lets the booking UI show the learner the price (and the platform-fee breakdown) before they commit to tecBookSession. Never persists anything. */
112586
113637
  export type TecSessionCostEstimate = {
112587
113638
  __typename?: 'TecSessionCostEstimate';
@@ -112692,6 +113743,30 @@ export type TecSubmissionConnection = {
112692
113743
  items: Array<TecSubmission>;
112693
113744
  pageInfo: TecPracticePageInfo;
112694
113745
  };
113746
+ export type TecSubmissionReview = {
113747
+ __typename?: 'TecSubmissionReview';
113748
+ /** Up to five short concept names to revisit. */
113749
+ conceptsToRevisit: Array<Scalars['String']['output']>;
113750
+ createdAt: Scalars['DateTime']['output'];
113751
+ /** What failed and what to look at, grounded in the failing test case and grader diagnostics. Never contains a complete solution. */
113752
+ failureExplanation: Scalars['String']['output'];
113753
+ id: Scalars['ID']['output'];
113754
+ /** Model that wrote the explanation; null for a RULES review. */
113755
+ model?: Maybe<Scalars['String']['output']>;
113756
+ problemId: Scalars['ID']['output'];
113757
+ source: TecReviewSource;
113758
+ submissionId: Scalars['ID']['output'];
113759
+ /** Ids of real, published problems in this workspace to practise next, chosen from the catalog by the service (never by the model). */
113760
+ suggestedProblemIds: Array<Scalars['ID']['output']>;
113761
+ /** The suggested problems that are still published. */
113762
+ suggestedProblems: Array<TecProblem>;
113763
+ /** One or two sentences on the outcome. */
113764
+ summary: Scalars['String']['output'];
113765
+ updatedAt: Scalars['DateTime']['output'];
113766
+ /** The submission's verdict when this review was written. */
113767
+ verdict: TecSubmissionVerdict;
113768
+ workspaceId: Scalars['ID']['output'];
113769
+ };
112695
113770
  export declare enum TecSubmissionVerdict {
112696
113771
  Accepted = "ACCEPTED",
112697
113772
  CompileError = "COMPILE_ERROR",
@@ -112771,10 +113846,15 @@ export type TecUpdateHackathonInput = {
112771
113846
  export type TecUpdateLessonInput = {
112772
113847
  content?: InputMaybe<Scalars['String']['input']>;
112773
113848
  estimatedMinutes?: InputMaybe<Scalars['Int']['input']>;
113849
+ expectedOutput?: InputMaybe<Scalars['String']['input']>;
112774
113850
  fileId?: InputMaybe<Scalars['ID']['input']>;
112775
113851
  isPreview?: InputMaybe<Scalars['Boolean']['input']>;
112776
113852
  kind?: InputMaybe<TecLessonKind>;
113853
+ language?: InputMaybe<Scalars['String']['input']>;
112777
113854
  position?: InputMaybe<Scalars['Int']['input']>;
113855
+ quizQuestions?: InputMaybe<Array<TecQuizQuestionInput>>;
113856
+ sampleInput?: InputMaybe<Scalars['String']['input']>;
113857
+ starterCode?: InputMaybe<Scalars['String']['input']>;
112778
113858
  title?: InputMaybe<Scalars['String']['input']>;
112779
113859
  };
112780
113860
  export type TecUpdateMentorInput = {
@@ -113638,6 +114718,64 @@ export type TimeCampusAdminWorkspaceState = {
113638
114718
  timeEntryCount: Scalars['Int']['output'];
113639
114719
  workspaceId: Scalars['ID']['output'];
113640
114720
  };
114721
+ /** How many reverted events landed in each category. */
114722
+ export type TimeCampusAiRevertCategoryCount = {
114723
+ __typename?: 'TimeCampusAiRevertCategoryCount';
114724
+ category: TimeCampusTimelineCategory;
114725
+ count: Scalars['Int']['output'];
114726
+ };
114727
+ /** Result of reverting the model's timeline categorisations over a range (BOFF-3894) — see `revertTimeCampusAiCategorizations`. */
114728
+ export type TimeCampusAiRevertResult = {
114729
+ __typename?: 'TimeCampusAiRevertResult';
114730
+ byCategory: Array<TimeCampusAiRevertCategoryCount>;
114731
+ from: Scalars['DateTime']['output'];
114732
+ reverted: Scalars['Int']['output'];
114733
+ to: Scalars['DateTime']['output'];
114734
+ };
114735
+ /** A first-party applet and whether this workspace has it installed. */
114736
+ export type TimeCampusApplet = {
114737
+ __typename?: 'TimeCampusApplet';
114738
+ category: TimeCampusAppletCategory;
114739
+ description: Scalars['String']['output'];
114740
+ /** lucide icon name. */
114741
+ icon: Scalars['String']['output'];
114742
+ installSource?: Maybe<TimeCampusAppletInstallSource>;
114743
+ installed: Scalars['Boolean']['output'];
114744
+ installedAt?: Maybe<Scalars['DateTime']['output']>;
114745
+ key: Scalars['ID']['output'];
114746
+ name: Scalars['String']['output'];
114747
+ /** App-shell path that opens the applet (/timecampus/... or a platform module). */
114748
+ route: Scalars['String']['output'];
114749
+ /** Template that installed the applet, when installSource is TEMPLATE. */
114750
+ templateKey?: Maybe<Scalars['String']['output']>;
114751
+ /** Widgets this applet adds to the widget catalogue. */
114752
+ widgetKeys: Array<Scalars['String']['output']>;
114753
+ };
114754
+ export declare enum TimeCampusAppletCategory {
114755
+ Analytics = "ANALYTICS",
114756
+ Automation = "AUTOMATION",
114757
+ Clients = "CLIENTS",
114758
+ Finance = "FINANCE",
114759
+ Focus = "FOCUS",
114760
+ Location = "LOCATION",
114761
+ Meetings = "MEETINGS",
114762
+ Team = "TEAM"
114763
+ }
114764
+ export type TimeCampusAppletFilterInput = {
114765
+ category?: InputMaybe<TimeCampusAppletCategory>;
114766
+ installedOnly?: InputMaybe<Scalars['Boolean']['input']>;
114767
+ search?: InputMaybe<Scalars['String']['input']>;
114768
+ };
114769
+ export declare enum TimeCampusAppletInstallSource {
114770
+ Manual = "MANUAL",
114771
+ Template = "TEMPLATE"
114772
+ }
114773
+ export type TimeCampusApplyTemplateInput = {
114774
+ /** ISO 4217 currency for the created projects (default USD). */
114775
+ currency?: InputMaybe<Scalars['String']['input']>;
114776
+ /** Hourly rate for the template's billable projects; omitted leaves them without a rate. */
114777
+ hourlyRate?: InputMaybe<Scalars['Float']['input']>;
114778
+ };
113641
114779
  export type TimeCampusBalanceTarget = {
113642
114780
  __typename?: 'TimeCampusBalanceTarget';
113643
114781
  createdAt: Scalars['DateTime']['output'];
@@ -113648,6 +114786,62 @@ export type TimeCampusBalanceTarget = {
113648
114786
  userId: Scalars['ID']['output'];
113649
114787
  workspaceId: Scalars['ID']['output'];
113650
114788
  };
114789
+ export type TimeCampusCaptureChannel = {
114790
+ __typename?: 'TimeCampusCaptureChannel';
114791
+ connectedAt: Scalars['DateTime']['output'];
114792
+ createdAt: Scalars['DateTime']['output'];
114793
+ disconnectedAt?: Maybe<Scalars['DateTime']['output']>;
114794
+ id: Scalars['ID']['output'];
114795
+ /** Opaque reference to a wspace-integrations-svc connection for OAuth-backed connectors. */
114796
+ integrationConnectionId?: Maybe<Scalars['String']['output']>;
114797
+ lastEventAt?: Maybe<Scalars['DateTime']['output']>;
114798
+ lastSyncAt?: Maybe<Scalars['DateTime']['output']>;
114799
+ name: Scalars['String']['output'];
114800
+ privacyMode: TimeCampusCaptureChannelPrivacyMode;
114801
+ provider?: Maybe<Scalars['String']['output']>;
114802
+ /** Captured events from this channel older than this many days are purged. Null keeps them. */
114803
+ retentionDays?: Maybe<Scalars['Int']['output']>;
114804
+ status: TimeCampusCaptureChannelStatus;
114805
+ /** How often the source is expected to sync, in minutes (informational). */
114806
+ syncIntervalMinutes?: Maybe<Scalars['Int']['output']>;
114807
+ /** Events accepted from this channel since it was connected. */
114808
+ totalEvents: Scalars['Int']['output'];
114809
+ type: TimeCampusCaptureChannelType;
114810
+ updatedAt: Scalars['DateTime']['output'];
114811
+ userId: Scalars['ID']['output'];
114812
+ workspaceId: Scalars['ID']['output'];
114813
+ };
114814
+ export declare enum TimeCampusCaptureChannelPrivacyMode {
114815
+ /** Store only the app, category and timing; titles, URLs and metadata never reach storage. */
114816
+ AggregateOnly = "AGGREGATE_ONLY",
114817
+ /** Store titles, URLs and metadata as sent. */
114818
+ Full = "FULL",
114819
+ /** Store window/page titles but drop URLs and caller metadata. */
114820
+ TitlesOnly = "TITLES_ONLY"
114821
+ }
114822
+ export type TimeCampusCaptureChannelPurgeResult = {
114823
+ __typename?: 'TimeCampusCaptureChannelPurgeResult';
114824
+ channelId: Scalars['ID']['output'];
114825
+ purgedEvents: Scalars['Int']['output'];
114826
+ };
114827
+ export declare enum TimeCampusCaptureChannelStatus {
114828
+ /** Events are accepted and stored. */
114829
+ Active = "ACTIVE",
114830
+ /** Disconnected by the user: events are refused until the channel is resumed. */
114831
+ Disconnected = "DISCONNECTED",
114832
+ /** Temporarily paused: events sent while paused are refused and never stored. */
114833
+ Paused = "PAUSED"
114834
+ }
114835
+ export declare enum TimeCampusCaptureChannelType {
114836
+ Api = "API",
114837
+ Browser = "BROWSER",
114838
+ Calendar = "CALENDAR",
114839
+ Cli = "CLI",
114840
+ Custom = "CUSTOM",
114841
+ Desktop = "DESKTOP",
114842
+ Ide = "IDE",
114843
+ Mobile = "MOBILE"
114844
+ }
113651
114845
  export type TimeCampusCaptureEvent = {
113652
114846
  __typename?: 'TimeCampusCaptureEvent';
113653
114847
  app?: Maybe<Scalars['String']['output']>;
@@ -113656,6 +114850,10 @@ export type TimeCampusCaptureEvent = {
113656
114850
  /** Model identifier, e.g. "keyword-match-v1" or "gemini:gemini-2.5-flash". */
113657
114851
  categorizationModel?: Maybe<Scalars['String']['output']>;
113658
114852
  category: TimeCampusTimelineCategory;
114853
+ /** Model confidence (0..1) for `category`. Set only when `categorySource` is "ai" (BOFF-3880); null for channel, user and rule-based categories. */
114854
+ categoryConfidence?: Maybe<Scalars['Float']['output']>;
114855
+ /** The "provider:model" that decided `category` when `categorySource` is "ai". */
114856
+ categoryModel?: Maybe<Scalars['String']['output']>;
113659
114857
  categorySource: Scalars['String']['output'];
113660
114858
  /** Confidence (0..1) of the last computed suggestion. */
113661
114859
  categorySuggestionConfidence?: Maybe<Scalars['Float']['output']>;
@@ -113732,6 +114930,15 @@ export type TimeCampusClientPortalViewProject = {
113732
114930
  status: Scalars['String']['output'];
113733
114931
  totalTrackedSeconds?: Maybe<Scalars['Int']['output']>;
113734
114932
  };
114933
+ export type TimeCampusConnectCaptureChannelInput = {
114934
+ integrationConnectionId?: InputMaybe<Scalars['String']['input']>;
114935
+ name: Scalars['String']['input'];
114936
+ privacyMode?: InputMaybe<TimeCampusCaptureChannelPrivacyMode>;
114937
+ provider?: InputMaybe<Scalars['String']['input']>;
114938
+ retentionDays?: InputMaybe<Scalars['Int']['input']>;
114939
+ syncIntervalMinutes?: InputMaybe<Scalars['Int']['input']>;
114940
+ type: TimeCampusCaptureChannelType;
114941
+ };
113735
114942
  export type TimeCampusContextSharingPolicy = {
113736
114943
  __typename?: 'TimeCampusContextSharingPolicy';
113737
114944
  createdAt: Scalars['DateTime']['output'];
@@ -114075,6 +115282,8 @@ export type TimeCampusImpersonationAuditEntry = {
114075
115282
  };
114076
115283
  export type TimeCampusIngestCaptureEventsResult = {
114077
115284
  __typename?: 'TimeCampusIngestCaptureEventsResult';
115285
+ /** Count of events in this batch that were NOT persisted because the capture channel they were sent for is paused, disconnected or removed (BOFF-4036). */
115286
+ channelBlocked: Scalars['Int']['output'];
114078
115287
  /** Count of events in this batch that were NOT persisted because the caller has explicitly revoked SourceConsent for this batch's source. Distinct from `duplicates` (already-seen events) — these were never written. */
114079
115288
  consentBlocked: Scalars['Int']['output'];
114080
115289
  duplicates: Scalars['Int']['output'];
@@ -114436,6 +115645,37 @@ export type TimeCampusSourceConsent = {
114436
115645
  userId: Scalars['ID']['output'];
114437
115646
  workspaceId: Scalars['ID']['output'];
114438
115647
  };
115648
+ export type TimeCampusTemplateApplication = {
115649
+ __typename?: 'TimeCampusTemplateApplication';
115650
+ appliedBy: Scalars['ID']['output'];
115651
+ createdAt: Scalars['DateTime']['output'];
115652
+ createdProjectIds: Array<Scalars['ID']['output']>;
115653
+ createdTaskCount: Scalars['Int']['output'];
115654
+ id: Scalars['ID']['output'];
115655
+ /** Applets this application newly installed (already-installed ones are not listed). */
115656
+ installedAppletKeys: Array<Scalars['String']['output']>;
115657
+ /** Template projects left alone because a project with that name already existed. */
115658
+ skippedProjectNames: Array<Scalars['String']['output']>;
115659
+ templateKey: Scalars['String']['output'];
115660
+ templateName: Scalars['String']['output'];
115661
+ };
115662
+ export declare enum TimeCampusTemplateCategory {
115663
+ Creative = "CREATIVE",
115664
+ Independent = "INDEPENDENT",
115665
+ ProfessionalServices = "PROFESSIONAL_SERVICES",
115666
+ Research = "RESEARCH",
115667
+ Technology = "TECHNOLOGY"
115668
+ }
115669
+ export type TimeCampusTemplateProject = {
115670
+ __typename?: 'TimeCampusTemplateProject';
115671
+ /** Billable projects receive the hourly rate given when the template is applied. */
115672
+ billable: Scalars['Boolean']['output'];
115673
+ /** Accent token name (blue, indigo, purple, teal). */
115674
+ color: Scalars['String']['output'];
115675
+ description: Scalars['String']['output'];
115676
+ name: Scalars['String']['output'];
115677
+ tasks: Array<Scalars['String']['output']>;
115678
+ };
114439
115679
  export type TimeCampusTimeWellSpent = {
114440
115680
  __typename?: 'TimeCampusTimeWellSpent';
114441
115681
  byDomain: Array<TimeCampusDomainAlignment>;
@@ -114524,6 +115764,35 @@ export type TimeCampusTimelineSummary = {
114524
115764
  longestFocusBlockSeconds: Scalars['Int']['output'];
114525
115765
  totalTrackedSeconds: Scalars['Int']['output'];
114526
115766
  };
115767
+ /** Partial update. Omitted fields are unchanged; `retentionDays`, `syncIntervalMinutes`, `provider` and `integrationConnectionId` can be cleared with an explicit null. `status` accepts ACTIVE or PAUSED (ACTIVE also resumes a disconnected channel); use `disconnectTimeCampusCaptureChannel` to disconnect. */
115768
+ export type TimeCampusUpdateCaptureChannelInput = {
115769
+ integrationConnectionId?: InputMaybe<Scalars['String']['input']>;
115770
+ name?: InputMaybe<Scalars['String']['input']>;
115771
+ privacyMode?: InputMaybe<TimeCampusCaptureChannelPrivacyMode>;
115772
+ provider?: InputMaybe<Scalars['String']['input']>;
115773
+ retentionDays?: InputMaybe<Scalars['Int']['input']>;
115774
+ status?: InputMaybe<TimeCampusCaptureChannelStatus>;
115775
+ syncIntervalMinutes?: InputMaybe<Scalars['Int']['input']>;
115776
+ };
115777
+ export type TimeCampusWidget = {
115778
+ __typename?: 'TimeCampusWidget';
115779
+ /** Applet that must be installed to place the widget; null for core widgets. */
115780
+ appletKey?: Maybe<Scalars['String']['output']>;
115781
+ /** Whether the widget can be placed now (core, or its applet is installed). */
115782
+ available: Scalars['Boolean']['output'];
115783
+ description: Scalars['String']['output'];
115784
+ key: Scalars['ID']['output'];
115785
+ name: Scalars['String']['output'];
115786
+ };
115787
+ /** The caller's own dashboard widget layout. */
115788
+ export type TimeCampusWidgetLayout = {
115789
+ __typename?: 'TimeCampusWidgetLayout';
115790
+ /** True until the caller saves a layout of their own. */
115791
+ isDefault: Scalars['Boolean']['output'];
115792
+ updatedAt?: Maybe<Scalars['DateTime']['output']>;
115793
+ /** Widget keys in display order. */
115794
+ widgetKeys: Array<Scalars['String']['output']>;
115795
+ };
114527
115796
  export type TimeCampusWorkspaceQuotaAssignment = {
114528
115797
  __typename?: 'TimeCampusWorkspaceQuotaAssignment';
114529
115798
  id: Scalars['ID']['output'];
@@ -114542,6 +115811,21 @@ export type TimeCampusWorkspaceQuotaOverview = {
114542
115811
  assignments: Array<TimeCampusWorkspaceQuotaAssignment>;
114543
115812
  workspaceId: Scalars['ID']['output'];
114544
115813
  };
115814
+ export type TimeCampusWorkspaceTemplate = {
115815
+ __typename?: 'TimeCampusWorkspaceTemplate';
115816
+ appletKeys: Array<Scalars['String']['output']>;
115817
+ category: TimeCampusTemplateCategory;
115818
+ description: Scalars['String']['output'];
115819
+ highlights: Array<Scalars['String']['output']>;
115820
+ icon: Scalars['String']['output'];
115821
+ key: Scalars['ID']['output'];
115822
+ /** When this workspace last applied the template. */
115823
+ lastAppliedAt?: Maybe<Scalars['DateTime']['output']>;
115824
+ name: Scalars['String']['output'];
115825
+ projects: Array<TimeCampusTemplateProject>;
115826
+ taskCount: Scalars['Int']['output'];
115827
+ widgetKeys: Array<Scalars['String']['output']>;
115828
+ };
114545
115829
  export type TimeEntry = {
114546
115830
  __typename?: 'TimeEntry';
114547
115831
  billable: Scalars['Boolean']['output'];
@@ -115051,6 +116335,11 @@ export type TriggerScheduledCommentInput = {
115051
116335
  /** Input for triggering workflow */
115052
116336
  export type TriggerWorkflowInput = {
115053
116337
  context?: InputMaybe<Scalars['JSON']['input']>;
116338
+ /**
116339
+ * What an open run with the same workflow id does: FAIL (default) or USE_EXISTING (returns that
116340
+ * run). TERMINATE_EXISTING is refused with VALIDATION for canvas starts in this release.
116341
+ */
116342
+ idConflictPolicy?: InputMaybe<WorkflowIdConflictPolicy>;
115054
116343
  /** Stable client request ID. Replays return the original run; changed payloads are rejected. */
115055
116344
  idempotencyKey?: InputMaybe<Scalars['String']['input']>;
115056
116345
  /**
@@ -115073,6 +116362,12 @@ export type TriggerWorkflowInput = {
115073
116362
  triggerData?: InputMaybe<Scalars['JSON']['input']>;
115074
116363
  triggerNodeId: Scalars['String']['input'];
115075
116364
  version: Scalars['String']['input'];
116365
+ /**
116366
+ * The run's workflow id (1 to 256 characters), unique among the open runs of the workflow key in
116367
+ * the workspace (spec code-first 11 §2.1). Read back as `WorkflowRun.businessId`. Durable-function
116368
+ * parity: needs fluidgrids.durable-parity.
116369
+ */
116370
+ workflowId?: InputMaybe<Scalars['String']['input']>;
115076
116371
  workflowKey: Scalars['String']['input'];
115077
116372
  };
115078
116373
  /** A managed tunnel exposing a local service to the public internet. Tunnels are workspace-scoped and bound to an agent machine. */
@@ -119180,6 +120475,13 @@ export type UpdateWorkflowEnvironmentPolicyInput = {
119180
120475
  };
119181
120476
  /** Partial update: a field that is left out keeps its current value. */
119182
120477
  export type UpdateWorkflowExecutionSettingsInput = {
120478
+ /** The inline byte cap of new durable-function runs: 1 MiB to the plan ceiling. Null returns to the plan ceiling. Parity. */
120479
+ maxHistoryBytes?: InputMaybe<Scalars['Float']['input']>;
120480
+ /**
120481
+ * The event cap of new durable-function runs: 1,000 to the plan ceiling (10,000 by default, at most
120482
+ * 50,000). Null returns to the plan ceiling. Needs fluidgrids.durable-parity.
120483
+ */
120484
+ maxHistoryEvents?: InputMaybe<Scalars['Int']['input']>;
119183
120485
  retentionDays?: InputMaybe<Scalars['Int']['input']>;
119184
120486
  retentionMaxRunsPerWorkflow?: InputMaybe<Scalars['Int']['input']>;
119185
120487
  saveFailedRuns?: InputMaybe<Scalars['Boolean']['input']>;
@@ -120315,6 +121617,26 @@ export declare enum VersionStatus {
120315
121617
  Historical = "HISTORICAL",
120316
121618
  Published = "PUBLISHED"
120317
121619
  }
121620
+ /**
121621
+ * Which bundle a durable-function run uses (spec code-first 11 §2.27). Durable-function parity: needs
121622
+ * fluidgrids.durable-parity.
121623
+ */
121624
+ export declare enum VersioningBehavior {
121625
+ /** The ACTIVE version's bundle at each new workflow task (the code must stay replay-compatible). */
121626
+ AutoUpgrade = "AUTO_UPGRADE",
121627
+ /** The bundle of the version the run started on, for its whole life (the default). */
121628
+ Pinned = "PINNED"
121629
+ }
121630
+ /**
121631
+ * A versioning override: `{behavior: PINNED, version}` pins the run to that version's bundle (after a
121632
+ * replay check of the run when the bundle differs), `{behavior: AUTO_UPGRADE}` upgrades it at its next
121633
+ * workflow task.
121634
+ */
121635
+ export type VersioningOverrideInput = {
121636
+ behavior: VersioningBehavior;
121637
+ /** Required for PINNED: a version of the same workflow that exports the run's workflow function. */
121638
+ version?: InputMaybe<Scalars['String']['input']>;
121639
+ };
120318
121640
  /** A development project or repository representing a development environment. Vibes can be organized hierarchically and support various types (local, remote, docker, cloud). */
120319
121641
  export type Vibe = {
120320
121642
  __typename?: 'Vibe';
@@ -123627,6 +124949,12 @@ export type WorkflowActivityLease = {
123627
124949
  nodeType?: Maybe<Scalars['String']['output']>;
123628
124950
  nodeVersion?: Maybe<Scalars['String']['output']>;
123629
124951
  operation?: Maybe<Scalars['String']['output']>;
124952
+ /**
124953
+ * True while fluidgrids.durable-parity is on for the workspace (Phase B parity). The worker applies
124954
+ * the parity activity semantics (the code's $activity, thrown error fields, checkpoints, BENIGN)
124955
+ * only when it is true, so a Phase B activity behaves exactly as before with the flag off.
124956
+ */
124957
+ parity: Scalars['Boolean']['output'];
123630
124958
  /** TEST runs only: the pinned output of this activity (key act:<activityType>#<ordinal>). */
123631
124959
  pinnedOutput?: Maybe<Scalars['JSON']['output']>;
123632
124960
  /** Why the lease was refused: NOT_FOUND, NOT_DURABLE, RUN_CLOSED, STALE_ATTEMPT, NOT_DUE, CANCELLED, NOT_ALLOWED. */
@@ -123779,9 +125107,17 @@ export type WorkflowCodePresignedPut = {
123779
125107
  export type WorkflowCodeReplaceResult = {
123780
125108
  __typename?: 'WorkflowCodeReplaceResult';
123781
125109
  buildId: Scalars['String']['output'];
125110
+ /** ACTIVATION: the activation was forced past the check (audited). */
125111
+ force: Scalars['Boolean']['output'];
123782
125112
  id: Scalars['ID']['output'];
125113
+ /** HOTFIX, or a versioning check (ACTIVATION, RUN_OVERRIDE, ROLLOUT; parity, spec code-first 11 §2.27). */
125114
+ kind: CodeReplaceKind;
123783
125115
  previousBuildId: Scalars['String']['output'];
125116
+ /** RUN_OVERRIDE: the run checked. */
125117
+ runId?: Maybe<Scalars['ID']['output']>;
123784
125118
  status: CodeReplaceStatus;
125119
+ /** ACTIVATION: the version activated once the check passes; RUN_OVERRIDE: the version the run moves to; ROLLOUT: the rollout's target. */
125120
+ targetVersion?: Maybe<Scalars['String']['output']>;
123785
125121
  /** Runs replayed against the new bundle so far. */
123786
125122
  verifiedRuns: Scalars['Int']['output'];
123787
125123
  violations: Array<WorkflowCodeReplaceViolation>;
@@ -123819,6 +125155,8 @@ export type WorkflowCodeUploadTicket = {
123819
125155
  */
123820
125156
  export type WorkflowDefinition = {
123821
125157
  __typename?: 'WorkflowDefinition';
125158
+ /** The newest activation check of this version, if it ever needed one. Durable-function parity. */
125159
+ activationCheck?: Maybe<WorkflowCodeReplaceResult>;
123822
125160
  /** True when an AI wrote this version: an applied AI proposal or an agent acting for the person. */
123823
125161
  aiAuthored: Scalars['Boolean']['output'];
123824
125162
  /** True when the last in-place edit of this version was written by an AI. */
@@ -123902,6 +125240,12 @@ export type WorkflowDefinition = {
123902
125240
  */
123903
125241
  validationWarnings: Array<Scalars['String']['output']>;
123904
125242
  version: Scalars['String']['output'];
125243
+ /**
125244
+ * PINNED, or AUTO_UPGRADE when the version's code declares `versioningBehavior: 'AUTO_UPGRADE'`
125245
+ * (its `config`, or any exported workflow function's). It is part of the definition: changing it
125246
+ * stores a new version. Durable-function parity.
125247
+ */
125248
+ versioningBehavior: VersioningBehavior;
123905
125249
  workflowKey: Scalars['String']['output'];
123906
125250
  workspaceId?: Maybe<Scalars['String']['output']>;
123907
125251
  };
@@ -123938,6 +125282,8 @@ export type WorkflowDraft = {
123938
125282
  explanation?: Maybe<Scalars['String']['output']>;
123939
125283
  name: Scalars['String']['output'];
123940
125284
  nodeCount: Scalars['Int']['output'];
125285
+ /** Short questions about details the request left open. The draft already uses sensible defaults; answering a question and regenerating refines it. Empty when nothing was unclear. */
125286
+ questions: Array<Scalars['String']['output']>;
123941
125287
  };
123942
125288
  /**
123943
125289
  * Who is editing a workflow in the builder. One session (a browser page load) at
@@ -124066,6 +125412,13 @@ export type WorkflowExecutionSettings = {
124066
125412
  __typename?: 'WorkflowExecutionSettings';
124067
125413
  /** False until someone saves the settings: the values are the defaults. */
124068
125414
  customized: Scalars['Boolean']['output'];
125415
+ /** The inline byte cap of new durable-function runs (parity); null means the plan ceiling. */
125416
+ maxHistoryBytes?: Maybe<Scalars['Float']['output']>;
125417
+ /**
125418
+ * The event cap of new durable-function runs (parity, spec code-first 11 §2.15); null means the
125419
+ * plan ceiling. Runs keep the cap they were created with.
125420
+ */
125421
+ maxHistoryEvents?: Maybe<Scalars['Int']['output']>;
124069
125422
  /** Delete finished runs older than this many days (1-3650, default 30). */
124070
125423
  retentionDays: Scalars['Int']['output'];
124071
125424
  /** Keep at most this many finished runs per workflow; older ones are deleted (1-1000000, default 10000). */
@@ -124323,6 +125676,33 @@ export declare enum WorkflowHumanResponseType {
124323
125676
  CustomForm = "CUSTOM_FORM",
124324
125677
  FreeText = "FREE_TEXT"
124325
125678
  }
125679
+ /**
125680
+ * What a start with a workflow id does when a run with the id is still open (spec code-first 11
125681
+ * §2.1). Durable-function parity: needs fluidgrids.durable-parity.
125682
+ */
125683
+ export declare enum WorkflowIdConflictPolicy {
125684
+ /** Refuse the start with CONFLICT (reason WORKFLOW_ID_ALREADY_RUNNING). The default. */
125685
+ Fail = "FAIL",
125686
+ /**
125687
+ * Terminate the open run (reason ID_CONFLICT) and start a new one. Durable-function runs only, and
125688
+ * only through startWorkflowTerminateExisting (the workflow-run delete permission).
125689
+ */
125690
+ TerminateExisting = "TERMINATE_EXISTING",
125691
+ /** Return the open run instead of starting one; startWorkflow delivers its start signals to it. */
125692
+ UseExisting = "USE_EXISTING"
125693
+ }
125694
+ /**
125695
+ * What a start with a workflow id does when the id's latest run has closed (spec code-first 11
125696
+ * §2.1). Durable-function parity: needs fluidgrids.durable-parity.
125697
+ */
125698
+ export declare enum WorkflowIdReusePolicy {
125699
+ /** Start a new run whatever the last one did (the default). */
125700
+ AllowDuplicate = "ALLOW_DUPLICATE",
125701
+ /** Start a new run only when the last run of the id did not complete (failed, cancelled or terminated). */
125702
+ AllowDuplicateFailedOnly = "ALLOW_DUPLICATE_FAILED_ONLY",
125703
+ /** Never start a second run with the same workflow id. */
125704
+ RejectDuplicate = "REJECT_DUPLICATE"
125705
+ }
124326
125706
  /** Validation result returned for a workflow import. */
124327
125707
  export type WorkflowImportValidation = {
124328
125708
  __typename?: 'WorkflowImportValidation';
@@ -124512,6 +125892,53 @@ export declare enum WorkflowProposalStatus {
124512
125892
  /** The workflow changed after the proposal was made; ask for a new one */
124513
125893
  Stale = "STALE"
124514
125894
  }
125895
+ /**
125896
+ * A gradual rollout (spec code-first 11 §2.27): `percent` % of the automatic starts of the workflow
125897
+ * (startWorkflow without a version, or `active`) run `toVersion` instead of the ACTIVE `fromVersion`.
125898
+ * A start's share is fixed by its workflow id (else its run id): the SDK's `rolloutBucket`, FNV-1a
125899
+ * modulo 100, below `percent`. In-flight AUTO_UPGRADE runs follow the same split, but only up to
125900
+ * `verifiedPercent`: a run moves to `toVersion` once a ROLLOUT check replayed the runs of its bucket.
125901
+ * Lowering the percent or removing the rollout moves no run back; a run that upgraded to `toVersion`
125902
+ * stays on it until another version is activated (that activation's check covers it).
125903
+ */
125904
+ export type WorkflowRollout = {
125905
+ __typename?: 'WorkflowRollout';
125906
+ /**
125907
+ * The check the rollout waits for: the ROLLOUT check of a raised percent (in-flight AUTO_UPGRADE runs
125908
+ * replay against `toVersion` first), or the ACTIVATION check of a promotion.
125909
+ */
125910
+ activationCheck?: Maybe<WorkflowCodeReplaceResult>;
125911
+ createdAt: Scalars['DateTime']['output'];
125912
+ createdById: Scalars['String']['output'];
125913
+ /** PROD (the ACTIVE version) in this release. */
125914
+ environment: WorkflowEnvironment;
125915
+ /** The ACTIVE version the rollout starts from; a rollout whose fromVersion is no longer ACTIVE has no effect. */
125916
+ fromVersion: Scalars['String']['output'];
125917
+ id: Scalars['ID']['output'];
125918
+ /** 0 to 100: the share of new automatic starts. */
125919
+ percent: Scalars['Int']['output'];
125920
+ /**
125921
+ * True when `percent: 100` promoted `toVersion` (activated it) and the rollout was removed, or when
125922
+ * the promotion waits for its activation check (`activationCheck`).
125923
+ */
125924
+ promoted: Scalars['Boolean']['output'];
125925
+ toVersion: Scalars['String']['output'];
125926
+ updatedAt: Scalars['DateTime']['output'];
125927
+ updatedById?: Maybe<Scalars['String']['output']>;
125928
+ /** 0 to `percent`: the share of in-flight AUTO_UPGRADE runs verified against `toVersion` (a ROLLOUT check), which move to it. */
125929
+ verifiedPercent: Scalars['Int']['output'];
125930
+ workflowKey: Scalars['String']['output'];
125931
+ };
125932
+ export type WorkflowRolloutInput = {
125933
+ /** PROD only in this release. */
125934
+ environment?: InputMaybe<WorkflowEnvironment>;
125935
+ /** The ACTIVE version (the default); any other value is refused. */
125936
+ fromVersion?: InputMaybe<Scalars['String']['input']>;
125937
+ /** 0 (every start runs fromVersion) to 100 (promote toVersion: activate it and remove the rollout). */
125938
+ percent: Scalars['Int']['input'];
125939
+ /** Another DRAFT version of the workflow with durable workflow functions. */
125940
+ toVersion: Scalars['String']['input'];
125941
+ };
124515
125942
  /**
124516
125943
  * WorkflowRun: Instance of workflow execution
124517
125944
  * Federated entity identified by id
@@ -124525,13 +125952,26 @@ export type WorkflowRun = {
124525
125952
  aiUsage: WorkflowRunAiUsage;
124526
125953
  /** The code bundle a durable-function run replays (`sha256:<hex>`). */
124527
125954
  buildId?: Maybe<Scalars['String']['output']>;
125955
+ /**
125956
+ * The run's workflow id (spec code-first 11 §2.1), unique among the open runs of its workflow key;
125957
+ * null for runs started without durable-function parity. `workflowId` is the definition's id.
125958
+ */
125959
+ businessId?: Maybe<Scalars['String']['output']>;
124528
125960
  /** When cancellation was requested for a durable-function run. */
124529
125961
  cancelRequestedAt?: Maybe<Scalars['DateTime']['output']>;
124530
125962
  childRuns: Array<WorkflowRun>;
124531
125963
  completedAt?: Maybe<Scalars['DateTime']['output']>;
124532
125964
  completedNodes?: Maybe<Scalars['Int']['output']>;
125965
+ /** The run's completion callback, when it was started with one (parity, 11 §2.32). */
125966
+ completionCallback?: Maybe<RunCallbackDelivery>;
124533
125967
  context?: Maybe<Scalars['JSON']['output']>;
125968
+ /** The run this one continues (continue-as-new). */
125969
+ continuedFromRunId?: Maybe<Scalars['ID']['output']>;
125970
+ /** The run that continues this one; operations by workflow id follow it. */
125971
+ continuedToRunId?: Maybe<Scalars['ID']['output']>;
124534
125972
  createdAt: Scalars['DateTime']['output'];
125973
+ /** What the run says it is doing now (`ctx.setCurrentDetails`, Markdown; parity). */
125974
+ currentDetails?: Maybe<Scalars['String']['output']>;
124535
125975
  /**
124536
125976
  * When this run's data (trigger data, node inputs and outputs, logs) was dropped because its
124537
125977
  * workflow does not save runs like it (Settings, BOFF-7514). Null when the data is kept.
@@ -124543,6 +125983,8 @@ export type WorkflowRun = {
124543
125983
  * Null when nothing was redacted.
124544
125984
  */
124545
125985
  dataRedactedAt?: Maybe<Scalars['DateTime']['output']>;
125986
+ /** Markdown about the run (parity). */
125987
+ details?: Maybe<Scalars['String']['output']>;
124546
125988
  /** Whether a durable-function run's workflow task is failing; null for a graph run. */
124547
125989
  determinism?: Maybe<WorkflowRunDeterminismStatus>;
124548
125990
  duration?: Maybe<Scalars['Float']['output']>;
@@ -124556,11 +125998,17 @@ export type WorkflowRun = {
124556
125998
  errorType?: Maybe<ErrorType>;
124557
125999
  /** GRAPH for canvas runs, DURABLE_FN for durable-function runs. */
124558
126000
  executionKind: ExecutionKind;
126001
+ /** When the chain's execution timeout expires (parity, 11 §2.20). */
126002
+ executionTimeoutAt?: Maybe<Scalars['DateTime']['output']>;
124559
126003
  failedNodes?: Maybe<Scalars['Int']['output']>;
126004
+ /** The first run of the continue-as-new chain; null on the first run itself. */
126005
+ firstRunId?: Maybe<Scalars['ID']['output']>;
124560
126006
  /** Events in the run's history; 0 for a graph run. */
124561
126007
  historyLength: Scalars['Int']['output'];
124562
126008
  id: Scalars['ID']['output'];
124563
126009
  isSubWorkflowRun: Scalars['Boolean']['output'];
126010
+ /** The run's memo (`context` of its start, merged with `ctx.upsertContext`; parity). */
126011
+ memo?: Maybe<Scalars['JSON']['output']>;
124564
126012
  /**
124565
126013
  * Manual/debug (TEST) vs real (PRODUCTION) run — BOFF-7511. Defaults to
124566
126014
  * PRODUCTION. Only a TEST run may use pinned node data.
@@ -124571,17 +126019,29 @@ export type WorkflowRun = {
124571
126019
  parentClosePolicy?: Maybe<ParentClosePolicy>;
124572
126020
  parentRun?: Maybe<WorkflowRun>;
124573
126021
  parentRunId?: Maybe<Scalars['String']['output']>;
126022
+ /** What the run is waiting on (parity, 11 §2.34; needs fluidgrids.durable-parity). */
126023
+ pending?: Maybe<RunPendingState>;
126024
+ /** The run's priority (1 is the highest, 5 the lowest; 3 by default). */
126025
+ priority: Scalars['Int']['output'];
124574
126026
  progress: Scalars['Float']['output'];
124575
126027
  rootRunId?: Maybe<Scalars['String']['output']>;
126028
+ /** Run-level retry attempt, 1-based. */
126029
+ runAttempt: Scalars['Int']['output'];
126030
+ /** When the run's run timeout expires (parity, 11 §2.20). */
126031
+ runTimeoutAt?: Maybe<Scalars['DateTime']['output']>;
124576
126032
  skippedNodes?: Maybe<Scalars['Int']['output']>;
124577
126033
  /**
124578
126034
  * Debug-in-editor / run-from-node (BOFF-7511): the run this one reused
124579
126035
  * upstream node outputs from, if it was started via `runFromNode`.
124580
126036
  */
124581
126037
  sourceRunId?: Maybe<Scalars['String']['output']>;
126038
+ /** When a delayed start's first workflow task is due (parity, 11 §2.23). */
126039
+ startDelayUntil?: Maybe<Scalars['DateTime']['output']>;
124582
126040
  startedAt?: Maybe<Scalars['DateTime']['output']>;
124583
126041
  status: RunStatus;
124584
126042
  subworkflowDepth: Scalars['Int']['output'];
126043
+ /** One line about the run (parity, spec code-first 11 §2.22). */
126044
+ summary?: Maybe<Scalars['String']['output']>;
124585
126045
  /** Structured tag assignments (wspace-tags-svc). */
124586
126046
  tagAssignments: Array<FluidgridsTagAssignment>;
124587
126047
  taskQueue?: Maybe<Scalars['String']['output']>;
@@ -124591,6 +126051,8 @@ export type WorkflowRun = {
124591
126051
  triggeredById?: Maybe<Scalars['String']['output']>;
124592
126052
  updatedAt: Scalars['DateTime']['output'];
124593
126053
  version: Scalars['String']['output'];
126054
+ /** Which bundle the run uses and why (parity, 11 §2.27); null for a graph run. */
126055
+ versioning?: Maybe<RunVersioning>;
124594
126056
  workflow?: Maybe<WorkflowDefinition>;
124595
126057
  /** The workflow function a durable-function run executes. */
124596
126058
  workflowFn?: Maybe<Scalars['String']['output']>;
@@ -124772,11 +126234,21 @@ export type WorkflowRunListResponse = {
124772
126234
  items: Array<WorkflowRun>;
124773
126235
  total: Scalars['Int']['output'];
124774
126236
  };
126237
+ /** The built-in `__metadata` query of a durable-function run (spec code-first 11 §2.21). */
126238
+ export type WorkflowRunMetadata = {
126239
+ __typename?: 'WorkflowRunMetadata';
126240
+ /** The run's current details (`ctx.setCurrentDetails`), Markdown. */
126241
+ currentDetails?: Maybe<Scalars['String']['output']>;
126242
+ /** The workflow function's definition: its name, signals, queries and updates, each with its description. */
126243
+ definition: Scalars['JSON']['output'];
126244
+ };
124775
126245
  /** The built-in stack-trace queries of an open durable-function run, answered by a replay in the service. */
124776
126246
  export type WorkflowRunStackTrace = {
124777
126247
  __typename?: 'WorkflowRunStackTrace';
124778
126248
  /** The `__enhanced_stack_trace` answer (SDK, stacks with file, line and column), when asked for. */
124779
126249
  enhanced?: Maybe<Scalars['JSON']['output']>;
126250
+ /** The `__metadata` answer, when asked for with `metadata: true` (parity). */
126251
+ metadata?: Maybe<WorkflowRunMetadata>;
124780
126252
  /** Where each pending await of the workflow code is (`__stack_trace`); null for a closed run. */
124781
126253
  trace?: Maybe<Scalars['String']['output']>;
124782
126254
  };
@@ -124889,6 +126361,12 @@ export type WorkflowTaskFailureInput = {
124889
126361
  export type WorkflowTaskHeartbeatAck = {
124890
126362
  __typename?: 'WorkflowTaskHeartbeatAck';
124891
126363
  cancelRequested: Scalars['Boolean']['output'];
126364
+ /**
126365
+ * The named local activities the service holds as granted (their la:<id> NodeState is RUNNING):
126366
+ * their results are accepted. A worker runs only these; with fluidgrids.durable-parity off it is
126367
+ * empty unless an earlier heartbeat granted them.
126368
+ */
126369
+ grantedLocalActivityIds: Array<Scalars['String']['output']>;
124892
126370
  leaseExpiresAt: Scalars['DateTime']['output'];
124893
126371
  };
124894
126372
  /** The lease of one workflow-task attempt. Everything that decides behaviour comes from here, never from the job. */
@@ -124905,7 +126383,10 @@ export type WorkflowTaskLease = {
124905
126383
  /** The WorkflowInfoSnapshot of the task request. */
124906
126384
  info: Scalars['JSON']['output'];
124907
126385
  leaseExpiresAt: Scalars['DateTime']['output'];
126386
+ /** Milliseconds from the task's start that local activities may extend it to (parity, spec code-first 11 §2.12). */
126387
+ localActivityBudgetMs: Scalars['Int']['output'];
124908
126388
  maxHistoryBytes: Scalars['Float']['output'];
126389
+ /** The run's history caps: its snapshot (parity, raised per workspace up to the plan ceiling), else the defaults. */
124909
126390
  maxHistoryEvents: Scalars['Int']['output'];
124910
126391
  /** Why the lease was refused: NOT_FOUND, NOT_DURABLE, RUN_CLOSED, STALE_TASK, ALREADY_STARTED, BACKOFF. */
124911
126392
  reason?: Maybe<Scalars['String']['output']>;
@@ -124920,6 +126401,15 @@ export type WorkflowTaskLease = {
124920
126401
  workflowKey?: Maybe<Scalars['String']['output']>;
124921
126402
  workflowTaskTimeoutMs: Scalars['Int']['output'];
124922
126403
  };
126404
+ /** A local activity a worker is about to run inside its workflow task (parity). */
126405
+ export type WorkflowTaskLocalActivityInput = {
126406
+ /** The attempt the worker runs, 1-based. */
126407
+ attempt?: InputMaybe<Scalars['Int']['input']>;
126408
+ localActivityId: Scalars['String']['input'];
126409
+ nodeType?: InputMaybe<Scalars['String']['input']>;
126410
+ operation?: InputMaybe<Scalars['String']['input']>;
126411
+ summary?: InputMaybe<Scalars['String']['input']>;
126412
+ };
124923
126413
  export type WorkflowTimeRange = {
124924
126414
  __typename?: 'WorkflowTimeRange';
124925
126415
  from: Scalars['String']['output'];