@cubos/agent-sdk 0.0.1141710 → 0.0.1142284

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.
@@ -5176,6 +5176,431 @@ export interface paths {
5176
5176
  patch?: never;
5177
5177
  trace?: never;
5178
5178
  };
5179
+ "/api/v1/tenants/{tenantSlug}/conversations/{id}/filesystem/dir": {
5180
+ parameters: {
5181
+ query?: never;
5182
+ header?: never;
5183
+ path?: never;
5184
+ cookie?: never;
5185
+ };
5186
+ /**
5187
+ * List a filesystem directory
5188
+ * @description Lists one directory of the conversation's virtual filesystem — a single level, never recursive. The filesystem is a content-addressed tree projected from the event log; every file mutation is a browsable snapshot. Pass `at_seq` to view the tree as it stood at a given event (the latest snapshot at or before it), which reaches history the agent can no longer see. Without `at_seq` you get the live tree — exactly what the agent would be shown on its next turn, so it comes back empty once the filesystem has expired after enough idle turns, which is also the tree a write would start from. `path` defaults to the root `/`. An empty list with null `root_event_id` means no files exist there.
5189
+ */
5190
+ get: {
5191
+ parameters: {
5192
+ query?: {
5193
+ /** @description Event seq to anchor the snapshot at; omit for the current tree. */
5194
+ at_seq?: number;
5195
+ /** @description Directory to list; defaults to `/`. */
5196
+ path?: string;
5197
+ };
5198
+ header?: never;
5199
+ path: {
5200
+ /** @description Conversation id. */
5201
+ id: string;
5202
+ /** @description Tenant slug. */
5203
+ tenantSlug: string;
5204
+ };
5205
+ cookie?: never;
5206
+ };
5207
+ requestBody?: never;
5208
+ responses: {
5209
+ 200: {
5210
+ headers: {
5211
+ [name: string]: unknown;
5212
+ };
5213
+ content: {
5214
+ "application/json": components["schemas"]["FilesystemDirResponse"];
5215
+ };
5216
+ };
5217
+ 400: {
5218
+ headers: {
5219
+ [name: string]: unknown;
5220
+ };
5221
+ content?: never;
5222
+ };
5223
+ 401: {
5224
+ headers: {
5225
+ [name: string]: unknown;
5226
+ };
5227
+ content?: never;
5228
+ };
5229
+ 403: {
5230
+ headers: {
5231
+ [name: string]: unknown;
5232
+ };
5233
+ content?: never;
5234
+ };
5235
+ 404: {
5236
+ headers: {
5237
+ [name: string]: unknown;
5238
+ };
5239
+ content?: never;
5240
+ };
5241
+ };
5242
+ };
5243
+ put?: never;
5244
+ post?: never;
5245
+ delete?: never;
5246
+ options?: never;
5247
+ head?: never;
5248
+ patch?: never;
5249
+ trace?: never;
5250
+ };
5251
+ "/api/v1/tenants/{tenantSlug}/conversations/{id}/filesystem/file": {
5252
+ parameters: {
5253
+ query?: never;
5254
+ header?: never;
5255
+ path?: never;
5256
+ cookie?: never;
5257
+ };
5258
+ /**
5259
+ * Download a filesystem file
5260
+ * @description Streams the bytes of one file from the conversation's virtual filesystem as an attachment. Pass `at_seq` to download the file as it stood at a given event, which reaches history the agent can no longer see; without it you read the live tree, which 404s once the filesystem has expired after enough idle turns. `Content-Type` is the stored mime (inferred from the extension for entries that predate it); the `Content-Disposition` filename is the entry name.
5261
+ */
5262
+ get: {
5263
+ parameters: {
5264
+ query: {
5265
+ /** @description Event seq to anchor the snapshot at; omit for the current tree. */
5266
+ at_seq?: number;
5267
+ /** @description Absolute path of the file to download. */
5268
+ path: string;
5269
+ };
5270
+ header?: never;
5271
+ path: {
5272
+ /** @description Conversation id. */
5273
+ id: string;
5274
+ /** @description Tenant slug. */
5275
+ tenantSlug: string;
5276
+ };
5277
+ cookie?: never;
5278
+ };
5279
+ requestBody?: never;
5280
+ responses: {
5281
+ /** @description The file bytes as an attachment */
5282
+ 200: {
5283
+ headers: {
5284
+ [name: string]: unknown;
5285
+ };
5286
+ content?: never;
5287
+ };
5288
+ 400: {
5289
+ headers: {
5290
+ [name: string]: unknown;
5291
+ };
5292
+ content?: never;
5293
+ };
5294
+ 401: {
5295
+ headers: {
5296
+ [name: string]: unknown;
5297
+ };
5298
+ content?: never;
5299
+ };
5300
+ 403: {
5301
+ headers: {
5302
+ [name: string]: unknown;
5303
+ };
5304
+ content?: never;
5305
+ };
5306
+ 404: {
5307
+ headers: {
5308
+ [name: string]: unknown;
5309
+ };
5310
+ content?: never;
5311
+ };
5312
+ };
5313
+ };
5314
+ /**
5315
+ * Create or replace a filesystem file
5316
+ * @description Writes one file into the conversation's filesystem, creating parent directories and overwriting whatever was at `path`. The body is `multipart/form-data` with a single `file` part. Starts no turn: the agent is told about the change as part of its next request, so send a message or a steer if you want an answer now. 409 when the conversation's agent has `feature_filesystem` off; 413 when the file or the resulting tree is over the size cap.
5317
+ */
5318
+ put: {
5319
+ parameters: {
5320
+ query: {
5321
+ /** @description Absolute path to write, e.g. `/notes/todo.md`. */
5322
+ path: string;
5323
+ };
5324
+ header?: never;
5325
+ path: {
5326
+ /** @description Conversation id. */
5327
+ id: string;
5328
+ /** @description Tenant slug. */
5329
+ tenantSlug: string;
5330
+ };
5331
+ cookie?: never;
5332
+ };
5333
+ requestBody?: never;
5334
+ responses: {
5335
+ 200: {
5336
+ headers: {
5337
+ [name: string]: unknown;
5338
+ };
5339
+ content: {
5340
+ "application/json": components["schemas"]["FilesystemMutationResponse"];
5341
+ };
5342
+ };
5343
+ 400: {
5344
+ headers: {
5345
+ [name: string]: unknown;
5346
+ };
5347
+ content?: never;
5348
+ };
5349
+ 401: {
5350
+ headers: {
5351
+ [name: string]: unknown;
5352
+ };
5353
+ content?: never;
5354
+ };
5355
+ 403: {
5356
+ headers: {
5357
+ [name: string]: unknown;
5358
+ };
5359
+ content?: never;
5360
+ };
5361
+ 404: {
5362
+ headers: {
5363
+ [name: string]: unknown;
5364
+ };
5365
+ content?: never;
5366
+ };
5367
+ 409: {
5368
+ headers: {
5369
+ [name: string]: unknown;
5370
+ };
5371
+ content?: never;
5372
+ };
5373
+ 413: {
5374
+ headers: {
5375
+ [name: string]: unknown;
5376
+ };
5377
+ content?: never;
5378
+ };
5379
+ };
5380
+ };
5381
+ post?: never;
5382
+ /**
5383
+ * Delete a filesystem file or directory
5384
+ * @description Removes `path` from the conversation's filesystem. A directory is removed with everything under it. History is untouched — earlier snapshots still resolve via `at_seq`. Starts no turn; the agent is told on its next request.
5385
+ */
5386
+ delete: {
5387
+ parameters: {
5388
+ query: {
5389
+ /** @description Absolute path to remove. */
5390
+ path: string;
5391
+ };
5392
+ header?: never;
5393
+ path: {
5394
+ /** @description Conversation id. */
5395
+ id: string;
5396
+ /** @description Tenant slug. */
5397
+ tenantSlug: string;
5398
+ };
5399
+ cookie?: never;
5400
+ };
5401
+ requestBody?: never;
5402
+ responses: {
5403
+ 200: {
5404
+ headers: {
5405
+ [name: string]: unknown;
5406
+ };
5407
+ content: {
5408
+ "application/json": components["schemas"]["FilesystemMutationResponse"];
5409
+ };
5410
+ };
5411
+ 400: {
5412
+ headers: {
5413
+ [name: string]: unknown;
5414
+ };
5415
+ content?: never;
5416
+ };
5417
+ 401: {
5418
+ headers: {
5419
+ [name: string]: unknown;
5420
+ };
5421
+ content?: never;
5422
+ };
5423
+ 403: {
5424
+ headers: {
5425
+ [name: string]: unknown;
5426
+ };
5427
+ content?: never;
5428
+ };
5429
+ 404: {
5430
+ headers: {
5431
+ [name: string]: unknown;
5432
+ };
5433
+ content?: never;
5434
+ };
5435
+ 409: {
5436
+ headers: {
5437
+ [name: string]: unknown;
5438
+ };
5439
+ content?: never;
5440
+ };
5441
+ };
5442
+ };
5443
+ options?: never;
5444
+ head?: never;
5445
+ patch?: never;
5446
+ trace?: never;
5447
+ };
5448
+ "/api/v1/tenants/{tenantSlug}/conversations/{id}/filesystem/files": {
5449
+ parameters: {
5450
+ query?: never;
5451
+ header?: never;
5452
+ path?: never;
5453
+ cookie?: never;
5454
+ };
5455
+ get?: never;
5456
+ put?: never;
5457
+ /**
5458
+ * Write several filesystem files at once
5459
+ * @description Writes up to 50 files as a single snapshot. The body is `multipart/form-data` with repeated `file` parts and positional `path` parts (the i-th `path` names the i-th file; an empty string falls back to `/<filename>`). One `filesystem_root` event is appended for the whole batch, so the agent sees the upload as one change rather than as N — which also means it is all-or-nothing to the reader: there is no moment at which half the files exist. Starts no turn.
5460
+ */
5461
+ post: {
5462
+ parameters: {
5463
+ query?: never;
5464
+ header?: never;
5465
+ path: {
5466
+ /** @description Conversation id. */
5467
+ id: string;
5468
+ /** @description Tenant slug. */
5469
+ tenantSlug: string;
5470
+ };
5471
+ cookie?: never;
5472
+ };
5473
+ requestBody?: never;
5474
+ responses: {
5475
+ 200: {
5476
+ headers: {
5477
+ [name: string]: unknown;
5478
+ };
5479
+ content: {
5480
+ "application/json": components["schemas"]["FilesystemMutationResponse"];
5481
+ };
5482
+ };
5483
+ 400: {
5484
+ headers: {
5485
+ [name: string]: unknown;
5486
+ };
5487
+ content?: never;
5488
+ };
5489
+ 401: {
5490
+ headers: {
5491
+ [name: string]: unknown;
5492
+ };
5493
+ content?: never;
5494
+ };
5495
+ 403: {
5496
+ headers: {
5497
+ [name: string]: unknown;
5498
+ };
5499
+ content?: never;
5500
+ };
5501
+ 404: {
5502
+ headers: {
5503
+ [name: string]: unknown;
5504
+ };
5505
+ content?: never;
5506
+ };
5507
+ 409: {
5508
+ headers: {
5509
+ [name: string]: unknown;
5510
+ };
5511
+ content?: never;
5512
+ };
5513
+ 413: {
5514
+ headers: {
5515
+ [name: string]: unknown;
5516
+ };
5517
+ content?: never;
5518
+ };
5519
+ };
5520
+ };
5521
+ delete?: never;
5522
+ options?: never;
5523
+ head?: never;
5524
+ patch?: never;
5525
+ trace?: never;
5526
+ };
5527
+ "/api/v1/tenants/{tenantSlug}/conversations/{id}/filesystem/move": {
5528
+ parameters: {
5529
+ query?: never;
5530
+ header?: never;
5531
+ path?: never;
5532
+ cookie?: never;
5533
+ };
5534
+ get?: never;
5535
+ put?: never;
5536
+ /**
5537
+ * Move or rename a filesystem entry
5538
+ * @description Re-parents `from` to `to`, creating destination directories. Works for files and directories alike (a directory moves with its subtree, since the entry carries it). Starts no turn; the agent is told on its next request.
5539
+ */
5540
+ post: {
5541
+ parameters: {
5542
+ query?: never;
5543
+ header?: never;
5544
+ path: {
5545
+ /** @description Conversation id. */
5546
+ id: string;
5547
+ /** @description Tenant slug. */
5548
+ tenantSlug: string;
5549
+ };
5550
+ cookie?: never;
5551
+ };
5552
+ requestBody: {
5553
+ content: {
5554
+ "application/json": components["schemas"]["FilesystemMoveRequest"];
5555
+ };
5556
+ };
5557
+ responses: {
5558
+ 200: {
5559
+ headers: {
5560
+ [name: string]: unknown;
5561
+ };
5562
+ content: {
5563
+ "application/json": components["schemas"]["FilesystemMutationResponse"];
5564
+ };
5565
+ };
5566
+ 400: {
5567
+ headers: {
5568
+ [name: string]: unknown;
5569
+ };
5570
+ content?: never;
5571
+ };
5572
+ 401: {
5573
+ headers: {
5574
+ [name: string]: unknown;
5575
+ };
5576
+ content?: never;
5577
+ };
5578
+ 403: {
5579
+ headers: {
5580
+ [name: string]: unknown;
5581
+ };
5582
+ content?: never;
5583
+ };
5584
+ 404: {
5585
+ headers: {
5586
+ [name: string]: unknown;
5587
+ };
5588
+ content?: never;
5589
+ };
5590
+ 409: {
5591
+ headers: {
5592
+ [name: string]: unknown;
5593
+ };
5594
+ content?: never;
5595
+ };
5596
+ };
5597
+ };
5598
+ delete?: never;
5599
+ options?: never;
5600
+ head?: never;
5601
+ patch?: never;
5602
+ trace?: never;
5603
+ };
5179
5604
  "/api/v1/tenants/{tenantSlug}/conversations/{id}/knowledge-bases": {
5180
5605
  parameters: {
5181
5606
  query?: never;
@@ -5915,8 +6340,9 @@ export interface paths {
5915
6340
  cookie?: never;
5916
6341
  };
5917
6342
  /**
5918
- * List a workspace directory
5919
- * @description Lists one directory of the conversation's virtual workspace — a single level, never recursive. The workspace is a content-addressed tree projected from the event log; every file mutation is a browsable snapshot. Pass `at_seq` to view the tree as it stood at a given event (the latest snapshot at or before it), which reaches history the agent can no longer see. Without `at_seq` you get the live tree — exactly what the agent would be shown on its next turn, so it comes back empty once the workspace has expired after enough idle turns, which is also the tree a write would start from. `path` defaults to the root `/`. An empty list with null `root_event_id` means no files exist there.
6343
+ * List a filesystem directory (deprecated path)
6344
+ * @deprecated
6345
+ * @description Deprecated alias of `…/filesystem/dir`, kept for callers written before the workspace → filesystem rename. Identical behaviour.
5920
6346
  */
5921
6347
  get: {
5922
6348
  parameters: {
@@ -5942,7 +6368,7 @@ export interface paths {
5942
6368
  [name: string]: unknown;
5943
6369
  };
5944
6370
  content: {
5945
- "application/json": components["schemas"]["WorkspaceDirResponse"];
6371
+ "application/json": components["schemas"]["FilesystemDirResponse"];
5946
6372
  };
5947
6373
  };
5948
6374
  400: {
@@ -5987,15 +6413,16 @@ export interface paths {
5987
6413
  cookie?: never;
5988
6414
  };
5989
6415
  /**
5990
- * Download a workspace file
5991
- * @description Streams the bytes of one file from the conversation's virtual workspace as an attachment. Pass `at_seq` to download the file as it stood at a given event, which reaches history the agent can no longer see; without it you read the live tree, which 404s once the workspace has expired after enough idle turns. `Content-Type` is the stored mime (inferred from the extension for entries that predate it); the `Content-Disposition` filename is the entry name.
6416
+ * Download a filesystem file (deprecated path)
6417
+ * @deprecated
6418
+ * @description Deprecated alias of `…/filesystem/file`, kept for callers written before the workspace → filesystem rename. Identical behaviour.
5992
6419
  */
5993
6420
  get: {
5994
6421
  parameters: {
5995
6422
  query: {
5996
6423
  /** @description Event seq to anchor the snapshot at; omit for the current tree. */
5997
6424
  at_seq?: number;
5998
- /** @description Absolute path of the file to download. */
6425
+ /** @description Absolute path of the file. */
5999
6426
  path: string;
6000
6427
  };
6001
6428
  header?: never;
@@ -6009,7 +6436,6 @@ export interface paths {
6009
6436
  };
6010
6437
  requestBody?: never;
6011
6438
  responses: {
6012
- /** @description The file bytes as an attachment */
6013
6439
  200: {
6014
6440
  headers: {
6015
6441
  [name: string]: unknown;
@@ -6043,13 +6469,14 @@ export interface paths {
6043
6469
  };
6044
6470
  };
6045
6471
  /**
6046
- * Create or replace a workspace file
6047
- * @description Writes one file into the conversation's workspace, creating parent directories and overwriting whatever was at `path`. The body is `multipart/form-data` with a single `file` part. Starts no turn: the agent is told about the change as part of its next request, so send a message or a steer if you want an answer now. 409 when the conversation's agent has `feature_workspace` off; 413 when the file or the resulting tree is over the size cap.
6472
+ * Create or replace a file (deprecated path)
6473
+ * @deprecated
6474
+ * @description Deprecated alias of `…/filesystem/file`, kept for callers written before the workspace → filesystem rename. Identical behaviour.
6048
6475
  */
6049
6476
  put: {
6050
6477
  parameters: {
6051
6478
  query: {
6052
- /** @description Absolute path to write, e.g. `/notes/todo.md`. */
6479
+ /** @description Absolute path to write to. */
6053
6480
  path: string;
6054
6481
  };
6055
6482
  header?: never;
@@ -6068,7 +6495,7 @@ export interface paths {
6068
6495
  [name: string]: unknown;
6069
6496
  };
6070
6497
  content: {
6071
- "application/json": components["schemas"]["WorkspaceMutationResponse"];
6498
+ "application/json": components["schemas"]["FilesystemMutationResponse"];
6072
6499
  };
6073
6500
  };
6074
6501
  400: {
@@ -6111,8 +6538,9 @@ export interface paths {
6111
6538
  };
6112
6539
  post?: never;
6113
6540
  /**
6114
- * Delete a workspace file or directory
6115
- * @description Removes `path` from the conversation's workspace. A directory is removed with everything under it. History is untouched — earlier snapshots still resolve via `at_seq`. Starts no turn; the agent is told on its next request.
6541
+ * Delete a file (deprecated path)
6542
+ * @deprecated
6543
+ * @description Deprecated alias of `…/filesystem/file`, kept for callers written before the workspace → filesystem rename. Identical behaviour.
6116
6544
  */
6117
6545
  delete: {
6118
6546
  parameters: {
@@ -6136,7 +6564,7 @@ export interface paths {
6136
6564
  [name: string]: unknown;
6137
6565
  };
6138
6566
  content: {
6139
- "application/json": components["schemas"]["WorkspaceMutationResponse"];
6567
+ "application/json": components["schemas"]["FilesystemMutationResponse"];
6140
6568
  };
6141
6569
  };
6142
6570
  400: {
@@ -6186,8 +6614,9 @@ export interface paths {
6186
6614
  get?: never;
6187
6615
  put?: never;
6188
6616
  /**
6189
- * Write several workspace files at once
6190
- * @description Writes up to 50 files as a single snapshot. The body is `multipart/form-data` with repeated `file` parts and positional `path` parts (the i-th `path` names the i-th file; an empty string falls back to `/<filename>`). One `workspace_root` event is appended for the whole batch, so the agent sees the upload as one change rather than as N — which also means it is all-or-nothing to the reader: there is no moment at which half the files exist. Starts no turn.
6617
+ * Upload several files at once (deprecated path)
6618
+ * @deprecated
6619
+ * @description Deprecated alias of `…/filesystem/files`, kept for callers written before the workspace → filesystem rename. Identical behaviour.
6191
6620
  */
6192
6621
  post: {
6193
6622
  parameters: {
@@ -6208,7 +6637,7 @@ export interface paths {
6208
6637
  [name: string]: unknown;
6209
6638
  };
6210
6639
  content: {
6211
- "application/json": components["schemas"]["WorkspaceMutationResponse"];
6640
+ "application/json": components["schemas"]["FilesystemMutationResponse"];
6212
6641
  };
6213
6642
  };
6214
6643
  400: {
@@ -6265,8 +6694,9 @@ export interface paths {
6265
6694
  get?: never;
6266
6695
  put?: never;
6267
6696
  /**
6268
- * Move or rename a workspace entry
6269
- * @description Re-parents `from` to `to`, creating destination directories. Works for files and directories alike (a directory moves with its subtree, since the entry carries it). Starts no turn; the agent is told on its next request.
6697
+ * Move or rename a file (deprecated path)
6698
+ * @deprecated
6699
+ * @description Deprecated alias of `…/filesystem/move`, kept for callers written before the workspace → filesystem rename. Identical behaviour.
6270
6700
  */
6271
6701
  post: {
6272
6702
  parameters: {
@@ -6282,7 +6712,7 @@ export interface paths {
6282
6712
  };
6283
6713
  requestBody: {
6284
6714
  content: {
6285
- "application/json": components["schemas"]["WorkspaceMoveRequest"];
6715
+ "application/json": components["schemas"]["FilesystemMoveRequest"];
6286
6716
  };
6287
6717
  };
6288
6718
  responses: {
@@ -6291,7 +6721,7 @@ export interface paths {
6291
6721
  [name: string]: unknown;
6292
6722
  };
6293
6723
  content: {
6294
- "application/json": components["schemas"]["WorkspaceMutationResponse"];
6724
+ "application/json": components["schemas"]["FilesystemMutationResponse"];
6295
6725
  };
6296
6726
  };
6297
6727
  400: {
@@ -10719,6 +11149,12 @@ export interface components {
10719
11149
  */
10720
11150
  error_fallback_message: string | null;
10721
11151
  feature_code_execution: boolean;
11152
+ /**
11153
+ * @description Exposes the per-conversation filesystem — `write_file` / `read_file` /
11154
+ * `list_files` / `move_file` / `delete_file` plus `webfetch` save-to-disk — backed
11155
+ * by a content-addressed tree. Off by default.
11156
+ */
11157
+ feature_filesystem: boolean;
10722
11158
  /**
10723
11159
  * @description Enables a secondary chat model that reviews consequential actions before dispatch.
10724
11160
  * Off by default; inactive unless `guardrail_model` resolves.
@@ -10746,11 +11182,21 @@ export interface components {
10746
11182
  feature_user_notes: boolean;
10747
11183
  feature_web_search: boolean;
10748
11184
  /**
10749
- * @description Exposes the per-conversation file workspace — `write_file` / `read_file` /
10750
- * `list_files` / `move_file` / `delete_file` plus `webfetch` save-to-disk backed
10751
- * by an ephemeral, content-addressed tree. Off by default.
11185
+ * @deprecated
11186
+ * @description Deprecated alias of `feature_filesystem`, kept so a client written before the
11187
+ * workspace filesystem rename keeps reading the field it knows. Always mirrors
11188
+ * it; on write, the new field accepts this name too.
10752
11189
  */
10753
- feature_workspace: boolean;
11190
+ feature_workspace?: boolean;
11191
+ /**
11192
+ * Format: int32
11193
+ * @description Turns without a file touch after which the conversation's filesystem expires
11194
+ * from the agent's view — history stays browsable, but the agent sees an empty
11195
+ * tree and the next write starts a fresh one. `null` ≡ never expires, which is
11196
+ * the default: expiry is opt-in. Bounds 1..=1000. Ignored while
11197
+ * `feature_filesystem` is off.
11198
+ */
11199
+ filesystem_ttl_turns: number | null;
10754
11200
  guardrail_model: null | components["schemas"]["AiProviderModel"];
10755
11201
  /** @description Optional operator policy appended to the fixed guardrail verifier wrapper. */
10756
11202
  guardrail_prompt: string | null;
@@ -10797,6 +11243,13 @@ export interface components {
10797
11243
  updated_at: string;
10798
11244
  vision_model: null | components["schemas"]["AiProviderModel"];
10799
11245
  websearch_model: null | components["schemas"]["AiProviderModel"];
11246
+ /**
11247
+ * Format: int32
11248
+ * @deprecated
11249
+ * @description Deprecated alias of `filesystem_ttl_turns`. Same mirroring as
11250
+ * `feature_workspace`.
11251
+ */
11252
+ workspace_ttl_turns: number | null;
10800
11253
  };
10801
11254
  AgentListItem: {
10802
11255
  /** @description The chat model's provider, embedded in full (as the providers list returns it). */
@@ -10810,6 +11263,7 @@ export interface components {
10810
11263
  description: string;
10811
11264
  display_name: string;
10812
11265
  feature_code_execution: boolean;
11266
+ feature_filesystem: boolean;
10813
11267
  feature_guardrail: boolean;
10814
11268
  feature_structured_memory: boolean;
10815
11269
  feature_subagent: boolean;
@@ -10817,7 +11271,6 @@ export interface components {
10817
11271
  feature_task_planning: boolean;
10818
11272
  feature_user_notes: boolean;
10819
11273
  feature_web_search: boolean;
10820
- feature_workspace: boolean;
10821
11274
  /** Format: uuid */
10822
11275
  id: string;
10823
11276
  /**
@@ -11558,6 +12011,8 @@ export interface components {
11558
12011
  /** @description Channel-facing message on terminal turn failure. Omit/NULL ⇒ built-in default. */
11559
12012
  error_fallback_message?: string | null;
11560
12013
  feature_code_execution?: boolean | null;
12014
+ /** @description Also accepted as `feature_workspace`, the name it had before the rename. */
12015
+ feature_filesystem?: boolean | null;
11561
12016
  feature_guardrail?: boolean | null;
11562
12017
  feature_proactive_memory?: boolean | null;
11563
12018
  feature_structured_memory?: boolean | null;
@@ -11565,7 +12020,13 @@ export interface components {
11565
12020
  feature_task_planning?: boolean | null;
11566
12021
  feature_user_notes?: boolean | null;
11567
12022
  feature_web_search?: boolean | null;
11568
- feature_workspace?: boolean | null;
12023
+ /**
12024
+ * Format: int32
12025
+ * @description Turns without a file touch after which the filesystem expires from the agent's
12026
+ * view. Omit/NULL ⇒ never expires. Bounds: 1..=1000. Also accepted as
12027
+ * `workspace_ttl_turns`.
12028
+ */
12029
+ filesystem_ttl_turns?: number | null;
11569
12030
  /**
11570
12031
  * Format: uuid
11571
12032
  * @description Provider catalog row id (`provider_models.id`) for the guardrail verifier's backing chat
@@ -11973,13 +12434,13 @@ export interface components {
11973
12434
  enabled_skill_slugs?: string[];
11974
12435
  enabled_trigger_slugs?: string[];
11975
12436
  feature_code_execution: boolean;
12437
+ feature_filesystem?: boolean;
11976
12438
  feature_proactive_memory: boolean;
11977
12439
  feature_structured_memory: boolean;
11978
12440
  feature_subagent?: boolean;
11979
12441
  feature_task_planning: boolean;
11980
12442
  feature_user_notes: boolean;
11981
12443
  feature_web_search: boolean;
11982
- feature_workspace?: boolean;
11983
12444
  identity_md?: string | null;
11984
12445
  /**
11985
12446
  * Format: uuid
@@ -12009,7 +12470,7 @@ export interface components {
12009
12470
  tags: string[];
12010
12471
  };
12011
12472
  /** @enum {string} */
12012
- EventType: "user_message" | "task_prompt" | "agent_directive" | "agent_message" | "agent_file" | "llm_call" | "tool_result" | "turn_done" | "todo_update" | "memory_lookup" | "media_transcription" | "sub_conversation_started" | "sub_conversation_finished" | "eval_subcall_request" | "eval_subcall_result" | "compaction_done" | "workspace_root" | "harness_error" | "guardrail_verdict" | "client_tool_call" | "title_generated" | "context_update";
12473
+ EventType: "user_message" | "task_prompt" | "agent_directive" | "agent_message" | "agent_file" | "llm_call" | "tool_result" | "turn_done" | "todo_update" | "memory_lookup" | "media_transcription" | "sub_conversation_started" | "sub_conversation_finished" | "eval_subcall_request" | "eval_subcall_result" | "compaction_done" | "filesystem_root" | "harness_error" | "guardrail_verdict" | "client_tool_call" | "title_generated" | "context_update";
12013
12474
  ExternalChannel: {
12014
12475
  agent: components["schemas"]["AgentRef"];
12015
12476
  connection_secret_hint: string;
@@ -12025,6 +12486,52 @@ export interface components {
12025
12486
  slug: string;
12026
12487
  user_onboarding_mode: string;
12027
12488
  };
12489
+ FilesystemDirResponse: {
12490
+ entries: components["schemas"]["FilesystemEntryDto"][];
12491
+ path: string;
12492
+ /**
12493
+ * Format: uuid
12494
+ * @description Snapshot event the listing came from; null when the conversation has
12495
+ * no files (never wrote any, or none at/before `at_seq`).
12496
+ */
12497
+ root_event_id: string | null;
12498
+ /** Format: int64 */
12499
+ root_seq: number | null;
12500
+ };
12501
+ FilesystemEntryDto: {
12502
+ exec: boolean;
12503
+ /** @description One of `file`, `dir`, `symlink`. */
12504
+ kind: string;
12505
+ /**
12506
+ * @description Detected content type. Empty for directories, symlinks, and files
12507
+ * written before entries carried it.
12508
+ */
12509
+ mime: string;
12510
+ name: string;
12511
+ /**
12512
+ * @description Content hash: the file's bytes, or a directory's subtree. Doubles as a
12513
+ * cache key — the same hash is the same content, tenant-wide.
12514
+ */
12515
+ sha256: string | null;
12516
+ /** Format: int64 */
12517
+ size: number;
12518
+ symlink_target: string | null;
12519
+ };
12520
+ FilesystemMoveRequest: {
12521
+ /** @description Absolute source path. */
12522
+ from: string;
12523
+ /** @description Absolute destination path. */
12524
+ to: string;
12525
+ };
12526
+ FilesystemMutationResponse: {
12527
+ /** @description Paths touched, in the order they were applied. */
12528
+ paths: string[];
12529
+ /**
12530
+ * Format: uuid
12531
+ * @description The `filesystem_root` event this mutation appended — the new snapshot.
12532
+ */
12533
+ root_event_id: string | null;
12534
+ };
12028
12535
  /**
12029
12536
  * @description Abnormal stop reason. Absent on the happy path; callers distinguish text vs tool calls by
12030
12537
  * inspecting `messages`.
@@ -12064,7 +12571,7 @@ export interface components {
12064
12571
  /**
12065
12572
  * @description Slug of the agent that curates this base's wiki, or null when nothing
12066
12573
  * curates it. Any agent of the tenant works — the harness forces the
12067
- * workspace on for the run regardless of the agent's own feature flag.
12574
+ * filesystem on for the run regardless of the agent's own feature flag.
12068
12575
  */
12069
12576
  nap_agent_slug: string | null;
12070
12577
  /** Format: date-time */
@@ -13010,6 +13517,8 @@ export interface components {
13010
13517
  */
13011
13518
  error_fallback_message?: string | null;
13012
13519
  feature_code_execution?: boolean | null;
13520
+ /** @description Also accepted as `feature_workspace`, the name it had before the rename. */
13521
+ feature_filesystem?: boolean | null;
13013
13522
  feature_guardrail?: boolean | null;
13014
13523
  feature_proactive_memory?: boolean | null;
13015
13524
  feature_structured_memory?: boolean | null;
@@ -13017,7 +13526,13 @@ export interface components {
13017
13526
  feature_task_planning?: boolean | null;
13018
13527
  feature_user_notes?: boolean | null;
13019
13528
  feature_web_search?: boolean | null;
13020
- feature_workspace?: boolean | null;
13529
+ /**
13530
+ * Format: int32
13531
+ * @description Tri-state: absent → leave alone; `null` → never expires; number → expire after
13532
+ * that many untouched turns. Bounds: 1..=1000. Also accepted as
13533
+ * `workspace_ttl_turns`.
13534
+ */
13535
+ filesystem_ttl_turns?: number | null;
13021
13536
  /**
13022
13537
  * Format: uuid
13023
13538
  * @description Tri-state: absent → leave alone; `null` → clear FK; UUID → set.
@@ -13509,52 +14024,6 @@ export interface components {
13509
14024
  */
13510
14025
  user_id: string | null;
13511
14026
  };
13512
- WorkspaceDirResponse: {
13513
- entries: components["schemas"]["WorkspaceEntryDto"][];
13514
- path: string;
13515
- /**
13516
- * Format: uuid
13517
- * @description Snapshot event the listing came from; null when the conversation has
13518
- * no files (never wrote any, or none at/before `at_seq`).
13519
- */
13520
- root_event_id: string | null;
13521
- /** Format: int64 */
13522
- root_seq: number | null;
13523
- };
13524
- WorkspaceEntryDto: {
13525
- exec: boolean;
13526
- /** @description One of `file`, `dir`, `symlink`. */
13527
- kind: string;
13528
- /**
13529
- * @description Detected content type. Empty for directories, symlinks, and files
13530
- * written before entries carried it.
13531
- */
13532
- mime: string;
13533
- name: string;
13534
- /**
13535
- * @description Content hash: the file's bytes, or a directory's subtree. Doubles as a
13536
- * cache key — the same hash is the same content, tenant-wide.
13537
- */
13538
- sha256: string | null;
13539
- /** Format: int64 */
13540
- size: number;
13541
- symlink_target: string | null;
13542
- };
13543
- WorkspaceMoveRequest: {
13544
- /** @description Absolute source path. */
13545
- from: string;
13546
- /** @description Absolute destination path. */
13547
- to: string;
13548
- };
13549
- WorkspaceMutationResponse: {
13550
- /** @description Paths touched, in the order they were applied. */
13551
- paths: string[];
13552
- /**
13553
- * Format: uuid
13554
- * @description The `workspace_root` event this mutation appended — the new snapshot.
13555
- */
13556
- root_event_id: string | null;
13557
- };
13558
14027
  };
13559
14028
  responses: never;
13560
14029
  parameters: never;