@github/copilot-sdk-win32-x64 1.0.15-preview.3 → 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,284 +7391,41 @@
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
- "hasUserSteering": {
7477
- "type": "boolean",
7478
- "description": "Whether this model request consumed a user steering message rather than only internal Fusion work."
7479
- },
7480
7418
  "fusionId": {
7481
7419
  "type": "string",
7482
- "description": "Stable identifier for the HydraFusion turn that produced the event."
7420
+ "description": "Stable identifier for the completed HydraFusion turn."
7483
7421
  },
7484
7422
  "commitId": {
7485
7423
  "type": "string",
7486
- "description": "Idempotency identifier for the authoritative commit, when the event belongs to the selected output."
7487
- },
7488
- "syntheticModel": {
7489
- "type": "string",
7490
- "description": "Synthetic HydraFusion model selected for the session."
7491
- },
7492
- "policy": {
7493
- "type": "string",
7494
- "description": "HydraFusion routing policy used for the turn."
7495
- },
7496
- "pattern": {
7497
- "type": "string",
7498
- "description": "HydraFusion orchestration pattern selected for the turn."
7499
- },
7500
- "phaseId": {
7501
- "type": "string",
7502
- "description": "Identifier of the concrete phase that produced the event."
7503
- },
7504
- "phaseKind": {
7505
- "type": "string",
7506
- "description": "Kind of concrete phase that produced the event."
7507
- },
7508
- "role": {
7509
- "type": "string",
7510
- "description": "Semantic role assigned to the concrete phase."
7511
- },
7512
- "sourceModel": {
7513
- "type": "string",
7514
- "description": "Concrete model that produced the attributed event."
7515
- },
7516
- "conversationScope": {
7517
- "type": "string",
7518
- "description": "Conversation scope in which the concrete phase executed."
7519
- },
7520
- "sourcePhaseId": {
7521
- "type": "string",
7522
- "description": "Phase whose output supplied the authoritative content, when different from the executing phase."
7523
- }
7524
- },
7525
- "required": [
7526
- "fusionId",
7527
- "syntheticModel",
7528
- "policy",
7529
- "pattern"
7530
- ],
7531
- "additionalProperties": false,
7532
- "description": "Experimental attribution linking an ordinary event to the HydraFusion turn, phase, and concrete source that produced it.",
7533
- "title": "FusionAttribution",
7534
- "stability": "experimental"
7535
- },
7536
- "FusionChangeCheckpointData": {
7537
- "type": "object",
7538
- "properties": {
7539
- "codeChanges": {
7540
- "$ref": "#/definitions/ShutdownCodeChanges"
7541
- }
7542
- },
7543
- "required": [
7544
- "codeChanges"
7545
- ],
7546
- "additionalProperties": false,
7547
- "description": "Internal durable editing-tool totals after a Fusion turn, including edits from discarded phases.",
7548
- "title": "FusionChangeCheckpointData",
7549
- "visibility": "internal"
7550
- },
7551
- "FusionChangeCheckpointEvent": {
7552
- "type": "object",
7553
- "properties": {
7554
- "id": {
7555
- "type": "string",
7556
- "format": "uuid",
7557
- "description": "Unique event identifier (UUID v4), generated when the event is emitted"
7558
- },
7559
- "timestamp": {
7560
- "type": "string",
7561
- "format": "date-time",
7562
- "description": "ISO 8601 timestamp when the event was created"
7563
- },
7564
- "parentId": {
7565
- "anyOf": [
7566
- {
7567
- "type": "string",
7568
- "format": "uuid"
7569
- },
7570
- {
7571
- "type": "null"
7572
- }
7573
- ],
7574
- "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
7575
- },
7576
- "ephemeral": {
7577
- "type": "boolean",
7578
- "description": "When true, the event is transient and not persisted to the session event log on disk"
7579
- },
7580
- "agentId": {
7581
- "type": "string",
7582
- "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
7583
- },
7584
- "type": {
7585
- "type": "string",
7586
- "const": "session.fusion_change_checkpoint",
7587
- "description": "Type discriminator. Always \"session.fusion_change_checkpoint\"."
7588
- },
7589
- "data": {
7590
- "$ref": "#/definitions/FusionChangeCheckpointData",
7591
- "description": "Internal durable editing-tool totals after a Fusion turn, including edits from discarded phases."
7592
- }
7593
- },
7594
- "required": [
7595
- "id",
7596
- "timestamp",
7597
- "parentId",
7598
- "type",
7599
- "data"
7600
- ],
7601
- "additionalProperties": false,
7602
- "description": "Session event \"session.fusion_change_checkpoint\". Internal durable editing-tool totals after a Fusion turn, including edits from discarded phases.",
7603
- "title": "FusionChangeCheckpointEvent",
7604
- "visibility": "internal"
7605
- },
7606
- "FusionCommitKind": {
7607
- "type": "string",
7608
- "enum": [
7609
- "text",
7610
- "terminal_tool"
7611
- ],
7612
- "description": "Kind of authoritative final commit.",
7613
- "title": "FusionCommitKind",
7614
- "visibility": "internal",
7615
- "x-enumDescriptions": {
7616
- "text": "Authoritative final text commit.",
7617
- "terminal_tool": "Authoritative terminal tool-call commit."
7618
- },
7619
- "stability": "experimental"
7620
- },
7621
- "FusionCommitStartedData": {
7622
- "type": "object",
7623
- "properties": {
7624
- "fusionId": {
7625
- "type": "string"
7626
- },
7627
- "commitId": {
7628
- "type": "string"
7629
- },
7630
- "sourcePhaseId": {
7631
- "type": "string"
7632
- },
7633
- "sourceModel": {
7634
- "type": "string"
7635
- },
7636
- "kind": {
7637
- "$ref": "#/definitions/FusionCommitKind"
7638
- },
7639
- "toolCallId": {
7640
- "type": [
7641
- "string",
7642
- "null"
7643
- ]
7644
- }
7645
- },
7646
- "required": [
7647
- "fusionId",
7648
- "commitId",
7649
- "sourcePhaseId",
7650
- "sourceModel",
7651
- "kind",
7652
- "toolCallId"
7653
- ],
7654
- "additionalProperties": false,
7655
- "description": "Stable durable idempotency boundary for a HydraFusion final text or terminal commit.",
7656
- "title": "FusionCommitStartedData",
7657
- "visibility": "internal",
7658
- "stability": "experimental"
7659
- },
7660
- "FusionCommitStartedEvent": {
7661
- "type": "object",
7662
- "properties": {
7663
- "id": {
7664
- "type": "string",
7665
- "format": "uuid",
7666
- "description": "Unique event identifier (UUID v4), generated when the event is emitted"
7667
- },
7668
- "timestamp": {
7669
- "type": "string",
7670
- "format": "date-time",
7671
- "description": "ISO 8601 timestamp when the event was created"
7672
- },
7673
- "parentId": {
7674
- "anyOf": [
7675
- {
7676
- "type": "string",
7677
- "format": "uuid"
7678
- },
7679
- {
7680
- "type": "null"
7681
- }
7682
- ],
7683
- "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
7684
- },
7685
- "ephemeral": {
7686
- "type": "boolean",
7687
- "description": "When true, the event is transient and not persisted to the session event log on disk"
7688
- },
7689
- "agentId": {
7690
- "type": "string",
7691
- "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
7692
- },
7693
- "type": {
7694
- "type": "string",
7695
- "const": "session.fusion_commit_started",
7696
- "description": "Type discriminator. Always \"session.fusion_commit_started\"."
7697
- },
7698
- "data": {
7699
- "$ref": "#/definitions/FusionCommitStartedData",
7700
- "description": "Stable durable idempotency boundary for a HydraFusion final text or terminal commit."
7701
- }
7702
- },
7703
- "required": [
7704
- "id",
7705
- "timestamp",
7706
- "parentId",
7707
- "type",
7708
- "data"
7709
- ],
7710
- "additionalProperties": false,
7711
- "description": "Session event \"session.fusion_commit_started\". Stable durable idempotency boundary for a HydraFusion final text or terminal commit.",
7712
- "title": "FusionCommitStartedEvent",
7713
- "visibility": "internal",
7714
- "stability": "experimental"
7715
- },
7716
- "FusionCompletedData": {
7717
- "type": "object",
7718
- "properties": {
7719
- "fusionId": {
7720
- "type": "string",
7721
- "description": "Stable identifier for the completed HydraFusion turn."
7722
- },
7723
- "commitId": {
7724
- "type": "string",
7725
- "description": "Idempotency identifier for the authoritative final commit."
7726
- },
7727
- "turnId": {
7728
- "type": "string",
7729
- "description": "Identifier of the session turn associated with the completion."
7424
+ "description": "Idempotency identifier for the authoritative final commit."
7425
+ },
7426
+ "turnId": {
7427
+ "type": "string",
7428
+ "description": "Identifier of the session turn associated with the completion."
7730
7429
  },
7731
7430
  "syntheticModel": {
7732
7431
  "type": "string",
@@ -7900,19 +7599,45 @@
7900
7599
  },
7901
7600
  "stability": "experimental"
7902
7601
  },
7903
- "FusionFollowUpAction": {
7904
- "type": "string",
7905
- "enum": [
7906
- "reuse_primary",
7907
- "reroute"
7908
- ],
7909
- "description": "Server-recommended routing behavior for a later HydraFusion turn.",
7910
- "title": "FusionFollowUpAction",
7911
- "x-enumDescriptions": {
7912
- "reuse_primary": "Reuse the durable primary model without routing.",
7913
- "reroute": "Request a new routing decision."
7914
- },
7915
- "stability": "experimental"
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
+ },
7628
+ "FusionFollowUpAction": {
7629
+ "type": "string",
7630
+ "enum": [
7631
+ "reuse_primary",
7632
+ "reroute"
7633
+ ],
7634
+ "description": "Server-recommended routing behavior for a later HydraFusion turn.",
7635
+ "title": "FusionFollowUpAction",
7636
+ "x-enumDescriptions": {
7637
+ "reuse_primary": "Reuse the durable primary model without routing.",
7638
+ "reroute": "Request a new routing decision."
7639
+ },
7640
+ "stability": "experimental"
7916
7641
  },
7917
7642
  "FusionFollowUpRecommendation": {
7918
7643
  "type": "object",
@@ -8137,6 +7862,11 @@
8137
7862
  "type": "string",
8138
7863
  "description": "Concrete model that executed the phase."
8139
7864
  },
7865
+ "reasoningEffort": {
7866
+ "type": "string",
7867
+ "description": "Explicit reasoning effort selected for this phase, if supplied.",
7868
+ "stability": "experimental"
7869
+ },
8140
7870
  "status": {
8141
7871
  "$ref": "#/definitions/FusionPhaseStatus",
8142
7872
  "description": "Durable outcome status of the phase."
@@ -8222,6 +7952,11 @@
8222
7952
  "type": "string",
8223
7953
  "description": "Concrete model that attempted the phase."
8224
7954
  },
7955
+ "reasoningEffort": {
7956
+ "type": "string",
7957
+ "description": "Explicit reasoning effort selected for this phase, if supplied.",
7958
+ "stability": "experimental"
7959
+ },
8225
7960
  "status": {
8226
7961
  "$ref": "#/definitions/FusionPhaseStatus",
8227
7962
  "description": "Durable outcome status of the phase."
@@ -8350,6 +8085,11 @@
8350
8085
  "model": {
8351
8086
  "type": "string",
8352
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"
8353
8093
  }
8354
8094
  },
8355
8095
  "required": [
@@ -8529,7 +8269,25 @@
8529
8269
  "string",
8530
8270
  "null"
8531
8271
  ],
8532
- "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"
8533
8291
  },
