Skip to content

Commit bd6444e

Browse files
committed
Merge remote-tracking branch 'origin/staging' into codex/enterprise-reporting-period
# Conflicts: # packages/db/migrations/meta/0293_snapshot.json # packages/db/migrations/meta/_journal.json
2 parents 5338449 + 9ee1b81 commit bd6444e

136 files changed

Lines changed: 26506 additions & 1253 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/docs/components/icons.tsx

Lines changed: 22 additions & 17 deletions
Large diffs are not rendered by default.

apps/docs/content/docs/en/cli/files.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ sim files list [options]
239239
| Option | Required | Description |
240240
| --- | --- | --- |
241241
| `--folder <value>` | No | Folder path as shown in the app; the leading / is optional. |
242+
| `--recursive <value>` | No | Whether the folder filter includes files in subfolders. Defaults to true when a search is set, false otherwise, so listing a folder shows that folder while searching one looks through everything in it. Ignored when no folder filter is set, which already spans the workspace. The listed spellings are the whole accepted vocabulary and are case-sensitive; any other value is rejected. Accepted values: `true`, `1`, `yes`, `on`, `y`, `enabled`, `false`, `0`, `no`, `off`, `n`, `disabled`. |
242243
| `--scope <value>` | No | Which lifecycle set to list: `active` (default) for live files, `archived` for files a `DELETE` soft-deleted. `folderPath` resolves against active folders only, so pairing it with `scope=archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. |
243244
| `--search <value>` | No | Case-insensitive substring match against the file name. |
244245
| `--sort-by <value>` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `size`, `uploadedAt`, `updatedAt`. |

apps/docs/content/docs/en/cli/reference.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,7 @@ sim files list [options]
741741
| Option | Required | Description |
742742
| --- | --- | --- |
743743
| `--folder <value>` | No | Folder path as shown in the app; the leading / is optional. |
744+
| `--recursive <value>` | No | Whether the folder filter includes files in subfolders. Defaults to true when a search is set, false otherwise, so listing a folder shows that folder while searching one looks through everything in it. Ignored when no folder filter is set, which already spans the workspace. The listed spellings are the whole accepted vocabulary and are case-sensitive; any other value is rejected. Accepted values: `true`, `1`, `yes`, `on`, `y`, `enabled`, `false`, `0`, `no`, `off`, `n`, `disabled`. |
744745
| `--scope <value>` | No | Which lifecycle set to list: `active` (default) for live files, `archived` for files a `DELETE` soft-deleted. `folderPath` resolves against active folders only, so pairing it with `scope=archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. |
745746
| `--search <value>` | No | Case-insensitive substring match against the file name. |
746747
| `--sort-by <value>` | No | Field used to sort the result. Sorting by `name` is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: `name`, `size`, `uploadedAt`, `updatedAt`. |

apps/docs/openapi-v2-billing.json

