@axivoy/api 1.31.0 → 1.33.0

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.
@@ -443,6 +443,94 @@ export interface paths {
443
443
  patch?: never;
444
444
  trace?: never;
445
445
  };
446
+ "/ops/agents.improvements.get": {
447
+ parameters: {
448
+ query?: never;
449
+ header?: never;
450
+ path?: never;
451
+ cookie?: never;
452
+ };
453
+ get?: never;
454
+ put?: never;
455
+ /**
456
+ * Suggested agent change
457
+ * @description One suggestion: what changed against the active version, what each edit did on the runs it was tried on (helped, hurt, no observed effect, unclear), the lesson recorded, replay scores of the suggestion against the active version, credits used and the improver method version.
458
+ *
459
+ * Kind: `read`. Errors use the envelope `{error: {code, reason, message, fields}}`.
460
+ */
461
+ post: operations["ops.agents.improvements.get"];
462
+ delete?: never;
463
+ options?: never;
464
+ head?: never;
465
+ patch?: never;
466
+ trace?: never;
467
+ };
468
+ "/ops/agents.improvements.list": {
469
+ parameters: {
470
+ query?: never;
471
+ header?: never;
472
+ path?: never;
473
+ cookie?: never;
474
+ };
475
+ get?: never;
476
+ put?: never;
477
+ /**
478
+ * Suggested agent changes
479
+ * @description Improvement cycles and their suggestions for one agent, newest first, with status (running, suggested, kept as is, accepted, in trial, promoted, rolled back, rejected).
480
+ *
481
+ * Kind: `read`. Errors use the envelope `{error: {code, reason, message, fields}}`.
482
+ */
483
+ post: operations["ops.agents.improvements.list"];
484
+ delete?: never;
485
+ options?: never;
486
+ head?: never;
487
+ patch?: never;
488
+ trace?: never;
489
+ };
490
+ "/ops/agents.improvements.reject": {
491
+ parameters: {
492
+ query?: never;
493
+ header?: never;
494
+ path?: never;
495
+ cookie?: never;
496
+ };
497
+ get?: never;
498
+ put?: never;
499
+ /**
500
+ * Reject a suggested agent change
501
+ * @description Closes a suggestion without changing the agent. The reason is stored in the agent's lessons library as a person's verdict, so later cycles see it.
502
+ *
503
+ * Kind: `mutate`. Errors use the envelope `{error: {code, reason, message, fields}}`.
504
+ */
505
+ post: operations["ops.agents.improvements.reject"];
506
+ delete?: never;
507
+ options?: never;
508
+ head?: never;
509
+ patch?: never;
510
+ trace?: never;
511
+ };
512
+ "/ops/agents.improvements.start": {
513
+ parameters: {
514
+ query?: never;
515
+ header?: never;
516
+ path?: never;
517
+ cookie?: never;
518
+ };
519
+ get?: never;
520
+ put?: never;
521
+ /**
522
+ * Look for improvements to an agent
523
+ * @description Async. Starts an improvement cycle for one tenant-built agent: the improver studies its recent runs, tries candidate changes by replay and in the sandbox, and leaves a suggestion (or keeps the agent as is) for a person to decide. Consumes AI credits from the sandbox allowance. Returns a task.
524
+ *
525
+ * Kind: `mutate`. Errors use the envelope `{error: {code, reason, message, fields}}`.
526
+ */
527
+ post: operations["ops.agents.improvements.start"];
528
+ delete?: never;
529
+ options?: never;
530
+ head?: never;
531
+ patch?: never;
532
+ trace?: never;
533
+ };
446
534
  "/ops/agents.list": {
447
535
  parameters: {
448
536
  query?: never;
@@ -17055,6 +17143,146 @@ export interface paths {
17055
17143
  };
17056
17144
  }
17057
17145
  export interface webhooks {
17146
+ "agent.improvement.accepted": {
17147
+ parameters: {
17148
+ query?: never;
17149
+ header?: never;
17150
+ path?: never;
17151
+ cookie?: never;
17152
+ };
17153
+ get?: never;
17154
+ put?: never;
17155
+ /**
17156
+ * Agent change accepted
17157
+ * @description A person accepted a suggested change. It became a new version on trial: a share of new runs use it until the hourly review promotes or rolls it back.
17158
+ *
17159
+ * Version 1. Delivered at least once; dedupe by `id`.
17160
+ *
17161
+ * Read the current record with `agents.improvements.get` using `fetch.input`.
17162
+ *
17163
+ * Subscriptions can filter on: `agent_key` (Agent), `trial_share` (Percent of new runs on the new version).
17164
+ *
17165
+ * Verify `Axivoy-Signature` before trusting the body; answer 2xx within 10 seconds. Failed tries retry at 1 minute, 10 minutes, 1 hour, 6 hours and 16 hours; replay any delivery from the last 30 days with `webhooks.deliveries.replay`.
17166
+ */
17167
+ post: operations["events.agent.improvement.accepted"];
17168
+ delete?: never;
17169
+ options?: never;
17170
+ head?: never;
17171
+ patch?: never;
17172
+ trace?: never;
17173
+ };
17174
+ "agent.improvement.rejected": {
17175
+ parameters: {
17176
+ query?: never;
17177
+ header?: never;
17178
+ path?: never;
17179
+ cookie?: never;
17180
+ };
17181
+ get?: never;
17182
+ put?: never;
17183
+ /**
17184
+ * Agent change rejected
17185
+ * @description A person rejected a suggested change. The agent did not change; the reason went into the agent's lessons so later cycles see it.
17186
+ *
17187
+ * Version 1. Delivered at least once; dedupe by `id`.
17188
+ *
17189
+ * Read the current record with `agents.improvements.get` using `fetch.input`.
17190
+ *
17191
+ * Subscriptions can filter on: `agent_key` (Agent).
17192
+ *
17193
+ * Verify `Axivoy-Signature` before trusting the body; answer 2xx within 10 seconds. Failed tries retry at 1 minute, 10 minutes, 1 hour, 6 hours and 16 hours; replay any delivery from the last 30 days with `webhooks.deliveries.replay`.
17194
+ */
17195
+ post: operations["events.agent.improvement.rejected"];
17196
+ delete?: never;
17197
+ options?: never;
17198
+ head?: never;
17199
+ patch?: never;
17200
+ trace?: never;
17201
+ };
17202
+ "agent.improvement.suggested": {
17203
+ parameters: {
17204
+ query?: never;
17205
+ header?: never;
17206
+ path?: never;
17207
+ cookie?: never;
17208
+ };
17209
+ get?: never;
17210
+ put?: never;
17211
+ /**
17212
+ * Agent change suggested
17213
+ * @description The agent improver finished a cycle and left a suggested change that scored at least as well as the active version on replay. A person accepts or rejects it.
17214
+ *
17215
+ * Version 1. Delivered at least once; dedupe by `id`.
17216
+ *
17217
+ * Read the current record with `agents.improvements.get` using `fetch.input`.
17218
+ *
17219
+ * Subscriptions can filter on: `agent_key` (Agent), `credits_used` (AI credits the cycle used).
17220
+ *
17221
+ * Verify `Axivoy-Signature` before trusting the body; answer 2xx within 10 seconds. Failed tries retry at 1 minute, 10 minutes, 1 hour, 6 hours and 16 hours; replay any delivery from the last 30 days with `webhooks.deliveries.replay`.
17222
+ */
17223
+ post: operations["events.agent.improvement.suggested"];
17224
+ delete?: never;
17225
+ options?: never;
17226
+ head?: never;
17227
+ patch?: never;
17228
+ trace?: never;
17229
+ };
17230
+ "agent.version_trial.promoted": {
17231
+ parameters: {
17232
+ query?: never;
17233
+ header?: never;
17234
+ path?: never;
17235
+ cookie?: never;
17236
+ };
17237
+ get?: never;
17238
+ put?: never;
17239
+ /**
17240
+ * Agent version trial promoted
17241
+ * @description A version on trial did no worse than the active version over its window, so it became the version every run uses.
17242
+ *
17243
+ * Version 1. Delivered at least once; dedupe by `id`.
17244
+ *
17245
+ * Read the current record with `agents.improvements.get` using `fetch.input`.
17246
+ *
17247
+ * Subscriptions can filter on: `agent_key` (Agent), `trial_runs` (Runs on the new version), `active_runs` (Runs on the active version).
17248
+ *
17249
+ * Verify `Axivoy-Signature` before trusting the body; answer 2xx within 10 seconds. Failed tries retry at 1 minute, 10 minutes, 1 hour, 6 hours and 16 hours; replay any delivery from the last 30 days with `webhooks.deliveries.replay`.
17250
+ */
17251
+ post: operations["events.agent.version_trial.promoted"];
17252
+ delete?: never;
17253
+ options?: never;
17254
+ head?: never;
17255
+ patch?: never;
17256
+ trace?: never;
17257
+ };
17258
+ "agent.version_trial.rolled_back": {
17259
+ parameters: {
17260
+ query?: never;
17261
+ header?: never;
17262
+ path?: never;
17263
+ cookie?: never;
17264
+ };
17265
+ get?: never;
17266
+ put?: never;
17267
+ /**
17268
+ * Agent version trial rolled back
17269
+ * @description A version on trial did worse than the active version on at least one signal, or the agent was paused or pinned, so every run went back to the active version.
17270
+ *
17271
+ * Version 1. Delivered at least once; dedupe by `id`.
17272
+ *
17273
+ * Read the current record with `agents.improvements.get` using `fetch.input`.
17274
+ *
17275
+ * Subscriptions can filter on: `agent_key` (Agent), `reason` (Why it rolled back).
17276
+ *
17277
+ * Verify `Axivoy-Signature` before trusting the body; answer 2xx within 10 seconds. Failed tries retry at 1 minute, 10 minutes, 1 hour, 6 hours and 16 hours; replay any delivery from the last 30 days with `webhooks.deliveries.replay`.
17278
+ */
17279
+ post: operations["events.agent.version_trial.rolled_back"];
17280
+ delete?: never;
17281
+ options?: never;
17282
+ head?: never;
17283
+ patch?: never;
17284
+ trace?: never;
17285
+ };
17058
17286
  "bank_connection.link_requested": {
17059
17287
  parameters: {
17060
17288
  query?: never;
@@ -20912,7 +21140,7 @@ export interface operations {
20912
21140
  };
20913
21141
  };
20914
21142
  };
20915
- "ops.agents.list": {
21143
+ "ops.agents.improvements.get": {
20916
21144
  parameters: {
20917
21145
  query?: never;
20918
21146
  header?: {
@@ -20926,17 +21154,14 @@ export interface operations {
20926
21154
  };
20927
21155
  requestBody?: {
20928
21156
  content: {
20929
- /** @example {} */
21157
+ /**
21158
+ * @example {
21159
+ * "improvement_id": 1
21160
+ * }
21161
+ */
20930
21162
  "application/json": {
20931
- /** @description Cursor from the previous page's next_cursor. */
20932
- cursor?: string | null;
20933
- /** @description Rows per page (default 25). */
20934
- limit?: number | null;
20935
- /**
20936
- * Format: date-time
20937
- * @description Only rows changed at or after this instant, oldest change first, with deleted rows as tombstones.
20938
- */
20939
- updated_since?: string | null;
21163
+ /** @description The improvement, from agents.improvements.list. */
21164
+ improvement_id: number;
20940
21165
  };
20941
21166
  };
20942
21167
  };
@@ -20950,109 +21175,99 @@ export interface operations {
20950
21175
  /**
20951
21176
  * @example {
20952
21177
  * "result": {
20953
- * "items": [
21178
+ * "id": 1,
21179
+ * "agent_key": "yard_helper",
21180
+ * "status": "suggested",
21181
+ * "base_version": 1,
21182
+ * "diff": [
21183
+ * {
21184
+ * "part": "instructions",
21185
+ * "before": "You keep the yard tidy.",
21186
+ * "after": "You keep the yard tidy. Check the gate log before answering."
21187
+ * }
21188
+ * ],
21189
+ * "edits": [
20954
21190
  * {
20955
- * "id": 1,
20956
- * "key": "fixture_desk",
20957
- * "name": "Fixture desk",
20958
- * "origin": "axivoy",
20959
- * "owner_name": null,
20960
- * "status": "off",
20961
- * "disabled_at": "2026-10-20T20:56:40Z",
20962
- * "disabled_cause": "person",
20963
- * "disabled_reason": "Too chatty",
20964
- * "disabled_by": "Dayne Huel",
20965
- * "platform_holds": [],
20966
- * "limit_reached": null,
20967
- * "active_version": 1,
20968
- * "max_runs_per_day": null,
20969
- * "max_tool_calls_per_run": null,
20970
- * "monthly_credit_budget": null,
20971
- * "runs_today": 1,
20972
- * "credits_used_this_month": 0,
20973
- * "credits_last_hour": 0,
20974
- * "refusals_last_hour": 0,
20975
- * "open_runs": 1,
20976
- * "rehearsals_running": 0,
20977
- * "last_run_at": "2026-10-20T20:56:40Z",
20978
- * "deleted": null
21191
+ * "part": "instructions",
21192
+ * "change": "Read the gate log first.",
21193
+ * "observed": "Fewer wrong answers.",
21194
+ * "verdict": "helped"
20979
21195
  * }
20980
21196
  * ],
20981
- * "next_cursor": null
21197
+ * "situations": [
21198
+ * {
21199
+ * "situation": "s1",
21200
+ * "active_run_id": null,
21201
+ * "suggested_run_id": null,
21202
+ * "verdict": "confounded",
21203
+ * "summary": "Not tried on both versions yet."
21204
+ * }
21205
+ * ],
21206
+ * "lesson": {
21207
+ * "cue": "Gate questions",
21208
+ * "lesson": "Read the gate log first.",
21209
+ * "evidence": "Two runs",
21210
+ * "confidence": "medium"
21211
+ * },
21212
+ * "replay_score_active": 0.7,
21213
+ * "replay_score_suggested": 0.8,
21214
+ * "credits_used": 0,
21215
+ * "method_version": null,
21216
+ * "created_at": "2026-10-21T10:05:20Z"
20982
21217
  * }
20983
21218
  * }
20984
21219
  */
20985
21220
  "application/json": {
20986
21221
  result: {
20987
- /** @description One page of rows. */
20988
- items: {
20989
- /** @description The row's id. */
20990
- id: number;
20991
- /** @description The agent's key, for example recruiting_desk */
20992
- key: string;
20993
- /** @description The agent's name */
20994
- name: string;
20995
- /** @description axivoy (made by Axivoy) or tenant (built in this workspace) */
20996
- origin: string;
20997
- /** @description Who owns the agent; null for Axivoy's agents */
20998
- owner_name?: string | null;
20999
- /** @description on, off, auto_paused, paused_by_axivoy or at_limit */
21000
- status: string;
21001
- /**
21002
- * Format: date-time
21003
- * @description When it was turned off
21004
- */
21005
- disabled_at?: string | null;
21006
- /** @description person or circuit_breaker */
21007
- disabled_cause?: string | null;
21008
- /** @description Why it was turned off, in the words of whoever did it */
21009
- disabled_reason?: string | null;
21010
- /** @description Who turned it off; null when the breaker did */
21011
- disabled_by?: string | null;
21012
- /** @description Holds Axivoy placed on the agent */
21013
- platform_holds: {
21014
- /** @description pause_tenant, pause_definition or pin_version */
21015
- kind: string;
21016
- /** @description The pinned version, for pin_version */
21017
- version?: number | null;
21018
- /**
21019
- * Format: date-time
21020
- * @description When Axivoy placed it
21021
- */
21022
- since?: string | null;
21023
- }[];
21024
- /** @description max_runs_per_day or monthly_credit_budget when one is used up */
21025
- limit_reached?: string | null;
21026
- /** @description The live version */
21027
- active_version?: number | null;
21028
- /** @description Runs per UTC day; null when unlimited */
21029
- max_runs_per_day?: number | null;
21030
- /** @description Tool calls per run; null when unlimited */
21031
- max_tool_calls_per_run?: number | null;
21032
- /** @description AI credits per UTC month; null when unlimited */
21033
- monthly_credit_budget?: number | null;
21034
- /** @description Runs started this UTC day */
21035
- runs_today: number;
21036
- /** @description AI credits used this UTC month */
21037
- credits_used_this_month: number;
21038
- /** @description AI credits used in the last hour */
21039
- credits_last_hour: number;
21040
- /** @description Tool calls that failed or were refused in the last hour */
21041
- refusals_last_hour: number;
21042
- /** @description Runs not finished yet */
21043
- open_runs: number;
21044
- /** @description Rehearsals not finished yet */
21045
- rehearsals_running: number;
21046
- /**
21047
- * Format: date-time
21048
- * @description When the latest run started
21049
- */
21050
- last_run_at?: string | null;
21051
- /** @description True on a tombstone (the row was deleted or recycled); other fields are absent. */
21052
- deleted?: boolean | null;
21222
+ /** @description The improvement id */
21223
+ id: number;
21224
+ /** @description The agent's key */
21225
+ agent_key: string;
21226
+ /** @description running, suggested, kept_current, accepted, in_trial, promoted, rolled_back or rejected */
21227
+ status: string;
21228
+ /** @description Version number the cycle started from */
21229
+ base_version?: number | null;
21230
+ /** @description part, before and after for each changed part */
21231
+ diff: unknown[];
21232
+ /** @description Each edit tried and what it did */
21233
+ edits: {
21234
+ /** @description The part the edit changed */
21235
+ part: string;
21236
+ /** @description What changed */
21237
+ change: string;
21238
+ /** @description What it did on the runs it was tried on */
21239
+ observed: string;
21240
+ /** @description helped, hurt, no_observed_effect or confounded */
21241
+ verdict: string;
21053
21242
  }[];
21054
- /** @description Pass as cursor for the next page; null on the last page. */
21055
- next_cursor?: string | null;
21243
+ /** @description Each situation as today's version and the suggested version handled it */
21244
+ situations: {
21245
+ /** @description The situation id within this improvement, for example s1 */
21246
+ situation: string;
21247
+ /** @description The run of today's version on this situation; open it on the run timeline */
21248
+ active_run_id?: number | null;
21249
+ /** @description The run of the suggested version on this situation */
21250
+ suggested_run_id?: number | null;
21251
+ /** @description helped, hurt, no_observed_effect or confounded */
21252
+ verdict: string;
21253
+ /** @description What the two runs came to, in one sentence */
21254
+ summary: string;
21255
+ }[];
21256
+ /** @description cue, lesson, evidence and confidence */
21257
+ lesson?: Record<string, never> | null;
21258
+ /** @description Replay score of the active version on the same runs */
21259
+ replay_score_active?: number | null;
21260
+ /** @description Replay score of the suggestion */
21261
+ replay_score_suggested?: number | null;
21262
+ /** @description AI credits the cycle used */
21263
+ credits_used: number;
21264
+ /** @description Improver prompts version and method commit, prompts@commit */
21265
+ method_version?: string | null;
21266
+ /**
21267
+ * Format: date-time
21268
+ * @description When the cycle started
21269
+ */
21270
+ created_at: string;
21056
21271
  };
21057
21272
  };
21058
21273
  };
@@ -21123,7 +21338,7 @@ export interface operations {
21123
21338
  };
21124
21339
  };
21125
21340
  };
21126
- "ops.agents.rehearse": {
21341
+ "ops.agents.improvements.list": {
21127
21342
  parameters: {
21128
21343
  query?: never;
21129
21344
  header?: {
@@ -21139,39 +21354,26 @@ export interface operations {
21139
21354
  content: {
21140
21355
  /**
21141
21356
  * @example {
21142
- * "agent_key": "fake_desk",
21143
- * "mode": "dry_run",
21144
- * "subject": {
21145
- * "id": 1
21146
- * }
21357
+ * "agent_key": "yard_helper"
21147
21358
  * }
21148
21359
  */
21149
21360
  "application/json": {
21150
21361
  /** @description The agent's key, for example recruiting_desk. */
21151
21362
  agent_key: string;
21152
- /** @description The version to try; the live version when left out. */
21153
- version?: number;
21154
21363
  /**
21155
- * @description dry_run: real records, nothing changed or sent. sandbox: practice data in the workspace's sandbox.
21364
+ * @description Only cycles in this status; all when left out.
21156
21365
  * @enum {string}
21157
21366
  */
21158
- mode: "dry_run" | "sandbox";
21159
- /** @description The record to try it on. Dry run: the record of the agent's latest run when left out. Sandbox: the newest practice record. */
21160
- subject?: {
21161
- /** @description The record type the agent works on; checked against the agent. */
21162
- type?: string;
21163
- /** @description The record id. */
21164
- id: number;
21165
- };
21166
- /** @description Dry run only: a recorded event (its id from events.list) to replay as the trigger; its record becomes the subject. */
21167
- event_id?: string;
21168
- /** @description Sandbox only: one of the agent's scenario keys. Seeds that scenario's practice record and wakes the agent with its event, so the same situation can be tried on any version. */
21169
- scenario?: string;
21367
+ status?: "running" | "suggested" | "kept_current" | "accepted" | "in_trial" | "promoted" | "rolled_back" | "rejected";
21368
+ /** @description Cursor from the previous page's next_cursor. */
21369
+ cursor?: string | null;
21370
+ /** @description Rows per page (default 25). */
21371
+ limit?: number | null;
21170
21372
  /**
21171
- * @description live (default): the agent calls its model. scripted: with a scenario that has scripted model turns, those play instead of the model, so two runs of one version give the same steps.
21172
- * @enum {string}
21373
+ * Format: date-time
21374
+ * @description Only rows changed at or after this instant, oldest change first, with deleted rows as tombstones.
21173
21375
  */
21174
- model?: "live" | "scripted";
21376
+ updated_since?: string | null;
21175
21377
  };
21176
21378
  };
21177
21379
  };
@@ -21185,23 +21387,58 @@ export interface operations {
21185
21387
  /**
21186
21388
  * @example {
21187
21389
  * "result": {
21188
- * "message": "Trying it without changing anything. The result shows here when it stops.",
21189
- * "task_id": "a171294f-f44f-49d9-a87b-6912387bf1e0",
21190
- * "run_id": 1,
21191
- * "status": "running"
21390
+ * "items": [
21391
+ * {
21392
+ * "id": 2,
21393
+ * "status": "suggested",
21394
+ * "base_version": 1,
21395
+ * "suggested_version": 2,
21396
+ * "credits_used": 0,
21397
+ * "method_version": null,
21398
+ * "created_at": "2026-10-21T07:26:58Z",
21399
+ * "deleted": null
21400
+ * },
21401
+ * {
21402
+ * "id": 1,
21403
+ * "status": "kept_current",
21404
+ * "base_version": 1,
21405
+ * "suggested_version": null,
21406
+ * "credits_used": 0,
21407
+ * "method_version": null,
21408
+ * "created_at": "2026-10-21T07:26:58Z",
21409
+ * "deleted": null
21410
+ * }
21411
+ * ],
21412
+ * "next_cursor": null
21192
21413
  * }
21193
21414
  * }
21194
21415
  */
21195
21416
  "application/json": {
21196
21417
  result: {
21197
- /** @description What happened, in the operator's words */
21198
- message: string;
21199
- /** @description Poll tasks.get; operation.task.completed fires when the rehearsal stops */
21200
- task_id: string;
21201
- /** @description The rehearsal run; its timeline shows what the agent would have done */
21202
- run_id: number;
21203
- /** @description running */
21204
- status: string;
21418
+ /** @description One page of rows. */
21419
+ items: {
21420
+ /** @description The row's id. */
21421
+ id: number;
21422
+ /** @description running, suggested, kept_current, accepted, in_trial, promoted, rolled_back or rejected */
21423
+ status: string;
21424
+ /** @description The version the cycle started from */
21425
+ base_version?: number | null;
21426
+ /** @description The suggested version, once there is one */
21427
+ suggested_version?: number | null;
21428
+ /** @description AI credits the cycle used */
21429
+ credits_used: number;
21430
+ /** @description The improver method and its pinned commit */
21431
+ method_version?: string | null;
21432
+ /**
21433
+ * Format: date-time
21434
+ * @description When the cycle started
21435
+ */
21436
+ created_at: string;
21437
+ /** @description True on a tombstone (the row was deleted or recycled); other fields are absent. */
21438
+ deleted?: boolean | null;
21439
+ }[];
21440
+ /** @description Pass as cursor for the next page; null on the last page. */
21441
+ next_cursor?: string | null;
21205
21442
  };
21206
21443
  };
21207
21444
  };
@@ -21272,7 +21509,7 @@ export interface operations {
21272
21509
  };
21273
21510
  };
21274
21511
  };
21275
- "ops.agents.runs.cancel": {
21512
+ "ops.agents.improvements.reject": {
21276
21513
  parameters: {
21277
21514
  query?: never;
21278
21515
  header?: {
@@ -21288,15 +21525,15 @@ export interface operations {
21288
21525
  content: {
21289
21526
  /**
21290
21527
  * @example {
21291
- * "run_id": 1,
21292
- * "reason": "Wrong file"
21528
+ * "improvement_id": 2,
21529
+ * "reason": "Too wordy for the yard crew."
21293
21530
  * }
21294
21531
  */
21295
21532
  "application/json": {
21296
- /** @description The run to cancel (from agents.runs.list). */
21297
- run_id: number;
21298
- /** @description Why, for the run timeline and the audit log. */
21299
- reason?: string | null;
21533
+ /** @description The suggestion or change on trial to reject. */
21534
+ improvement_id: number;
21535
+ /** @description Why; later improvement cycles read it. */
21536
+ reason: string;
21300
21537
  };
21301
21538
  };
21302
21539
  };
@@ -21310,23 +21547,14 @@ export interface operations {
21310
21547
  /**
21311
21548
  * @example {
21312
21549
  * "result": {
21313
- * "message": "Run cancelled.",
21314
- * "status": "completed",
21315
- * "cancelled": true,
21316
- * "withdrawn_approvals_count": 0
21550
+ * "status": "rejected"
21317
21551
  * }
21318
21552
  * }
21319
21553
  */
21320
21554
  "application/json": {
21321
21555
  result: {
21322
- /** @description What happened, in the operator's words */
21323
- message: string;
21324
- /** @description The run status after the call */
21556
+ /** @description rejected */
21325
21557
  status: string;
21326
- /** @description False when the run had already ended */
21327
- cancelled: boolean;
21328
- /** @description Approvals the run was waiting on that were withdrawn */
21329
- withdrawn_approvals_count: number;
21330
21558
  };
21331
21559
  };
21332
21560
  };
@@ -21397,7 +21625,7 @@ export interface operations {
21397
21625
  };
21398
21626
  };
21399
21627
  };
21400
- "ops.agents.runs.list": {
21628
+ "ops.agents.improvements.start": {
21401
21629
  parameters: {
21402
21630
  query?: never;
21403
21631
  header?: {
@@ -21413,26 +21641,22 @@ export interface operations {
21413
21641
  content: {
21414
21642
  /**
21415
21643
  * @example {
21416
- * "agent_key": "fixture_desk"
21644
+ * "agent_key": "yard_helper",
21645
+ * "probes": "replay"
21417
21646
  * }
21418
21647
  */
21419
21648
  "application/json": {
21420
- /** @description The agent's key, for example recruiting_desk. */
21649
+ /** @description The agent's key. */
21421
21650
  agent_key: string;
21651
+ /** @description 1 to 3, default 1: candidates tried per dimension. */
21652
+ depth?: number;
21653
+ /** @description Default 10, at most 25. */
21654
+ max_situations?: number;
21422
21655
  /**
21423
- * @description running, parked (waiting for a person), finished, or cancelled; all when left out.
21424
- * @enum {string|null}
21425
- */
21426
- status?: "running" | "parked" | "finished" | "cancelled" | null;
21427
- /** @description Cursor from the previous page's next_cursor. */
21428
- cursor?: string | null;
21429
- /** @description Rows per page (default 25). */
21430
- limit?: number | null;
21431
- /**
21432
- * Format: date-time
21433
- * @description Only rows changed at or after this instant, oldest change first, with deleted rows as tombstones.
21656
+ * @description Default replay_and_sandbox.
21657
+ * @enum {string}
21434
21658
  */
21435
- updated_since?: string | null;
21659
+ probes?: "replay" | "replay_and_sandbox";
21436
21660
  };
21437
21661
  };
21438
21662
  };
@@ -21446,77 +21670,20 @@ export interface operations {
21446
21670
  /**
21447
21671
  * @example {
21448
21672
  * "result": {
21449
- * "items": [
21450
- * {
21451
- * "id": 2,
21452
- * "subject": "user:2",
21453
- * "status": "cancelled",
21454
- * "run_status": "completed",
21455
- * "reason": "run_cancelled",
21456
- * "steps": 0,
21457
- * "credits_used": 0,
21458
- * "last_operation_key": null,
21459
- * "started_at": null,
21460
- * "completed_at": null,
21461
- * "delegate": "ai_agent_run:2",
21462
- * "deleted": null
21463
- * },
21464
- * {
21465
- * "id": 1,
21466
- * "subject": "user:1",
21467
- * "status": "running",
21468
- * "run_status": "waiting",
21469
- * "reason": null,
21470
- * "steps": 0,
21471
- * "credits_used": 0,
21472
- * "last_operation_key": null,
21473
- * "started_at": "2026-10-20T19:10:09Z",
21474
- * "completed_at": null,
21475
- * "delegate": "ai_agent_run:1",
21476
- * "deleted": null
21477
- * }
21478
- * ],
21479
- * "next_cursor": null
21673
+ * "task_id": "63dafeff-2d0d-4c15-92f9-deea8c649068",
21674
+ * "improvement_id": 1,
21675
+ * "status": "running"
21480
21676
  * }
21481
21677
  * }
21482
21678
  */
21483
21679
  "application/json": {
21484
21680
  result: {
21485
- /** @description One page of rows. */
21486
- items: {
21487
- /** @description The row's id. */
21488
- id: number;
21489
- /** @description What the run is about, as type:id */
21490
- subject?: string | null;
21491
- /** @description running, parked, finished or cancelled */
21492
- status: string;
21493
- /** @description The run's own status: pending, active, waiting, paused, completed or failed */
21494
- run_status: string;
21495
- /** @description Why a parked run waits or how a finished run ended */
21496
- reason?: string | null;
21497
- /** @description Steps recorded so far */
21498
- steps: number;
21499
- /** @description AI credits the run used so far */
21500
- credits_used: number;
21501
- /** @description The operation or tool the run called last */
21502
- last_operation_key?: string | null;
21503
- /**
21504
- * Format: date-time
21505
- * @description When the run first thought
21506
- */
21507
- started_at?: string | null;
21508
- /**
21509
- * Format: date-time
21510
- * @description When the run ended
21511
- */
21512
- completed_at?: string | null;
21513
- /** @description What audit entries for this run record as the delegate */
21514
- delegate: string;
21515
- /** @description True on a tombstone (the row was deleted or recycled); other fields are absent. */
21516
- deleted?: boolean | null;
21517
- }[];
21518
- /** @description Pass as cursor for the next page; null on the last page. */
21519
- next_cursor?: string | null;
21681
+ /** @description Poll tasks.get; operation.task.completed fires when the cycle ends */
21682
+ task_id: string;
21683
+ /** @description The new improvement; open it with agents.improvements.get */
21684
+ improvement_id: number;
21685
+ /** @description running */
21686
+ status: string;
21520
21687
  };
21521
21688
  };
21522
21689
  };
@@ -21587,7 +21754,7 @@ export interface operations {
21587
21754
  };
21588
21755
  };
21589
21756
  };
21590
- "ops.ai.jobs.list": {
21757
+ "ops.agents.list": {
21591
21758
  parameters: {
21592
21759
  query?: never;
21593
21760
  header?: {
@@ -21603,13 +21770,6 @@ export interface operations {
21603
21770
  content: {
21604
21771
  /** @example {} */
21605
21772
  "application/json": {
21606
- /**
21607
- * @description Only jobs in this status
21608
- * @enum {string|null}
21609
- */
21610
- status?: "pending" | "queued" | "running" | "succeeded" | "failed" | "cancelled" | null;
21611
- /** @description Only jobs of this type, for example rate_confirmation_extraction */
21612
- job_type?: string | null;
21613
21773
  /** @description Cursor from the previous page's next_cursor. */
21614
21774
  cursor?: string | null;
21615
21775
  /** @description Rows per page (default 25). */
@@ -21635,16 +21795,28 @@ export interface operations {
21635
21795
  * "items": [
21636
21796
  * {
21637
21797
  * "id": 1,
21638
- * "job_type": "stub",
21639
- * "status": "queued",
21640
- * "cancellable": true,
21641
- * "requested_by_user_id": 2,
21642
- * "requested_by_name": "Melisa Will",
21643
- * "attempt_count": 0,
21644
- * "max_attempts": 3,
21645
- * "correlation_id": "3275b72a-1934-4869-af78-d05aeabf6855",
21646
- * "created_at": "2026-10-20T08:18:19Z",
21647
- * "cancelled_at": null,
21798
+ * "key": "fixture_desk",
21799
+ * "name": "Fixture desk",
21800
+ * "origin": "axivoy",
21801
+ * "owner_name": null,
21802
+ * "status": "off",
21803
+ * "disabled_at": "2026-10-20T20:56:40Z",
21804
+ * "disabled_cause": "person",
21805
+ * "disabled_reason": "Too chatty",
21806
+ * "disabled_by": "Dayne Huel",
21807
+ * "platform_holds": [],
21808
+ * "limit_reached": null,
21809
+ * "active_version": 1,
21810
+ * "max_runs_per_day": null,
21811
+ * "max_tool_calls_per_run": null,
21812
+ * "monthly_credit_budget": null,
21813
+ * "runs_today": 1,
21814
+ * "credits_used_this_month": 0,
21815
+ * "credits_last_hour": 0,
21816
+ * "refusals_last_hour": 0,
21817
+ * "open_runs": 1,
21818
+ * "rehearsals_running": 0,
21819
+ * "last_run_at": "2026-10-20T20:56:40Z",
21648
21820
  * "deleted": null
21649
21821
  * }
21650
21822
  * ],
@@ -21658,32 +21830,706 @@ export interface operations {
21658
21830
  items: {
21659
21831
  /** @description The row's id. */
21660
21832
  id: number;
21661
- /** @description What the job does */
21662
- job_type: string;
21663
- /** @description Lifecycle status */
21833
+ /** @description The agent's key, for example recruiting_desk */
21834
+ key: string;
21835
+ /** @description The agent's name */
21836
+ name: string;
21837
+ /** @description axivoy (made by Axivoy) or tenant (built in this workspace) */
21838
+ origin: string;
21839
+ /** @description Who owns the agent; null for Axivoy's agents */
21840
+ owner_name?: string | null;
21841
+ /** @description on, off, auto_paused, paused_by_axivoy or at_limit */
21664
21842
  status: string;
21665
- /** @description True while ai.jobs.cancel can still stop it */
21666
- cancellable: boolean;
21667
- /** @description Who asked for it; null for a system job */
21668
- requested_by_user_id?: number | null;
21669
- /** @description Their name */
21670
- requested_by_name?: string | null;
21671
- /** @description Attempts so far */
21672
- attempt_count: number;
21673
- /** @description Attempts allowed */
21674
- max_attempts: number;
21675
- /** @description Correlation id shared with the audit log */
21676
- correlation_id?: string | null;
21677
21843
  /**
21678
21844
  * Format: date-time
21679
- * @description When it was queued
21845
+ * @description When it was turned off
21680
21846
  */
21681
- created_at: string;
21847
+ disabled_at?: string | null;
21848
+ /** @description person or circuit_breaker */
21849
+ disabled_cause?: string | null;
21850
+ /** @description Why it was turned off, in the words of whoever did it */
21851
+ disabled_reason?: string | null;
21852
+ /** @description Who turned it off; null when the breaker did */
21853
+ disabled_by?: string | null;
21854
+ /** @description Holds Axivoy placed on the agent */
21855
+ platform_holds: {
21856
+ /** @description pause_tenant, pause_definition or pin_version */
21857
+ kind: string;
21858
+ /** @description The pinned version, for pin_version */
21859
+ version?: number | null;
21860
+ /**
21861
+ * Format: date-time
21862
+ * @description When Axivoy placed it
21863
+ */
21864
+ since?: string | null;
21865
+ }[];
21866
+ /** @description max_runs_per_day or monthly_credit_budget when one is used up */
21867
+ limit_reached?: string | null;
21868
+ /** @description The live version */
21869
+ active_version?: number | null;
21870
+ /** @description Runs per UTC day; null when unlimited */
21871
+ max_runs_per_day?: number | null;
21872
+ /** @description Tool calls per run; null when unlimited */
21873
+ max_tool_calls_per_run?: number | null;
21874
+ /** @description AI credits per UTC month; null when unlimited */
21875
+ monthly_credit_budget?: number | null;
21876
+ /** @description Runs started this UTC day */
21877
+ runs_today: number;
21878
+ /** @description AI credits used this UTC month */
21879
+ credits_used_this_month: number;
21880
+ /** @description AI credits used in the last hour */
21881
+ credits_last_hour: number;
21882
+ /** @description Tool calls that failed or were refused in the last hour */
21883
+ refusals_last_hour: number;
21884
+ /** @description Runs not finished yet */
21885
+ open_runs: number;
21886
+ /** @description Rehearsals not finished yet */
21887
+ rehearsals_running: number;
21682
21888
  /**
21683
21889
  * Format: date-time
21684
- * @description When it was cancelled
21890
+ * @description When the latest run started
21685
21891
  */
21686
- cancelled_at?: string | null;
21892
+ last_run_at?: string | null;
21893
+ /** @description True on a tombstone (the row was deleted or recycled); other fields are absent. */
21894
+ deleted?: boolean | null;
21895
+ }[];
21896
+ /** @description Pass as cursor for the next page; null on the last page. */
21897
+ next_cursor?: string | null;
21898
+ };
21899
+ };
21900
+ };
21901
+ };
21902
+ 202: components["responses"]["Proposal"];
21903
+ /** @description Refused: credits_exhausted. */
21904
+ 402: {
21905
+ headers: {
21906
+ [name: string]: unknown;
21907
+ };
21908
+ content: {
21909
+ "application/json": components["schemas"]["OperationError"];
21910
+ };
21911
+ };
21912
+ /** @description Refused: not_permitted, not_available, authority_off, data_class_blocked. */
21913
+ 403: {
21914
+ headers: {
21915
+ [name: string]: unknown;
21916
+ };
21917
+ content: {
21918
+ "application/json": components["schemas"]["OperationError"];
21919
+ };
21920
+ };
21921
+ /** @description Refused: not_found. */
21922
+ 404: {
21923
+ headers: {
21924
+ [name: string]: unknown;
21925
+ };
21926
+ content: {
21927
+ "application/json": components["schemas"]["OperationError"];
21928
+ };
21929
+ };
21930
+ /** @description Refused: idempotency_conflict, stale_state. */
21931
+ 409: {
21932
+ headers: {
21933
+ [name: string]: unknown;
21934
+ };
21935
+ content: {
21936
+ "application/json": components["schemas"]["OperationError"];
21937
+ };
21938
+ };
21939
+ /** @description Refused: operation_retired. */
21940
+ 410: {
21941
+ headers: {
21942
+ [name: string]: unknown;
21943
+ };
21944
+ content: {
21945
+ "application/json": components["schemas"]["OperationError"];
21946
+ };
21947
+ };
21948
+ /** @description Refused: invalid_input, domain_rule. */
21949
+ 422: {
21950
+ headers: {
21951
+ [name: string]: unknown;
21952
+ };
21953
+ content: {
21954
+ "application/json": components["schemas"]["OperationError"];
21955
+ };
21956
+ };
21957
+ /** @description Refused: rate_limited. */
21958
+ 429: {
21959
+ headers: {
21960
+ [name: string]: unknown;
21961
+ };
21962
+ content: {
21963
+ "application/json": components["schemas"]["OperationError"];
21964
+ };
21965
+ };
21966
+ };
21967
+ };
21968
+ "ops.agents.rehearse": {
21969
+ parameters: {
21970
+ query?: never;
21971
+ header?: {
21972
+ /** @description Replays the first result when the same call is retried. Send one per user intent on writes. */
21973
+ "Idempotency-Key"?: string;
21974
+ /** @description Send `true` to run every check without changing anything. The answer is `{"dry_run": {"outcome": "would_run" | "would_propose", "input": {...}}}`. */
21975
+ "Axivoy-Dry-Run"?: "true" | "false";
21976
+ };
21977
+ path?: never;
21978
+ cookie?: never;
21979
+ };
21980
+ requestBody?: {
21981
+ content: {
21982
+ /**
21983
+ * @example {
21984
+ * "agent_key": "fake_desk",
21985
+ * "mode": "dry_run",
21986
+ * "subject": {
21987
+ * "id": 1
21988
+ * }
21989
+ * }
21990
+ */
21991
+ "application/json": {
21992
+ /** @description The agent's key, for example recruiting_desk. */
21993
+ agent_key: string;
21994
+ /** @description The version to try; the live version when left out. */
21995
+ version?: number;
21996
+ /**
21997
+ * @description dry_run: real records, nothing changed or sent. sandbox: practice data in the workspace's sandbox.
21998
+ * @enum {string}
21999
+ */
22000
+ mode: "dry_run" | "sandbox";
22001
+ /** @description The record to try it on. Dry run: the record of the agent's latest run when left out. Sandbox: the newest practice record. */
22002
+ subject?: {
22003
+ /** @description The record type the agent works on; checked against the agent. */
22004
+ type?: string;
22005
+ /** @description The record id. */
22006
+ id: number;
22007
+ };
22008
+ /** @description Dry run only: a recorded event (its id from events.list) to replay as the trigger; its record becomes the subject. */
22009
+ event_id?: string;
22010
+ /** @description Sandbox only: one of the agent's scenario keys. Seeds that scenario's practice record and wakes the agent with its event, so the same situation can be tried on any version. */
22011
+ scenario?: string;
22012
+ /**
22013
+ * @description live (default): the agent calls its model. scripted: with a scenario that has scripted model turns, those play instead of the model, so two runs of one version give the same steps.
22014
+ * @enum {string}
22015
+ */
22016
+ model?: "live" | "scripted";
22017
+ /** @description A finished run of this agent to start from, with from_step_seq; its record is the subject. Dry run for a real run, sandbox for a practice run. */
22018
+ from_run_id?: number;
22019
+ /** @description With from_run_id: the step number of one of that run's thinks. The try starts from the state just before it, so two versions answer the same moment. */
22020
+ from_step_seq?: number;
22021
+ };
22022
+ };
22023
+ };
22024
+ responses: {
22025
+ /** @description The operation ran. */
22026
+ 200: {
22027
+ headers: {
22028
+ [name: string]: unknown;
22029
+ };
22030
+ content: {
22031
+ /**
22032
+ * @example {
22033
+ * "result": {
22034
+ * "message": "Trying it without changing anything. The result shows here when it stops.",
22035
+ * "task_id": "a171294f-f44f-49d9-a87b-6912387bf1e0",
22036
+ * "run_id": 1,
22037
+ * "status": "running"
22038
+ * }
22039
+ * }
22040
+ */
22041
+ "application/json": {
22042
+ result: {
22043
+ /** @description What happened, in the operator's words */
22044
+ message: string;
22045
+ /** @description Poll tasks.get; operation.task.completed fires when the rehearsal stops */
22046
+ task_id: string;
22047
+ /** @description The rehearsal run; its timeline shows what the agent would have done */
22048
+ run_id: number;
22049
+ /** @description running */
22050
+ status: string;
22051
+ };
22052
+ };
22053
+ };
22054
+ };
22055
+ 202: components["responses"]["Proposal"];
22056
+ /** @description Refused: credits_exhausted. */
22057
+ 402: {
22058
+ headers: {
22059
+ [name: string]: unknown;
22060
+ };
22061
+ content: {
22062
+ "application/json": components["schemas"]["OperationError"];
22063
+ };
22064
+ };
22065
+ /** @description Refused: not_permitted, not_available, authority_off, data_class_blocked. */
22066
+ 403: {
22067
+ headers: {
22068
+ [name: string]: unknown;
22069
+ };
22070
+ content: {
22071
+ "application/json": components["schemas"]["OperationError"];
22072
+ };
22073
+ };
22074
+ /** @description Refused: not_found. */
22075
+ 404: {
22076
+ headers: {
22077
+ [name: string]: unknown;
22078
+ };
22079
+ content: {
22080
+ "application/json": components["schemas"]["OperationError"];
22081
+ };
22082
+ };
22083
+ /** @description Refused: idempotency_conflict, stale_state. */
22084
+ 409: {
22085
+ headers: {
22086
+ [name: string]: unknown;
22087
+ };
22088
+ content: {
22089
+ "application/json": components["schemas"]["OperationError"];
22090
+ };
22091
+ };
22092
+ /** @description Refused: operation_retired. */
22093
+ 410: {
22094
+ headers: {
22095
+ [name: string]: unknown;
22096
+ };
22097
+ content: {
22098
+ "application/json": components["schemas"]["OperationError"];
22099
+ };
22100
+ };
22101
+ /** @description Refused: invalid_input, domain_rule. */
22102
+ 422: {
22103
+ headers: {
22104
+ [name: string]: unknown;
22105
+ };
22106
+ content: {
22107
+ "application/json": components["schemas"]["OperationError"];
22108
+ };
22109
+ };
22110
+ /** @description Refused: rate_limited. */
22111
+ 429: {
22112
+ headers: {
22113
+ [name: string]: unknown;
22114
+ };
22115
+ content: {
22116
+ "application/json": components["schemas"]["OperationError"];
22117
+ };
22118
+ };
22119
+ };
22120
+ };
22121
+ "ops.agents.runs.cancel": {
22122
+ parameters: {
22123
+ query?: never;
22124
+ header?: {
22125
+ /** @description Replays the first result when the same call is retried. Send one per user intent on writes. */
22126
+ "Idempotency-Key"?: string;
22127
+ /** @description Send `true` to run every check without changing anything. The answer is `{"dry_run": {"outcome": "would_run" | "would_propose", "input": {...}}}`. */
22128
+ "Axivoy-Dry-Run"?: "true" | "false";
22129
+ };
22130
+ path?: never;
22131
+ cookie?: never;
22132
+ };
22133
+ requestBody?: {
22134
+ content: {
22135
+ /**
22136
+ * @example {
22137
+ * "run_id": 1,
22138
+ * "reason": "Wrong file"
22139
+ * }
22140
+ */
22141
+ "application/json": {
22142
+ /** @description The run to cancel (from agents.runs.list). */
22143
+ run_id: number;
22144
+ /** @description Why, for the run timeline and the audit log. */
22145
+ reason?: string | null;
22146
+ };
22147
+ };
22148
+ };
22149
+ responses: {
22150
+ /** @description The operation ran. */
22151
+ 200: {
22152
+ headers: {
22153
+ [name: string]: unknown;
22154
+ };
22155
+ content: {
22156
+ /**
22157
+ * @example {
22158
+ * "result": {
22159
+ * "message": "Run cancelled.",
22160
+ * "status": "completed",
22161
+ * "cancelled": true,
22162
+ * "withdrawn_approvals_count": 0
22163
+ * }
22164
+ * }
22165
+ */
22166
+ "application/json": {
22167
+ result: {
22168
+ /** @description What happened, in the operator's words */
22169
+ message: string;
22170
+ /** @description The run status after the call */
22171
+ status: string;
22172
+ /** @description False when the run had already ended */
22173
+ cancelled: boolean;
22174
+ /** @description Approvals the run was waiting on that were withdrawn */
22175
+ withdrawn_approvals_count: number;
22176
+ };
22177
+ };
22178
+ };
22179
+ };
22180
+ 202: components["responses"]["Proposal"];
22181
+ /** @description Refused: credits_exhausted. */
22182
+ 402: {
22183
+ headers: {
22184
+ [name: string]: unknown;
22185
+ };
22186
+ content: {
22187
+ "application/json": components["schemas"]["OperationError"];
22188
+ };
22189
+ };
22190
+ /** @description Refused: not_permitted, not_available, authority_off, data_class_blocked. */
22191
+ 403: {
22192
+ headers: {
22193
+ [name: string]: unknown;
22194
+ };
22195
+ content: {
22196
+ "application/json": components["schemas"]["OperationError"];
22197
+ };
22198
+ };
22199
+ /** @description Refused: not_found. */
22200
+ 404: {
22201
+ headers: {
22202
+ [name: string]: unknown;
22203
+ };
22204
+ content: {
22205
+ "application/json": components["schemas"]["OperationError"];
22206
+ };
22207
+ };
22208
+ /** @description Refused: idempotency_conflict, stale_state. */
22209
+ 409: {
22210
+ headers: {
22211
+ [name: string]: unknown;
22212
+ };
22213
+ content: {
22214
+ "application/json": components["schemas"]["OperationError"];
22215
+ };
22216
+ };
22217
+ /** @description Refused: operation_retired. */
22218
+ 410: {
22219
+ headers: {
22220
+ [name: string]: unknown;
22221
+ };
22222
+ content: {
22223
+ "application/json": components["schemas"]["OperationError"];
22224
+ };
22225
+ };
22226
+ /** @description Refused: invalid_input, domain_rule. */
22227
+ 422: {
22228
+ headers: {
22229
+ [name: string]: unknown;
22230
+ };
22231
+ content: {
22232
+ "application/json": components["schemas"]["OperationError"];
22233
+ };
22234
+ };
22235
+ /** @description Refused: rate_limited. */
22236
+ 429: {
22237
+ headers: {
22238
+ [name: string]: unknown;
22239
+ };
22240
+ content: {
22241
+ "application/json": components["schemas"]["OperationError"];
22242
+ };
22243
+ };
22244
+ };
22245
+ };
22246
+ "ops.agents.runs.list": {
22247
+ parameters: {
22248
+ query?: never;
22249
+ header?: {
22250
+ /** @description Replays the first result when the same call is retried. Send one per user intent on writes. */
22251
+ "Idempotency-Key"?: string;
22252
+ /** @description Send `true` to run every check without changing anything. The answer is `{"dry_run": {"outcome": "would_run" | "would_propose", "input": {...}}}`. */
22253
+ "Axivoy-Dry-Run"?: "true" | "false";
22254
+ };
22255
+ path?: never;
22256
+ cookie?: never;
22257
+ };
22258
+ requestBody?: {
22259
+ content: {
22260
+ /**
22261
+ * @example {
22262
+ * "agent_key": "fixture_desk"
22263
+ * }
22264
+ */
22265
+ "application/json": {
22266
+ /** @description The agent's key, for example recruiting_desk. */
22267
+ agent_key: string;
22268
+ /**
22269
+ * @description running, parked (waiting for a person), finished, or cancelled; all when left out.
22270
+ * @enum {string|null}
22271
+ */
22272
+ status?: "running" | "parked" | "finished" | "cancelled" | null;
22273
+ /** @description Cursor from the previous page's next_cursor. */
22274
+ cursor?: string | null;
22275
+ /** @description Rows per page (default 25). */
22276
+ limit?: number | null;
22277
+ /**
22278
+ * Format: date-time
22279
+ * @description Only rows changed at or after this instant, oldest change first, with deleted rows as tombstones.
22280
+ */
22281
+ updated_since?: string | null;
22282
+ };
22283
+ };
22284
+ };
22285
+ responses: {
22286
+ /** @description The operation ran. */
22287
+ 200: {
22288
+ headers: {
22289
+ [name: string]: unknown;
22290
+ };
22291
+ content: {
22292
+ /**
22293
+ * @example {
22294
+ * "result": {
22295
+ * "items": [
22296
+ * {
22297
+ * "id": 2,
22298
+ * "subject": "user:2",
22299
+ * "status": "cancelled",
22300
+ * "run_status": "completed",
22301
+ * "reason": "run_cancelled",
22302
+ * "steps": 0,
22303
+ * "credits_used": 0,
22304
+ * "last_operation_key": null,
22305
+ * "started_at": null,
22306
+ * "completed_at": null,
22307
+ * "delegate": "ai_agent_run:2",
22308
+ * "deleted": null
22309
+ * },
22310
+ * {
22311
+ * "id": 1,
22312
+ * "subject": "user:1",
22313
+ * "status": "running",
22314
+ * "run_status": "waiting",
22315
+ * "reason": null,
22316
+ * "steps": 0,
22317
+ * "credits_used": 0,
22318
+ * "last_operation_key": null,
22319
+ * "started_at": "2026-10-20T19:10:09Z",
22320
+ * "completed_at": null,
22321
+ * "delegate": "ai_agent_run:1",
22322
+ * "deleted": null
22323
+ * }
22324
+ * ],
22325
+ * "next_cursor": null
22326
+ * }
22327
+ * }
22328
+ */
22329
+ "application/json": {
22330
+ result: {
22331
+ /** @description One page of rows. */
22332
+ items: {
22333
+ /** @description The row's id. */
22334
+ id: number;
22335
+ /** @description What the run is about, as type:id */
22336
+ subject?: string | null;
22337
+ /** @description running, parked, finished or cancelled */
22338
+ status: string;
22339
+ /** @description The run's own status: pending, active, waiting, paused, completed or failed */
22340
+ run_status: string;
22341
+ /** @description Why a parked run waits or how a finished run ended */
22342
+ reason?: string | null;
22343
+ /** @description Steps recorded so far */
22344
+ steps: number;
22345
+ /** @description AI credits the run used so far */
22346
+ credits_used: number;
22347
+ /** @description The operation or tool the run called last */
22348
+ last_operation_key?: string | null;
22349
+ /**
22350
+ * Format: date-time
22351
+ * @description When the run first thought
22352
+ */
22353
+ started_at?: string | null;
22354
+ /**
22355
+ * Format: date-time
22356
+ * @description When the run ended
22357
+ */
22358
+ completed_at?: string | null;
22359
+ /** @description What audit entries for this run record as the delegate */
22360
+ delegate: string;
22361
+ /** @description True on a tombstone (the row was deleted or recycled); other fields are absent. */
22362
+ deleted?: boolean | null;
22363
+ }[];
22364
+ /** @description Pass as cursor for the next page; null on the last page. */
22365
+ next_cursor?: string | null;
22366
+ };
22367
+ };
22368
+ };
22369
+ };
22370
+ 202: components["responses"]["Proposal"];
22371
+ /** @description Refused: credits_exhausted. */
22372
+ 402: {
22373
+ headers: {
22374
+ [name: string]: unknown;
22375
+ };
22376
+ content: {
22377
+ "application/json": components["schemas"]["OperationError"];
22378
+ };
22379
+ };
22380
+ /** @description Refused: not_permitted, not_available, authority_off, data_class_blocked. */
22381
+ 403: {
22382
+ headers: {
22383
+ [name: string]: unknown;
22384
+ };
22385
+ content: {
22386
+ "application/json": components["schemas"]["OperationError"];
22387
+ };
22388
+ };
22389
+ /** @description Refused: not_found. */
22390
+ 404: {
22391
+ headers: {
22392
+ [name: string]: unknown;
22393
+ };
22394
+ content: {
22395
+ "application/json": components["schemas"]["OperationError"];
22396
+ };
22397
+ };
22398
+ /** @description Refused: idempotency_conflict, stale_state. */
22399
+ 409: {
22400
+ headers: {
22401
+ [name: string]: unknown;
22402
+ };
22403
+ content: {
22404
+ "application/json": components["schemas"]["OperationError"];
22405
+ };
22406
+ };
22407
+ /** @description Refused: operation_retired. */
22408
+ 410: {
22409
+ headers: {
22410
+ [name: string]: unknown;
22411
+ };
22412
+ content: {
22413
+ "application/json": components["schemas"]["OperationError"];
22414
+ };
22415
+ };
22416
+ /** @description Refused: invalid_input, domain_rule. */
22417
+ 422: {
22418
+ headers: {
22419
+ [name: string]: unknown;
22420
+ };
22421
+ content: {
22422
+ "application/json": components["schemas"]["OperationError"];
22423
+ };
22424
+ };
22425
+ /** @description Refused: rate_limited. */
22426
+ 429: {
22427
+ headers: {
22428
+ [name: string]: unknown;
22429
+ };
22430
+ content: {
22431
+ "application/json": components["schemas"]["OperationError"];
22432
+ };
22433
+ };
22434
+ };
22435
+ };
22436
+ "ops.ai.jobs.list": {
22437
+ parameters: {
22438
+ query?: never;
22439
+ header?: {
22440
+ /** @description Replays the first result when the same call is retried. Send one per user intent on writes. */
22441
+ "Idempotency-Key"?: string;
22442
+ /** @description Send `true` to run every check without changing anything. The answer is `{"dry_run": {"outcome": "would_run" | "would_propose", "input": {...}}}`. */
22443
+ "Axivoy-Dry-Run"?: "true" | "false";
22444
+ };
22445
+ path?: never;
22446
+ cookie?: never;
22447
+ };
22448
+ requestBody?: {
22449
+ content: {
22450
+ /** @example {} */
22451
+ "application/json": {
22452
+ /**
22453
+ * @description Only jobs in this status
22454
+ * @enum {string|null}
22455
+ */
22456
+ status?: "pending" | "queued" | "running" | "succeeded" | "failed" | "cancelled" | null;
22457
+ /** @description Only jobs of this type, for example rate_confirmation_extraction */
22458
+ job_type?: string | null;
22459
+ /** @description Cursor from the previous page's next_cursor. */
22460
+ cursor?: string | null;
22461
+ /** @description Rows per page (default 25). */
22462
+ limit?: number | null;
22463
+ /**
22464
+ * Format: date-time
22465
+ * @description Only rows changed at or after this instant, oldest change first, with deleted rows as tombstones.
22466
+ */
22467
+ updated_since?: string | null;
22468
+ };
22469
+ };
22470
+ };
22471
+ responses: {
22472
+ /** @description The operation ran. */
22473
+ 200: {
22474
+ headers: {
22475
+ [name: string]: unknown;
22476
+ };
22477
+ content: {
22478
+ /**
22479
+ * @example {
22480
+ * "result": {
22481
+ * "items": [
22482
+ * {
22483
+ * "id": 1,
22484
+ * "job_type": "stub",
22485
+ * "status": "queued",
22486
+ * "cancellable": true,
22487
+ * "requested_by_user_id": 2,
22488
+ * "requested_by_name": "Melisa Will",
22489
+ * "attempt_count": 0,
22490
+ * "max_attempts": 3,
22491
+ * "correlation_id": "3275b72a-1934-4869-af78-d05aeabf6855",
22492
+ * "created_at": "2026-10-20T08:18:19Z",
22493
+ * "cancelled_at": null,
22494
+ * "deleted": null
22495
+ * }
22496
+ * ],
22497
+ * "next_cursor": null
22498
+ * }
22499
+ * }
22500
+ */
22501
+ "application/json": {
22502
+ result: {
22503
+ /** @description One page of rows. */
22504
+ items: {
22505
+ /** @description The row's id. */
22506
+ id: number;
22507
+ /** @description What the job does */
22508
+ job_type: string;
22509
+ /** @description Lifecycle status */
22510
+ status: string;
22511
+ /** @description True while ai.jobs.cancel can still stop it */
22512
+ cancellable: boolean;
22513
+ /** @description Who asked for it; null for a system job */
22514
+ requested_by_user_id?: number | null;
22515
+ /** @description Their name */
22516
+ requested_by_name?: string | null;
22517
+ /** @description Attempts so far */
22518
+ attempt_count: number;
22519
+ /** @description Attempts allowed */
22520
+ max_attempts: number;
22521
+ /** @description Correlation id shared with the audit log */
22522
+ correlation_id?: string | null;
22523
+ /**
22524
+ * Format: date-time
22525
+ * @description When it was queued
22526
+ */
22527
+ created_at: string;
22528
+ /**
22529
+ * Format: date-time
22530
+ * @description When it was cancelled
22531
+ */
22532
+ cancelled_at?: string | null;
21687
22533
  /** @description True on a tombstone (the row was deleted or recycled); other fields are absent. */
21688
22534
  deleted?: boolean | null;
21689
22535
  }[];
@@ -144659,6 +145505,532 @@ export interface operations {
144659
145505
  };
144660
145506
  };
144661
145507
  };
145508
+ "events.agent.improvement.accepted": {
145509
+ parameters: {
145510
+ query?: never;
145511
+ header: {
145512
+ /** @description `t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `{t}.{raw body}` with the endpoint secret. For 24 hours after a secret rotation a second `v1=` signed with the old secret follows. Compare in constant time and reject a `t` older than 300 seconds. */
145513
+ "Axivoy-Signature": string;
145514
+ /** @description Delivery id, the same on every retry of this delivery. */
145515
+ "Axivoy-Webhook-Id": string;
145516
+ /** @description The event `id`; dedupe on it. */
145517
+ "Axivoy-Event-Id": string;
145518
+ /** @description The event key, for example `load.created`. */
145519
+ "Axivoy-Event-Type": string;
145520
+ /** @description `true` on test sends from Settings, which also carry `"test": true` in the body. */
145521
+ "Axivoy-Test"?: string;
145522
+ };
145523
+ path?: never;
145524
+ cookie?: never;
145525
+ };
145526
+ requestBody: {
145527
+ content: {
145528
+ /**
145529
+ * @example {
145530
+ * "id": "0192f3a4-5b6c-7d8e-9f01-23456789abcd",
145531
+ * "type": "agent.improvement.accepted",
145532
+ * "version": 1,
145533
+ * "occurred_at": "2026-10-01T15:04:05Z",
145534
+ * "effective_at": "2026-10-01T15:04:05Z",
145535
+ * "tenant": 1,
145536
+ * "subject": {
145537
+ * "type": "agent_improvement",
145538
+ * "id": 1
145539
+ * },
145540
+ * "sequence": 2,
145541
+ * "facts": {
145542
+ * "agent_key": "yard_helper",
145543
+ * "trial_share": 20,
145544
+ * "accepted_by_user_id": 1
145545
+ * },
145546
+ * "causation": {
145547
+ * "invocation_id": null,
145548
+ * "event_id": null,
145549
+ * "subscription_id": null
145550
+ * },
145551
+ * "chain_depth": 0,
145552
+ * "fetch": {
145553
+ * "operation": "agents.improvements.get",
145554
+ * "input": {
145555
+ * "improvement_id": 1
145556
+ * }
145557
+ * }
145558
+ * }
145559
+ */
145560
+ "application/json": {
145561
+ /** @description Event id; the same on every delivery of this event. */
145562
+ id: string;
145563
+ /** @constant */
145564
+ type: "agent.improvement.accepted";
145565
+ /** @constant */
145566
+ version: 1;
145567
+ /** Format: date-time */
145568
+ occurred_at: string;
145569
+ /**
145570
+ * Format: date-time
145571
+ * @description When it counts operationally; differs from `occurred_at` for back-dated facts.
145572
+ */
145573
+ effective_at: string;
145574
+ /** @description Workspace id. */
145575
+ tenant: number;
145576
+ subject: {
145577
+ type: string;
145578
+ id: number | string;
145579
+ };
145580
+ /** @description Increases per subject; apply events for one subject in this order. */
145581
+ sequence: number;
145582
+ facts: {
145583
+ agent_key: string;
145584
+ trial_share: number;
145585
+ accepted_by_user_id: number;
145586
+ };
145587
+ causation: {
145588
+ invocation_id?: string | null;
145589
+ event_id?: string | null;
145590
+ subscription_id?: number | null;
145591
+ };
145592
+ chain_depth: number;
145593
+ fetch: {
145594
+ operation?: string;
145595
+ input?: Record<string, never>;
145596
+ } | null;
145597
+ /** @description Present and `true` only on test sends. */
145598
+ test?: boolean;
145599
+ };
145600
+ };
145601
+ };
145602
+ responses: {
145603
+ /** @description Received. Any other answer, a redirect or no answer within 10 seconds fails the try. */
145604
+ "2XX": {
145605
+ headers: {
145606
+ [name: string]: unknown;
145607
+ };
145608
+ content?: never;
145609
+ };
145610
+ };
145611
+ };
145612
+ "events.agent.improvement.rejected": {
145613
+ parameters: {
145614
+ query?: never;
145615
+ header: {
145616
+ /** @description `t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `{t}.{raw body}` with the endpoint secret. For 24 hours after a secret rotation a second `v1=` signed with the old secret follows. Compare in constant time and reject a `t` older than 300 seconds. */
145617
+ "Axivoy-Signature": string;
145618
+ /** @description Delivery id, the same on every retry of this delivery. */
145619
+ "Axivoy-Webhook-Id": string;
145620
+ /** @description The event `id`; dedupe on it. */
145621
+ "Axivoy-Event-Id": string;
145622
+ /** @description The event key, for example `load.created`. */
145623
+ "Axivoy-Event-Type": string;
145624
+ /** @description `true` on test sends from Settings, which also carry `"test": true` in the body. */
145625
+ "Axivoy-Test"?: string;
145626
+ };
145627
+ path?: never;
145628
+ cookie?: never;
145629
+ };
145630
+ requestBody: {
145631
+ content: {
145632
+ /**
145633
+ * @example {
145634
+ * "id": "0192f3a4-5b6c-7d8e-9f01-23456789abcd",
145635
+ * "type": "agent.improvement.rejected",
145636
+ * "version": 1,
145637
+ * "occurred_at": "2026-10-01T15:04:05Z",
145638
+ * "effective_at": "2026-10-01T15:04:05Z",
145639
+ * "tenant": 1,
145640
+ * "subject": {
145641
+ * "type": "agent_improvement",
145642
+ * "id": 3
145643
+ * },
145644
+ * "sequence": 2,
145645
+ * "facts": {
145646
+ * "agent_key": "yard_helper",
145647
+ * "rejected_by_user_id": 1
145648
+ * },
145649
+ * "causation": {
145650
+ * "invocation_id": null,
145651
+ * "event_id": null,
145652
+ * "subscription_id": null
145653
+ * },
145654
+ * "chain_depth": 0,
145655
+ * "fetch": {
145656
+ * "operation": "agents.improvements.get",
145657
+ * "input": {
145658
+ * "improvement_id": 3
145659
+ * }
145660
+ * }
145661
+ * }
145662
+ */
145663
+ "application/json": {
145664
+ /** @description Event id; the same on every delivery of this event. */
145665
+ id: string;
145666
+ /** @constant */
145667
+ type: "agent.improvement.rejected";
145668
+ /** @constant */
145669
+ version: 1;
145670
+ /** Format: date-time */
145671
+ occurred_at: string;
145672
+ /**
145673
+ * Format: date-time
145674
+ * @description When it counts operationally; differs from `occurred_at` for back-dated facts.
145675
+ */
145676
+ effective_at: string;
145677
+ /** @description Workspace id. */
145678
+ tenant: number;
145679
+ subject: {
145680
+ type: string;
145681
+ id: number | string;
145682
+ };
145683
+ /** @description Increases per subject; apply events for one subject in this order. */
145684
+ sequence: number;
145685
+ facts: {
145686
+ agent_key: string;
145687
+ rejected_by_user_id: number;
145688
+ };
145689
+ causation: {
145690
+ invocation_id?: string | null;
145691
+ event_id?: string | null;
145692
+ subscription_id?: number | null;
145693
+ };
145694
+ chain_depth: number;
145695
+ fetch: {
145696
+ operation?: string;
145697
+ input?: Record<string, never>;
145698
+ } | null;
145699
+ /** @description Present and `true` only on test sends. */
145700
+ test?: boolean;
145701
+ };
145702
+ };
145703
+ };
145704
+ responses: {
145705
+ /** @description Received. Any other answer, a redirect or no answer within 10 seconds fails the try. */
145706
+ "2XX": {
145707
+ headers: {
145708
+ [name: string]: unknown;
145709
+ };
145710
+ content?: never;
145711
+ };
145712
+ };
145713
+ };
145714
+ "events.agent.improvement.suggested": {
145715
+ parameters: {
145716
+ query?: never;
145717
+ header: {
145718
+ /** @description `t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `{t}.{raw body}` with the endpoint secret. For 24 hours after a secret rotation a second `v1=` signed with the old secret follows. Compare in constant time and reject a `t` older than 300 seconds. */
145719
+ "Axivoy-Signature": string;
145720
+ /** @description Delivery id, the same on every retry of this delivery. */
145721
+ "Axivoy-Webhook-Id": string;
145722
+ /** @description The event `id`; dedupe on it. */
145723
+ "Axivoy-Event-Id": string;
145724
+ /** @description The event key, for example `load.created`. */
145725
+ "Axivoy-Event-Type": string;
145726
+ /** @description `true` on test sends from Settings, which also carry `"test": true` in the body. */
145727
+ "Axivoy-Test"?: string;
145728
+ };
145729
+ path?: never;
145730
+ cookie?: never;
145731
+ };
145732
+ requestBody: {
145733
+ content: {
145734
+ /**
145735
+ * @example {
145736
+ * "id": "0192f3a4-5b6c-7d8e-9f01-23456789abcd",
145737
+ * "type": "agent.improvement.suggested",
145738
+ * "version": 1,
145739
+ * "occurred_at": "2026-10-01T15:04:05Z",
145740
+ * "effective_at": "2026-10-01T15:04:05Z",
145741
+ * "tenant": 1,
145742
+ * "subject": {
145743
+ * "type": "agent_improvement",
145744
+ * "id": 1
145745
+ * },
145746
+ * "sequence": 1,
145747
+ * "facts": {
145748
+ * "agent_key": "yard_helper",
145749
+ * "base_version": 1,
145750
+ * "replay_score_active": 0.7,
145751
+ * "replay_score_suggested": 0.8,
145752
+ * "credits_used": 0
145753
+ * },
145754
+ * "causation": {
145755
+ * "invocation_id": null,
145756
+ * "event_id": null,
145757
+ * "subscription_id": null
145758
+ * },
145759
+ * "chain_depth": 0,
145760
+ * "fetch": {
145761
+ * "operation": "agents.improvements.get",
145762
+ * "input": {
145763
+ * "improvement_id": 1
145764
+ * }
145765
+ * }
145766
+ * }
145767
+ */
145768
+ "application/json": {
145769
+ /** @description Event id; the same on every delivery of this event. */
145770
+ id: string;
145771
+ /** @constant */
145772
+ type: "agent.improvement.suggested";
145773
+ /** @constant */
145774
+ version: 1;
145775
+ /** Format: date-time */
145776
+ occurred_at: string;
145777
+ /**
145778
+ * Format: date-time
145779
+ * @description When it counts operationally; differs from `occurred_at` for back-dated facts.
145780
+ */
145781
+ effective_at: string;
145782
+ /** @description Workspace id. */
145783
+ tenant: number;
145784
+ subject: {
145785
+ type: string;
145786
+ id: number | string;
145787
+ };
145788
+ /** @description Increases per subject; apply events for one subject in this order. */
145789
+ sequence: number;
145790
+ facts: {
145791
+ agent_key: string;
145792
+ base_version?: number | null;
145793
+ replay_score_active?: number | null;
145794
+ replay_score_suggested?: number | null;
145795
+ credits_used: number;
145796
+ };
145797
+ causation: {
145798
+ invocation_id?: string | null;
145799
+ event_id?: string | null;
145800
+ subscription_id?: number | null;
145801
+ };
145802
+ chain_depth: number;
145803
+ fetch: {
145804
+ operation?: string;
145805
+ input?: Record<string, never>;
145806
+ } | null;
145807
+ /** @description Present and `true` only on test sends. */
145808
+ test?: boolean;
145809
+ };
145810
+ };
145811
+ };
145812
+ responses: {
145813
+ /** @description Received. Any other answer, a redirect or no answer within 10 seconds fails the try. */
145814
+ "2XX": {
145815
+ headers: {
145816
+ [name: string]: unknown;
145817
+ };
145818
+ content?: never;
145819
+ };
145820
+ };
145821
+ };
145822
+ "events.agent.version_trial.promoted": {
145823
+ parameters: {
145824
+ query?: never;
145825
+ header: {
145826
+ /** @description `t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `{t}.{raw body}` with the endpoint secret. For 24 hours after a secret rotation a second `v1=` signed with the old secret follows. Compare in constant time and reject a `t` older than 300 seconds. */
145827
+ "Axivoy-Signature": string;
145828
+ /** @description Delivery id, the same on every retry of this delivery. */
145829
+ "Axivoy-Webhook-Id": string;
145830
+ /** @description The event `id`; dedupe on it. */
145831
+ "Axivoy-Event-Id": string;
145832
+ /** @description The event key, for example `load.created`. */
145833
+ "Axivoy-Event-Type": string;
145834
+ /** @description `true` on test sends from Settings, which also carry `"test": true` in the body. */
145835
+ "Axivoy-Test"?: string;
145836
+ };
145837
+ path?: never;
145838
+ cookie?: never;
145839
+ };
145840
+ requestBody: {
145841
+ content: {
145842
+ /**
145843
+ * @example {
145844
+ * "id": "0192f3a4-5b6c-7d8e-9f01-23456789abcd",
145845
+ * "type": "agent.version_trial.promoted",
145846
+ * "version": 1,
145847
+ * "occurred_at": "2026-10-01T15:04:05Z",
145848
+ * "effective_at": "2026-10-01T15:04:05Z",
145849
+ * "tenant": 1,
145850
+ * "subject": {
145851
+ * "type": "agent_version_trial",
145852
+ * "id": 1
145853
+ * },
145854
+ * "sequence": 1,
145855
+ * "facts": {
145856
+ * "agent_key": "yard_helper",
145857
+ * "trial_runs": 2,
145858
+ * "active_runs": 0,
145859
+ * "reason": "No signal worse than the active version over 2 runs."
145860
+ * },
145861
+ * "causation": {
145862
+ * "invocation_id": null,
145863
+ * "event_id": null,
145864
+ * "subscription_id": null
145865
+ * },
145866
+ * "chain_depth": 0,
145867
+ * "fetch": {
145868
+ * "operation": "agents.improvements.get",
145869
+ * "input": {
145870
+ * "improvement_id": 1
145871
+ * }
145872
+ * }
145873
+ * }
145874
+ */
145875
+ "application/json": {
145876
+ /** @description Event id; the same on every delivery of this event. */
145877
+ id: string;
145878
+ /** @constant */
145879
+ type: "agent.version_trial.promoted";
145880
+ /** @constant */
145881
+ version: 1;
145882
+ /** Format: date-time */
145883
+ occurred_at: string;
145884
+ /**
145885
+ * Format: date-time
145886
+ * @description When it counts operationally; differs from `occurred_at` for back-dated facts.
145887
+ */
145888
+ effective_at: string;
145889
+ /** @description Workspace id. */
145890
+ tenant: number;
145891
+ subject: {
145892
+ type: string;
145893
+ id: number | string;
145894
+ };
145895
+ /** @description Increases per subject; apply events for one subject in this order. */
145896
+ sequence: number;
145897
+ facts: {
145898
+ agent_key: string;
145899
+ trial_runs: number;
145900
+ active_runs: number;
145901
+ reason: string;
145902
+ };
145903
+ causation: {
145904
+ invocation_id?: string | null;
145905
+ event_id?: string | null;
145906
+ subscription_id?: number | null;
145907
+ };
145908
+ chain_depth: number;
145909
+ fetch: {
145910
+ operation?: string;
145911
+ input?: Record<string, never>;
145912
+ } | null;
145913
+ /** @description Present and `true` only on test sends. */
145914
+ test?: boolean;
145915
+ };
145916
+ };
145917
+ };
145918
+ responses: {
145919
+ /** @description Received. Any other answer, a redirect or no answer within 10 seconds fails the try. */
145920
+ "2XX": {
145921
+ headers: {
145922
+ [name: string]: unknown;
145923
+ };
145924
+ content?: never;
145925
+ };
145926
+ };
145927
+ };
145928
+ "events.agent.version_trial.rolled_back": {
145929
+ parameters: {
145930
+ query?: never;
145931
+ header: {
145932
+ /** @description `t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `{t}.{raw body}` with the endpoint secret. For 24 hours after a secret rotation a second `v1=` signed with the old secret follows. Compare in constant time and reject a `t` older than 300 seconds. */
145933
+ "Axivoy-Signature": string;
145934
+ /** @description Delivery id, the same on every retry of this delivery. */
145935
+ "Axivoy-Webhook-Id": string;
145936
+ /** @description The event `id`; dedupe on it. */
145937
+ "Axivoy-Event-Id": string;
145938
+ /** @description The event key, for example `load.created`. */
145939
+ "Axivoy-Event-Type": string;
145940
+ /** @description `true` on test sends from Settings, which also carry `"test": true` in the body. */
145941
+ "Axivoy-Test"?: string;
145942
+ };
145943
+ path?: never;
145944
+ cookie?: never;
145945
+ };
145946
+ requestBody: {
145947
+ content: {
145948
+ /**
145949
+ * @example {
145950
+ * "id": "0192f3a4-5b6c-7d8e-9f01-23456789abcd",
145951
+ * "type": "agent.version_trial.rolled_back",
145952
+ * "version": 1,
145953
+ * "occurred_at": "2026-10-01T15:04:05Z",
145954
+ * "effective_at": "2026-10-01T15:04:05Z",
145955
+ * "tenant": 1,
145956
+ * "subject": {
145957
+ * "type": "agent_version_trial",
145958
+ * "id": 2
145959
+ * },
145960
+ * "sequence": 1,
145961
+ * "facts": {
145962
+ * "agent_key": "yard_helper",
145963
+ * "trial_runs": 2,
145964
+ * "active_runs": 2,
145965
+ * "reason": "Worse than the active version: refused 100.0% vs 0.0%."
145966
+ * },
145967
+ * "causation": {
145968
+ * "invocation_id": null,
145969
+ * "event_id": null,
145970
+ * "subscription_id": null
145971
+ * },
145972
+ * "chain_depth": 0,
145973
+ * "fetch": {
145974
+ * "operation": "agents.improvements.get",
145975
+ * "input": {
145976
+ * "improvement_id": 2
145977
+ * }
145978
+ * }
145979
+ * }
145980
+ */
145981
+ "application/json": {
145982
+ /** @description Event id; the same on every delivery of this event. */
145983
+ id: string;
145984
+ /** @constant */
145985
+ type: "agent.version_trial.rolled_back";
145986
+ /** @constant */
145987
+ version: 1;
145988
+ /** Format: date-time */
145989
+ occurred_at: string;
145990
+ /**
145991
+ * Format: date-time
145992
+ * @description When it counts operationally; differs from `occurred_at` for back-dated facts.
145993
+ */
145994
+ effective_at: string;
145995
+ /** @description Workspace id. */
145996
+ tenant: number;
145997
+ subject: {
145998
+ type: string;
145999
+ id: number | string;
146000
+ };
146001
+ /** @description Increases per subject; apply events for one subject in this order. */
146002
+ sequence: number;
146003
+ facts: {
146004
+ agent_key: string;
146005
+ trial_runs: number;
146006
+ active_runs: number;
146007
+ reason: string;
146008
+ };
146009
+ causation: {
146010
+ invocation_id?: string | null;
146011
+ event_id?: string | null;
146012
+ subscription_id?: number | null;
146013
+ };
146014
+ chain_depth: number;
146015
+ fetch: {
146016
+ operation?: string;
146017
+ input?: Record<string, never>;
146018
+ } | null;
146019
+ /** @description Present and `true` only on test sends. */
146020
+ test?: boolean;
146021
+ };
146022
+ };
146023
+ };
146024
+ responses: {
146025
+ /** @description Received. Any other answer, a redirect or no answer within 10 seconds fails the try. */
146026
+ "2XX": {
146027
+ headers: {
146028
+ [name: string]: unknown;
146029
+ };
146030
+ content?: never;
146031
+ };
146032
+ };
146033
+ };
144662
146034
  "events.bank_connection.link_requested": {
144663
146035
  parameters: {
144664
146036
  query?: never;