@github/copilot-sdk-win32-x64 1.0.15-preview.2 → 1.0.15-preview.4

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.
@@ -1519,6 +1519,10 @@
1519
1519
  "model": {
1520
1520
  "type": "string",
1521
1521
  "description": "Model identifier used for this turn, when known"
1522
+ },
1523
+ "parentToolCallId": {
1524
+ "type": "string",
1525
+ "description": "Parent task tool call ID when this turn belongs to a sub-agent"
1522
1526
  }
1523
1527
  },
1524
1528
  "required": [
@@ -1676,6 +1680,10 @@
1676
1680
  "interactionId": {
1677
1681
  "type": "string",
1678
1682
  "description": "CAPI interaction ID for correlating this turn with upstream telemetry"
1683
+ },
1684
+ "parentToolCallId": {
1685
+ "type": "string",
1686
+ "description": "Parent task tool call ID when this turn belongs to a sub-agent"
1679
1687
  }
1680
1688
  },
1681
1689
  "required": [
@@ -5326,9 +5334,14 @@
5326
5334
  "$ref": "#/definitions/ResponsesReasoning",
5327
5335
  "description": "Reasoning baseline on the replacement summary, preserved when replay skips the compacted history"
5328
5336
  },
5337
+ "activeWorkflowSummary": {
5338
+ "type": "string",
5339
+ "description": "Authoritative active-workflow reminder appended to the compacted context",
5340
+ "visibility": "internal"
5341
+ },
5329
5342
  "activeFactorySummary": {
5330
5343
  "type": "string",
5331
- "description": "Authoritative active-factory reminder appended to the compacted context",
5344
+ "description": "Legacy active-workflow reminder retained for replay compatibility",
5332
5345
  "visibility": "internal"
5333
5346
  },
5334
5347
  "behaviorModelId": {
@@ -7156,185 +7169,85 @@
7156
7169
  "description": "Session event \"external_tool.requested\". External tool invocation request for client-side tool execution",
7157
7170
  "title": "ExternalToolRequestedEvent"
7158
7171
  },