8534
8292
  "fallbackModel": {
8535
8293
  "type": "string",
@@ -11499,6 +11257,10 @@
11499
11257
  "type": "string",
11500
11258
  "description": "Model identifier used for the failed API call"
11501
11259
  },
11260
+ "parentToolCallId": {
11261
+ "type": "string",
11262
+ "description": "Parent task tool call ID when this failed model call belongs to a sub-agent"
11263
+ },
11502
11264
  "initiator": {
11503
11265
  "type": "string",
11504
11266
  "description": "What initiated this API call (e.g., \"sub-agent\", \"mcp-sampling\"); absent for user-initiated calls"
@@ -11897,6 +11659,10 @@
11897
11659
  "$ref": "#/definitions/FusionAttribution",
11898
11660
  "description": "Experimental HydraFusion attribution for this concrete model call.",
11899
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"
11900
11666
  }
11901
11667
  },
11902
11668
  "required": [
@@ -12112,7 +11878,8 @@
12112
11878
  "plan_mode",
12113
11879
  "automatic",
12114
11880
  "changeboarding_shortcut",
12115
- "sdk"
11881
+ "sdk",
11882
+ "auto_tier_recommendation"
12116
11883
  ],
12117
11884
  "description": "Origin of an effective session model change.",
12118
11885
  "title": "ModelChangeSource",
