@github/copilot-sdk-win32-x64 1.0.14 → 1.0.15-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/builtin/discover-resources/SKILL.md +10 -0
  2. package/builtin-skills/discover-resources/SKILL.md +10 -0
  3. package/copilot-sdk/cliVersion.d.ts +1 -1
  4. package/copilot-sdk/client.d.ts +2 -0
  5. package/copilot-sdk/docs/extensions.md +1 -0
  6. package/copilot-sdk/docs/workflows.md +257 -0
  7. package/copilot-sdk/extension.d.ts +22 -8
  8. package/copilot-sdk/extension.js +1845 -230
  9. package/copilot-sdk/generated/rpc.d.ts +3141 -302
  10. package/copilot-sdk/generated/session-events.d.ts +756 -31
  11. package/copilot-sdk/index.d.ts +3 -1
  12. package/copilot-sdk/index.js +1839 -228
  13. package/copilot-sdk/schema.d.ts +4 -0
  14. package/copilot-sdk/session.d.ts +26 -3
  15. package/copilot-sdk/types.d.ts +37 -5
  16. package/copilot-sdk/workflow.d.ts +364 -0
  17. package/definitions/explore.agent.yaml +4 -1
  18. package/definitions/research.agent.yaml +1 -1
  19. package/definitions/task.agent.yaml +4 -1
  20. package/package.json +1 -1
  21. package/plugins/computer-use/CopilotComputerUse.exe +0 -0
  22. package/plugins/computer-use/computer-use-mcp.exe +0 -0
  23. package/plugins/computer-use/{.mcp.json → mcp.json} +2 -1
  24. package/plugins/computer-use/plugin.json +6 -0
  25. package/prebuilds/win32-x64/OneAuthInterop.dll +0 -0
  26. package/prebuilds/win32-x64/copilot-runtime.exe +0 -0
  27. package/prebuilds/win32-x64/msal-node-runtime.node +0 -0
  28. package/prebuilds/win32-x64/msalruntime.dll +0 -0
  29. package/prebuilds/win32-x64/runtime.node +2 -2
  30. package/preloads/extension_bootstrap.mjs +3 -4
  31. package/ripgrep/bin/win32-x64/rg.exe +0 -0
  32. package/schemas/api.schema.json +5252 -77
  33. package/schemas/session-events.schema.json +946 -1
  34. package/sdk/index.js +275 -286
  35. package/tgrep/bin/win32-x64/tgrep.exe +0 -0
  36. package/plugins/computer-use/.plugin/plugin.json +0 -6
@@ -1859,6 +1859,20 @@
1859
1859
  "minimum": 0,
1860
1860
  "description": "Number of output tokens used for reasoning (e.g., chain-of-thought)"
1861
1861
  },
1862
+ "thinkingDroppedBlocks": {
1863
+ "type": "integer",
1864
+ "minimum": 0,
1865
+ "description": "Number of prior thinking blocks the provider dropped while transforming the request",
1866
+ "visibility": "internal"
1867
+ },
1868
+ "thinkingDroppedReasons": {
1869
+ "type": "array",
1870
+ "items": {
1871
+ "type": "string"
1872
+ },
1873
+ "description": "Recognized provider-reported reasons for dropped thinking blocks, in response order",
1874
+ "visibility": "internal"
1875
+ },
1862
1876
  "cost": {
1863
1877
  "type": "number",
1864
1878
  "description": "Model multiplier cost for billing purposes",
@@ -5308,6 +5322,10 @@
5308
5322
  "type": "string",
5309
5323
  "description": "LLM-generated summary of the compacted conversation history"
5310
5324
  },
5325
+ "responsesReasoning": {
5326
+ "$ref": "#/definitions/ResponsesReasoning",
5327
+ "description": "Reasoning baseline on the replacement summary, preserved when replay skips the compacted history"
5328
+ },
5311
5329
  "activeFactorySummary": {
5312
5330
  "type": "string",
5313
5331
  "description": "Authoritative active-factory reminder appended to the compacted context",
@@ -9345,6 +9363,315 @@
9345
9363
  "description": "Session event \"session.idle\". Payload indicating the session is idle with no background agents or attached shell commands in flight",
9346
9364
  "title": "IdleEvent"
9347
9365
  },