7159
- "FactoryPermissionOperation": {
7160
- "type": "string",
7161
- "enum": [
7162
- "run",
7163
- "author"
7164
- ],
7165
- "description": "Operation gated by a factory permission request.",
7166
- "title": "FactoryPermissionOperation",
7167
- "x-enumDescriptions": {
7168
- "run": "Running a registered factory, which spends subagents, active time, and AI credits under the approved limits.",
7169
- "author": "Authoring a factory, which writes JavaScript into a session-scoped extension and loads it."
7170
- }
7171
- },
7172
- "FactoryPermissionPhase": {
7172
+ "FusionAttribution": {
7173
7173
  "type": "object",
7174
7174
  "properties": {
7175
- "title": {
7176
- "type": "string",
7177
- "description": "Phase title"
7175
+ "hasUserSteering": {
7176
+ "type": "boolean",
7177
+ "description": "Whether this model request consumed a user steering message rather than only internal Fusion work."
7178
7178
  },
7179
- "detail": {
7180
- "type": "string",
7181
- "description": "Optional phase detail"
7182
- }
7183
- },
7184
- "required": [
7185
- "title"
7186
- ],
7187
- "additionalProperties": false,
7188
- "description": "A declared phase shown in a factory permission prompt.",
7189
- "title": "FactoryPermissionPhase"
7190
- },
7191
- "FactoryRunSettledData": {
7192
- "type": "object",
7193
- "properties": {
7194
- "runId": {
7179
+ "fusionId": {
7195
7180
  "type": "string",
7196
- "description": "Identifier of the factory run that settled."
7197
- },
7198
- "status": {
7199
- "$ref": "#/definitions/FactoryRunSettledStatus",
7200
- "description": "Terminal status the run committed."
7201
- },
7202
- "consumedSubagents": {
7203
- "type": "integer",
7204
- "minimum": 0,
7205
- "description": "Subagents this run consumed against its limits."
7181
+ "description": "Stable identifier for the HydraFusion turn that produced the event."
7206
7182
  },
7207
- "consumedNanoAiu": {
7208
- "type": "integer",
7209
- "minimum": 0,
7210
- "description": "AI credits this run consumed, in nano-AIU."
7183
+ "commitId": {
7184
+ "type": "string",
7185
+ "description": "Idempotency identifier for the authoritative commit, when the event belongs to the selected output."
7211
7186
  },
7212
- "elapsedMs": {
7213
- "type": "integer",
7214
- "minimum": 0,
7215
- "description": "Active milliseconds accumulated across every attempt of this run."
7187
+ "syntheticModel": {
7188
+ "type": "string",
7189
+ "description": "Synthetic HydraFusion model selected for the session."
7216
7190
  },
7217
- "failureType": {
7191
+ "policy": {
7218
7192
  "type": "string",
7219
- "description": "Typed failure class recorded on the run, when it failed with one (e.g. `factory_limit_reached`)."
7220
- }
7221
- },
7222
- "required": [
7223
- "runId",
7224
- "status",
7225
- "consumedSubagents",
7226
- "consumedNanoAiu",
7227
- "elapsedMs"
7228
- ],
7229
- "additionalProperties": false,
7230
- "description": "Ephemeral signal that a factory run reached a terminal status.",
7231
- "title": "FactoryRunSettledData",
7232
- "stability": "experimental"
7233
- },
7234
- "FactoryRunSettledEvent": {
7235
- "type": "object",
7236
- "properties": {
7237
- "id": {
7193
+ "description": "HydraFusion routing policy used for the turn."
7194
+ },
7195
+ "pattern": {
7238
7196
  "type": "string",
7239
- "format": "uuid",
7240
- "description": "Unique event identifier (UUID v4), generated when the event is emitted"
7197
+ "description": "HydraFusion orchestration pattern selected for the turn."
7241
7198
  },
7242
- "timestamp": {
7199
+ "phaseId": {
7243
7200
  "type": "string",
7244
- "format": "date-time",
7245
- "description": "ISO 8601 timestamp when the event was created"
7201
+ "description": "Identifier of the concrete phase that produced the event."
7246
7202
  },
7247
- "parentId": {
7248
- "anyOf": [
7249
- {
7250
- "type": "string",
7251
- "format": "uuid"
7252
- },
7253
- {
7254
- "type": "null"
7255
- }
7256
- ],
7257
- "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
7203
+ "phaseKind": {
7204
+ "type": "string",
7205
+ "description": "Kind of concrete phase that produced the event."
7258
7206
  },
7259
- "ephemeral": {
7260
- "type": "boolean",
7261
- "const": true,
7262
- "description": "Always true for events that are transient and not persisted to the session event log on disk."
7207
+ "role": {
7208
+ "type": "string",
7209
+ "description": "Semantic role assigned to the concrete phase."
7263
7210
  },
7264
- "agentId": {
7211
+ "sourceModel": {
7265
7212
  "type": "string",
7266
- "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
7213
+ "description": "Concrete model that produced the attributed event."
7267
7214
  },
7268
- "type": {
7215
+ "conversationScope": {
7269
7216
  "type": "string",
7270
- "const": "factory.run_settled",
7271
- "description": "Type discriminator. Always \"factory.run_settled\"."
7217
+ "description": "Conversation scope in which the concrete phase executed."
7272
7218
  },
7273
- "data": {
7274
- "$ref": "#/definitions/FactoryRunSettledData",
7275
- "description": "Ephemeral signal that a factory run reached a terminal status."
7219
+ "sourcePhaseId": {
7220
+ "type": "string",
7221
+ "description": "Phase whose output supplied the authoritative content, when different from the executing phase."
7276
7222
  }
7277
7223
  },
7278
7224
  "required": [
7279
- "id",
7280
- "timestamp",
7281
- "parentId",
7282
- "ephemeral",
7283
- "type",
7284
- "data"
7225
+ "fusionId",
7226
+ "syntheticModel",
7227
+ "policy",
7228
+ "pattern"
7285
7229
  ],
7286
7230
  "additionalProperties": false,
7287
- "description": "Session event \"factory.run_settled\". Ephemeral signal that a factory run reached a terminal status.",
7288
- "title": "FactoryRunSettledEvent",
7231
+ "description": "Experimental attribution linking an ordinary event to the HydraFusion turn, phase, and concrete source that produced it.",
7232
+ "title": "FusionAttribution",
7289
7233
  "stability": "experimental"
7290
7234
  },
7291
- "FactoryRunSettledStatus": {
7292
- "type": "string",
7293
- "enum": [
7294
- "completed",
7295
- "halted",
7296
- "paused",
7297
- "cancelled",
7298
- "error"
7299
- ],
7300
- "description": "Terminal status a factory run committed. A settled run is never `pending` or `running`, so those two members of the run-status domain are deliberately absent.",
7301
- "title": "FactoryRunSettledStatus",
7302
- "x-enumDescriptions": {
7303
- "completed": "The factory body resolved and its result was committed.",
7304
- "halted": "The run was stopped by a limit, an approval refusal or another policy decision.",
7305
- "paused": "The attempt paused intentionally while preserving resumable run state.",
7306
- "cancelled": "The run was cancelled by its caller or by session disposal.",
7307
- "error": "The run failed, with `failureType` carrying the class when it has one."
7308
- }
7309
- },
7310
- "FactoryRunStartedData": {
7235
+ "FusionChangeCheckpointData": {
7311
7236
  "type": "object",
7312
7237
  "properties": {
7313
- "runId": {
7314
- "type": "string",
7315
- "description": "Identifier of the factory run that started."
7316
- },
7317
- "factoryName": {
7318
- "type": "string",
7319
- "description": "Name of the factory this run executes. Low cardinality by construction."
7320
- },
7321
- "attempt": {
7322
- "type": "integer",
7323
- "minimum": 1,
7324
- "description": "Attempt number this start committed; a resumed run increments it."
7238
+ "codeChanges": {
7239
+ "$ref": "#/definitions/ShutdownCodeChanges"
7325
7240
  }
7326
7241
  },
7327
7242
  "required": [
7328
- "runId",
7329
- "factoryName",
7330
- "attempt"
7243
+ "codeChanges"
7331
7244
  ],
7332
7245
  "additionalProperties": false,
7333
- "description": "Ephemeral signal that a factory run attempt began executing.",
7334
- "title": "FactoryRunStartedData",
7335
- "stability": "experimental"
7246
+ "description": "Internal durable editing-tool totals after a Fusion turn, including edits from discarded phases.",
7247
+ "title": "FusionChangeCheckpointData",
7248
+ "visibility": "internal"
7336
7249
  },
7337
- "FactoryRunStartedEvent": {
7250
+ "FusionChangeCheckpointEvent": {
7338
7251
  "type": "object",
7339
7252
  "properties": {
7340
7253
  "id": {
@@ -7361,8 +7274,7 @@
7361
7274
  },
7362
7275
  "ephemeral": {
7363
7276
  "type": "boolean",
7364
- "const": true,
7365
- "description": "Always true for events that are transient and not persisted to the session event log on disk."
7277
+ "description": "When true, the event is transient and not persisted to the session event log on disk"
7366
7278
  },
7367
7279
  "agentId": {
7368
7280
  "type": "string",
@@ -7370,50 +7282,81 @@
7370
7282
  },
7371
7283
  "type": {
7372
7284
  "type": "string",
7373
- "const": "factory.run_started",
7374
- "description": "Type discriminator. Always \"factory.run_started\"."
7285
+ "const": "session.fusion_change_checkpoint",
7286
+ "description": "Type discriminator. Always \"session.fusion_change_checkpoint\"."
7375
7287
  },
7376
7288
  "data": {
7377
- "$ref": "#/definitions/FactoryRunStartedData",
7378
- "description": "Ephemeral signal that a factory run attempt began executing."
7289
+ "$ref": "#/definitions/FusionChangeCheckpointData",
7290
+ "description": "Internal durable editing-tool totals after a Fusion turn, including edits from discarded phases."
7379
7291
  }
7380
7292
  },
7381
7293
  "required": [
7382
7294
  "id",
7383
7295
  "timestamp",
7384
7296
  "parentId",
7385
- "ephemeral",
7386
7297
  "type",
7387
7298
  "data"
7388
7299
  ],
7389
7300
  "additionalProperties": false,
7390
- "description": "Session event \"factory.run_started\". Ephemeral signal that a factory run attempt began executing.",
7391
- "title": "FactoryRunStartedEvent",
7301
+ "description": "Session event \"session.fusion_change_checkpoint\". Internal durable editing-tool totals after a Fusion turn, including edits from discarded phases.",
7302
+ "title": "FusionChangeCheckpointEvent",
7303
+ "visibility": "internal"
7304
+ },
7305
+ "FusionCommitKind": {
7306
+ "type": "string",
7307
+ "enum": [
7308
+ "text",
7309
+ "terminal_tool"
7310
+ ],
7311
+ "description": "Kind of authoritative final commit.",
7312
+ "title": "FusionCommitKind",
7313
+ "visibility": "internal",
7314
+ "x-enumDescriptions": {
7315
+ "text": "Authoritative final text commit.",
7316
+ "terminal_tool": "Authoritative terminal tool-call commit."
7317
+ },
7392
7318
  "stability": "experimental"
7393
7319
  },
7394
- "FactoryRunUpdatedData": {
7320
+ "FusionCommitStartedData": {
7395
7321
  "type": "object",
7396
7322
  "properties": {
7397
- "runId": {
7398
- "type": "string",
7399
- "description": "Factory run identifier."
7323
+ "fusionId": {
7324
+ "type": "string"
7400
7325
  },
7401
- "revision": {
7402
- "type": "integer",
7403
- "minimum": 1,
7404
- "description": "Monotonic revision now available for the run."
7326
+ "commitId": {
7327
+ "type": "string"
7328
+ },
7329
+ "sourcePhaseId": {
7330
+ "type": "string"
7331
+ },
7332
+ "sourceModel": {
7333
+ "type": "string"
7334
+ },
7335
+ "kind": {
7336
+ "$ref": "#/definitions/FusionCommitKind"
7337
+ },
7338
+ "toolCallId": {
7339
+ "type": [
7340
+ "string",
7341
+ "null"
7342
+ ]
7405
7343
  }
7406
7344
  },
7407
7345
  "required": [
7408
- "runId",
7409
- "revision"
7346
+ "fusionId",
7347
+ "commitId",
7348
+ "sourcePhaseId",
7349
+ "sourceModel",
7350
+ "kind",
7351
+ "toolCallId"
7410
7352
  ],
7411
7353
  "additionalProperties": false,
7412
- "description": "Ephemeral invalidation signal for a changed factory run.",
7413
- "title": "FactoryRunUpdatedData",
7354
+ "description": "Stable durable idempotency boundary for a HydraFusion final text or terminal commit.",
7355
+ "title": "FusionCommitStartedData",
7356
+ "visibility": "internal",
7414
7357
  "stability": "experimental"
7415
7358
  },
7416
- "FactoryRunUpdatedEvent": {
7359
+ "FusionCommitStartedEvent": {
7417
7360
  "type": "object",
7418
7361
  "properties": {
7419
7362
  "id": {
@@ -7440,8 +7383,7 @@
7440
7383
  },
7441
7384
  "ephemeral": {
7442
7385
  "type": "boolean",
7443
- "const": true,
7444
- "description": "Always true for events that are transient and not persisted to the session event log on disk."
7386
+ "description": "When true, the event is transient and not persisted to the session event log on disk"
7445
7387
  },
7446
7388
  "agentId": {
7447
7389
  "type": "string",
@@ -7449,222 +7391,53 @@
7449
7391
  },
7450
7392
  "type": {
7451
7393
  "type": "string",
7452
- "const": "factory.run_updated",
7453
- "description": "Type discriminator. Always \"factory.run_updated\"."
7394
+ "const": "session.fusion_commit_started",
7395
+ "description": "Type discriminator. Always \"session.fusion_commit_started\"."
7454
7396
  },
7455
7397
  "data": {
7456
- "$ref": "#/definitions/FactoryRunUpdatedData",
7457
- "description": "Ephemeral invalidation signal for a changed factory run."
7398
+ "$ref": "#/definitions/FusionCommitStartedData",
7399
+ "description": "Stable durable idempotency boundary for a HydraFusion final text or terminal commit."
7458
7400
  }
7459
7401
  },
7460
7402
  "required": [
7461
7403
  "id",
7462
7404
  "timestamp",
7463
7405
  "parentId",
7464
- "ephemeral",
7465
7406
  "type",
7466
7407
  "data"
7467
7408
  ],
7468
7409
  "additionalProperties": false,
7469
- "description": "Session event \"factory.run_updated\". Ephemeral invalidation signal for a changed factory run.",
7470
- "title": "FactoryRunUpdatedEvent",
7410
+ "description": "Session event \"session.fusion_commit_started\". Stable durable idempotency boundary for a HydraFusion final text or terminal commit.",
7411
+ "title": "FusionCommitStartedEvent",
7412
+ "visibility": "internal",
7471
7413
  "stability": "experimental"
7472
7414
  },
7473
- "FusionAttribution": {
7415
+ "FusionCompletedData": {
7474
7416
  "type": "object",
7475
7417
  "properties": {
7476
7418
  "fusionId": {
7477
7419
  "type": "string",
7478
- "description": "Stable identifier for the HydraFusion turn that produced the event."
7420
+ "description": "Stable identifier for the completed HydraFusion turn."
7479
7421
  },
7480
7422
  "commitId": {
7481
7423
  "type": "string",
7482
- "description": "Idempotency identifier for the authoritative commit, when the event belongs to the selected output."
7424
+ "description": "Idempotency identifier for the authoritative final commit."
7483
7425
  },
7484
- "syntheticModel": {
7426
+ "turnId": {
7485
7427
  "type": "string",
7486
- "description": "Synthetic HydraFusion model selected for the session."
7428
+ "description": "Identifier of the session turn associated with the completion."
7487
7429
  },
7488
- "policy": {
7430
+ "syntheticModel": {
7489
7431
  "type": "string",
7490
- "description": "HydraFusion routing policy used for the turn."
7432
+ "description": "Synthetic HydraFusion model selected for the session."
7491
7433
  },
7492
7434
  "pattern": {
7493
- "type": "string",
7494
- "description": "HydraFusion orchestration pattern selected for the turn."
7495
- },
7496
- "phaseId": {
7497
- "type": "string",
7498
- "description": "Identifier of the concrete phase that produced the event."
7435
+ "$ref": "#/definitions/FusionPattern",
7436
+ "description": "HydraFusion orchestration pattern executed for the turn."
7499
7437
  },
7500
- "phaseKind": {
7438
+ "outcome": {
7501
7439
  "type": "string",
7502
- "description": "Kind of concrete phase that produced the event."
7503
- },
7504
- "role": {
7505
- "type": "string",
7506
- "description": "Semantic role assigned to the concrete phase."
7507
- },
7508
- "sourceModel": {
7509
- "type": "string",
7510
- "description": "Concrete model that produced the attributed event."
7511
- },
7512
- "conversationScope": {
7513
- "type": "string",
7514
- "description": "Conversation scope in which the concrete phase executed."
7515
- },
7516
- "sourcePhaseId": {
7517
- "type": "string",
7518
- "description": "Phase whose output supplied the authoritative content, when different from the executing phase."
7519
- }
7520
- },
7521
- "required": [
7522
- "fusionId",
7523
- "syntheticModel",
7524
- "policy",
7525
- "pattern"
7526
- ],
7527
- "additionalProperties": false,
7528
- "description": "Experimental attribution linking an ordinary event to the HydraFusion turn, phase, and concrete source that produced it.",
7529
- "title": "FusionAttribution",
7530
- "stability": "experimental"
7531
- },
7532
- "FusionCommitKind": {
7533
- "type": "string",
7534
- "enum": [
7535
- "text",
7536
- "terminal_tool"
7537
- ],
7538
- "description": "Kind of authoritative final commit.",
7539
- "title": "FusionCommitKind",
7540
- "visibility": "internal",
7541
- "x-enumDescriptions": {
7542
- "text": "Authoritative final text commit.",
7543
- "terminal_tool": "Authoritative terminal tool-call commit."
7544
- },
7545
- "stability": "experimental"
7546
- },
7547
- "FusionCommitStartedData": {
7548
- "type": "object",
7549
- "properties": {
7550
- "fusionId": {
7551
- "type": "string"
7552
- },
7553
- "commitId": {
7554
- "type": "string"
7555
- },
7556
- "sourcePhaseId": {
7557
- "type": "string"
7558
- },
7559
- "sourceModel": {
7560
- "type": "string"
7561
- },
7562
- "kind": {
7563
- "$ref": "#/definitions/FusionCommitKind"
7564
- },
7565
- "toolCallId": {
7566
- "type": [
7567
- "string",
7568
- "null"
7569
- ]
7570
- }
7571
- },
7572
- "required": [
7573
- "fusionId",
7574
- "commitId",
7575
- "sourcePhaseId",
7576
- "sourceModel",
7577
- "kind",
7578
- "toolCallId"
7579
- ],
7580
- "additionalProperties": false,
7581
- "description": "Stable durable idempotency boundary for a HydraFusion final text or terminal commit.",
7582
- "title": "FusionCommitStartedData",
7583
- "visibility": "internal",
7584
- "stability": "experimental"
7585
- },
7586
- "FusionCommitStartedEvent": {
7587
- "type": "object",
7588
- "properties": {
7589
- "id": {
7590
- "type": "string",
7591
- "format": "uuid",
7592
- "description": "Unique event identifier (UUID v4), generated when the event is emitted"
7593
- },
7594
- "timestamp": {
7595
- "type": "string",
7596
- "format": "date-time",
7597
- "description": "ISO 8601 timestamp when the event was created"
7598
- },
7599
- "parentId": {
7600
- "anyOf": [
7601
- {
7602
- "type": "string",
7603
- "format": "uuid"
7604
- },
7605
- {
7606
- "type": "null"
7607
- }
7608
- ],
7609
- "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
7610
- },
7611
- "ephemeral": {
7612
- "type": "boolean",
7613
- "description": "When true, the event is transient and not persisted to the session event log on disk"
7614
- },
7615
- "agentId": {
7616
- "type": "string",
7617
- "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
7618
- },
7619
- "type": {
7620
- "type": "string",
7621
- "const": "session.fusion_commit_started",
7622
- "description": "Type discriminator. Always \"session.fusion_commit_started\"."
7623
- },
7624
- "data": {
7625
- "$ref": "#/definitions/FusionCommitStartedData",
7626
- "description": "Stable durable idempotency boundary for a HydraFusion final text or terminal commit."
7627
- }
7628
- },
7629
- "required": [
7630
- "id",
7631
- "timestamp",
7632
- "parentId",
7633
- "type",
7634
- "data"
7635
- ],
7636
- "additionalProperties": false,
7637
- "description": "Session event \"session.fusion_commit_started\". Stable durable idempotency boundary for a HydraFusion final text or terminal commit.",
7638
- "title": "FusionCommitStartedEvent",
7639
- "visibility": "internal",
7640
- "stability": "experimental"
7641
- },
7642
- "FusionCompletedData": {
7643
- "type": "object",
7644
- "properties": {
7645
- "fusionId": {
7646
- "type": "string",
7647
- "description": "Stable identifier for the completed HydraFusion turn."
7648
- },
7649
- "commitId": {
7650
- "type": "string",
7651
- "description": "Idempotency identifier for the authoritative final commit."
7652
- },
7653
- "turnId": {
7654
- "type": "string",
7655
- "description": "Identifier of the session turn associated with the completion."
7656
- },
7657
- "syntheticModel": {
7658
- "type": "string",
7659
- "description": "Synthetic HydraFusion model selected for the session."
7660
- },
7661
- "pattern": {
7662
- "$ref": "#/definitions/FusionPattern",
7663
- "description": "HydraFusion orchestration pattern executed for the turn."
7664
- },
7665
- "outcome": {
7666
- "type": "string",
7667
- "description": "Stable aggregate outcome of the HydraFusion turn."
7440
+ "description": "Stable aggregate outcome of the HydraFusion turn."
7668
7441
  },
7669
7442
  "finalSourcePhaseId": {
7670
7443
  "type": [
@@ -7826,6 +7599,32 @@
7826
7599
  },
7827
7600
  "stability": "experimental"
7828
7601
  },
7602
+ "FusionCritic": {
7603
+ "type": "object",
7604
+ "properties": {
7605
+ "phaseId": {
7606
+ "type": "string",
7607
+ "description": "Unique execution phase identifier for this critic.",
7608
+ "stability": "experimental"
7609
+ },
7610
+ "model": {
7611
+ "type": "string",
7612
+ "description": "Concrete model selected for this critic.",
7613
+ "stability": "experimental"
7614
+ },
7615
+ "reasoningEffort": {
7616
+ "type": "string",
7617
+ "description": "Explicit reasoning effort selected for this critic, if supplied.",
7618
+ "stability": "experimental"
7619
+ }
7620
+ },
7621
+ "required": [
7622
+ "phaseId",
7623
+ "model"
7624
+ ],
7625
+ "additionalProperties": false,
7626
+ "stability": "experimental"
7627
+ },
7829
7628
  "FusionFollowUpAction": {
7830
7629
  "type": "string",
7831
7630
  "enum": [
@@ -8063,6 +7862,11 @@
8063
7862
  "type": "string",
8064
7863
  "description": "Concrete model that executed the phase."
8065
7864
  },
7865
+ "reasoningEffort": {
7866
+ "type": "string",
7867
+ "description": "Explicit reasoning effort selected for this phase, if supplied.",
7868
+ "stability": "experimental"
7869
+ },
8066
7870
  "status": {
8067
7871
  "$ref": "#/definitions/FusionPhaseStatus",
8068
7872
  "description": "Durable outcome status of the phase."
@@ -8148,6 +7952,11 @@
8148
7952
  "type": "string",
8149
7953
  "description": "Concrete model that attempted the phase."
8150
7954
  },
7955
+ "reasoningEffort": {
7956
+ "type": "string",
7957
+ "description": "Explicit reasoning effort selected for this phase, if supplied.",
7958
+ "stability": "experimental"
7959
+ },
8151
7960
  "status": {
8152
7961
  "$ref": "#/definitions/FusionPhaseStatus",
8153
7962
  "description": "Durable outcome status of the phase."
@@ -8276,6 +8085,11 @@
8276
8085
  "model": {
8277
8086
  "type": "string",
8278
8087
  "description": "Concrete model executing the phase."
8088
+ },
8089
+ "reasoningEffort": {
8090
+ "type": "string",
8091
+ "description": "Explicit reasoning effort selected for this phase, if supplied.",
8092
+ "stability": "experimental"
8279
8093
  }
8280
8094
  },
8281
8095
  "required": [
@@ -8455,7 +8269,25 @@
8455
8269
  "string",
8456
8270
  "null"
8457
8271
  ],
8458
- "description": "Concrete model selected for the review or judge phase, when required."
8272
+ "description": "Concrete model selected for Critique review, or the legacy Cascade judge/repair model when role-specific fields are absent."
8273
+ },
8274
+ "judgeModel": {
8275
+ "type": "string",
8276
+ "description": "Concrete model selected for Cascade escalation-gate calls, when required.",
8277
+ "stability": "experimental"
8278
+ },
8279
+ "repairModel": {
8280
+ "type": "string",
8281
+ "description": "Concrete model selected for Cascade repair, when required.",
8282
+ "stability": "experimental"
8283
+ },
8284
+ "critics": {
8285
+ "type": "array",
8286
+ "items": {
8287
+ "$ref": "#/definitions/FusionCritic"
8288
+ },
8289
+ "description": "Planned Critique phase identities, including independent critics with repeated model IDs. May be absent in older events; consumers then use secondaryModel for the legacy critic.",
8290
+ "stability": "experimental"
8459
8291
  },
8460
8292
  "fallbackModel": {
8461
8293
  "type": "string",
@@ -10643,6 +10475,10 @@
10643
10475
  "type": "string",
10644
10476
  "const": "client_credentials",
10645
10477
  "description": "Optional non-default OAuth grant type. When set to 'client_credentials', the OAuth flow runs headlessly using the client_id + keychain-stored secret (no browser, no callback server)."
10478
+ },
10479
+ "scope": {
10480
+ "type": "string",
10481
+ "description": "Configured OAuth scope string used when the server challenge omits scope or provides an empty scope"
10646
10482
  }
10647
10483
  },
10648
10484
  "required": [
@@ -11421,6 +11257,10 @@
11421
11257
  "type": "string",
11422
11258
  "description": "Model identifier used for the failed API call"
11423
11259
  },
11260
+ "parentToolCallId": {
11261
+ "type": "string",
11262
+ "description": "Parent task tool call ID when this failed model call belongs to a sub-agent"
11263
+ },
11424
11264
  "initiator": {
11425
11265
  "type": "string",
11426
11266
  "description": "What initiated this API call (e.g., \"sub-agent\", \"mcp-sampling\"); absent for user-initiated calls"
@@ -11819,6 +11659,10 @@
11819
11659
  "$ref": "#/definitions/FusionAttribution",
11820
11660
  "description": "Experimental HydraFusion attribution for this concrete model call.",
11821
11661
  "stability": "experimental"
11662
+ },
11663
+ "parentToolCallId": {
11664
+ "type": "string",
11665
+ "description": "Parent task tool call ID when this model call belongs to a sub-agent"
11822
11666
  }
11823
11667
  },
11824
11668
  "required": [
@@ -12034,7 +11878,8 @@
12034
11878
  "plan_mode",
12035
11879
  "automatic",
12036
11880
  "changeboarding_shortcut",
12037
- "sdk"
11881
+ "sdk",
11882
+ "auto_tier_recommendation"
12038
11883
  ],
12039
11884
  "description": "Origin of an effective session model change.",
12040
11885
  "title": "ModelChangeSource",
@@ -12050,7 +11895,8 @@
12050
11895
  "plan_mode": "Entering, leaving, or reconfiguring plan mode selected the model.",
12051
11896
  "automatic": "The runtime selected the model automatically, such as rate-limit recovery or refusal fallback.",
12052
11897
  "changeboarding_shortcut": "The user selected the promoted model from the changeboarding card or its keyboard shortcut.",
12053
- "sdk": "An SDK or RPC caller selected the model."
11898
+ "sdk": "An SDK or RPC caller selected the model.",
11899
+ "auto_tier_recommendation": "The user accepted a CAPI-issued Auto tier recommendation."
12054
11900
  }
12055
11901
  },
12056
11902
  "ModelDeselectedData": {
@@ -12553,7 +12399,7 @@
12553
12399
  "turnIndex"
12554
12400
  ],
12555
12401
  "additionalProperties": false,
12556
- "description": "Records that deterministic text recognition found likely assent in the human turn immediately following a root Autopilot permission request that was blocked because no interactive response was available. This event grants no authority; its model-facing projection only suggests retrying the unchanged operation.",
12402
+ "description": "Historical decode-only contextual-assent marker. Current runtimes do not project it into the conversation or permission flow.",
12557
12403
  "title": "PermissionAssentDetectedData",
12558
12404
  "stability": "experimental"
12559
12405
  },
@@ -12597,7 +12443,7 @@
12597
12443
  },
12598
12444
  "data": {
12599
12445
  "$ref": "#/definitions/PermissionAssentDetectedData",
12600
- "description": "Records that deterministic text recognition found likely assent in the human turn immediately following a root Autopilot permission request that was blocked because no interactive response was available. This event grants no authority; its model-facing projection only suggests retrying the unchanged operation."
12446
+ "description": "Historical decode-only contextual-assent marker. Current runtimes do not project it into the conversation or permission flow."
12601
12447
  }
12602
12448
  },
12603
12449
  "required": [
@@ -12608,7 +12454,7 @@
12608
12454
  "data"
12609
12455
  ],
12610
12456
  "additionalProperties": false,
12611
- "description": "Session event \"permission.assentDetected\". Records that deterministic text recognition found likely assent in the human turn immediately following a root Autopilot permission request that was blocked because no interactive response was available. This event grants no authority; its model-facing projection only suggests retrying the unchanged operation.",
12457
+ "description": "Session event \"permission.assentDetected\". Historical decode-only contextual-assent marker. Current runtimes do not project it into the conversation or permission flow.",
12612
12458
  "title": "PermissionAssentDetectedEvent",
12613
12459
  "stability": "experimental"
12614
12460
  },
@@ -12695,7 +12541,7 @@
12695
12541
  "decisionSource"
12696
12542
  ],
12697
12543
  "additionalProperties": false,
12698
- "description": "Records that a live authorization record from an earlier human decision in this session contained a permission proposal, so it ran without another prompt. This mints no authority: it accounts for one more effect against the prior grant, which is what lets a replayed session agree with the live one about how much of that grant is left.",
12544
+ "description": "Historical decode-only receipt from the retired Assisted Permissions authorization extractor. Current runtimes ignore it for permission decisions.",
12699
12545
  "title": "PermissionCarriedForwardData",
12700
12546
  "stability": "experimental"
12701
12547
  },
@@ -12739,7 +12585,7 @@
12739
12585
  },
12740
12586
  "data": {
12741
12587
  "$ref": "#/definitions/PermissionCarriedForwardData",
12742
- "description": "Records that a live authorization record from an earlier human decision in this session contained a permission proposal, so it ran without another prompt. This mints no authority: it accounts for one more effect against the prior grant, which is what lets a replayed session agree with the live one about how much of that grant is left."
12588
+ "description": "Historical decode-only receipt from the retired Assisted Permissions authorization extractor. Current runtimes ignore it for permission decisions."
12743
12589
  }
12744
12590
  },
12745
12591
  "required": [
@@ -12750,7 +12596,7 @@
12750
12596
  "data"
12751
12597
  ],
12752
12598
  "additionalProperties": false,
12753
- "description": "Session event \"permission.carriedForward\". Records that a live authorization record from an earlier human decision in this session contained a permission proposal, so it ran without another prompt. This mints no authority: it accounts for one more effect against the prior grant, which is what lets a replayed session agree with the live one about how much of that grant is left.",
12599
+ "description": "Session event \"permission.carriedForward\". Historical decode-only receipt from the retired Assisted Permissions authorization extractor. Current runtimes ignore it for permission decisions.",
12754
12600
  "title": "PermissionCarriedForwardEvent",
12755
12601
  "stability": "experimental"
12756
12602
  },
@@ -12891,7 +12737,7 @@
12891
12737
  "spanEnd"
12892
12738
  ],
12893
12739
  "additionalProperties": false,
12894
- "description": "Freezes a blinded contextual authorization proposal whose verbatim human span was deterministically bound to the immediately preceding blocked permission request. The event carries no action fields; replay re-derives the exact action from the earlier permission request and mints a one-shot message grant only when the binding and span still verify.",
12740
+ "description": "Historical decode-only contextual authorization claim. Current runtimes preserve the payload but do not establish authority from it.",
12895
12741
  "title": "PermissionContextualAuthorizationData",
12896
12742
  "stability": "experimental"
12897
12743
  },
@@ -12935,7 +12781,7 @@
12935
12781
  },
12936
12782
  "data": {
12937
12783
  "$ref": "#/definitions/PermissionContextualAuthorizationData",
12938
- "description": "Freezes a blinded contextual authorization proposal whose verbatim human span was deterministically bound to the immediately preceding blocked permission request. The event carries no action fields; replay re-derives the exact action from the earlier permission request and mints a one-shot message grant only when the binding and span still verify."
12784
+ "description": "Historical decode-only contextual authorization claim. Current runtimes preserve the payload but do not establish authority from it."
12939
12785
  }
12940
12786
  },
12941
12787
  "required": [
@@ -12946,7 +12792,7 @@
12946
12792
  "data"
12947
12793
  ],
12948
12794
  "additionalProperties": false,
12949
- "description": "Session event \"permission.contextualAuthorization\". Freezes a blinded contextual authorization proposal whose verbatim human span was deterministically bound to the immediately preceding blocked permission request. The event carries no action fields; replay re-derives the exact action from the earlier permission request and mints a one-shot message grant only when the binding and span still verify.",
12795
+ "description": "Session event \"permission.contextualAuthorization\". Historical decode-only contextual authorization claim. Current runtimes preserve the payload but do not establish authority from it.",
12950
12796
  "title": "PermissionContextualAuthorizationEvent",
12951
12797
  "stability": "experimental"
12952
12798
  },
@@ -12966,7 +12812,7 @@
12966
12812
  "human_response": "A human supplied the response through an interactive prompt.",
12967
12813
  "host_policy": "The host applied a standing policy or override rather than a judge recommendation or human decision.",
12968
12814
  "unattended_fallback": "The host denied the request because no interactive user response was available.",
12969
- "authorization_carry_forward": "A live authorization record from an earlier human decision in this session contained the proposal, so it ran without another prompt. This is not a new human decision and never mints authority of its own."
12815
+ "authorization_carry_forward": "Historical compatibility value for sessions created while authorization carry-forward was executable. Current runtimes do not produce this source."
12970
12816
  }
12971
12817
  },
12972
12818
  "PermissionDeniedByContentExclusionPolicy": {
@@ -13149,7 +12995,7 @@
13149
12995
  "spanEnd"
13150
12996
  ],
13151
12997
  "additionalProperties": false,
13152
- "description": "Freezes one blinded, verbatim-verified authorization claim the runtime minted from a human user message, so a resumed session re-establishes the same grant deterministically instead of re-running the extraction model. This mints no authority on its own: it records what a blinded proposer pointed at and the trusted discriminator the runtime established, and deterministic establishment runs on replay. Persisted so recorded authority survives compaction and process resume.",
12998
+ "description": "Historical decode-only claim from the retired Assisted Permissions authorization extractor. Current runtimes preserve the payload but do not establish authority from it.",
13153
12999
  "title": "PermissionMessageAuthorizationData",
13154
13000
  "stability": "experimental"
13155
13001
  },
@@ -13167,7 +13013,7 @@
13167
13013
  "turnIndex"
13168
13014
  ],
13169
13015
  "additionalProperties": false,
13170
- "description": "Records that message-backed authorization could not safely represent one human turn before compaction. The runtime may compact the original message after this marker is durable, but message-derived carry-forward and assisted auto-approval remain disabled for the rest of the session so subsequent commands continue through the ordinary permission prompt.",
13016
+ "description": "Historical decode-only degradation marker from the retired extractor. Current runtimes ignore it for permission decisions.",
13171
13017
  "title": "PermissionMessageAuthorizationDegradedData",
13172
13018
  "stability": "experimental"
13173
13019
  },
@@ -13211,7 +13057,7 @@
13211
13057
  },
13212
13058
  "data": {
13213
13059
  "$ref": "#/definitions/PermissionMessageAuthorizationDegradedData",
13214
- "description": "Records that message-backed authorization could not safely represent one human turn before compaction. The runtime may compact the original message after this marker is durable, but message-derived carry-forward and assisted auto-approval remain disabled for the rest of the session so subsequent commands continue through the ordinary permission prompt."
13060
+ "description": "Historical decode-only degradation marker from the retired extractor. Current runtimes ignore it for permission decisions."
13215
13061
  }
13216
13062
  },