@@ -12128,7 +11895,8 @@
12128
11895
  "plan_mode": "Entering, leaving, or reconfiguring plan mode selected the model.",
12129
11896
  "automatic": "The runtime selected the model automatically, such as rate-limit recovery or refusal fallback.",
12130
11897
  "changeboarding_shortcut": "The user selected the promoted model from the changeboarding card or its keyboard shortcut.",
12131
- "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."
12132
11900
  }
12133
11901
  },
12134
11902
  "ModelDeselectedData": {
@@ -12631,7 +12399,7 @@
12631
12399
  "turnIndex"
12632
12400
  ],
12633
12401
  "additionalProperties": false,
12634
- "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.",
12635
12403
  "title": "PermissionAssentDetectedData",
12636
12404
  "stability": "experimental"
12637
12405
  },
@@ -12675,7 +12443,7 @@
12675
12443
  },
12676
12444
  "data": {
12677
12445
  "$ref": "#/definitions/PermissionAssentDetectedData",
12678
- "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."
12679
12447
  }
12680
12448
  },
12681
12449
  "required": [
@@ -12686,7 +12454,7 @@
12686
12454
  "data"
12687
12455
  ],
12688
12456
  "additionalProperties": false,
12689
- "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.",
12690
12458
  "title": "PermissionAssentDetectedEvent",
12691
12459
  "stability": "experimental"
12692
12460
  },
@@ -12773,7 +12541,7 @@
12773
12541
  "decisionSource"
12774
12542
  ],
12775
12543
  "additionalProperties": false,
12776
- "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.",
12777
12545
  "title": "PermissionCarriedForwardData",
12778
12546
  "stability": "experimental"
12779
12547
  },
@@ -12817,7 +12585,7 @@
12817
12585
  },
12818
12586
  "data": {
12819
12587
  "$ref": "#/definitions/PermissionCarriedForwardData",
12820
- "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."
12821
12589
  }
12822
12590
  },
12823
12591
  "required": [
@@ -12828,7 +12596,7 @@
12828
12596
  "data"
12829
12597
  ],
12830
12598
  "additionalProperties": false,
12831
- "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.",
12832
12600
  "title": "PermissionCarriedForwardEvent",
12833
12601
  "stability": "experimental"
12834
12602
  },
@@ -12969,7 +12737,7 @@
12969
12737
  "spanEnd"
12970
12738
  ],
12971
12739
  "additionalProperties": false,
