@cubos/agent-sdk 0.0.1142184 → 0.0.1142812

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: {
@@ -6866,6 +7296,8 @@ export interface paths {
6866
7296
  * @description Replaces a page's markdown. Send the `revision` you loaded; a mismatch means someone else saved first (409). The edit is recorded as new material so the curating agent integrates around it on its next run — it is not pinned or protected, and the agent may reorganize it.
6867
7297
  *
6868
7298
  * Refused with 423 while a curation run holds this knowledge base: the run applies its whole wiki at once, so a concurrent edit would be silently overwritten.
7299
+ *
7300
+ * The `index` page is refused with 405: it is the curating agent's map of the wiki, rebuilt from the pages on every run, and it is the one page rendered into the system prompt of every agent this base is attached to. An edit to it would last until the next run and could not be checked for the two properties the prompt depends on. Use the curate endpoint to have it rewritten.
6869
7301
  */
6870
7302
  put: {
6871
7303
  parameters: {
@@ -6919,6 +7351,13 @@ export interface paths {
6919
7351
  };
6920
7352
  content?: never;
6921
7353
  };
7354
+ /** @description The `index` page is written only by the curating agent. */
7355
+ 405: {
7356
+ headers: {
7357
+ [name: string]: unknown;
7358
+ };
7359
+ content?: never;
7360
+ };
6922
7361
  /** @description The page changed since you loaded it. */
6923
7362
  409: {
6924
7363
  headers: {
@@ -10719,6 +11158,12 @@ export interface components {
10719
11158
  */
10720
11159
  error_fallback_message: string | null;
10721
11160
  feature_code_execution: boolean;
11161
+ /**
11162
+ * @description Exposes the per-conversation filesystem — `write_file` / `read_file` /
11163
+ * `list_files` / `move_file` / `delete_file` plus `webfetch` save-to-disk — backed
11164
+ * by a content-addressed tree. Off by default.
11165
+ */
11166
+ feature_filesystem: boolean;
10722
11167
  /**
10723
11168
  * @description Enables a secondary chat model that reviews consequential actions before dispatch.
10724
11169
  * Off by default; inactive unless `guardrail_model` resolves.
@@ -10746,11 +11191,21 @@ export interface components {
10746
11191
  feature_user_notes: boolean;
10747
11192
  feature_web_search: boolean;
10748
11193
  /**
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 a content-addressed tree. Off by default.
11194
+ * @deprecated
11195
+ * @description Deprecated alias of `feature_filesystem`, kept so a client written before the
11196
+ * workspace → filesystem rename keeps reading the field it knows. Always mirrors
11197
+ * it; on write, the new field accepts this name too.
11198
+ */
11199
+ feature_workspace?: boolean;
11200
+ /**
11201
+ * Format: int32
11202
+ * @description Turns without a file touch after which the conversation's filesystem expires
11203
+ * from the agent's view — history stays browsable, but the agent sees an empty
11204
+ * tree and the next write starts a fresh one. `null` ≡ never expires, which is
11205
+ * the default: expiry is opt-in. Bounds 1..=1000. Ignored while
11206
+ * `feature_filesystem` is off.
10752
11207
  */
10753
- feature_workspace: boolean;
11208
+ filesystem_ttl_turns: number | null;
10754
11209
  guardrail_model: null | components["schemas"]["AiProviderModel"];
10755
11210
  /** @description Optional operator policy appended to the fixed guardrail verifier wrapper. */
10756
11211
  guardrail_prompt: string | null;
@@ -10799,11 +11254,9 @@ export interface components {
10799
11254
  websearch_model: null | components["schemas"]["AiProviderModel"];
10800
11255
  /**
10801
11256
  * Format: int32
10802
- * @description Turns without a file touch after which the conversation's workspace expires
10803
- * from the agent's view — history stays browsable, but the agent sees an empty
10804
- * tree and the next write starts a fresh one. `null` ≡ never expires, which is
10805
- * the default: expiry is opt-in. Bounds 1..=1000. Ignored while
10806
- * `feature_workspace` is off.
11257
+ * @deprecated
11258
+ * @description Deprecated alias of `filesystem_ttl_turns`. Same mirroring as
11259
+ * `feature_workspace`.
10807
11260
  */
10808
11261
  workspace_ttl_turns: number | null;
10809
11262
  };
@@ -10819,6 +11272,7 @@ export interface components {
10819
11272
  description: string;
10820
11273
  display_name: string;
10821
11274
  feature_code_execution: boolean;
11275
+ feature_filesystem: boolean;
10822
11276
  feature_guardrail: boolean;
10823
11277
  feature_structured_memory: boolean;
10824
11278
  feature_subagent: boolean;
@@ -10826,7 +11280,6 @@ export interface components {
10826
11280
  feature_task_planning: boolean;
10827
11281
  feature_user_notes: boolean;
10828
11282
  feature_web_search: boolean;
10829
- feature_workspace: boolean;
10830
11283
  /** Format: uuid */
10831
11284
  id: string;
10832
11285
  /**
@@ -11567,6 +12020,8 @@ export interface components {
11567
12020
  /** @description Channel-facing message on terminal turn failure. Omit/NULL ⇒ built-in default. */
11568
12021
  error_fallback_message?: string | null;
11569
12022
  feature_code_execution?: boolean | null;
12023
+ /** @description Also accepted as `feature_workspace`, the name it had before the rename. */
12024
+ feature_filesystem?: boolean | null;
11570
12025
  feature_guardrail?: boolean | null;
11571
12026
  feature_proactive_memory?: boolean | null;
11572
12027
  feature_structured_memory?: boolean | null;
@@ -11574,7 +12029,13 @@ export interface components {
11574
12029
  feature_task_planning?: boolean | null;
11575
12030
  feature_user_notes?: boolean | null;
11576
12031
  feature_web_search?: boolean | null;
11577
- feature_workspace?: boolean | null;
12032
+ /**
12033
+ * Format: int32
12034
+ * @description Turns without a file touch after which the filesystem expires from the agent's
12035
+ * view. Omit/NULL ⇒ never expires. Bounds: 1..=1000. Also accepted as
12036
+ * `workspace_ttl_turns`.
12037
+ */
12038
+ filesystem_ttl_turns?: number | null;
11578
12039
  /**
11579
12040
  * Format: uuid
11580
12041
  * @description Provider catalog row id (`provider_models.id`) for the guardrail verifier's backing chat
@@ -11639,12 +12100,6 @@ export interface components {
11639
12100
  * or null = tool disabled.
11640
12101
  */
11641
12102
  websearch_model_id?: string | null;
11642
- /**
11643
- * Format: int32
11644
- * @description Turns without a file touch after which the workspace expires from the agent's
11645
- * view. Omit/NULL ⇒ never expires. Bounds: 1..=1000.
11646
- */
11647
- workspace_ttl_turns?: number | null;
11648
12103
  };
11649
12104
  CreateAiProviderInput: {
11650
12105
  /**
@@ -11988,13 +12443,13 @@ export interface components {
11988
12443
  enabled_skill_slugs?: string[];
11989
12444
  enabled_trigger_slugs?: string[];
11990
12445
  feature_code_execution: boolean;
12446
+ feature_filesystem?: boolean;
11991
12447
  feature_proactive_memory: boolean;
11992
12448
  feature_structured_memory: boolean;
11993
12449
  feature_subagent?: boolean;
11994
12450
  feature_task_planning: boolean;
11995
12451
  feature_user_notes: boolean;
11996
12452
  feature_web_search: boolean;
11997
- feature_workspace?: boolean;
11998
12453
  identity_md?: string | null;
11999
12454
  /**
12000
12455
  * Format: uuid
@@ -12024,7 +12479,7 @@ export interface components {
12024
12479
  tags: string[];
12025
12480
  };
12026
12481
  /** @enum {string} */
12027
- 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";
12482
+ 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";
12028
12483
  ExternalChannel: {
12029
12484
  agent: components["schemas"]["AgentRef"];
12030
12485
  connection_secret_hint: string;
@@ -12040,6 +12495,52 @@ export interface components {
12040
12495
  slug: string;
12041
12496
  user_onboarding_mode: string;
12042
12497
  };
12498
+ FilesystemDirResponse: {
12499
+ entries: components["schemas"]["FilesystemEntryDto"][];
12500
+ path: string;
12501
+ /**
12502
+ * Format: uuid
12503
+ * @description Snapshot event the listing came from; null when the conversation has
12504
+ * no files (never wrote any, or none at/before `at_seq`).
12505
+ */
12506
+ root_event_id: string | null;
12507
+ /** Format: int64 */
12508
+ root_seq: number | null;
12509
+ };
12510
+ FilesystemEntryDto: {
12511
+ exec: boolean;
12512
+ /** @description One of `file`, `dir`, `symlink`. */
12513
+ kind: string;
12514
+ /**
12515
+ * @description Detected content type. Empty for directories, symlinks, and files
12516
+ * written before entries carried it.
12517
+ */
12518
+ mime: string;
12519
+ name: string;
12520
+ /**
12521
+ * @description Content hash: the file's bytes, or a directory's subtree. Doubles as a
12522
+ * cache key — the same hash is the same content, tenant-wide.
12523
+ */
12524
+ sha256: string | null;
12525
+ /** Format: int64 */
12526
+ size: number;
12527
+ symlink_target: string | null;
12528
+ };
12529
+ FilesystemMoveRequest: {
12530
+ /** @description Absolute source path. */
12531
+ from: string;
12532
+ /** @description Absolute destination path. */
12533
+ to: string;
12534
+ };
12535
+ FilesystemMutationResponse: {
12536
+ /** @description Paths touched, in the order they were applied. */
12537
+ paths: string[];
12538
+ /**
12539
+ * Format: uuid
12540
+ * @description The `filesystem_root` event this mutation appended — the new snapshot.
12541
+ */
12542
+ root_event_id: string | null;
12543
+ };
12043
12544
  /**
12044
12545
  * @description Abnormal stop reason. Absent on the happy path; callers distinguish text vs tool calls by
12045
12546
  * inspecting `messages`.
@@ -12079,7 +12580,7 @@ export interface components {
12079
12580
  /**
12080
12581
  * @description Slug of the agent that curates this base's wiki, or null when nothing
12081
12582
  * curates it. Any agent of the tenant works — the harness forces the
12082
- * workspace on for the run regardless of the agent's own feature flag.
12583
+ * filesystem on for the run regardless of the agent's own feature flag.
12083
12584
  */
12084
12585
  nap_agent_slug: string | null;
12085
12586
  /** Format: date-time */
@@ -13025,6 +13526,8 @@ export interface components {
13025
13526
  */
13026
13527
  error_fallback_message?: string | null;
13027
13528
  feature_code_execution?: boolean | null;
13529
+ /** @description Also accepted as `feature_workspace`, the name it had before the rename. */
13530
+ feature_filesystem?: boolean | null;
13028
13531
  feature_guardrail?: boolean | null;
13029
13532
  feature_proactive_memory?: boolean | null;
13030
13533
  feature_structured_memory?: boolean | null;
@@ -13032,7 +13535,13 @@ export interface components {
13032
13535
  feature_task_planning?: boolean | null;
13033
13536
  feature_user_notes?: boolean | null;
13034
13537
  feature_web_search?: boolean | null;
13035
- feature_workspace?: boolean | null;
13538
+ /**
13539
+ * Format: int32
13540
+ * @description Tri-state: absent → leave alone; `null` → never expires; number → expire after
13541
+ * that many untouched turns. Bounds: 1..=1000. Also accepted as
13542
+ * `workspace_ttl_turns`.
13543
+ */
13544
+ filesystem_ttl_turns?: number | null;
13036
13545
  /**
13037
13546
  * Format: uuid
13038
13547
  * @description Tri-state: absent → leave alone; `null` → clear FK; UUID → set.
@@ -13079,12 +13588,6 @@ export interface components {
13079
13588
  * @description Tri-state: absent → leave alone; `null` → clear FK; UUID → set.
13080
13589
  */
13081
13590
  websearch_model_id?: string | null;
13082
- /**
13083
- * Format: int32
13084
- * @description Tri-state: absent → leave alone; `null` → never expires; number → expire after
13085
- * that many untouched turns. Bounds: 1..=1000.
13086
- */
13087
- workspace_ttl_turns?: number | null;
13088
13591
  };
13089
13592
  UpdateAgentMcpRoleToolsInput: {
13090
13593
  /**
@@ -13530,52 +14033,6 @@ export interface components {
13530
14033
  */
13531
14034
  user_id: string | null;
13532
14035
  };
13533
- WorkspaceDirResponse: {
13534
- entries: components["schemas"]["WorkspaceEntryDto"][];
13535
- path: string;
13536
- /**
13537
- * Format: uuid
13538
- * @description Snapshot event the listing came from; null when the conversation has
13539
- * no files (never wrote any, or none at/before `at_seq`).
13540
- */
13541
- root_event_id: string | null;
13542
- /** Format: int64 */
13543
- root_seq: number | null;
13544
- };
13545
- WorkspaceEntryDto: {
13546
- exec: boolean;
13547
- /** @description One of `file`, `dir`, `symlink`. */
13548
- kind: string;
13549
- /**
13550
- * @description Detected content type. Empty for directories, symlinks, and files
13551
- * written before entries carried it.
13552
- */
13553
- mime: string;
13554
- name: string;
13555
- /**
13556
- * @description Content hash: the file's bytes, or a directory's subtree. Doubles as a
13557
- * cache key — the same hash is the same content, tenant-wide.
13558
- */
13559
- sha256: string | null;
13560
- /** Format: int64 */
13561
- size: number;
13562
- symlink_target: string | null;
13563
- };
13564
- WorkspaceMoveRequest: {
13565
- /** @description Absolute source path. */
13566
- from: string;
13567
- /** @description Absolute destination path. */
13568
- to: string;
13569
- };
13570
- WorkspaceMutationResponse: {
13571
- /** @description Paths touched, in the order they were applied. */
13572
- paths: string[];
13573
- /**
13574
- * Format: uuid
13575
- * @description The `workspace_root` event this mutation appended — the new snapshot.
13576
- */
13577
- root_event_id: string | null;
13578
- };
13579
14036
  };
13580
14037
  responses: never;
13581
14038
  parameters: never;