13217
13063
  "required": [
@@ -13222,7 +13068,7 @@
13222
13068
  "data"
13223
13069
  ],
13224
13070
  "additionalProperties": false,
13225
- "description": "Session event \"permission.messageAuthorizationDegraded\". Records that message-backed authorization could not safely represent one human turn before compaction. The runtime may compact the original message after this marker is durable, but message-derived carry-forward and assisted auto-approval remain disabled for the rest of the session so subsequent commands continue through the ordinary permission prompt.",
13071
+ "description": "Session event \"permission.messageAuthorizationDegraded\". Historical decode-only degradation marker from the retired extractor. Current runtimes ignore it for permission decisions.",
13226
13072
  "title": "PermissionMessageAuthorizationDegradedEvent",
13227
13073
  "stability": "experimental"
13228
13074
  },
@@ -13266,7 +13112,7 @@
13266
13112
  },
13267
13113
  "data": {
13268
13114
  "$ref": "#/definitions/PermissionMessageAuthorizationData",
13269
- "description": "Freezes one blinded, verbatim-verified authorization claim the runtime minted from a human user message, so a resumed session re-establishes the same grant deterministically instead of re-running the extraction model. This mints no authority on its own: it records what a blinded proposer pointed at and the trusted discriminator the runtime established, and deterministic establishment runs on replay. Persisted so recorded authority survives compaction and process resume."
13115
+ "description": "Historical decode-only claim from the retired Assisted Permissions authorization extractor. Current runtimes preserve the payload but do not establish authority from it."
13270
13116
  }