9366
+ "IndexedSearchData": {
9367
+ "anyOf": [
9368
+ {
9369
+ "type": "object",
9370
+ "properties": {
9371
+ "state": {
9372
+ "$ref": "#/definitions/IndexedSearchState",
9373
+ "description": "Current indexed-search state for this session activation."
9374
+ },
9375
+ "kind": {
9376
+ "type": "string",
9377
+ "const": "status",
9378
+ "description": "Indexed-search event variant discriminator."
9379
+ }
9380
+ },
9381
+ "required": [
9382
+ "kind",
9383
+ "state"
9384
+ ],
9385
+ "additionalProperties": false
9386
+ },
9387
+ {
9388
+ "type": "object",
9389
+ "properties": {
9390
+ "outcome": {
9391
+ "$ref": "#/definitions/IndexedSearchOutcome",
9392
+ "description": "Outcome of this startup attempt."
9393
+ },
9394
+ "fileCount": {
9395
+ "type": "number",
9396
+ "minimum": 0,
9397
+ "description": "Number of text files counted in the repository."
9398
+ },
9399
+ "startupDurationMs": {
9400
+ "type": "number",
9401
+ "minimum": 0,
9402
+ "description": "Wall-clock duration of startup in milliseconds."
9403
+ },
9404
+ "forcedByEnv": {
9405
+ "type": "boolean",
9406
+ "description": "Whether indexed search was explicitly enabled through the environment."
9407
+ },
9408
+ "warmStart": {
9409
+ "type": "boolean",
9410
+ "description": "Whether waiting for index readiness was requested, including skipped attempts."
9411
+ },
9412
+ "disabledReason": {
9413
+ "$ref": "#/definitions/IndexedSearchDisabledReason",
9414
+ "description": "Why indexed search was disabled, when applicable."
9415
+ },
9416
+ "errorMessage": {
9417
+ "type": "string",
9418
+ "description": "Startup failure details. May contain sensitive user data; restricted telemetry only."
9419
+ },
9420
+ "eligible": {
9421
+ "type": "boolean",
9422
+ "description": "Whether the repository meets the automatic indexing file-count threshold, when known."
9423
+ },
9424
+ "kind": {
9425
+ "type": "string",
9426
+ "const": "startup",
9427
+ "description": "Indexed-search event variant discriminator."
9428
+ }
9429
+ },
9430
+ "required": [
9431
+ "kind",
9432
+ "outcome",
9433
+ "startupDurationMs",
9434
+ "forcedByEnv",
9435
+ "warmStart"
9436
+ ],
9437
+ "additionalProperties": false
9438
+ },
9439
+ {
9440
+ "type": "object",
9441
+ "properties": {
9442
+ "errorType": {
9443
+ "$ref": "#/definitions/IndexedSearchErrorType",
9444
+ "description": "Category of the server failure."
9445
+ },
9446
+ "exitCode": {
9447
+ "type": "number",
9448
+ "description": "Process exit code, when available."
9449
+ },
9450
+ "errorMessage": {
9451
+ "type": "string",
9452
+ "description": "Server failure details. May contain sensitive user data; restricted telemetry only."
9453
+ },
9454
+ "kind": {
9455
+ "type": "string",
9456
+ "const": "server_error",
9457
+ "description": "Indexed-search event variant discriminator."
9458
+ }
9459
+ },
9460
+ "required": [
9461
+ "kind",
9462
+ "errorType"
9463
+ ],
9464
+ "additionalProperties": false
9465
+ },
9466
+ {
9467
+ "type": "object",
9468
+ "properties": {
9469
+ "phase": {
9470
+ "$ref": "#/definitions/IndexedSearchIncrementalPhase",
9471
+ "description": "Phase of the incremental index update."
9472
+ },
9473
+ "changedFileCount": {
9474
+ "type": "number",
9475
+ "minimum": 0,
9476
+ "description": "Number of modified files."
9477
+ },
9478
+ "addedFileCount": {
9479
+ "type": "number",
9480
+ "minimum": 0,
9481
+ "description": "Number of added files."
9482
+ },
9483
+ "deletedFileCount": {
9484
+ "type": "number",
9485
+ "minimum": 0,
9486
+ "description": "Number of deleted files."
9487
+ },
9488
+ "totalChangeCount": {
9489
+ "type": "number",
9490
+ "minimum": 0,
9491
+ "description": "Total number of detected changes."
9492
+ },
9493
+ "walkDurationMs": {
9494
+ "type": "number",
9495
+ "minimum": 0,
9496
+ "description": "Workspace scan duration in milliseconds."
9497
+ },
9498
+ "updateDurationMs": {
9499
+ "type": "number",
9500
+ "minimum": 0,
9501
+ "description": "Index update duration in milliseconds."
9502
+ },
9503
+ "totalDurationMs": {
9504
+ "type": "number",
9505
+ "minimum": 0,
9506
+ "description": "Total incremental indexing duration in milliseconds."
9507
+ },
9508
+ "kind": {
9509
+ "type": "string",
9510
+ "const": "incremental",
9511
+ "description": "Indexed-search event variant discriminator."
9512
+ }
9513
+ },
9514
+ "required": [
9515
+ "kind",
9516
+ "phase"
9517
+ ],
9518
+ "additionalProperties": false
9519
+ }
9520
+ ],
9521
+ "description": "Transient indexed-search status and diagnostics from the live runtime service. Never persisted or used to infer activation from session history.",
9522
+ "title": "IndexedSearchData"
9523
+ },
9524
+ "IndexedSearchDisabledReason": {
9525
+ "type": "string",
9526
+ "enum": [
9527
+ "use_tgrep_false",
9528
+ "use_builtin_ripgrep_false",
9529
+ "organization",
9530
+ "organization_policy_auth_pending",
9531
+ "organization_policy_unknown",
9532
+ "virtual_filesystem",
9533
+ "cloud_sync_root",
9534
+ "cloud_sync_detection_failed",
9535
+ "workspace_not_local"
9536
+ ],
9537
+ "description": "Configuration, policy, or workspace condition that disabled indexed search.",
9538
+ "title": "IndexedSearchDisabledReason",
9539
+ "x-enumDescriptions": {
9540
+ "use_tgrep_false": "Indexed search was explicitly disabled by the environment.",
9541
+ "use_builtin_ripgrep_false": "Search uses the external ripgrep binary instead of bundled search.",
9542
+ "organization": "Organization policy disables indexed search.",
9543
+ "organization_policy_auth_pending": "Authentication has not resolved organization policy.",
9544
+ "organization_policy_unknown": "Organization policy could not be determined.",
9545
+ "virtual_filesystem": "The workspace uses a virtualized or network filesystem.",
9546
+ "cloud_sync_root": "The workspace is inside a Windows cloud-sync root.",
9547
+ "cloud_sync_detection_failed": "The Windows cloud-sync safety check failed.",
9548
+ "workspace_not_local": "The workspace is not available on the runtime's local filesystem."
9549
+ }
9550
+ },
9551
+ "IndexedSearchErrorType": {
9552
+ "type": "string",
9553
+ "enum": [
9554
+ "spawn_error",
9555
+ "unexpected_exit",
9556
+ "killed_by_signal"
9557
+ ],
9558
+ "description": "Category of an indexed-search server failure.",
9559
+ "title": "IndexedSearchErrorType",
9560
+ "x-enumDescriptions": {
9561
+ "spawn_error": "The indexed-search server could not be spawned.",
9562
+ "unexpected_exit": "The indexed-search server exited unexpectedly.",
9563
+ "killed_by_signal": "The indexed-search server was terminated by a signal."
9564
+ }
9565
+ },
9566
+ "IndexedSearchEvent": {
9567
+ "type": "object",
9568
+ "properties": {
9569
+ "id": {
9570
+ "type": "string",
9571
+ "format": "uuid",
9572
+ "description": "Unique event identifier (UUID v4), generated when the event is emitted"
9573
+ },
9574
+ "timestamp": {
9575
+ "type": "string",
9576
+ "format": "date-time",
9577
+ "description": "ISO 8601 timestamp when the event was created"
9578
+ },
9579
+ "parentId": {
9580
+ "anyOf": [
9581
+ {
9582
+ "type": "string",
9583
+ "format": "uuid"
9584
+ },
9585
+ {
9586
+ "type": "null"
9587
+ }
9588
+ ],
9589
+ "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
9590
+ },
9591
+ "ephemeral": {
9592
+ "type": "boolean",
9593
+ "const": true,
9594
+ "description": "Always true for events that are transient and not persisted to the session event log on disk."
9595
+ },
9596
+ "agentId": {
9597
+ "type": "string",
9598
+ "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
9599
+ },
9600
+ "type": {
9601
+ "type": "string",
9602
+ "const": "session.indexed_search",
9603
+ "description": "Type discriminator. Always \"session.indexed_search\"."
9604
+ },
9605
+ "data": {
9606
+ "$ref": "#/definitions/IndexedSearchData",
9607
+ "description": "Transient indexed-search status and diagnostics from the live runtime service. Never persisted or used to infer activation from session history."
9608
+ }
9609
+ },
9610
+ "required": [
9611
+ "id",
9612
+ "timestamp",
9613
+ "parentId",
9614
+ "ephemeral",
9615
+ "type",
9616
+ "data"
9617
+ ],
9618
+ "additionalProperties": false,
9619
+ "description": "Session event \"session.indexed_search\". Transient indexed-search status and diagnostics from the live runtime service. Never persisted or used to infer activation from session history.",
9620
+ "title": "IndexedSearchEvent"
9621
+ },
9622
+ "IndexedSearchIncrementalPhase": {
9623
+ "type": "string",
9624
+ "enum": [
9625
+ "changes_detected",
9626
+ "updated"
9627
+ ],
9628
+ "description": "Phase of an incremental indexed-search update.",
9629
+ "title": "IndexedSearchIncrementalPhase",
9630
+ "x-enumDescriptions": {
9631
+ "changes_detected": "A workspace scan found changes to index.",
9632
+ "updated": "The incremental index update completed."
9633
+ }
9634
+ },
9635
+ "IndexedSearchOutcome": {
9636
+ "type": "string",
9637
+ "enum": [
9638
+ "started",
9639
+ "skipped_below_threshold",
9640
+ "skipped_no_gitroot",
9641
+ "skipped_disabled",
9642
+ "reused_existing",
9643
+ "failed"
9644
+ ],
9645
+ "description": "Result of an indexed-search startup attempt.",
9646
+ "title": "IndexedSearchOutcome",
9647
+ "x-enumDescriptions": {
9648
+ "started": "A new indexed-search server was started.",
9649
+ "skipped_below_threshold": "The repository has too few files for automatic indexing.",
9650
+ "skipped_no_gitroot": "No Git repository was found and indexing was not forced.",
9651
+ "skipped_disabled": "Configuration, policy, or workspace safety disabled indexing.",
9652
+ "reused_existing": "An existing indexed-search server was reused.",
9653
+ "failed": "The startup attempt failed."
9654
+ }
9655
+ },
9656
+ "IndexedSearchState": {
9657
+ "type": "string",
9658
+ "enum": [
9659
+ "disabled",
9660
+ "starting",
9661
+ "enabled",
9662
+ "ready",
9663
+ "failed"
9664
+ ],
9665
+ "description": "Live indexed-search state for this session activation, never inferred from persisted history.",
9666
+ "title": "IndexedSearchState",
9667
+ "x-enumDescriptions": {
9668
+ "disabled": "Indexed search is not active for this session.",
9669
+ "starting": "Indexed-search startup is in progress.",
9670
+ "enabled": "The indexed-search server started successfully; its index may still be warming.",
9671
+ "ready": "The indexed-search server and its index are ready.",
9672
+ "failed": "Indexed-search startup or the active server failed."
9673
+ }
9674
+ },
9348
9675
  "InfoData": {
9349
9676
  "type": "object",
9350
9677
  "properties": {
@@ -11701,6 +12028,7 @@
11701
12028
  "agent",
11702
12029
  "plan_mode",
11703
12030
  "automatic",
12031
+ "changeboarding_shortcut",
11704
12032
  "sdk"
11705
12033
  ],
11706
12034
  "description": "Origin of an effective session model change.",
@@ -11716,9 +12044,95 @@
11716
12044
  "agent": "Selecting an agent selected its configured model.",
11717
12045
  "plan_mode": "Entering, leaving, or reconfiguring plan mode selected the model.",
11718
12046
  "automatic": "The runtime selected the model automatically, such as rate-limit recovery or refusal fallback.",
12047
+ "changeboarding_shortcut": "The user selected the promoted model from the changeboarding card or its keyboard shortcut.",
11719
12048
  "sdk": "An SDK or RPC caller selected the model."
11720
12049
  }
