trading_agent.gateway.routes.file_routes
¶
Routes for the user's files and the desks' proposals to change them.
GET /api/files every editable file: the shared files, each desk's Persona.md and Memory.md GET /api/files/content?name=&desk= one file's text PUT /api/files/content replace one file's text GET /api/proposals every proposal, with the change it would make POST /api/proposals/{id}/accept apply a proposal, keeping a copy of the old file POST /api/proposals/{id}/reject reject a proposal
The user may edit their own files and a desk's Memory.md. A desk's Memory.md is snapshotted first, as when the desk writes it. A new TradingRules.md is checked before it is saved: limits the risk engine could not read would stop every desk from opening positions, so such a version is refused.
Typical usage example:
application.include_router(FileRoutes(guard, layout, parts, proposals).router())
FileWrite
¶
Bases: BaseModel
The body of a file write.
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
The file's name, such as TradingRules.md or Persona.md. |
desk |
str | None
|
The desk, for Persona.md and Memory.md. |
text |
str
|
The complete new text. |
FileRoutes
¶
Bases: RouteGroup
The file and proposal routes.
Creates the routes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
guard
|
AccessGuard
|
Checks the access token. |
required |
layout
|
WorkspaceLayout
|
Where the files are. |
required |
parts
|
Mapping[str, DeskParts]
|
Each desk's parts, for its checkpoints. |
required |
proposals
|
ProposalStore
|
The proposals. |
required |
Source code in src/trading_agent/gateway/routes/file_routes.py
list_files
¶
Every editable file.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Each file's name, desk (or None for shared files) and size in characters. |
Source code in src/trading_agent/gateway/routes/file_routes.py
read_file
¶
One file's text.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
The file's name. |
required |
desk
|
str | None
|
The desk, for Persona.md and Memory.md. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
The name, desk and text; an empty text for a file not created yet. |
Source code in src/trading_agent/gateway/routes/file_routes.py
write_file
¶
Replaces one file's text.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
FileWrite
|
The file and its new text. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
The name, desk and new size. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
The new TradingRules.md cannot be read by the risk engine (status 400). |
Source code in src/trading_agent/gateway/routes/file_routes.py
list_proposals
¶
Every proposal, newest first, with the change each would make.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
The proposals. |
Source code in src/trading_agent/gateway/routes/file_routes.py
accept
¶
Applies a proposal.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
proposal_id
|
str
|
The proposal. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
The file that now holds the proposed text. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
The proposal does not exist or is not pending (status 409). |
Source code in src/trading_agent/gateway/routes/file_routes.py
reject
¶
Rejects a proposal.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
proposal_id
|
str
|
The proposal. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
A confirmation. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
The proposal does not exist or is not pending (status 409). |