13271
13117
  },
13272
13118
  "required": [
@@ -13277,7 +13123,7 @@
13277
13123
  "data"
13278
13124
  ],
13279
13125
  "additionalProperties": false,
13280
- "description": "Session event \"permission.messageAuthorization\". Freezes one blinded, verbatim-verified authorization claim the runtime minted from a human user message, so a resumed session re-establishes the same grant deterministically instead of re-running the extraction model. This mints no authority on its own: it records what a blinded proposer pointed at and the trusted discriminator the runtime established, and deterministic establishment runs on replay. Persisted so recorded authority survives compaction and process resume.",
13126
+ "description": "Session event \"permission.messageAuthorization\". Historical decode-only claim from the retired Assisted Permissions authorization extractor. Current runtimes preserve the payload but do not establish authority from it.",
13281
13127
  "title": "PermissionMessageAuthorizationEvent",
13282
13128
  "stability": "experimental"
13283
13129
  },
@@ -13287,11 +13133,11 @@
13287
13133
  "grant",
13288
13134
  "denial"
13289
13135
  ],
13290
- "description": "Which direction a message-backed authorization claim moves authority in.",
13136
+ "description": "Direction stored in a historical extractor claim. Current runtimes do not apply it.",
13291
13137
  "title": "PermissionMessageAuthorizationPolarity",
13292
13138
  "x-enumDescriptions": {
13293
- "grant": "The human's words authorized an effect.",
13294
- "denial": "The human's words refused an effect."
13139
+ "grant": "Historical claim recorded as a grant.",
13140
+ "denial": "Historical claim recorded as a denial."
13295
13141
  },
13296
13142
  "stability": "experimental"
13297
13143
  },
@@ -13314,7 +13160,7 @@
13314
13160
  "turnIndex"
13315
13161
  ],
13316
13162
  "additionalProperties": false,
13317
- "description": "Records that one human turn has been read by the blinded authorization proposer, whether or not it minted anything, so a resumed session does not re-run the extraction model on a turn the live session already read. Also records whether that pass activates ongoing extraction; contextual-assent-only passes do not, so unrelated future messages remain outside extraction.",
13163
+ "description": "Historical decode-only extractor progress marker. Current runtimes do not run or resume extraction from it.",
13318
13164
  "title": "PermissionMessageAuthorizationReadData",
13319
13165
  "stability": "experimental"
13320
13166
  },
@@ -13358,7 +13204,7 @@
13358
13204
  },
13359
13205
  "data": {
13360
13206
  "$ref": "#/definitions/PermissionMessageAuthorizationReadData",
13361
- "description": "Records that one human turn has been read by the blinded authorization proposer, whether or not it minted anything, so a resumed session does not re-run the extraction model on a turn the live session already read. Also records whether that pass activates ongoing extraction; contextual-assent-only passes do not, so unrelated future messages remain outside extraction."
13207
+ "description": "Historical decode-only extractor progress marker. Current runtimes do not run or resume extraction from it."
13362
13208
  }
13363
13209
  },
13364
13210
  "required": [
@@ -13369,7 +13215,7 @@
13369
13215
  "data"
13370
13216
  ],
13371
13217
  "additionalProperties": false,
13372
- "description": "Session event \"permission.messageAuthorizationRead\". Records that one human turn has been read by the blinded authorization proposer, whether or not it minted anything, so a resumed session does not re-run the extraction model on a turn the live session already read. Also records whether that pass activates ongoing extraction; contextual-assent-only passes do not, so unrelated future messages remain outside extraction.",
13218
+ "description": "Session event \"permission.messageAuthorizationRead\". Historical decode-only extractor progress marker. Current runtimes do not run or resume extraction from it.",
13373
13219
  "title": "PermissionMessageAuthorizationReadEvent",
13374
13220
  "stability": "experimental"
13375
13221
  },
@@ -13432,8 +13278,8 @@
13432
13278
  "description": "Extension management permission prompt"
13433
13279
  },
13434
13280
  {
13435
- "$ref": "#/definitions/PermissionPromptRequestFactory",
13436
- "description": "Factory run or authoring permission prompt"
13281
+ "$ref": "#/definitions/PermissionPromptRequestWorkflow",
13282
+ "description": "Workflow run or authoring permission prompt"
13437
13283
  },
13438
13284
  {
13439
13285
  "$ref": "#/definitions/PermissionPromptRequestExtensionPermissionAccess",
@@ -13665,150 +13511,51 @@
13665
13511
  "description": "Extension permission access prompt",
13666
13512
  "title": "PermissionPromptRequestExtensionPermissionAccess"
13667
13513
  },