11721
12050
  },
12051
+ "ModelDeselectedData": {
12052
+ "type": "object",
12053
+ "properties": {
12054
+ "previousModel": {
12055
+ "type": "string",
12056
+ "description": "Model that was selected before the host withdrew it."
12057
+ },
12058
+ "reason": {
12059
+ "$ref": "#/definitions/ModelDeselectedReason",
12060
+ "description": "Low-cardinality reason the selection was cleared."
12061
+ }
12062
+ },
12063
+ "required": [
12064
+ "previousModel",
12065
+ "reason"
12066
+ ],
12067
+ "additionalProperties": false,
12068
+ "description": "The model the user had explicitly selected is no longer available, because the host that published it withdrew it, so the session no longer has an explicit selection. The next turn resolves a default as though the user had never chosen a model. Clients should stop presenting the previous model as selected. This event is durable because resume rebuilds the selected model from the event log; without it a resumed session would restore a model its provider no longer serves. Reasoning effort, verbosity, and other session-level preferences are deliberately unchanged, because they belong to the session rather than to the model.",
12069
+ "title": "ModelDeselectedData"
12070
+ },
12071
+ "ModelDeselectedEvent": {
12072
+ "type": "object",
12073
+ "properties": {
12074
+ "id": {
12075
+ "type": "string",
12076
+ "format": "uuid",
12077
+ "description": "Unique event identifier (UUID v4), generated when the event is emitted"
12078
+ },
12079
+ "timestamp": {
12080
+ "type": "string",
12081
+ "format": "date-time",
12082
+ "description": "ISO 8601 timestamp when the event was created"
12083
+ },
12084
+ "parentId": {
12085
+ "anyOf": [
12086
+ {
12087
+ "type": "string",
12088
+ "format": "uuid"
12089
+ },
12090
+ {
12091
+ "type": "null"
12092
+ }
12093
+ ],
12094
+ "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
12095
+ },
12096
+ "ephemeral": {
12097
+ "type": "boolean",
12098
+ "description": "When true, the event is transient and not persisted to the session event log on disk"
12099
+ },
12100
+ "agentId": {
12101
+ "type": "string",
12102
+ "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
12103
+ },
12104
+ "type": {
12105
+ "type": "string",
12106
+ "const": "session.model_deselected",
12107
+ "description": "Type discriminator. Always \"session.model_deselected\"."
12108
+ },
12109
+ "data": {
12110
+ "$ref": "#/definitions/ModelDeselectedData",
12111
+ "description": "The model the user had explicitly selected is no longer available, because the host that published it withdrew it, so the session no longer has an explicit selection. The next turn resolves a default as though the user had never chosen a model. Clients should stop presenting the previous model as selected. This event is durable because resume rebuilds the selected model from the event log; without it a resumed session would restore a model its provider no longer serves. Reasoning effort, verbosity, and other session-level preferences are deliberately unchanged, because they belong to the session rather than to the model."
12112
+ }
12113
+ },
12114
+ "required": [
12115
+ "id",
12116
+ "timestamp",
12117
+ "parentId",
12118
+ "type",
12119
+ "data"
12120
+ ],
12121
+ "additionalProperties": false,
12122
+ "description": "Session event \"session.model_deselected\". The model the user had explicitly selected is no longer available, because the host that published it withdrew it, so the session no longer has an explicit selection. The next turn resolves a default as though the user had never chosen a model. Clients should stop presenting the previous model as selected. This event is durable because resume rebuilds the selected model from the event log; without it a resumed session would restore a model its provider no longer serves. Reasoning effort, verbosity, and other session-level preferences are deliberately unchanged, because they belong to the session rather than to the model.",
12123
+ "title": "ModelDeselectedEvent"
12124
+ },
12125
+ "ModelDeselectedReason": {
12126
+ "type": "string",
12127
+ "enum": [
12128
+ "provider_withdrawn"
12129
+ ],
12130
+ "description": "Why the session no longer has an explicitly selected model.",
12131
+ "title": "ModelDeselectedReason",
12132
+ "x-enumDescriptions": {
12133
+ "provider_withdrawn": "A host-managed provider snapshot no longer publishes the selected model."
12134
+ }
12135
+ },
11722
12136
  "ModeNoticeDeliveredData": {
11723
12137
  "type": "object",
11724
12138
  "properties": {
@@ -11924,6 +12338,121 @@
11924
12338
  "description": "Session event \"pending_messages.modified\". Empty payload; the event signals that the pending message queue has changed",
11925
12339
  "title": "PendingMessagesModifiedEvent"
11926
12340
  },
12341
+ "PermissionApprovalEvaluation": {
12342
+ "type": "object",
12343
+ "properties": {
12344
+ "reasonCode": {
12345
+ "type": "string",
12346
+ "enum": [
12347
+ "unknown",
12348
+ "not-reached",
12349
+ "inactive",
12350
+ "authorization-history-incomplete",
12351
+ "managed-approval-required",
12352
+ "sandbox-bypass",
12353
+ "action-too-long",
12354
+ "path-not-authorized",
12355
+ "invalid-working-directory",
12356
+ "unreadable",
12357
+ "not-regular-file",
12358
+ "too-large",
12359
+ "non-utf8",
12360
+ "interpreter-unavailable",
12361
+ "interpreter-too-large",
12362
+ "shell-environment-unreviewable",
12363
+ "unrepresentable-path",
12364
+ "interpreter-wrapped-script",
12365
+ "unreviewable-script-invocation",
12366
+ "argument-binding-unreviewable",
12367
+ "malformed-script-action-review",
12368
+ "malformed-script-action-manifest",
12369
+ "unavailable",
12370
+ "judge-verdict",
12371
+ "judge-error",
12372
+ "inherited"
12373
+ ],
12374
+ "description": "Machine-readable runtime gate reason, never a command, path or human rationale.",
12375
+ "x-enumDescriptions": {
12376
+ "unknown": "Attribution is missing or outside the supported vocabulary.",
12377
+ "not-reached": "The request resolved before assisted-approval evaluation.",
12378
+ "inactive": "Assisted approval was inactive for this request.",
12379
+ "authorization-history-incomplete": "The judge was skipped because authorization extraction could not safely establish a complete recent history.",
12380
+ "managed-approval-required": "Managed policy required a human decision.",
12381
+ "sandbox-bypass": "The request asked to bypass sandbox restrictions.",
12382
+ "action-too-long": "An action field exceeded the judge input limit.",
12383
+ "path-not-authorized": "The script path was not authorized for inspection.",
12384
+ "invalid-working-directory": "The script working directory was invalid.",
12385
+ "unreadable": "The script snapshot could not be read.",
12386
+ "not-regular-file": "The script path was not a regular file.",
12387
+ "too-large": "The script snapshot exceeded the size limit.",
12388
+ "non-utf8": "The script snapshot was not UTF-8.",
12389
+ "interpreter-unavailable": "The script interpreter could not be inspected.",
12390
+ "interpreter-too-large": "The interpreter snapshot exceeded the size limit.",
12391
+ "shell-environment-unreviewable": "The shell environment could not be reviewed.",
12392
+ "unrepresentable-path": "A script path could not be represented for review.",
12393
+ "interpreter-wrapped-script": "An interpreter wrapped a script that could not be reviewed.",
12394
+ "unreviewable-script-invocation": "The script invocation could not be reviewed.",
12395
+ "argument-binding-unreviewable": "The script argument binding could not be reviewed.",
12396
+ "malformed-script-action-review": "The script review metadata was malformed.",
12397
+ "malformed-script-action-manifest": "The script snapshot manifest was malformed.",
12398
+ "unavailable": "Script review was unavailable.",
12399
+ "judge-verdict": "The judge interface returned a usable verdict.",
12400
+ "judge-error": "The judge interface returned an error.",
12401
+ "inherited": "The request inherited an outcome from another decision."
12402
+ }
12403
+ },
12404
+ "judgeStatus": {
12405
+ "type": "string",
12406
+ "enum": [
12407
+ "unknown",
12408
+ "not_called",
12409
+ "completed",
12410
+ "failed",
12411
+ "cached",
12412
+ "inherited"
12413
+ ],
12414
+ "description": "Status of the local judge interface, not proof of a model network call.",
12415
+ "x-enumDescriptions": {
12416
+ "unknown": "No authoritative attribution is available.",
12417
+ "not_called": "This evaluation did not invoke the judge interface.",
12418
+ "completed": "The judge interface returned a usable verdict.",
12419
+ "failed": "The judge interface returned an error.",
12420
+ "cached": "This evaluation reused a cached recommendation.",
12421
+ "inherited": "This request inherited another decision without local judge attribution."
12422
+ }
12423
+ },
12424
+ "evaluationStage": {
12425
+ "type": "string",
12426
+ "enum": [
12427
+ "unknown",
12428
+ "not_reached",
12429
+ "pre_judge",
12430
+ "judge",
12431
+ "reuse"
12432
+ ],
12433
+ "description": "Stage that produced this attribution.",
12434
+ "x-enumDescriptions": {
12435
+ "unknown": "The attribution stage is unknown.",
12436
+ "not_reached": "The request resolved before assisted-approval evaluation.",
12437
+ "pre_judge": "A runtime gate skipped the judge.",
12438
+ "judge": "The judge interface produced the evaluation.",
12439
+ "reuse": "A cached recommendation or another request's outcome was reused."
12440
+ }
12441
+ },
12442
+ "judgeAttempted": {
12443
+ "type": "boolean",
12444
+ "description": "Whether the request invoked the judge interface. A cached recommendation retains the original attempt fact. Omitted means unknown, including inherited outcomes."
12445
+ }
12446
+ },
12447
+ "required": [
12448
+ "reasonCode",
12449
+ "judgeStatus",
12450
+ "evaluationStage"
12451
+ ],
12452
+ "additionalProperties": false,
12453
+ "description": "Bounded runtime attribution, independent of free-text rationale. Telemetry revalidates this vocabulary before standard collection.",
12454
+ "title": "PermissionApprovalEvaluation"
12455
+ },
11927
12456
  "PermissionApproved": {
11928
12457
  "type": "object",
11929
12458
  "properties": {
@@ -12081,6 +12610,10 @@
12081
12610
  "PermissionAssistedApproval": {
12082
12611
  "type": "object",
12083
12612
  "properties": {
12613
+ "evaluation": {
12614
+ "$ref": "#/definitions/PermissionApprovalEvaluation",
12615
+ "description": "Runtime reason and judge-call metadata. Absent on older events; missing metadata means unknown, not that the judge was skipped."
12616
+ },
12084
12617
  "recommendation": {
12085
12618
  "$ref": "#/definitions/AssistedApprovalRecommendation",
12086
12619
  "description": "The assisted-approval safety judge's outcome for this request."
@@ -12227,6 +12760,14 @@
12227
12760
  "type": "string",
12228
12761
  "description": "Optional tool call ID associated with this permission prompt; clients may use it to correlate UI created from tool-scoped prompts"
12229
12762
  },
12763
+ "recoveryEpisodeId": {
12764
+ "type": "string",
12765
+ "description": "Permission-recovery episode settled by this response, when the request was escalated by Autopilot"
12766
+ },
12767
+ "blocker": {
12768
+ "$ref": "#/definitions/TaskBlocker",
12769
+ "description": "Atomic structured blocked outcome when this permission response ended an Autopilot recovery episode unsuccessfully"
12770
+ },
12230
12771
  "result": {
12231
12772
  "$ref": "#/definitions/PermissionResult",
12232
12773
  "description": "The result of the permission request"
@@ -13577,6 +14118,264 @@
13577
14118
  },
13578
14119
  "stability": "experimental"
13579
14120
  },
14121
+ "PermissionRecoveryAttempt": {
14122
+ "type": "object",
14123
+ "properties": {
14124
+ "attemptId": {
14125
+ "type": "string",
14126
+ "description": "Unique identifier for this attempt record"
14127
+ },
14128
+ "toolCallId": {
14129
+ "type": "string",
14130
+ "description": "Tool-call identifier associated with this attempt, when available"
14131
+ },
14132
+ "permissionKind": {
14133
+ "type": "string",
14134
+ "description": "Controlled permission request kind, such as shell, path, URL, or tool"
14135
+ },
14136
+ "requestFingerprint": {
14137
+ "type": "string",
14138
+ "description": "SHA-256 fingerprint of normalized request data; raw permission arguments are not included"
14139
+ },
14140
+ "relation": {
14141
+ "$ref": "#/definitions/PermissionRecoveryAttemptRelation",
14142
+ "description": "Relationship between this attempt and earlier attempts in the episode"
14143
+ },
14144
+ "disposition": {
14145
+ "$ref": "#/definitions/PermissionRecoveryAttemptDisposition",
14146
+ "description": "How the runtime handled this attempt"
14147
+ },
14148
+ "reason": {
14149
+ "$ref": "#/definitions/PermissionRecoveryAttemptReason",
14150
+ "description": "Controlled reason for the attempt disposition"
14151
+ },
14152
+ "ordinal": {
14153
+ "type": "integer",
14154
+ "minimum": 1,
14155
+ "description": "One-based position of this attempt in the episode"
14156
+ }
14157
+ },
14158
+ "required": [
14159
+ "attemptId",
14160
+ "permissionKind",
14161
+ "requestFingerprint",
14162
+ "relation",
14163
+ "disposition",
14164
+ "reason",
14165
+ "ordinal"
14166
+ ],
14167
+ "additionalProperties": false
14168
+ },
14169
+ "PermissionRecoveryAttemptDisposition": {
14170
+ "type": "string",
14171
+ "enum": [
14172
+ "deferred",
14173
+ "prompted",
14174
+ "approved",
14175
+ "denied",
14176
+ "blocked",
14177
+ "succeeded"
14178
+ ],
14179
+ "description": "Runtime handling applied to a recovery attempt",
14180
+ "title": "PermissionRecoveryAttemptDisposition",
14181
+ "x-enumDescriptions": {
14182
+ "deferred": "The request was denied without prompting so the agent could try an alternative.",
14183
+ "prompted": "The request was surfaced to an interactive responder.",
14184
+ "approved": "The interactive responder approved the request.",
14185
+ "denied": "The interactive responder denied the request or became unavailable.",
14186
+ "blocked": "The request exhausted unattended recovery and produced a blocked outcome.",
14187
+ "succeeded": "A tool call succeeded as an equivalent alternative."
14188
+ }
14189
+ },
14190
+ "PermissionRecoveryAttemptReason": {
14191
+ "type": "string",
14192
+ "enum": [
14193
+ "permission_required",
14194
+ "repeated_attempt",
14195
+ "attempts_exhausted",
14196
+ "permission_approved",
14197
+ "permission_denied",
14198
+ "responder_unavailable",
14199
+ "equivalent_alternative_succeeded"
14200
+ ],
14201
+ "description": "Controlled reason for an individual attempt disposition",
14202
+ "title": "PermissionRecoveryAttemptReason",
14203
+ "x-enumDescriptions": {
14204
+ "permission_required": "The attempt required permission that Assisted Permissions could not grant.",
14205
+ "repeated_attempt": "The request repeated an earlier attempt.",
14206
+ "attempts_exhausted": "The request exceeded the bounded number of distinct attempts.",
14207
+ "permission_approved": "The interactive responder approved the request.",
14208
+ "permission_denied": "The interactive responder denied the request.",
14209
+ "responder_unavailable": "The interactive responder became unavailable.",
14210
+ "equivalent_alternative_succeeded": "The tool call succeeded without the blocked permission."
14211
+ }
14212
+ },
14213
+ "PermissionRecoveryAttemptRelation": {
14214
+ "type": "string",
14215
+ "enum": [
14216
+ "initial",
14217
+ "retry",
14218
+ "alternative"
14219
+ ],
14220
+ "description": "Relationship of an attempt to earlier permission requests",
14221
+ "title": "PermissionRecoveryAttemptRelation",
14222
+ "x-enumDescriptions": {
14223
+ "initial": "The first denied permission request in the episode.",
14224
+ "retry": "A request equivalent to an earlier attempt.",
14225
+ "alternative": "A distinct request or a successful alternative tool call."
14226
+ }
14227
+ },
14228
+ "PermissionRecoveryData": {
14229
+ "type": "object",
14230
+ "properties": {
14231
+ "episodeId": {
14232
+ "type": "string",
14233
+ "description": "Stable identifier shared by every transition in this recovery episode"
14234
+ },
14235
+ "status": {
14236
+ "$ref": "#/definitions/PermissionRecoveryStatus",
14237
+ "description": "Current lifecycle state of the recovery episode"
14238
+ },
14239
+ "onBlocked": {
14240
+ "$ref": "#/definitions/PermissionRecoveryOnBlocked",
14241
+ "description": "Policy selected from the current client's response capability; mode or client changes may update it during recovery"
14242
+ },
14243
+ "reason": {
14244
+ "$ref": "#/definitions/PermissionRecoveryReason",
14245
+ "description": "Controlled reason for the latest episode transition"
14246
+ },
14247
+ "maxAttempts": {
14248
+ "type": "integer",
14249
+ "minimum": 1,
14250
+ "description": "Maximum number of distinct autonomous permission attempts allowed before escalation"
14251
+ },
14252
+ "attempts": {
14253
+ "type": "array",
14254
+ "items": {
14255
+ "$ref": "#/definitions/PermissionRecoveryAttempt"
14256
+ },
14257
+ "description": "Ordered privacy-safe record of permission attempts and the successful alternative, when any"
14258
+ }
14259
+ },
14260
+ "required": [
14261
+ "episodeId",
14262
+ "status",
14263
+ "onBlocked",
14264
+ "reason",
14265
+ "maxAttempts",
14266
+ "attempts"
14267
+ ],
14268
+ "additionalProperties": false,
14269
+ "description": "Authoritative snapshot of an Autopilot permission-recovery episode",
14270
+ "title": "PermissionRecoveryData"
14271
+ },
14272
+ "PermissionRecoveryEvent": {
14273
+ "type": "object",
14274
+ "properties": {
14275
+ "id": {
14276
+ "type": "string",
14277
+ "format": "uuid",
14278
+ "description": "Unique event identifier (UUID v4), generated when the event is emitted"
14279
+ },
14280
+ "timestamp": {
14281
+ "type": "string",
14282
+ "format": "date-time",
14283
+ "description": "ISO 8601 timestamp when the event was created"
14284
+ },
14285
+ "parentId": {
14286
+ "anyOf": [
14287
+ {
14288
+ "type": "string",
14289
+ "format": "uuid"
14290
+ },
14291
+ {
14292
+ "type": "null"
14293
+ }
14294
+ ],
14295
+ "description": "ID of the chronologically preceding event in the session, forming a linked chain. Null for the first event."
14296
+ },
14297
+ "ephemeral": {
14298
+ "type": "boolean",
14299
+ "description": "When true, the event is transient and not persisted to the session event log on disk"
14300
+ },
14301
+ "agentId": {
14302
+ "type": "string",
14303
+ "description": "Sub-agent instance identifier. Absent for events from the root/main agent and session-level events."
14304
+ },
14305
+ "type": {
14306
+ "type": "string",
14307
+ "const": "session.permission_recovery",
14308
+ "description": "Type discriminator. Always \"session.permission_recovery\"."
14309
+ },
14310
+ "data": {
14311
+ "$ref": "#/definitions/PermissionRecoveryData",
14312
+ "description": "Authoritative snapshot of an Autopilot permission-recovery episode"
14313
+ }
14314
+ },
14315
+ "required": [
14316
+ "id",
14317
+ "timestamp",
14318
+ "parentId",
14319
+ "type",
14320
+ "data"
14321
+ ],
14322
+ "additionalProperties": false,
14323
+ "description": "Session event \"session.permission_recovery\". Authoritative snapshot of an Autopilot permission-recovery episode",
14324
+ "title": "PermissionRecoveryEvent"
14325
+ },
14326
+ "PermissionRecoveryOnBlocked": {
14327
+ "type": "string",
14328
+ "enum": [
14329
+ "ask",
14330
+ "fail"
14331
+ ],
14332
+ "description": "Action selected when autonomous recovery cannot continue",
14333
+ "title": "PermissionRecoveryOnBlocked",
14334
+ "x-enumDescriptions": {
14335
+ "ask": "Surface the existing permission prompt to a response-capable client.",
14336
+ "fail": "Return a structured unsuccessful blocked outcome because no responder is available."
14337
+ }
14338
+ },
14339
+ "PermissionRecoveryReason": {
14340
+ "type": "string",
14341
+ "enum": [
14342
+ "permission_required",
14343
+ "repeated_attempt",
14344
+ "attempts_exhausted",
14345
+ "permission_approved",
14346
+ "permission_denied",
14347
+ "responder_unavailable",
14348
+ "equivalent_alternative_succeeded"
14349
+ ],
14350
+ "description": "Controlled reason for a permission-recovery episode transition",
14351
+ "title": "PermissionRecoveryReason",
14352
+ "x-enumDescriptions": {
14353
+ "permission_required": "An action required permission that Assisted Permissions could not grant.",
14354
+ "repeated_attempt": "The agent repeated an equivalent permission request instead of making progress.",
14355
+ "attempts_exhausted": "The bounded number of distinct permission attempts was exhausted.",
14356
+ "permission_approved": "A responder approved the escalated permission request.",
14357
+ "permission_denied": "A responder denied the escalated permission request.",
14358
+ "responder_unavailable": "The response-capable client became unavailable while escalation was pending.",
14359
+ "equivalent_alternative_succeeded": "A later tool call succeeded without requiring the blocked permission."
14360
+ }
14361
+ },
14362
+ "PermissionRecoveryStatus": {
14363
+ "type": "string",
14364
+ "enum": [
14365
+ "recovering",
14366
+ "awaiting_approval",
14367
+ "resolved",
14368
+ "blocked"
14369
+ ],
14370
+ "description": "Lifecycle state of a permission-recovery episode",
14371
+ "title": "PermissionRecoveryStatus",
14372
+ "x-enumDescriptions": {
14373
+ "recovering": "Autopilot may try a bounded equivalent alternative.",
14374
+ "awaiting_approval": "An interactive permission response is required.",
14375
+ "resolved": "The episode ended through approval or a successful equivalent alternative.",
14376
+ "blocked": "No autonomous path remains and the task requires intervention."
14377
+ }
14378
+ },
13580
14379
  "PermissionRequest": {
13581
14380
  "anyOf": [
13582
14381
  {
@@ -13684,6 +14483,10 @@
13684
14483
  "$ref": "#/definitions/PermissionPromptRequest",
13685
14484
  "description": "Derived user-facing permission prompt details for UI consumers"
13686
14485
  },
14486
+ "permissionMode": {
14487
+ "$ref": "#/definitions/PermissionMode",
14488
+ "description": "Permission mode captured when evaluation began. Absent on historical events."
14489
+ },
13687
14490
  "agentMode": {
13688
14491
  "$ref": "#/definitions/SessionMode",
13689
14492
  "description": "Agent mode captured from the owning turn when permission evaluation began."
@@ -13695,6 +14498,10 @@
13695
14498
  "resolvedByHook": {
13696
14499
  "type": "boolean",
13697
14500
  "description": "When true, this permission was already resolved by a permissionRequest hook and requires no client action"
14501
+ },
14502
+ "recoveryEpisodeId": {
14503
+ "type": "string",
14504
+ "description": "Permission-recovery episode that authorized this request to surface for interactive attention"
13698
14505
  }
13699
14506
  },
13700
14507
  "required": [
@@ -15084,6 +15891,31 @@
15084
15891
  "description": "Session event \"session.remote_steerable_changed\". Notifies that the session's remote steering capability has changed",
15085
15892
  "title": "RemoteSteerableChangedEvent"
15086
15893
  },
15894
+ "ResponsesReasoning": {
15895
+ "type": "object",
15896
+ "properties": {
15897
+ "model": {
15898
+ "type": "string",
15899
+ "description": "Provider model whose reasoning settings this boundary records"
15900
+ },
15901
+ "initialEffort": {
15902
+ "type": "string",
15903
+ "description": "Original request-level effort, retained while replaying this conversation prefix"
15904
+ },
15905
+ "effort": {
15906
+ "type": "string",
15907
+ "description": "Effective effort selected before this message, independent of the response-level reasoning field"
15908
+ }
15909
+ },
15910
+ "required": [
15911
+ "model",
15912
+ "initialEffort",
15913
+ "effort"
15914
+ ],
15915
+ "additionalProperties": false,
15916
+ "description": "Original request-level and effective conversation reasoning effort for a Responses history boundary",
15917
+ "title": "ResponsesReasoning"
15918
+ },
15087
15919
  "ResumeData": {
15088
15920
  "type": "object",
15089
15921
  "properties": {
@@ -16637,6 +17469,10 @@
16637
17469
  "$ref": "#/definitions/InfoEvent",
16638
17470
  "description": "Session event \"session.info\". Informational message for timeline display with categorization"
16639
17471
  },
17472
+ {
17473
+ "$ref": "#/definitions/IndexedSearchEvent",
17474
+ "description": "Session event \"session.indexed_search\". Transient indexed-search status and diagnostics from the live runtime service. Never persisted or used to infer activation from session history."
17475
+ },
16640
17476
  {
16641
17477
  "$ref": "#/definitions/WarningEvent",
16642
17478
  "description": "Session event \"session.warning\". Warning message for timeline display with categorization"
@@ -16645,6 +17481,10 @@
16645
17481
  "$ref": "#/definitions/ModelChangeEvent",
16646
17482
  "description": "Session event \"session.model_change\". Model change details including previous and new model identifiers"
16647
17483
  },
17484
+ {
17485
+ "$ref": "#/definitions/ModelDeselectedEvent",
17486
+ "description": "Session event \"session.model_deselected\". The model the user had explicitly selected is no longer available, because the host that published it withdrew it, so the session no longer has an explicit selection. The next turn resolves a default as though the user had never chosen a model. Clients should stop presenting the previous model as selected. This event is durable because resume rebuilds the selected model from the event log; without it a resumed session would restore a model its provider no longer serves. Reasoning effort, verbosity, and other session-level preferences are deliberately unchanged, because they belong to the session rather than to the model."
17487
+ },
16648
17488
  {
16649
17489
  "$ref": "#/definitions/AutoTierRecommendationEvent",
16650
17490
  "description": "Session event \"session.auto_tier_recommendation\". Live-only Auto preference recommendation from Copilot API after a successful Auto model call."
@@ -16760,6 +17600,10 @@
16760
17600
  "$ref": "#/definitions/FusionCompletedEvent",
16761
17601
  "description": "Session event \"session.fusion_completed\". Experimental durable aggregate outcome of a HydraFusion turn."
16762
17602
  },
17603
+ {
17604
+ "$ref": "#/definitions/PermissionRecoveryEvent",
17605
+ "description": "Session event \"session.permission_recovery\". Authoritative snapshot of an Autopilot permission-recovery episode"
17606
+ },
16763
17607
  {
16764
17608
  "$ref": "#/definitions/UserMessageEvent",
16765
17609
  "description": "Session event \"user.message\". Payload of `user.message` with displayed and model-transformed content, attachments, source/delivery metadata, mode, and telemetry IDs."
@@ -18048,6 +18892,12 @@
18048
18892
  "type": "string",
18049
18893
  "description": "Name of the invoked skill"
18050
18894
  },
18895
+ "invokedAtTurn": {
18896
+ "type": "integer",
18897
+ "minimum": 0,
18898
+ "maximum": 9007199254740991,
18899
+ "description": "Projected chat-message count when the skill was invoked. New writers persist this so replay does not need to reconstruct superseded history; readers derive it for legacy events when absent."
18900
+ },
18051
18901
  "model": {
18052
18902
  "type": "string",
18053
18903
  "description": "Model identifier active when the skill was invoked, when known"
@@ -18162,6 +19012,12 @@
18162
19012
  "type": "string",
18163
19013
  "description": "Name of the invoked skill"
18164
19014
  },
19015
+ "invokedAtTurn": {
19016
+ "type": "integer",
19017
+ "minimum": 0,
19018
+ "maximum": 9007199254740991,
19019
+ "description": "Projected chat-message count when the skill was invoked. Preserved from the inline event data when the authored body is deduplicated."
19020
+ },
18165
19021
  "model": {
18166
19022
  "type": "string",
18167
19023
  "description": "Model identifier active when the skill was invoked, when known"
@@ -19313,6 +20169,29 @@
19313
20169
  "unset": "Neither the task call, the per-sub-agent settings entry, nor a custom agent definition supplied a model."
19314
20170
  }
19315
20171
  },
20172
+ "SystemMessageContentBlock": {
20173
+ "type": "object",
20174
+ "properties": {
20175
+ "content": {
20176
+ "type": "string",
20177
+ "description": "Text content for this system-message block."
20178
+ },
20179
+ "isStatic": {
20180
+ "type": "boolean",
20181
+ "description": "Diagnostic classification indicating whether the block is stable across equivalent sessions."
20182
+ },
20183
+ "cacheBreakpoint": {
20184
+ "type": "boolean",
20185
+ "description": "Explicit prompt-cache intent. True places a breakpoint after this block, false suppresses one, and absence preserves the provider's legacy default."
20186
+ }
20187
+ },
20188
+ "required": [
20189
+ "content"
20190
+ ],
20191
+ "additionalProperties": false,
20192
+ "description": "One persisted structured system-message block and its cache intent",
20193
+ "title": "SystemMessageContentBlock"
20194
+ },
19316
20195
  "SystemMessageData": {
19317
20196
  "type": "object",
19318
20197
  "properties": {
@@ -19320,6 +20199,14 @@
19320
20199
  "type": "string",
19321
20200
  "description": "The system or developer prompt text sent as model input"
19322
20201
  },
20202
+ "contentBlocks": {
20203
+ "type": "array",
20204
+ "items": {
20205
+ "$ref": "#/definitions/SystemMessageContentBlock",
20206
+ "description": "One persisted structured system-message block and its cache intent"
20207
+ },
20208
+ "description": "Optional ordered structured blocks corresponding to content, retained for prompt-cache layout restoration."
20209
+ },
19323
20210
  "interactionId": {
19324
20211
  "type": "string",
19325
20212
  "description": "Logical interaction identifier for the model run receiving this prompt"
@@ -19404,7 +20291,7 @@
19404
20291
  "properties": {
19405
20292
  "promptVersion": {
19406
20293
  "type": "string",
19407
- "description": "Version identifier of the prompt template used"
20294
+ "description": "Version identifier of the prompt template or structured prompt layout used"
19408
20295
  },
19409
20296
  "variables": {
19410
20297
  "type": "object",
@@ -19569,6 +20456,10 @@
19569
20456
  "kind": {
19570
20457
  "$ref": "#/definitions/SystemNotification",
19571
20458
  "description": "Structured metadata identifying what triggered this notification"
20459
+ },
20460
+ "responsesReasoning": {
20461
+ "$ref": "#/definitions/ResponsesReasoning",
20462
+ "description": "Responses reasoning settings anchored before this model-facing message, for cache-stable history replay"
19572
20463
  }
19573
20464
  },
19574
20465
  "required": [
@@ -19906,6 +20797,48 @@
19906
20797
  "description": "System notification metadata from an external host that does not match a runtime-owned notification kind.",
19907
20798
  "title": "SystemNotificationUnclassified"
19908
20799
  },
20800
+ "TaskBlocker": {
20801
+ "type": "object",
20802
+ "properties": {
20803
+ "kind": {
20804
+ "$ref": "#/definitions/TaskBlockerKind",
20805
+ "description": "Category of intervention that blocked the task"
20806
+ },
20807
+ "reason": {
20808
+ "$ref": "#/definitions/PermissionRecoveryReason",
20809
+ "description": "Controlled reason for the current blocked state"
20810
+ },
20811
+ "resumable": {
20812
+ "type": "boolean",
20813
+ "description": "Whether a later user response or steering message can resume the task"
20814
+ },
20815
+ "permissionRecovery": {
20816
+ "$ref": "#/definitions/PermissionRecoveryData",
20817
+ "description": "Permission-recovery episode that produced this blocker"
20818
+ }
20819
+ },
20820
+ "required": [
20821
+ "kind",
20822
+ "reason",
20823
+ "resumable",
20824
+ "permissionRecovery"
20825
+ ],
20826
+ "additionalProperties": false,
20827
+ "description": "Structured reason that the task cannot continue without intervention",
20828
+ "title": "TaskBlocker",
20829
+ "stability": "experimental"
20830
+ },
20831
+ "TaskBlockerKind": {
20832
+ "type": "string",
20833
+ "enum": [
20834
+ "permission_recovery"
20835
+ ],
20836
+ "description": "Category of structured task blocker",
20837
+ "title": "TaskBlockerKind",
20838
+ "x-enumDescriptions": {
20839
+ "permission_recovery": "Autopilot permission recovery requires intervention or has no safe autonomous path."
20840
+ }
20841
+ },
19909
20842
  "TaskCompleteData": {
19910
20843
  "type": "object",
19911
20844
  "properties": {
@@ -19929,6 +20862,10 @@
19929
20862
  "objectiveId": {
19930
20863
  "type": "integer",
19931
20864
  "description": "Active autopilot objective ID evaluated by the completion reviewer"
20865
+ },
20866
+ "blocker": {
20867
+ "$ref": "#/definitions/TaskBlocker",
20868
+ "description": "Structured blocker details when outcome is blocked"
19932
20869
  }
19933
20870
  },
19934
20871
  "additionalProperties": false,
@@ -21064,6 +22001,10 @@
21064
22001
  "type": "string",
21065
22002
  "description": "Name of the tool being executed"
21066
22003
  },
22004
+ "toolTitle": {
22005
+ "type": "string",
22006
+ "description": "Human-readable display title for the tool, when the selected tool descriptor has a non-empty title."
22007
+ },
21067
22008
  "arguments": {
21068
22009
  "description": "Arguments passed to the tool",
21069
22010
  "x-opaque-json": true
@@ -22147,6 +23088,10 @@
22147
23088
  "type": "string",
22148
23089
  "description": "The user's message text as displayed in the timeline"
22149
23090
  },
23091
+ "responsesReasoning": {
23092
+ "$ref": "#/definitions/ResponsesReasoning",
23093
+ "description": "Responses reasoning settings anchored before this model-facing message, for cache-stable history replay"
23094
+ },
22150
23095
  "messageId": {
22151
23096
  "type": "string",
22152
23097
  "description": "Stable identity of the logical user message, matching the ID returned by send and retained by pending queue snapshots"