12972
- "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.",
12973
12741
  "title": "PermissionContextualAuthorizationData",
12974
12742
  "stability": "experimental"
12975
12743
  },
@@ -13013,7 +12781,7 @@
13013
12781
  },
13014
12782
  "data": {
13015
12783
  "$ref": "#/definitions/PermissionContextualAuthorizationData",
13016
- "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."
13017
12785
  }
13018
12786
  },
13019
12787
  "required": [
@@ -13024,7 +12792,7 @@
13024
12792
  "data"
13025
12793
  ],
13026
12794
  "additionalProperties": false,
13027
- "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.",
13028
12796
  "title": "PermissionContextualAuthorizationEvent",
13029
12797
  "stability": "experimental"
13030
12798
  },
@@ -13044,7 +12812,7 @@
13044
12812
  "human_response": "A human supplied the response through an interactive prompt.",
13045
12813
  "host_policy": "The host applied a standing policy or override rather than a judge recommendation or human decision.",
13046
12814
  "unattended_fallback": "The host denied the request because no interactive user response was available.",
13047
- "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."
13048
12816
  }
13049
12817
  },
13050
12818
  "PermissionDeniedByContentExclusionPolicy": {
@@ -13227,7 +12995,7 @@
13227
12995
  "spanEnd"
13228
12996
  ],
13229
12997
  "additionalProperties": false,
13230
- "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.",
13231
12999
  "title": "PermissionMessageAuthorizationData",
13232
13000
  "stability": "experimental"
13233
13001
  },
@@ -13245,7 +13013,7 @@
13245
13013
  "turnIndex"
13246
13014
  ],
13247
13015
  "additionalProperties": false,
13248
- "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.",
13249
13017
  "title": "PermissionMessageAuthorizationDegradedData",
13250
13018
  "stability": "experimental"
13251
13019
  },
@@ -13289,7 +13057,7 @@
13289
13057
  },
13290
13058
  "data": {
13291
13059
  "$ref": "#/definitions/PermissionMessageAuthorizationDegradedData",
13292
- "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."
13293
13061
  }
13294
13062
  },
13295
13063
  "required": [
@@ -13300,7 +13068,7 @@
13300
13068
  "data"
13301
13069
  ],
13302
13070
  "additionalProperties": false,
13303
- "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.",
13304
13072
  "title": "PermissionMessageAuthorizationDegradedEvent",
13305
13073
  "stability": "experimental"
13306
13074
  },
@@ -13344,7 +13112,7 @@
13344
13112
  },
13345
13113
  "data": {
13346
13114
  "$ref": "#/definitions/PermissionMessageAuthorizationData",
13347
- "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."
13348
13116
  }
13349
13117
  },
13350
13118
  "required": [
@@ -13355,7 +13123,7 @@
13355
13123
  "data"
13356
13124
  ],
13357
13125
  "additionalProperties": false,
13358
- "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.",
13359
13127
  "title": "PermissionMessageAuthorizationEvent",
13360
13128
  "stability": "experimental"
13361
13129
  },
@@ -13365,11 +13133,11 @@
13365
13133
  "grant",
13366
13134
  "denial"
13367
13135
  ],
13368
- "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.",
13369
13137
  "title": "PermissionMessageAuthorizationPolarity",
13370
13138
  "x-enumDescriptions": {
13371
- "grant": "The human's words authorized an effect.",
13372
- "denial": "The human's words refused an effect."
13139
+ "grant": "Historical claim recorded as a grant.",
13140
+ "denial": "Historical claim recorded as a denial."
13373
13141
  },
13374
13142
  "stability": "experimental"
13375
13143
  },
@@ -13392,7 +13160,7 @@
13392
13160
  "turnIndex"
13393
13161
  ],
13394
13162
  "additionalProperties": false,
13395
- "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.",
13396
13164
  "title": "PermissionMessageAuthorizationReadData",
13397
13165
  "stability": "experimental"
13398
13166
  },
@@ -13436,7 +13204,7 @@
13436
13204
  },
13437
13205
  "data": {
13438
13206
  "$ref": "#/definitions/PermissionMessageAuthorizationReadData",
13439
- "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."
13440
13208
  }
13441
13209
  },
13442
13210
  "required": [
@@ -13447,7 +13215,7 @@
13447
13215
  "data"
13448
13216
  ],
13449
13217
  "additionalProperties": false,
13450
- "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.",
13451
13219
  "title": "PermissionMessageAuthorizationReadEvent",
13452
13220
  "stability": "experimental"
13453
13221
  },
@@ -13510,8 +13278,8 @@
13510
13278
  "description": "Extension management permission prompt"
13511
13279
  },
13512
13280
  {
13513
- "$ref": "#/definitions/PermissionPromptRequestFactory",
13514
- "description": "Factory run or authoring permission prompt"
13281
+ "$ref": "#/definitions/PermissionPromptRequestWorkflow",
13282
+ "description": "Workflow run or authoring permission prompt"
13515
13283
  },
13516
13284
  {
13517
13285
  "$ref": "#/definitions/PermissionPromptRequestExtensionPermissionAccess",
@@ -13743,105 +13511,6 @@
13743
13511
  "description": "Extension permission access prompt",
13744
13512
  "title": "PermissionPromptRequestExtensionPermissionAccess"
13745
13513
  },