13668
- "PermissionPromptRequestFactory": {
13514
+ "PermissionPromptRequestHook": {
13669
13515
  "type": "object",
13670
13516
  "properties": {
13671
13517
  "kind": {
13672
13518
  "type": "string",
13673
- "const": "factory",
13519
+ "const": "hook",
13674
13520
  "description": "Prompt kind discriminator"
13675
13521
  },
13676
13522
  "toolCallId": {
13677
13523
  "type": "string",
13678
13524
  "description": "Tool call ID that triggered this permission request"
13679
13525
  },
13680
- "operation": {
13681
- "$ref": "#/definitions/FactoryPermissionOperation",
13682
- "description": "Factory operation, either run or author"
13526
+ "toolName": {
13527
+ "type": "string",
13528
+ "description": "Name of the tool the hook is gating"
13683
13529
  },
13684
- "name": {
13530
+ "toolArgs": {
13531
+ "description": "Arguments of the tool call being gated",
13532
+ "x-opaque-json": true
13533
+ },
13534
+ "hookMessage": {
13685
13535
  "type": "string",
13686
- "description": "Factory name"
13536
+ "description": "Optional message from the hook explaining why confirmation is needed"
13687
13537
  },
13688
- "description": {
13538
+ "assistedApproval": {
13539
+ "$ref": "#/definitions/PermissionAssistedApproval",
13540
+ "description": "Assisted-approval judge information for this request; present only in assisted mode.",
13541
+ "stability": "experimental"
13542
+ }
13543
+ },
13544
+ "required": [
13545
+ "kind",
13546
+ "toolName"
13547
+ ],
13548
+ "additionalProperties": false,
13549
+ "description": "Hook confirmation permission prompt",
13550
+ "title": "PermissionPromptRequestHook"
13551
+ },
13552
+ "PermissionPromptRequestMcp": {
13553
+ "type": "object",
13554
+ "properties": {
13555
+ "kind": {
13689
13556
  "type": "string",
13690
- "description": "Factory description"
13691
- },
13692
- "phases": {
13693
- "type": "array",
13694
- "items": {
13695
- "$ref": "#/definitions/FactoryPermissionPhase",
13696
- "description": "A declared phase shown in a factory permission prompt."
13697
- },
13698
- "description": "Declared factory phases"
13699
- },
13700
- "maxConcurrentSubagents": {
13701
- "type": "integer",
13702
- "minimum": 0,
13703
- "description": "Effective concurrent-subagent limit; omitted means unlimited"
13704
- },
13705
- "maxTotalSubagents": {
13706
- "type": "integer",
13707
- "minimum": 0,
13708
- "description": "Effective total-subagent limit; omitted means unlimited"
13709
- },
13710
- "timeoutSeconds": {
13711
- "type": "number",
13712
- "description": "Effective active-time limit in seconds; omitted means unlimited"
13713
- },
13714
- "maxAiCredits": {
13715
- "type": "number",
13716
- "description": "Effective AI-credit limit; omitted means unlimited"
13717
- },
13718
- "declaredMaxConcurrentSubagents": {
13719
- "type": "integer",
13720
- "minimum": 0,
13721
- "description": "Factory-declared concurrent-subagent limit before any run/resume caller override is applied."
13722
- },
13723
- "declaredMaxTotalSubagents": {
13724
- "type": "integer",
13725
- "minimum": 0,
13726
- "description": "Factory-declared total-subagent limit before any run/resume caller override is applied."
13727
- },
13728
- "declaredTimeoutSeconds": {
13729
- "type": "number",
13730
- "description": "Factory-declared active-time limit in seconds before any run/resume caller override is applied."
13731
- },
13732
- "declaredMaxAiCredits": {
13733
- "type": "number",
13734
- "description": "Factory-declared AI-credit limit before any run/resume caller override is applied."
13735
- },
13736
- "approvalKey": {
13737
- "type": "string",
13738
- "description": "Canonical key used for scoped factory approvals"
13739
- },
13740
- "canPersistApproval": {
13741
- "type": "boolean",
13742
- "description": "Whether this factory is eligible for persistent approval"
13743
- },
13744
- "assistedApproval": {
13745
- "$ref": "#/definitions/PermissionAssistedApproval",
13746
- "description": "Assisted-approval judge information for this request; present only in assisted mode.",
13747
- "stability": "experimental"
13748
- },
13749
- "managedApprovalRequired": {
13750
- "type": "boolean",
13751
- "description": "Whether managed policy requires a human response and forbids host auto-approval"
13752
- }
13753
- },
13754
- "required": [
13755
- "kind",
13756
- "operation",
13757
- "name",
13758
- "description",
13759
- "phases",
13760
- "approvalKey",
13761
- "canPersistApproval"
13762
- ],
13763
- "additionalProperties": false,
13764
- "description": "Factory run or authoring permission prompt",
13765
- "title": "PermissionPromptRequestFactory"
13766
- },
13767
- "PermissionPromptRequestHook": {
13768
- "type": "object",
13769
- "properties": {
13770
- "kind": {
13771
- "type": "string",
13772
- "const": "hook",
13773
- "description": "Prompt kind discriminator"
13774
- },
13775
- "toolCallId": {
13776
- "type": "string",
13777
- "description": "Tool call ID that triggered this permission request"
13778
- },
13779
- "toolName": {
13780
- "type": "string",
13781
- "description": "Name of the tool the hook is gating"
13782
- },
13783
- "toolArgs": {
13784
- "description": "Arguments of the tool call being gated",
13785
- "x-opaque-json": true
13786
- },
13787
- "hookMessage": {
13788
- "type": "string",
13789
- "description": "Optional message from the hook explaining why confirmation is needed"
13790
- },
13791
- "assistedApproval": {
13792
- "$ref": "#/definitions/PermissionAssistedApproval",
13793
- "description": "Assisted-approval judge information for this request; present only in assisted mode.",
13794
- "stability": "experimental"
13795
- }
13796
- },
13797
- "required": [
13798
- "kind",
13799
- "toolName"
13800
- ],
13801
- "additionalProperties": false,
13802
- "description": "Hook confirmation permission prompt",
13803
- "title": "PermissionPromptRequestHook"
13804
- },
13805
- "PermissionPromptRequestMcp": {
13806
- "type": "object",
13807
- "properties": {
13808
- "kind": {
13809
- "type": "string",
13810
- "const": "mcp",
13811
- "description": "Prompt kind discriminator"
13557
+ "const": "mcp",
13558
+ "description": "Prompt kind discriminator"
13812
13559
  },
13813
13560
  "toolCallId": {
13814
13561
  "type": "string",
@@ -14053,6 +13800,105 @@
14053
13800
  "description": "URL access permission prompt",
14054
13801
  "title": "PermissionPromptRequestUrl"
14055
13802
  },
13803
+ "PermissionPromptRequestWorkflow": {
13804
+ "type": "object",
13805
+ "properties": {
13806
+ "kind": {
13807
+ "type": "string",
13808
+ "const": "workflow",
13809
+ "description": "Prompt kind discriminator"
13810
+ },
13811
+ "toolCallId": {
13812
+ "type": "string",
13813
+ "description": "Tool call ID that triggered this permission request"
13814
+ },
13815
+ "operation": {
13816
+ "$ref": "#/definitions/WorkflowPermissionOperation",
13817
+ "description": "Workflow operation, either run or author"
13818
+ },
13819
+ "name": {
13820
+ "type": "string",
13821
+ "description": "Workflow name"
13822
+ },
13823
+ "description": {
13824
+ "type": "string",
13825
+ "description": "Workflow description"
13826
+ },
13827
+ "phases": {
13828
+ "type": "array",
13829
+ "items": {
13830
+ "$ref": "#/definitions/WorkflowPermissionPhase",
13831
+ "description": "A declared phase shown in a workflow permission prompt."
13832
+ },
13833
+ "description": "Declared workflow phases"
13834
+ },
13835
+ "maxConcurrentSubagents": {
13836
+ "type": "integer",
13837
+ "minimum": 0,
13838
+ "description": "Effective concurrent-subagent limit; omitted means unlimited"
13839
+ },
13840
+ "maxTotalSubagents": {
13841
+ "type": "integer",
13842
+ "minimum": 0,
13843
+ "description": "Effective total-subagent limit; omitted means unlimited"
13844
+ },
13845
+ "timeoutSeconds": {
13846
+ "type": "number",
13847
+ "description": "Effective active-time limit in seconds; omitted means unlimited"
13848
+ },
13849
+ "maxAiCredits": {
13850
+ "type": "number",
13851
+ "description": "Effective AI-credit limit; omitted means unlimited"
13852
+ },
13853
+ "declaredMaxConcurrentSubagents": {
13854
+ "type": "integer",
13855
+ "minimum": 0,
13856
+ "description": "Workflow-declared concurrent-subagent limit before any run/resume caller override is applied."
13857
+ },
13858
+ "declaredMaxTotalSubagents": {
13859
+ "type": "integer",
13860
+ "minimum": 0,
13861
+ "description": "Workflow-declared total-subagent limit before any run/resume caller override is applied."
13862
+ },
13863
+ "declaredTimeoutSeconds": {
13864
+ "type": "number",
13865
+ "description": "Workflow-declared active-time limit in seconds before any run/resume caller override is applied."
13866
+ },
13867
+ "declaredMaxAiCredits": {
13868
+ "type": "number",
13869
+ "description": "Workflow-declared AI-credit limit before any run/resume caller override is applied."
13870
+ },
13871
+ "approvalKey": {
13872
+ "type": "string",
13873
+ "description": "Canonical key used for scoped workflow approvals"
13874
+ },
13875
+ "canPersistApproval": {
13876
+ "type": "boolean",
13877
+ "description": "Whether this workflow is eligible for persistent approval"
13878
+ },
13879
+ "assistedApproval": {
13880
+ "$ref": "#/definitions/PermissionAssistedApproval",
13881
+ "description": "Assisted-approval judge information for this request; present only in assisted mode.",
13882
+ "stability": "experimental"
13883
+ },
13884
+ "managedApprovalRequired": {
13885
+ "type": "boolean",
13886
+ "description": "Whether managed policy requires a human response and forbids host auto-approval"
13887
+ }
13888
+ },
13889
+ "required": [
13890
+ "kind",
13891
+ "operation",
13892
+ "name",
13893
+ "description",
13894
+ "phases",
13895
+ "approvalKey",
13896
+ "canPersistApproval"
13897
+ ],
13898
+ "additionalProperties": false,
13899
+ "description": "Workflow run or authoring permission prompt",
13900
+ "title": "PermissionPromptRequestWorkflow"
13901
+ },
14056
13902
  "PermissionPromptRequestWrite": {
14057
13903
  "type": "object",
14058
13904
  "properties": {
@@ -14420,8 +14266,8 @@
14420
14266
  "description": "Extension management permission request"
14421
14267
  },
14422
14268
  {
14423
- "$ref": "#/definitions/PermissionRequestFactory",
14424
- "description": "Factory run or authoring permission request"
14269
+ "$ref": "#/definitions/PermissionRequestWorkflow",
14270
+ "description": "Workflow run or authoring permission request"
14425
14271
  },
14426
14272
  {
14427
14273
  "$ref": "#/definitions/PermissionRequestExtensionPermissionAccess",
@@ -14667,135 +14513,45 @@
14667
14513
  "description": "Extension permission access request",
14668
14514
  "title": "PermissionRequestExtensionPermissionAccess"
14669
14515
  },
14670
- "PermissionRequestFactory": {
14516
+ "PermissionRequestHook": {
14671
14517
  "type": "object",
14672
14518
  "properties": {
14673
14519
  "kind": {
14674
14520
  "type": "string",
14675
- "const": "factory",
14521
+ "const": "hook",
14676
14522
  "description": "Permission kind discriminator"
14677
14523
  },
14678
14524
  "toolCallId": {
14679
14525
  "type": "string",
14680
14526
  "description": "Tool call ID that triggered this permission request"
14681
14527
  },
14682
- "operation": {
14683
- "$ref": "#/definitions/FactoryPermissionOperation",
14684
- "description": "Factory operation, either run or author"
14685
- },
14686
- "name": {
14687
- "type": "string",
14688
- "description": "Factory name"
14689
- },
14690
- "description": {
14528
+ "toolName": {
14691
14529
  "type": "string",
14692
- "description": "Factory description"
14693
- },
14694
- "phases": {
14695
- "type": "array",
14696
- "items": {
14697
- "$ref": "#/definitions/FactoryPermissionPhase",
14698
- "description": "A declared phase shown in a factory permission prompt."
14699
- },
14700
- "description": "Declared factory phases"
14701
- },
14702
- "maxConcurrentSubagents": {
14703
- "type": "integer",
14704
- "minimum": 0,
14705
- "description": "Effective concurrent-subagent limit; omitted means unlimited"
14706
- },
14707
- "maxTotalSubagents": {
14708
- "type": "integer",
14709
- "minimum": 0,
14710
- "description": "Effective total-subagent limit; omitted means unlimited"
14711
- },
14712
- "timeoutSeconds": {
14713
- "type": "number",
14714
- "description": "Effective active-time limit in seconds; omitted means unlimited"
14715
- },
14716
- "maxAiCredits": {
14717
- "type": "number",
14718
- "description": "Effective AI-credit limit; omitted means unlimited"
14719
- },
14720
- "declaredMaxConcurrentSubagents": {
14721
- "type": "integer",
14722
- "minimum": 0,
14723
- "description": "Factory-declared concurrent-subagent limit before any run/resume caller override is applied."
14724
- },
14725
- "declaredMaxTotalSubagents": {
14726
- "type": "integer",
14727
- "minimum": 0,
14728
- "description": "Factory-declared total-subagent limit before any run/resume caller override is applied."
14729
- },
14730
- "declaredTimeoutSeconds": {
14731
- "type": "number",
14732
- "description": "Factory-declared active-time limit in seconds before any run/resume caller override is applied."
14530
+ "description": "Name of the tool the hook is gating"
14733
14531
  },
14734
- "declaredMaxAiCredits": {
14735
- "type": "number",
14736
- "description": "Factory-declared AI-credit limit before any run/resume caller override is applied."
14532
+ "toolArgs": {
14533
+ "description": "Arguments of the tool call being gated",
14534
+ "x-opaque-json": true
14737
14535
  },
14738
- "approvalKey": {
14536
+ "hookMessage": {
14739
14537
  "type": "string",
14740
- "description": "Canonical key used for scoped factory approvals"
14741
- },
14742
- "canPersistApproval": {
14743
- "type": "boolean",
14744
- "description": "Whether this factory is eligible for persistent approval"
14538
+ "description": "Optional message from the hook explaining why confirmation is needed"
14745
14539
  }
14746
14540
  },
14747
14541
  "required": [
14748
14542
  "kind",
14749
- "operation",
14750
- "name",
14751
- "description",
14752
- "phases",
14753
- "approvalKey",
14754
- "canPersistApproval"
14543
+ "toolName"
14755
14544
  ],
14756
14545
  "additionalProperties": false,
14757
- "description": "Factory run or authoring permission request",
14758
- "title": "PermissionRequestFactory"
14546
+ "description": "Hook confirmation permission request",
14547
+ "title": "PermissionRequestHook"
14759
14548
  },
14760
- "PermissionRequestHook": {
14549
+ "PermissionRequestMcp": {
14761
14550
  "type": "object",
14762
14551
  "properties": {
14763
14552
  "kind": {
14764
14553
  "type": "string",
14765
- "const": "hook",
14766
- "description": "Permission kind discriminator"
14767
- },
14768
- "toolCallId": {
14769
- "type": "string",
14770
- "description": "Tool call ID that triggered this permission request"
14771
- },
14772
- "toolName": {
14773
- "type": "string",
14774
- "description": "Name of the tool the hook is gating"
14775
- },
14776
- "toolArgs": {
14777
- "description": "Arguments of the tool call being gated",
14778
- "x-opaque-json": true
14779
- },
14780
- "hookMessage": {
14781
- "type": "string",
14782
- "description": "Optional message from the hook explaining why confirmation is needed"
14783
- }
14784
- },
14785
- "required": [
14786
- "kind",
14787
- "toolName"
14788
- ],
14789
- "additionalProperties": false,
14790
- "description": "Hook confirmation permission request",
14791
- "title": "PermissionRequestHook"
14792
- },
14793
- "PermissionRequestMcp": {
14794
- "type": "object",
14795
- "properties": {
14796
- "kind": {
14797
- "type": "string",
14798
- "const": "mcp",
14554
+ "const": "mcp",
14799
14555
  "description": "Permission kind discriminator"
14800
14556
  },
14801
14557
  "toolCallId": {
@@ -15192,6 +14948,100 @@
15192
14948
  "description": "URL access permission request",
15193
14949
  "title": "PermissionRequestUrl"
15194
14950
  },
14951
+ "PermissionRequestWorkflow": {
14952
+ "type": "object",
14953
+ "properties": {
14954
+ "kind": {
14955
+ "type": "string",
14956
+ "const": "workflow",
14957
+ "description": "Permission kind discriminator"
14958
+ },
14959
+ "toolCallId": {
14960
+ "type": "string",
14961
+ "description": "Tool call ID that triggered this permission request"
14962
+ },
14963
+ "operation": {
14964
+ "$ref": "#/definitions/WorkflowPermissionOperation",
14965
+ "description": "Workflow operation, either run or author"
14966
+ },
14967
+ "name": {
14968
+ "type": "string",
14969
+ "description": "Workflow name"
14970
+ },
14971
+ "description": {
14972
+ "type": "string",
14973
+ "description": "Workflow description"
14974
+ },
14975
+ "phases": {
14976
+ "type": "array",
14977
+ "items": {
14978
+ "$ref": "#/definitions/WorkflowPermissionPhase",
14979
+ "description": "A declared phase shown in a workflow permission prompt."
14980
+ },
14981
+ "description": "Declared workflow phases"
14982
+ },
14983
+ "maxConcurrentSubagents": {
14984
+ "type": "integer",
14985
+ "minimum": 0,
14986
+ "description": "Effective concurrent-subagent limit; omitted means unlimited"
14987
+ },
14988
+ "maxTotalSubagents": {
14989
+ "type": "integer",
14990
+ "minimum": 0,
14991
+ "description": "Effective total-subagent limit; omitted means unlimited"
14992
+ },
14993
+ "timeoutSeconds": {
14994
+ "type": "number",
14995
+ "description": "Effective active-time limit in seconds; omitted means unlimited"
14996
+ },
14997
+ "maxAiCredits": {
14998
+ "type": "number",
14999
+ "description": "Effective AI-credit limit; omitted means unlimited"
15000
+ },
15001
+ "declaredMaxConcurrentSubagents": {
15002
+ "type": "integer",
15003
+ "minimum": 0,
15004
+ "description": "Workflow-declared concurrent-subagent limit before any run/resume caller override is applied."
15005
+ },
15006
+ "declaredMaxTotalSubagents": {
15007
+ "type": "integer",
15008
+ "minimum": 0,
15009
+ "description": "Workflow-declared total-subagent limit before any run/resume caller override is applied."
15010
+ },
15011
+ "declaredTimeoutSeconds": {
15012
+ "type": "number",
15013
+ "description": "Workflow-declared active-time limit in seconds before any run/resume caller override is applied."
15014
+ },
15015
+ "declaredMaxAiCredits": {
15016
+ "type": "number",
15017
+ "description": "Workflow-declared AI-credit limit before any run/resume caller override is applied."
15018
+ },
15019
+ "approvalKey": {
15020
+ "type": "string",
15021
+ "description": "Canonical key used for scoped workflow approvals"
15022
+ },
15023
+ "canPersistApproval": {
15024
+ "type": "boolean",
15025
+ "description": "Whether this workflow is eligible for persistent approval"
15026
+ },
15027
+ "managedApprovalRequired": {
15028
+ "type": "boolean",
15029
+ "description": "Whether managed policy requires a human response and forbids host auto-approval"
15030
+ }
15031
+ },
15032
+ "required": [
15033
+ "kind",
15034
+ "operation",
15035
+ "name",
15036
+ "description",
15037
+ "phases",
15038
+ "approvalKey",
15039
+ "canPersistApproval"
15040
+ ],
15041
+ "additionalProperties": false,
15042
+ "description": "Workflow run or authoring permission request",
15043
+ "title": "PermissionRequestWorkflow"
15044
+ },
15195
15045
  "PermissionRequestWrite": {
15196
15046
  "type": "object",
15197
15047
  "properties": {
@@ -15918,7 +15768,7 @@
15918
15768
  "effort"
15919
15769
  ],
15920
15770
  "additionalProperties": false,
15921
- "description": "Original request-level and effective conversation reasoning effort for a Responses history boundary",
15771
+ "description": "Original request-level and effective conversation reasoning effort for a provider history boundary; the historical type name is retained for compatibility",
15922
15772
  "title": "ResponsesReasoning"
15923
15773
  },
15924
15774
  "ResumeData": {
@@ -17551,6 +17401,11 @@
17551
17401
  "$ref": "#/definitions/UsageCheckpointEvent",
17552
17402
  "description": "Session event \"session.usage_checkpoint\". Durable session usage checkpoint for reconstructing aggregate accounting on resume"
17553
17403
  },
17404
+ {
17405
+ "$ref": "#/definitions/FusionChangeCheckpointEvent",
17406
+ "description": "Session event \"session.fusion_change_checkpoint\". Internal durable editing-tool totals after a Fusion turn, including edits from discarded phases.",
17407
+ "visibility": "internal"
17408
+ },
17554
17409
  {
17555
17410
  "$ref": "#/definitions/ContextChangedEvent",
17556
17411
  "description": "Session event \"session.context_changed\". Updated working directory and git context after the change"
@@ -17823,27 +17678,27 @@
17823
17678
  },
17824
17679
  {
17825
17680
  "$ref": "#/definitions/PermissionCarriedForwardEvent",
17826
- "description": "Session event \"permission.carriedForward\". Records that a live authorization record from an earlier human decision in this session contained a permission proposal, so it ran without another prompt. This mints no authority: it accounts for one more effect against the prior grant, which is what lets a replayed session agree with the live one about how much of that grant is left."
17681
+ "description": "Session event \"permission.carriedForward\". Historical decode-only receipt from the retired Assisted Permissions authorization extractor. Current runtimes ignore it for permission decisions."
17827
17682
  },
17828
17683
  {
17829
17684
  "$ref": "#/definitions/PermissionMessageAuthorizationEvent",
17830
- "description": "Session event \"permission.messageAuthorization\". Freezes one blinded, verbatim-verified authorization claim the runtime minted from a human user message, so a resumed session re-establishes the same grant deterministically instead of re-running the extraction model. This mints no authority on its own: it records what a blinded proposer pointed at and the trusted discriminator the runtime established, and deterministic establishment runs on replay. Persisted so recorded authority survives compaction and process resume."
17685
+ "description": "Session event \"permission.messageAuthorization\". Historical decode-only claim from the retired Assisted Permissions authorization extractor. Current runtimes preserve the payload but do not establish authority from it."
17831
17686
  },
17832
17687
  {
17833
17688
  "$ref": "#/definitions/PermissionMessageAuthorizationReadEvent",
17834
- "description": "Session event \"permission.messageAuthorizationRead\". Records that one human turn has been read by the blinded authorization proposer, whether or not it minted anything, so a resumed session does not re-run the extraction model on a turn the live session already read. Also records whether that pass activates ongoing extraction; contextual-assent-only passes do not, so unrelated future messages remain outside extraction."
17689
+ "description": "Session event \"permission.messageAuthorizationRead\". Historical decode-only extractor progress marker. Current runtimes do not run or resume extraction from it."
17835
17690
  },
17836
17691
  {
17837
17692
  "$ref": "#/definitions/PermissionMessageAuthorizationDegradedEvent",
17838
- "description": "Session event \"permission.messageAuthorizationDegraded\". Records that message-backed authorization could not safely represent one human turn before compaction. The runtime may compact the original message after this marker is durable, but message-derived carry-forward and assisted auto-approval remain disabled for the rest of the session so subsequent commands continue through the ordinary permission prompt."
17693
+ "description": "Session event \"permission.messageAuthorizationDegraded\". Historical decode-only degradation marker from the retired extractor. Current runtimes ignore it for permission decisions."
17839
17694
  },
17840
17695
  {
17841
17696
  "$ref": "#/definitions/PermissionAssentDetectedEvent",
17842
- "description": "Session event \"permission.assentDetected\". Records that deterministic text recognition found likely assent in the human turn immediately following a root Autopilot permission request that was blocked because no interactive response was available. This event grants no authority; its model-facing projection only suggests retrying the unchanged operation."
17697
+ "description": "Session event \"permission.assentDetected\". Historical decode-only contextual-assent marker. Current runtimes do not project it into the conversation or permission flow."
17843
17698
  },
17844
17699
  {
17845
17700
  "$ref": "#/definitions/PermissionContextualAuthorizationEvent",
17846
- "description": "Session event \"permission.contextualAuthorization\". Freezes a blinded contextual authorization proposal whose verbatim human span was deterministically bound to the immediately preceding blocked permission request. The event carries no action fields; replay re-derives the exact action from the earlier permission request and mints a one-shot message grant only when the binding and span still verify."
17701
+ "description": "Session event \"permission.contextualAuthorization\". Historical decode-only contextual authorization claim. Current runtimes preserve the payload but do not establish authority from it."
17847
17702
  },
17848
17703
  {
17849
17704
  "$ref": "#/definitions/UserInputRequestedEvent",
@@ -17966,16 +17821,16 @@
17966
17821
  "description": "Session event \"session.background_tasks_changed\". Empty payload for `session.background_tasks_changed`, indicating background task state changed."
17967
17822
  },
17968
17823
  {
17969
- "$ref": "#/definitions/FactoryRunUpdatedEvent",
17970
- "description": "Session event \"factory.run_updated\". Ephemeral invalidation signal for a changed factory run."
17824
+ "$ref": "#/definitions/WorkflowRunUpdatedEvent",
17825
+ "description": "Session event \"workflow.run_updated\". Ephemeral invalidation signal for a changed workflow run."
17971
17826
  },
17972
17827
  {
17973
- "$ref": "#/definitions/FactoryRunStartedEvent",
17974
- "description": "Session event \"factory.run_started\". Ephemeral signal that a factory run attempt began executing."
17828
+ "$ref": "#/definitions/WorkflowRunStartedEvent",
17829
+ "description": "Session event \"workflow.run_started\". Ephemeral signal that a workflow run attempt began executing."
17975
17830
  },
17976
17831
  {
17977
- "$ref": "#/definitions/FactoryRunSettledEvent",
17978
- "description": "Session event \"factory.run_settled\". Ephemeral signal that a factory run reached a terminal status."
17832
+ "$ref": "#/definitions/WorkflowRunSettledEvent",
17833
+ "description": "Session event \"workflow.run_settled\". Ephemeral signal that a workflow run reached a terminal status."
17979
17834
  },
17980
17835
  {
17981
17836
  "$ref": "#/definitions/SkillsLoadedEvent",
@@ -19305,12 +19160,19 @@
19305
19160
  "properties": {
19306
19161
  "upToEventId": {
19307
19162
  "type": "string",
19308
- "description": "Event ID that was rewound to; this event and all after it were removed"
19163
+ "description": "First removed event. Without `eventIds`, it and every event after it were removed"
19309
19164
  },
19310
19165
  "eventsRemoved": {
19311
19166
  "type": "integer",
19312
19167
  "minimum": 0,
19313
19168
  "description": "Number of events that were removed by the rewind"
19169
+ },
19170
+ "eventIds": {
19171
+ "type": "array",
19172
+ "items": {
19173
+ "type": "string"
19174
+ },
19175
+ "description": "The removed events, starting with `upToEventId`. Later events not listed were kept, such as a background agent's events that interleaved with a withdrawn turn"
19314
19176
  }
19315
19177
  },
19316
19178
  "required": [
@@ -20066,7 +19928,7 @@
20066
19928
  },
20067
19929
  "taskModelSource": {
20068
19930
  "$ref": "#/definitions/SubagentTaskModelSource",
20069
- "description": "Where the model input for this sub-agent came from. Present when the task planner resolved the launch (the task tool and factory agents); absent for sub-agents created through other runtime paths."
19931
+ "description": "Where the model input for this sub-agent came from. Present when the task planner resolved the launch (the task tool and workflow agents); absent for sub-agents created through other runtime paths."
20070
19932
  },
20071
19933
  "modelSelectionSource": {
20072
19934
  "$ref": "#/definitions/SubagentModelSelectionSource",
@@ -20074,7 +19936,11 @@
20074
19936
  },
20075
19937
  "factoryRunId": {
20076
19938
  "type": "string",
20077
- "description": "Root id of the factory run that spawned this sub-agent, when it was spawned by one."
19939
+ "description": "Legacy root id of the workflow run that spawned this sub-agent. New consumers should use workflowRunId."
19940
+ },
19941
+ "workflowRunId": {
19942
+ "type": "string",
19943
+ "description": "Root id of the workflow run that spawned this sub-agent, when it was spawned by one."
20078
19944
  },
20079
19945
  "parentId": {
20080
19946
  "type": "string",
@@ -20350,8 +20216,8 @@
20350
20216
  "description": "System notification metadata for an instruction file discovered during tool access, including source, trigger file, and tool."
20351
20217
  },
20352
20218
  {
20353
- "$ref": "#/definitions/SystemNotificationFactoryCompleted",
20354
- "description": "System notification metadata for a factory execution attempt that reached a terminal state."
20219
+ "$ref": "#/definitions/SystemNotificationWorkflowCompleted",
20220
+ "description": "System notification metadata for a workflow execution attempt that reached a terminal state."
20355
20221
  },
20356
20222
  {
20357
20223
  "$ref": "#/definitions/SystemNotificationUnclassified",
@@ -20464,7 +20330,7 @@
20464
20330
  },
20465
20331
  "responsesReasoning": {
20466
20332
  "$ref": "#/definitions/ResponsesReasoning",
20467
- "description": "Responses reasoning settings anchored before this model-facing message, for cache-stable history replay"
20333
+ "description": "Provider reasoning settings anchored before this model-facing message for cache-stable replay; the historical responsesReasoning name is retained for compatibility"
20468
20334
  }
20469
20335
  },
20470
20336
  "required": [
@@ -20529,134 +20395,6 @@
20529
20395
  "description": "Session event \"system.notification\". System-generated notification for runtime events like background task completion",
20530
20396
  "title": "SystemNotificationEvent"
20531
20397
  },
20532
- "SystemNotificationFactoryCompleted": {
20533
- "type": "object",
20534
- "properties": {
20535
- "type": {
20536
- "type": "string",
20537
- "const": "factory_completed",
20538
- "description": "Type discriminator. Always \"factory_completed\"."
20539
- },
20540
- "runId": {
20541
- "type": "string",
20542
- "description": "Factory run identifier."
20543
- },
20544
- "factoryName": {
20545
- "type": "string",
20546
- "description": "Persisted factory name."
20547
- },
20548
- "status": {
20549
- "$ref": "#/definitions/SystemNotificationFactoryCompletedStatus",
20550
- "description": "Terminal status reached by this execution attempt."
20551
- },
20552
- "consumedSubagents": {
20553
- "type": "integer",
20554
- "minimum": 0,
20555
- "description": "Subagents consumed by the run across all attempts."
20556
- },
20557
- "elapsedMs": {
20558
- "type": "integer",
20559
- "minimum": 0,
20560
- "description": "Accumulated active execution time in milliseconds."
20561
- },
20562
- "consumedNanoAiu": {
20563
- "type": "integer",
20564
- "minimum": 0,
20565
- "description": "Consumed AI usage in nano-AIU."
20566
- },
20567
- "attempt": {
20568
- "type": "integer",
20569
- "minimum": 1,
20570
- "description": "Execution attempt that reached this terminal state."
20571
- },
20572
- "resultPreview": {
20573
- "type": "string",
20574
- "maxLength": 256,
20575
- "description": "Bounded prompt-safe preview of the completed result."
20576
- },
20577
- "failure": {
20578
- "description": "Machine-readable terminal failure details, when present.",
20579
- "x-opaque-json": true
20580
- },
20581
- "retryGuidance": {
20582
- "type": "string",
20583
- "description": "Actionable run_factory resume guidance for a resource-limit failure."
20584
- },
20585
- "pauseInfo": {
20586
- "$ref": "#/definitions/SystemNotificationFactoryPauseInfo",
20587
- "description": "Pause initiator metadata when this attempt settled as paused."
20588
- }
20589
- },
20590
- "required": [
20591
- "type",
20592
- "runId",
20593
- "factoryName",
20594
- "status",
20595
- "consumedSubagents",
20596
- "elapsedMs",
20597
- "consumedNanoAiu",
20598
- "attempt"
20599
- ],
20600
- "additionalProperties": false,
20601
- "description": "System notification metadata for a factory execution attempt that reached a terminal state.",
20602
- "title": "SystemNotificationFactoryCompleted"
20603
- },
20604
- "SystemNotificationFactoryCompletedStatus": {
20605
- "type": "string",
20606
- "enum": [
20607
- "completed",
20608
- "halted",
20609
- "paused",
20610
- "cancelled",
20611
- "error"
20612
- ],
20613
- "description": "Terminal status reached by a factory execution attempt.",
20614
- "title": "SystemNotificationFactoryCompletedStatus",
20615
- "x-enumDescriptions": {
20616
- "completed": "The factory completed successfully.",
20617
- "halted": "The factory was halted.",
20618
- "paused": "The factory attempt paused intentionally.",
20619
- "cancelled": "The factory was cancelled.",
20620
- "error": "The factory failed."
20621
- }
20622
- },
20623
- "SystemNotificationFactoryPauseInfo": {
20624
- "anyOf": [
20625
- {
20626
- "type": "object",
20627
- "properties": {
20628
- "type": {
20629
- "type": "string",
20630
- "const": "user",
20631
- "description": "Factory pause initiator discriminator."
20632
- }
20633
- },
20634
- "required": [
20635
- "type"
20636
- ]
20637
- },
20638
- {
20639
- "type": "object",
20640
- "properties": {
20641
- "key": {
20642
- "type": "string",
20643
- "description": "Stable author-defined checkpoint key that initiated the pause."
20644
- },
20645
- "type": {
20646
- "type": "string",
20647
- "const": "checkpoint",
20648
- "description": "Factory pause initiator discriminator."
20649
- }
20650
- },
20651
- "required": [
20652
- "type",
20653
- "key"
20654
- ]
20655
- }
20656
- ],
20657
- "description": "Durable metadata describing who initiated a factory pause.",
20658
- "title": "SystemNotificationFactoryPauseInfo"
20659
- },
20660
20398
  "SystemNotificationInstructionDiscovered": {
20661
20399
  "type": "object",
20662
20400
  "properties": {
@@ -20802,38 +20540,166 @@
20802
20540
  "description": "System notification metadata from an external host that does not match a runtime-owned notification kind.",
20803
20541
  "title": "SystemNotificationUnclassified"
20804
20542
  },
20805
- "TaskBlocker": {
20543
+ "SystemNotificationWorkflowCompleted": {
20806
20544
  "type": "object",
20807
20545
  "properties": {
20808
- "kind": {
20809
- "$ref": "#/definitions/TaskBlockerKind",
20810
- "description": "Category of intervention that blocked the task"
20546
+ "type": {
20547
+ "type": "string",
20548
+ "const": "workflow_completed",
20549
+ "description": "Type discriminator. Always \"workflow_completed\"."
20811
20550
  },
20812
- "reason": {
20813
- "$ref": "#/definitions/PermissionRecoveryReason",
20814
- "description": "Controlled reason for the current blocked state"
20551
+ "runId": {
20552
+ "type": "string",
20553
+ "description": "Workflow run identifier."
20815
20554
  },
20816
- "resumable": {
20817
- "type": "boolean",
20818
- "description": "Whether a later user response or steering message can resume the task"
20555
+ "workflowName": {
20556
+ "type": "string",
20557
+ "description": "Persisted workflow name."
20819
20558
  },
20820
- "permissionRecovery": {
20821
- "$ref": "#/definitions/PermissionRecoveryData",
20822
- "description": "Permission-recovery episode that produced this blocker"
20823
- }
20824
- },
20825
- "required": [
20826
- "kind",
20827
- "reason",
20828
- "resumable",
20829
- "permissionRecovery"
20830
- ],
20831
- "additionalProperties": false,
20832
- "description": "Structured reason that the task cannot continue without intervention",
20833
- "title": "TaskBlocker",
20834
- "stability": "experimental"
20835
- },
20836
- "TaskBlockerKind": {
20559
+ "status": {
20560
+ "$ref": "#/definitions/SystemNotificationWorkflowCompletedStatus",
20561
+ "description": "Terminal status reached by this execution attempt."
20562
+ },
20563
+ "consumedSubagents": {
20564
+ "type": "integer",
20565
+ "minimum": 0,
20566
+ "description": "Subagents consumed by the run across all attempts."
20567
+ },
20568
+ "elapsedMs": {
20569
+ "type": "integer",
20570
+ "minimum": 0,
20571
+ "description": "Accumulated active execution time in milliseconds."
20572
+ },
20573
+ "consumedNanoAiu": {
20574
+ "type": "integer",
20575
+ "minimum": 0,
20576
+ "description": "Consumed AI usage in nano-AIU."
20577
+ },
20578
+ "attempt": {
20579
+ "type": "integer",
20580
+ "minimum": 1,
20581
+ "description": "Execution attempt that reached this terminal state."
20582
+ },
20583
+ "resultPreview": {
20584
+ "type": "string",
20585
+ "maxLength": 256,
20586
+ "description": "Bounded prompt-safe preview of the completed result."
20587
+ },
20588
+ "failure": {
20589
+ "description": "Machine-readable terminal failure details, when present.",
20590
+ "x-opaque-json": true
20591
+ },
20592
+ "retryGuidance": {
20593
+ "type": "string",
20594
+ "description": "Actionable run_dynamic_workflow resume guidance for a resource-limit failure."
20595
+ },
20596
+ "pauseInfo": {
20597
+ "$ref": "#/definitions/SystemNotificationWorkflowPauseInfo",
20598
+ "description": "Pause initiator metadata when this attempt settled as paused."
20599
+ }
20600
+ },
20601
+ "required": [
20602
+ "type",
20603
+ "runId",
20604
+ "workflowName",
20605
+ "status",
20606
+ "consumedSubagents",
20607
+ "elapsedMs",
20608
+ "consumedNanoAiu",
20609
+ "attempt"
20610
+ ],
20611
+ "additionalProperties": false,
20612
+ "description": "System notification metadata for a workflow execution attempt that reached a terminal state.",
20613
+ "title": "SystemNotificationWorkflowCompleted"
20614
+ },
20615
+ "SystemNotificationWorkflowCompletedStatus": {
20616
+ "type": "string",
20617
+ "enum": [
20618
+ "completed",
20619
+ "halted",
20620
+ "paused",
20621
+ "cancelled",
20622
+ "error"
20623
+ ],
20624
+ "description": "Terminal status reached by a workflow execution attempt.",
20625
+ "title": "SystemNotificationWorkflowCompletedStatus",
20626
+ "x-enumDescriptions": {
20627
+ "completed": "The workflow completed successfully.",
20628
+ "halted": "The workflow was halted.",
20629
+ "paused": "The workflow attempt paused intentionally.",
20630
+ "cancelled": "The workflow was cancelled.",
20631
+ "error": "The workflow failed."
20632
+ }
20633
+ },
20634
+ "SystemNotificationWorkflowPauseInfo": {
20635
+ "anyOf": [
20636
+ {
20637
+ "type": "object",
20638
+ "properties": {
20639
+ "type": {
20640
+ "type": "string",
20641
+ "const": "user",
20642
+ "description": "Workflow pause initiator discriminator."
20643
+ }
20644
+ },
20645
+ "required": [
20646
+ "type"
20647
+ ]
20648
+ },
20649
+ {
20650
+ "type": "object",
20651
+ "properties": {
20652
+ "key": {
20653
+ "type": "string",
20654
+ "description": "Stable author-defined checkpoint key that initiated the pause."
20655
+ },
20656
+ "type": {
20657
+ "type": "string",
20658
+ "const": "checkpoint",
20659
+ "description": "Workflow pause initiator discriminator."
20660
+ }
20661
+ },
20662
+ "required": [
20663
+ "type",
20664
+ "key"
20665
+ ]
20666
+ }
20667
+ ],
20668
+ "description": "Durable metadata describing who initiated a workflow pause.",
20669
+ "title": "SystemNotificationWorkflowPauseInfo"
20670
+ },
20671
+ "TaskBlocker": {
20672
+ "type": "object",
20673
+ "properties": {
20674
+ "kind": {
20675
+ "$ref": "#/definitions/TaskBlockerKind",
20676
+ "description": "Category of intervention that blocked the task"
20677
+ },
20678
+ "reason": {
20679
+ "$ref": "#/definitions/PermissionRecoveryReason",
20680
+ "description": "Controlled reason for the current blocked state"
20681
+ },
20682
+ "resumable": {
20683
+ "type": "boolean",
20684
+ "description": "Whether a later user response or steering message can resume the task"
20685
+ },
20686
+ "permissionRecovery": {
20687
+ "$ref": "#/definitions/PermissionRecoveryData",
20688
+ "description": "Permission-recovery episode that produced this blocker"
20689
+ }
20690
+ },
20691
+ "required": [
20692
+ "kind",
20693
+ "reason",
20694
+ "resumable",
20695
+ "permissionRecovery"
20696
+ ],
20697
+ "additionalProperties": false,
20698
+ "description": "Structured reason that the task cannot continue without intervention",
20699
+ "title": "TaskBlocker",
20700
+ "stability": "experimental"
20701
+ },
20702
+ "TaskBlockerKind": {
20837
20703
  "type": "string",
20838
20704
  "enum": [
20839
20705
  "permission_recovery"
@@ -23095,7 +22961,7 @@
23095
22961
  },
23096
22962
  "responsesReasoning": {
23097
22963
  "$ref": "#/definitions/ResponsesReasoning",
23098
- "description": "Responses reasoning settings anchored before this model-facing message, for cache-stable history replay"
22964
+ "description": "Provider reasoning settings anchored before this model-facing message for cache-stable replay; the historical responsesReasoning name is retained for compatibility"
23099
22965
  },
23100
22966
  "messageId": {
23101
22967
  "type": "string",
@@ -23263,8 +23129,8 @@
23263
23129
  "description": "Session-scoped tool-approval rule for extension-management operations, optionally narrowed by operation."
23264
23130
  },
23265
23131
  {
23266
- "$ref": "#/definitions/UserToolSessionApprovalFactory",
23267
- "description": "Session-scoped factory approval, optionally narrowed by approval key."
23132
+ "$ref": "#/definitions/UserToolSessionApprovalWorkflow",
23133
+ "description": "Session-scoped workflow approval, optionally narrowed by approval key."
23268
23134
  },
23269
23135
  {
23270
23136
  "$ref": "#/definitions/UserToolSessionApprovalExtensionPermissionAccess",
@@ -23394,26 +23260,6 @@
23394
23260
  "description": "Session-scoped tool-approval rule for an extension's permission-gated capability access, keyed by extension name.",
23395
23261
  "title": "UserToolSessionApprovalExtensionPermissionAccess"
23396
23262
  },
23397
- "UserToolSessionApprovalFactory": {
23398
- "type": "object",
23399
- "properties": {
23400
- "kind": {
23401
- "type": "string",
23402
- "const": "factory",
23403
- "description": "Factory approval kind"
23404
- },
23405
- "approvalKey": {
23406
- "type": "string",
23407
- "description": "Optional factory operation name or canonical approval key"
23408
- }
23409
- },
23410
- "required": [
23411
- "kind"
23412
- ],
23413
- "additionalProperties": false,
23414
- "description": "Session-scoped factory approval, optionally narrowed by approval key.",
23415
- "title": "UserToolSessionApprovalFactory"
23416
- },
23417
23263
  "UserToolSessionApprovalMcp": {
23418
23264
  "type": "object",
23419
23265
  "properties": {
@@ -23475,6 +23321,26 @@
23475
23321
  "description": "Session-scoped tool-approval rule for read-only filesystem operations.",
23476
23322
  "title": "UserToolSessionApprovalRead"
23477
23323
  },
23324
+ "UserToolSessionApprovalWorkflow": {
23325
+ "type": "object",
23326
+ "properties": {
23327
+ "kind": {
23328
+ "type": "string",
23329
+ "const": "workflow",
23330
+ "description": "Workflow approval kind"
23331
+ },
23332
+ "approvalKey": {
23333
+ "type": "string",
23334
+ "description": "Optional workflow operation name or canonical approval key"
23335
+ }
23336
+ },
23337
+ "required": [
23338
+ "kind"
23339
+ ],
23340
+ "additionalProperties": false,
23341
+ "description": "Session-scoped workflow approval, optionally narrowed by approval key.",
23342
+ "title": "UserToolSessionApprovalWorkflow"
23343
+ },
23478
23344
  "UserToolSessionApprovalWrite": {
23479
23345
  "type": "object",
23480
23346
  "properties": {
@@ -23588,6 +23454,320 @@
23588
23454
  "description": "Session event \"session.warning\". Warning message for timeline display with categorization",
23589
23455
  "title": "WarningEvent"
23590
23456
  },
23457
+ "WorkflowPermissionOperation": {
23458
+ "type": "string",
23459
+ "enum": [
23460
+ "run",
23461
+ "author"
23462
+ ],
23463
+ "description": "Operation gated by a workflow permission request.",
23464
+ "title": "WorkflowPermissionOperation",
23465
+ "x-enumDescriptions": {
23466
+ "run": "Running a registered workflow, which spends subagents, active time, and AI credits under the approved limits.",
23467
+ "author": "Authoring a workflow, which writes JavaScript into a session-scoped extension and loads it."
23468
+ }
23469
+ },
23470
+ "WorkflowPermissionPhase": {
23471
+ "type": "object",
23472
+ "properties": {
23473
+ "title": {
23474
+ "type": "string",
23475
+ "description": "Phase title"
23476
+ },
23477
+ "detail": {
23478
+ "type": "string",
23479
+ "description": "Optional phase detail"
23480
+ }
23481
+ },
23482
+ "required": [
23483
+ "title"
23484
+ ],
23485
+ "additionalProperties": false,
23486
+ "description": "A declared phase shown in a workflow permission prompt.",
23487
+ "title": "WorkflowPermissionPhase"
23488
+ },
23489
+ "WorkflowRunSettledData": {
23490
+ "type": "object",
23491
+ "properties": {
23492
+ "runId": {
23493
+ "type": "string",
23494
+ "description": "Identifier of the workflow run that settled."
23495
+ },
23496
+ "status": {
23497
+ "$ref": "#/definitions/WorkflowRunSettledStatus",
23498
+ "description": "Terminal status the run committed."
23499
+ },
23500
+ "consumedSubagents": {
23501
+ "type": "integer",
23502
+ "minimum": 0,
23503
+ "description": "Subagents this run consumed against its limits."
23504
+ },
23505
+ "consumedNanoAiu": {
23506
+ "type": "integer",
23507
+ "minimum": 0,
23508
+ "description": "AI credits this run consumed, in nano-AIU."
23509
+ },
23510
+ "elapsedMs": {
23511
+ "type": "integer",
23512
+ "minimum": 0,
23513
+ "description": "Active milliseconds accumulated across every attempt of this run."
23514
+ },
23515
+ "failureType": {
23516
+ "type": "string",
23517
+ "description": "Typed failure class recorded on the run, when it failed with one (e.g. `workflow_limit_reached`)."
23518
+ }
23519
+ },
23520
+ "required": [
23521
+ "runId",
23522
+ "status",
23523
+ "consumedSubagents",
23524
+ "consumedNanoAiu",
23525
+ "elapsedMs"
23526
+ ],
23527
+ "additionalProperties": false,
23528
+ "description": "Ephemeral signal that a workflow run reached a terminal status.",
23529
+ "title": "WorkflowRunSettledData",
23530
+ "stability": "experimental"
23531
+ },
23532
+ "WorkflowRunSettledEvent": {
23533
+ "type": "object",
23534
+ "properties": {
23535
+ "id": {
23536
+ "type": "string",
23537
+ "format": "uuid",
23538
+ "description": "Unique event identifier (UUID v4), generated when the event is emitted"
23539
+ },
23540
+ "timestamp": {
23541
+ "type": "string",
23542
+ "format": "date-time",
23543
+ "description": "ISO 8601 timestamp when the event was created"
23544
+ },
23545
+ "parentId": {
23546
+ "anyOf": [
23547
+ {
23548
+ "type": "string",
23549
+ "format": "uuid"
23550
+ },
23551
+ {
23552
+ "type": "null"
23553
+ }
23554
+ ],
23555
+ "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
23556
+ },
23557
+ "ephemeral": {
23558
+ "type": "boolean",
23559
+ "const": true,
23560
+ "description": "Always true for events that are transient and not persisted to the session event log on disk."
23561
+ },
23562
+ "agentId": {
23563
+ "type": "string",
23564
+ "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
23565
+ },
23566
+ "type": {
23567
+ "type": "string",
23568
+ "const": "workflow.run_settled",
23569
+ "description": "Type discriminator. Always \"workflow.run_settled\"."
23570
+ },
23571
+ "data": {
23572
+ "$ref": "#/definitions/WorkflowRunSettledData",
23573
+ "description": "Ephemeral signal that a workflow run reached a terminal status."
23574
+ }
23575
+ },
23576
+ "required": [
23577
+ "id",
23578
+ "timestamp",
23579
+ "parentId",
23580
+ "ephemeral",
23581
+ "type",
23582
+ "data"
23583
+ ],
23584
+ "additionalProperties": false,
23585
+ "description": "Session event \"workflow.run_settled\". Ephemeral signal that a workflow run reached a terminal status.",
23586
+ "title": "WorkflowRunSettledEvent",
23587
+ "stability": "experimental"
23588
+ },
23589
+ "WorkflowRunSettledStatus": {
23590
+ "type": "string",
23591
+ "enum": [
23592
+ "completed",
23593
+ "halted",
23594
+ "paused",
23595
+ "cancelled",
23596
+ "error"
23597
+ ],
23598
+ "description": "Terminal status a workflow run committed. A settled run is never `pending` or `running`, so those two members of the run-status domain are deliberately absent.",
23599
+ "title": "WorkflowRunSettledStatus",
23600
+ "x-enumDescriptions": {
23601
+ "completed": "The workflow body resolved and its result was committed.",
23602
+ "halted": "The run was stopped by a limit, an approval refusal or another policy decision.",
23603
+ "paused": "The attempt paused intentionally while preserving resumable run state.",
23604
+ "cancelled": "The run was cancelled by its caller or by session disposal.",
23605
+ "error": "The run failed, with `failureType` carrying the class when it has one."
23606
+ }
23607
+ },
23608
+ "WorkflowRunStartedData": {
23609
+ "type": "object",
23610
+ "properties": {
23611
+ "runId": {
23612
+ "type": "string",
23613
+ "description": "Identifier of the workflow run that started."
23614
+ },
23615
+ "workflowName": {
23616
+ "type": "string",
23617
+ "description": "Name of the workflow this run executes. Low cardinality by construction."
23618
+ },
23619
+ "attempt": {
23620
+ "type": "integer",
23621
+ "minimum": 1,
23622
+ "description": "Attempt number this start committed; a resumed run increments it."
23623
+ }
23624
+ },
23625
+ "required": [
23626
+ "runId",
23627
+ "workflowName",
23628
+ "attempt"
23629
+ ],
23630
+ "additionalProperties": false,
23631
+ "description": "Ephemeral signal that a workflow run attempt began executing.",
23632
+ "title": "WorkflowRunStartedData",
23633
+ "stability": "experimental"
23634
+ },
23635
+ "WorkflowRunStartedEvent": {
23636
+ "type": "object",
23637
+ "properties": {
23638
+ "id": {
23639
+ "type": "string",
23640
+ "format": "uuid",
23641
+ "description": "Unique event identifier (UUID v4), generated when the event is emitted"
23642
+ },
23643
+ "timestamp": {
23644
+ "type": "string",
23645
+ "format": "date-time",
23646
+ "description": "ISO 8601 timestamp when the event was created"
23647
+ },
23648
+ "parentId": {
23649
+ "anyOf": [
23650
+ {
23651
+ "type": "string",
23652
+ "format": "uuid"
23653
+ },
23654
+ {
23655
+ "type": "null"
23656
+ }
23657
+ ],
23658
+ "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
23659
+ },
23660
+ "ephemeral": {
23661
+ "type": "boolean",
23662
+ "const": true,
23663
+ "description": "Always true for events that are transient and not persisted to the session event log on disk."
23664
+ },
23665
+ "agentId": {
23666
+ "type": "string",
23667
+ "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
23668
+ },
23669
+ "type": {
23670
+ "type": "string",
23671
+ "const": "workflow.run_started",
23672
+ "description": "Type discriminator. Always \"workflow.run_started\"."
23673
+ },
23674
+ "data": {
23675
+ "$ref": "#/definitions/WorkflowRunStartedData",
23676
+ "description": "Ephemeral signal that a workflow run attempt began executing."
23677
+ }
23678
+ },
23679
+ "required": [
23680
+ "id",
23681
+ "timestamp",
23682
+ "parentId",
23683
+ "ephemeral",
23684
+ "type",
23685
+ "data"
23686
+ ],
23687
+ "additionalProperties": false,
23688
+ "description": "Session event \"workflow.run_started\". Ephemeral signal that a workflow run attempt began executing.",
23689
+ "title": "WorkflowRunStartedEvent",
23690
+ "stability": "experimental"
23691
+ },
23692
+ "WorkflowRunUpdatedData": {
23693
+ "type": "object",
23694
+ "properties": {
23695
+ "runId": {
23696
+ "type": "string",
23697
+ "description": "Workflow run identifier."
23698
+ },
23699
+ "revision": {
23700
+ "type": "integer",
23701
+ "minimum": 1,
23702
+ "description": "Monotonic revision now available for the run."
23703
+ }
23704
+ },
23705
+ "required": [
23706
+ "runId",
23707
+ "revision"
23708
+ ],
23709
+ "additionalProperties": false,
23710
+ "description": "Ephemeral invalidation signal for a changed workflow run.",
23711
+ "title": "WorkflowRunUpdatedData",
23712
+ "stability": "experimental"
23713
+ },
23714
+ "WorkflowRunUpdatedEvent": {
23715
+ "type": "object",
23716
+ "properties": {
23717
+ "id": {
23718
+ "type": "string",
23719
+ "format": "uuid",
23720
+ "description": "Unique event identifier (UUID v4), generated when the event is emitted"
23721
+ },
23722
+ "timestamp": {
23723
+ "type": "string",
23724
+ "format": "date-time",
23725
+ "description": "ISO 8601 timestamp when the event was created"
23726
+ },
23727
+ "parentId": {
23728
+ "anyOf": [
23729
+ {
23730
+ "type": "string",
23731
+ "format": "uuid"
23732
+ },
23733
+ {
23734
+ "type": "null"
23735
+ }
23736
+ ],
23737
+ "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
23738
+ },
23739
+ "ephemeral": {
23740
+ "type": "boolean",
23741
+ "const": true,
23742
+ "description": "Always true for events that are transient and not persisted to the session event log on disk."
23743
+ },
23744
+ "agentId": {
23745
+ "type": "string",
23746
+ "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
23747
+ },
23748
+ "type": {
23749
+ "type": "string",
23750
+ "const": "workflow.run_updated",
23751
+ "description": "Type discriminator. Always \"workflow.run_updated\"."
23752
+ },
23753
+ "data": {
23754
+ "$ref": "#/definitions/WorkflowRunUpdatedData",
23755
+ "description": "Ephemeral invalidation signal for a changed workflow run."
23756
+ }
23757
+ },
23758
+ "required": [
23759
+ "id",
23760
+ "timestamp",
23761
+ "parentId",
23762
+ "ephemeral",
23763
+ "type",
23764
+ "data"
23765
+ ],
23766
+ "additionalProperties": false,
23767
+ "description": "Session event \"workflow.run_updated\". Ephemeral invalidation signal for a changed workflow run.",
23768
+ "title": "WorkflowRunUpdatedEvent",
23769
+ "stability": "experimental"
23770
+ },
23591
23771
  "WorkingDirectoryContext": {
23592
23772
  "type": "object",
23593
23773
  "properties": {