Lines changed: 48 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,12 @@
313313
"application/json": {
314314
"schema": {
315315
"$ref": "#/components/schemas/V2Error"
316+
},
317+
"example": {
318+
"error": {
319+
"code": "BAD_REQUEST",
320+
"message": "Invalid request"
321+
}
316322
}
317323
}
318324
}
@@ -323,16 +329,12 @@
323329
"application/json": {
324330
"schema": {
325331
"$ref": "#/components/schemas/V2Error"
326-
}
327-
}
328-
}
329-
},
330-
"UsageLimitExceeded": {
331-
"description": "The workspace has exceeded its usage or billing limits.",
332-
"content": {
333-
"application/json": {
334-
"schema": {
335-
"$ref": "#/components/schemas/V2Error"
332+
},
333+
"example": {
334+
"error": {
335+
"code": "UNAUTHORIZED",
336+
"message": "API key required"
337+
}
336338
}
337339
}
338340
}
@@ -343,6 +345,15 @@
343345
"application/json": {
344346
"schema": {
345347
"$ref": "#/components/schemas/V2Error"
348+
},
349+
"example": {
350+
"error": {
351+
"code": "FORBIDDEN",
352+
"message": "Insufficient workspace permissions",
353+
"details": {
354+
"code": "INSUFFICIENT_WORKSPACE_ROLE"
355+
}
356+
}
346357
}
347358
}
348359
}
@@ -353,61 +364,12 @@
353364
"application/json": {
354365
"schema": {
355366
"$ref": "#/components/schemas/V2Error"
356-
}
357-
}
358-
}
359-
},
360-
"Conflict": {
361-
"description": "The request conflicts with current resource state.",
362-
"content": {
363-
"application/json": {
364-
"schema": {
365-
"$ref": "#/components/schemas/V2Error"
366-
}
367-
}
368-
}
369-
},
370-
"RunIdConflict": {
371-
"description": "The run cannot be started, for one of two causes named by `error.details.code`: `RUN_ID_CONFLICT` when the supplied `X-Run-Id` is already claimed, and `CALL_CHAIN_DEPTH_EXCEEDED` when the incoming `X-Sim-Via` chain has reached the maximum workflow-to-workflow call depth.",
372-
"headers": {
373-
"X-Run-Id": {
374-
"$ref": "#/components/headers/X-Run-Id"
375-
}
376-
},
377-
"content": {
378-
"application/json": {
379-
"schema": {
380-
"$ref": "#/components/schemas/V2Error"
381-
}
382-
}
383-
}
384-
},
385-
"PayloadTooLarge": {
386-
"description": "The request, or a resource collection it must materialize, exceeds the allowed size: an oversized request body, a generated artifact past the download ceiling, or a workspace folder tree too large to load in full.",
387-
"content": {
388-
"application/json": {
389-
"schema": {
390-
"$ref": "#/components/schemas/V2Error"
391-
}
392-
}
393-
}
394-
},
395-
"UnsupportedMediaType": {
396-
"description": "The request uses an unsupported media type.",
397-
"content": {
398-
"application/json": {
399-
"schema": {
400-
"$ref": "#/components/schemas/V2Error"
401-
}
402-
}
403-
}
404-
},
405-
"Locked": {
406-
"description": "The resource is locked and cannot be modified.",
407-
"content": {
408-
"application/json": {
409-
"schema": {
410-
"$ref": "#/components/schemas/V2Error"
367+
},
368+
"example": {
369+
"error": {
370+
"code": "NOT_FOUND",
371+
"message": "Not found"
372+
}
411373
}
412374
}
413375
}
@@ -423,16 +385,15 @@
423385
"application/json": {
424386
"schema": {
425387
"$ref": "#/components/schemas/V2Error"
426-
}
427-
}
428-
}
429-
},
430-
"ClientClosedRequest": {
431-
"description": "The client closed the connection before the response was produced. An abort can leave the run going, so `error.details.runId` carries the run id — reconcile against the runs resource rather than starting another run.",
432-
"content": {
433-
"application/json": {
434-
"schema": {
435-
"$ref": "#/components/schemas/V2Error"
388+
},
389+
"example": {
390+
"error": {
391+
"code": "RATE_LIMITED",
392+
"message": "API rate limit exceeded",
393+
"details": {
394+
"retryAfter": "2026-01-01T00:00:30.000Z"
395+
}
396+
}
436397
}
437398
}
438399
}
@@ -443,6 +404,12 @@
443404
"application/json": {
444405
"schema": {
445406
"$ref": "#/components/schemas/V2Error"
407+
},
408+
"example": {
409+
"error": {
410+
"code": "INTERNAL_ERROR",
411+
"message": "Internal server error"
412+
}
446413
}
447414
}
448415
}
@@ -458,6 +425,12 @@
458425
"application/json": {
459426
"schema": {
460427
"$ref": "#/components/schemas/V2Error"
428+
},
429+
"example": {
430+
"error": {
431+
"code": "SERVICE_UNAVAILABLE",
432+
"message": "Service temporarily unavailable"
433+
}
461434
}
462435
}
463436
}

0 commit comments

Comments
 (0)