13746
- "PermissionPromptRequestFactory": {
13747
- "type": "object",
13748
- "properties": {
13749
- "kind": {
13750
- "type": "string",
13751
- "const": "factory",
13752
- "description": "Prompt kind discriminator"
13753
- },
13754
- "toolCallId": {
13755
- "type": "string",
13756
- "description": "Tool call ID that triggered this permission request"
13757
- },
13758
- "operation": {
13759
- "$ref": "#/definitions/FactoryPermissionOperation",
13760
- "description": "Factory operation, either run or author"
13761
- },
13762
- "name": {
13763
- "type": "string",
13764
- "description": "Factory name"
13765
- },
13766
- "description": {
13767
- "type": "string",
13768
- "description": "Factory description"
13769
- },
13770
- "phases": {
13771
- "type": "array",
13772
- "items": {
13773
- "$ref": "#/definitions/FactoryPermissionPhase",
13774
- "description": "A declared phase shown in a factory permission prompt."
13775
- },
13776
- "description": "Declared factory phases"
13777
- },
13778
- "maxConcurrentSubagents": {
13779
- "type": "integer",
13780
- "minimum": 0,
13781
- "description": "Effective concurrent-subagent limit; omitted means unlimited"
13782
- },
13783
- "maxTotalSubagents": {
13784
- "type": "integer",
13785
- "minimum": 0,
13786
- "description": "Effective total-subagent limit; omitted means unlimited"
13787
- },
13788
- "timeoutSeconds": {
13789
- "type": "number",
13790
- "description": "Effective active-time limit in seconds; omitted means unlimited"
13791
- },
13792
- "maxAiCredits": {
13793
- "type": "number",
13794
- "description": "Effective AI-credit limit; omitted means unlimited"
13795
- },
13796
- "declaredMaxConcurrentSubagents": {
13797
- "type": "integer",
13798
- "minimum": 0,
13799
- "description": "Factory-declared concurrent-subagent limit before any run/resume caller override is applied."
13800
- },
13801
- "declaredMaxTotalSubagents": {
13802
- "type": "integer",
13803
- "minimum": 0,
13804
- "description": "Factory-declared total-subagent limit before any run/resume caller override is applied."
13805
- },
13806
- "declaredTimeoutSeconds": {
13807
- "type": "number",
13808
- "description": "Factory-declared active-time limit in seconds before any run/resume caller override is applied."
13809
- },
13810
- "declaredMaxAiCredits": {
13811
- "type": "number",
13812
- "description": "Factory-declared AI-credit limit before any run/resume caller override is applied."
13813
- },
13814
- "approvalKey": {
13815
- "type": "string",
13816
- "description": "Canonical key used for scoped factory approvals"
13817
- },
13818
- "canPersistApproval": {
13819
- "type": "boolean",
13820
- "description": "Whether this factory is eligible for persistent approval"
13821
- },
13822
- "assistedApproval": {
13823
- "$ref": "#/definitions/PermissionAssistedApproval",
13824
- "description": "Assisted-approval judge information for this request; present only in assisted mode.",
13825
- "stability": "experimental"
13826
- },
13827
- "managedApprovalRequired": {
13828
- "type": "boolean",
13829
- "description": "Whether managed policy requires a human response and forbids host auto-approval"
13830
- }
13831
- },
13832
- "required": [
13833
- "kind",
13834
- "operation",
13835
- "name",
13836
- "description",
13837
- "phases",
13838
- "approvalKey",
13839
- "canPersistApproval"
13840
- ],
13841
- "additionalProperties": false,
13842
- "description": "Factory run or authoring permission prompt",
13843
- "title": "PermissionPromptRequestFactory"
13844
- },
13845
13514
  "PermissionPromptRequestHook": {
13846
13515
  "type": "object",
13847
13516
  "properties": {
@@ -14131,6 +13800,105 @@
14131
13800
  "description": "URL access permission prompt",
14132
13801
  "title": "PermissionPromptRequestUrl"
14133
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
+ },
14134
13902
  "PermissionPromptRequestWrite": {
14135
13903
  "type": "object",
14136
13904
  "properties": {
@@ -14498,8 +14266,8 @@
14498
14266
  "description": "Extension management permission request"
14499
14267
  },
14500
14268
  {
14501
- "$ref": "#/definitions/PermissionRequestFactory",
14502
- "description": "Factory run or authoring permission request"
14269
+ "$ref": "#/definitions/PermissionRequestWorkflow",
14270
+ "description": "Workflow run or authoring permission request"
14503
14271
  },
14504
14272
  {
14505
14273
  "$ref": "#/definitions/PermissionRequestExtensionPermissionAccess",
@@ -14745,115 +14513,25 @@
14745
14513
  "description": "Extension permission access request",
14746
14514
  "title": "PermissionRequestExtensionPermissionAccess"
14747
14515
  },
14748
- "PermissionRequestFactory": {
14516
+ "PermissionRequestHook": {
14749
14517
  "type": "object",
14750
14518
  "properties": {
14751
14519
  "kind": {
14752
14520
  "type": "string",
14753
- "const": "factory",
14521
+ "const": "hook",
14754
14522
  "description": "Permission kind discriminator"
14755
14523
  },
14756
14524
  "toolCallId": {
14757
14525
  "type": "string",
14758
14526
  "description": "Tool call ID that triggered this permission request"
14759
14527
  },
14760
- "operation": {
14761
- "$ref": "#/definitions/FactoryPermissionOperation",
14762
- "description": "Factory operation, either run or author"
14763
- },
14764
- "name": {
14765
- "type": "string",
14766
- "description": "Factory name"
14767
- },
14768
- "description": {
14528
+ "toolName": {
14769
14529
  "type": "string",
14770
- "description": "Factory description"
14771
- },
14772
- "phases": {
14773
- "type": "array",
14774
- "items": {
14775
- "$ref": "#/definitions/FactoryPermissionPhase",
14776
- "description": "A declared phase shown in a factory permission prompt."
14777
- },
14778
- "description": "Declared factory phases"
14779
- },
14780
- "maxConcurrentSubagents": {
14781
- "type": "integer",
14782
- "minimum": 0,
14783
- "description": "Effective concurrent-subagent limit; omitted means unlimited"
14530
+ "description": "Name of the tool the hook is gating"
14784
14531
  },
14785
- "maxTotalSubagents": {
14786
- "type": "integer",
14787
- "minimum": 0,
14788
- "description": "Effective total-subagent limit; omitted means unlimited"
14789
- },
14790
- "timeoutSeconds": {
14791
- "type": "number",
14792
- "description": "Effective active-time limit in seconds; omitted means unlimited"
14793
- },
14794
- "maxAiCredits": {
14795
- "type": "number",
14796
- "description": "Effective AI-credit limit; omitted means unlimited"
14797
- },
14798
- "declaredMaxConcurrentSubagents": {
14799
- "type": "integer",
14800
- "minimum": 0,
14801
- "description": "Factory-declared concurrent-subagent limit before any run/resume caller override is applied."
14802
- },
14803
- "declaredMaxTotalSubagents": {
14804
- "type": "integer",
14805
- "minimum": 0,
14806
- "description": "Factory-declared total-subagent limit before any run/resume caller override is applied."
14807
- },
14808
- "declaredTimeoutSeconds": {
14809
- "type": "number",
14810
- "description": "Factory-declared active-time limit in seconds before any run/resume caller override is applied."
14811
- },
14812
- "declaredMaxAiCredits": {
14813
- "type": "number",
14814
- "description": "Factory-declared AI-credit limit before any run/resume caller override is applied."
14815
- },
14816
- "approvalKey": {
14817
- "type": "string",
14818
- "description": "Canonical key used for scoped factory approvals"
14819
- },
14820
- "canPersistApproval": {
14821
- "type": "boolean",
14822
- "description": "Whether this factory is eligible for persistent approval"
14823
- }
14824
- },
14825
- "required": [
14826
- "kind",
14827
- "operation",
14828
- "name",
14829
- "description",
14830
- "phases",
14831
- "approvalKey",
14832
- "canPersistApproval"
14833
- ],
14834
- "additionalProperties": false,
14835
- "description": "Factory run or authoring permission request",
14836
- "title": "PermissionRequestFactory"
14837
- },
14838
- "PermissionRequestHook": {
14839
- "type": "object",
14840
- "properties": {
14841
- "kind": {
14842
- "type": "string",
14843
- "const": "hook",
14844
- "description": "Permission kind discriminator"
14845
- },
14846
- "toolCallId": {
14847
- "type": "string",
14848
- "description": "Tool call ID that triggered this permission request"
14849
- },
14850
- "toolName": {
14851
- "type": "string",
14852
- "description": "Name of the tool the hook is gating"
14853
- },
14854
- "toolArgs": {
14855
- "description": "Arguments of the tool call being gated",
14856
- "x-opaque-json": true
14532
+ "toolArgs": {
14533
+ "description": "Arguments of the tool call being gated",
14534
+ "x-opaque-json": true
14857
14535
  },
14858
14536
  "hookMessage": {
14859
14537
  "type": "string",
@@ -15270,6 +14948,100 @@
15270
14948
  "description": "URL access permission request",
15271
14949
  "title": "PermissionRequestUrl"
15272
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
+ },
15273
15045
  "PermissionRequestWrite": {
15274
15046
  "type": "object",
15275
15047
  "properties": {
@@ -17906,27 +17678,27 @@
17906
17678
  },
17907
17679
  {
17908
17680
  "$ref": "#/definitions/PermissionCarriedForwardEvent",
17909
- "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."
17910
17682
  },
17911
17683
  {
17912
17684
  "$ref": "#/definitions/PermissionMessageAuthorizationEvent",
17913
- "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."
17914
17686
  },
17915
17687
  {
17916
17688
  "$ref": "#/definitions/PermissionMessageAuthorizationReadEvent",
17917
- "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."
17918
17690
  },
17919
17691
  {
17920
17692
  "$ref": "#/definitions/PermissionMessageAuthorizationDegradedEvent",
17921
- "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."
17922
17694
  },
17923
17695
  {
17924
17696
  "$ref": "#/definitions/PermissionAssentDetectedEvent",
17925
- "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."
17926
17698
  },
17927
17699
  {
17928
17700
  "$ref": "#/definitions/PermissionContextualAuthorizationEvent",
17929
- "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."
17930
17702
  },
17931
17703
  {
17932
17704
  "$ref": "#/definitions/UserInputRequestedEvent",
@@ -18049,16 +17821,16 @@
18049
17821
  "description": "Session event \"session.background_tasks_changed\". Empty payload for `session.background_tasks_changed`, indicating background task state changed."
18050
17822
  },
18051
17823
  {
18052
- "$ref": "#/definitions/FactoryRunUpdatedEvent",
18053
- "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."
18054
17826
  },
18055
17827
  {
18056
- "$ref": "#/definitions/FactoryRunStartedEvent",
18057
- "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."
18058
17830
  },
18059
17831
  {
18060
- "$ref": "#/definitions/FactoryRunSettledEvent",
18061
- "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."
18062
17834
  },
18063
17835
  {
18064
17836
  "$ref": "#/definitions/SkillsLoadedEvent",
@@ -20156,7 +19928,7 @@
20156
19928
  },
20157
19929
  "taskModelSource": {
20158
19930
  "$ref": "#/definitions/SubagentTaskModelSource",
20159
- "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."
20160
19932
  },
20161
19933
  "modelSelectionSource": {
20162
19934
  "$ref": "#/definitions/SubagentModelSelectionSource",
@@ -20164,7 +19936,11 @@
20164
19936
  },
20165
19937
  "factoryRunId": {
20166
19938
  "type": "string",
20167
- "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."
20168
19944
  },
20169
19945
  "parentId": {
20170
19946
  "type": "string",
@@ -20440,8 +20216,8 @@
20440
20216
  "description": "System notification metadata for an instruction file discovered during tool access, including source, trigger file, and tool."
20441
20217
  },
20442
20218
  {
20443
- "$ref": "#/definitions/SystemNotificationFactoryCompleted",
20444
- "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."
20445
20221
  },
20446
20222
  {
20447
20223
  "$ref": "#/definitions/SystemNotificationUnclassified",
@@ -20619,134 +20395,6 @@
20619
20395
  "description": "Session event \"system.notification\". System-generated notification for runtime events like background task completion",
20620
20396
  "title": "SystemNotificationEvent"
20621
20397
  },
20622
- "SystemNotificationFactoryCompleted": {
20623
- "type": "object",
20624
- "properties": {
20625
- "type": {
20626
- "type": "string",
20627
- "const": "factory_completed",
20628
- "description": "Type discriminator. Always \"factory_completed\"."
20629
- },
20630
- "runId": {
20631
- "type": "string",
20632
- "description": "Factory run identifier."
20633
- },
20634
- "factoryName": {
20635
- "type": "string",
20636
- "description": "Persisted factory name."
20637
- },
20638
- "status": {
20639
- "$ref": "#/definitions/SystemNotificationFactoryCompletedStatus",
20640
- "description": "Terminal status reached by this execution attempt."
20641
- },
20642
- "consumedSubagents": {
20643
- "type": "integer",
20644
- "minimum": 0,
20645
- "description": "Subagents consumed by the run across all attempts."
20646
- },
20647
- "elapsedMs": {
20648
- "type": "integer",
20649
- "minimum": 0,
20650
- "description": "Accumulated active execution time in milliseconds."
20651
- },
20652
- "consumedNanoAiu": {
20653
- "type": "integer",
20654
- "minimum": 0,
20655
- "description": "Consumed AI usage in nano-AIU."
20656
- },
20657
- "attempt": {
20658
- "type": "integer",
20659
- "minimum": 1,
20660
- "description": "Execution attempt that reached this terminal state."
20661
- },
20662
- "resultPreview": {
20663
- "type": "string",
20664
- "maxLength": 256,
20665
- "description": "Bounded prompt-safe preview of the completed result."
20666
- },
20667
- "failure": {
20668
- "description": "Machine-readable terminal failure details, when present.",
20669
- "x-opaque-json": true
20670
- },
20671
- "retryGuidance": {
20672
- "type": "string",
20673
- "description": "Actionable run_factory resume guidance for a resource-limit failure."
20674
- },
20675
- "pauseInfo": {
20676
- "$ref": "#/definitions/SystemNotificationFactoryPauseInfo",
20677
- "description": "Pause initiator metadata when this attempt settled as paused."
20678
- }
20679
- },
20680
- "required": [
20681
- "type",
20682
- "runId",
20683
- "factoryName",
20684
- "status",
20685
- "consumedSubagents",
20686
- "elapsedMs",
20687
- "consumedNanoAiu",
20688
- "attempt"
20689
- ],
20690
- "additionalProperties": false,
20691
- "description": "System notification metadata for a factory execution attempt that reached a terminal state.",
20692
- "title": "SystemNotificationFactoryCompleted"
20693
- },
20694
- "SystemNotificationFactoryCompletedStatus": {
20695
- "type": "string",
20696
- "enum": [
20697
- "completed",
20698
- "halted",
20699
- "paused",
20700
- "cancelled",
20701
- "error"
20702
- ],
20703
- "description": "Terminal status reached by a factory execution attempt.",
20704
- "title": "SystemNotificationFactoryCompletedStatus",
20705
- "x-enumDescriptions": {
20706
- "completed": "The factory completed successfully.",
20707
- "halted": "The factory was halted.",
20708
- "paused": "The factory attempt paused intentionally.",
20709
- "cancelled": "The factory was cancelled.",
20710
- "error": "The factory failed."
20711
- }
20712
- },
20713
- "SystemNotificationFactoryPauseInfo": {
20714
- "anyOf": [
20715
- {
20716
- "type": "object",
20717
- "properties": {
20718
- "type": {
20719
- "type": "string",
20720
- "const": "user",
20721
- "description": "Factory pause initiator discriminator."
20722
- }
20723
- },
20724
- "required": [
20725
- "type"
20726
- ]
20727
- },
20728
- {
20729
- "type": "object",
20730
- "properties": {
20731
- "key": {
20732
- "type": "string",
20733
- "description": "Stable author-defined checkpoint key that initiated the pause."
20734
- },
20735
- "type": {
20736
- "type": "string",
20737
- "const": "checkpoint",
20738
- "description": "Factory pause initiator discriminator."
20739
- }
20740
- },
20741
- "required": [
20742
- "type",
20743
- "key"
20744
- ]
20745
- }
20746
- ],
20747
- "description": "Durable metadata describing who initiated a factory pause.",
20748
- "title": "SystemNotificationFactoryPauseInfo"
20749
- },
20750
20398
  "SystemNotificationInstructionDiscovered": {
20751
20399
  "type": "object",
20752
20400
  "properties": {
@@ -20892,20 +20540,148 @@
20892
20540
  "description": "System notification metadata from an external host that does not match a runtime-owned notification kind.",
20893
20541
  "title": "SystemNotificationUnclassified"
20894
20542
  },
20895
- "TaskBlocker": {
20543
+ "SystemNotificationWorkflowCompleted": {
20896
20544
  "type": "object",
20897
20545
  "properties": {
20898
- "kind": {
20899
- "$ref": "#/definitions/TaskBlockerKind",
20900
- "description": "Category of intervention that blocked the task"
20546
+ "type": {
20547
+ "type": "string",
20548
+ "const": "workflow_completed",
20549
+ "description": "Type discriminator. Always \"workflow_completed\"."
20901
20550
  },
20902
- "reason": {
20903
- "$ref": "#/definitions/PermissionRecoveryReason",
20904
- "description": "Controlled reason for the current blocked state"
20551
+ "runId": {
20552
+ "type": "string",
20553
+ "description": "Workflow run identifier."
20905
20554
  },
20906
- "resumable": {
20907
- "type": "boolean",
20908
- "description": "Whether a later user response or steering message can resume the task"
20555
+ "workflowName": {
20556
+ "type": "string",
20557
+ "description": "Persisted workflow name."
20558
+ },
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"
20909
20685
  },
20910
20686
  "permissionRecovery": {
20911
20687
  "$ref": "#/definitions/PermissionRecoveryData",
@@ -23353,8 +23129,8 @@
23353
23129
  "description": "Session-scoped tool-approval rule for extension-management operations, optionally narrowed by operation."
23354
23130
  },
23355
23131
  {
23356
- "$ref": "#/definitions/UserToolSessionApprovalFactory",
23357
- "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."
23358
23134
  },
23359
23135
  {
23360
23136
  "$ref": "#/definitions/UserToolSessionApprovalExtensionPermissionAccess",
@@ -23484,26 +23260,6 @@
23484
23260
  "description": "Session-scoped tool-approval rule for an extension's permission-gated capability access, keyed by extension name.",
23485
23261
  "title": "UserToolSessionApprovalExtensionPermissionAccess"
23486
23262
  },
23487
- "UserToolSessionApprovalFactory": {
23488
- "type": "object",
23489
- "properties": {
23490
- "kind": {
23491
- "type": "string",
23492
- "const": "factory",
23493
- "description": "Factory approval kind"
23494
- },
23495
- "approvalKey": {
23496
- "type": "string",
23497
- "description": "Optional factory operation name or canonical approval key"
23498
- }
23499
- },
23500
- "required": [
23501
- "kind"
23502
- ],
23503
- "additionalProperties": false,
23504
- "description": "Session-scoped factory approval, optionally narrowed by approval key.",
23505
- "title": "UserToolSessionApprovalFactory"
23506
- },
23507
23263
  "UserToolSessionApprovalMcp": {
23508
23264
  "type": "object",
23509
23265
  "properties": {
@@ -23565,6 +23321,26 @@
23565
23321
  "description": "Session-scoped tool-approval rule for read-only filesystem operations.",
23566
23322
  "title": "UserToolSessionApprovalRead"
23567
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
+ },
23568
23344
  "UserToolSessionApprovalWrite": {
23569
23345
  "type": "object",
23570
23346
  "properties": {
@@ -23678,6 +23454,320 @@
23678
23454
  "description": "Session event \"session.warning\". Warning message for timeline display with categorization",
23679
23455
  "title": "WarningEvent"
23680
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
+ },
23681
23771
  "WorkingDirectoryContext": {
23682
23772
  "type": "object",
23683
23773
  "properties": {