feat(documents): surface filesystem work-products in Document Center
The Document Center only read the `documents` table, which is prose
content POSTed via /api/documents. Everything the agents wrote via
`bash` / `write` / `edit` — the bulk of their output on a real
project — landed in `work_products` and never appeared on the page.
Operators saw "0 items" after a full night's run.
Lift work_products into the same UI:
- `listWorkProductsForCompany` returns a newest-first slice with a
500-row cap so the snapshot stays bounded.
- `ProfileSnapshot.workProducts` flows through `useCompanyData` as
`companyWorkProducts`, filtered to the current company.
- `DocumentCenter` renders two labelled sections in order — prose
documents (editable) on top, files & deliverables below. Each
work-product row opens the underlying URL or filesystem path
when clickable, so the agent's bash-generated markdown, PRs,
and artifacts are one click away.
`WorkProductRecord` lifts into `@shared/types/records-extended` so
the renderer, snapshot, and database shells all reference the same
shape. The store-test fixture learns about the new field.
This commit is contained in:
1 parent
734a2b04e0
commit
22ba7a9004
15 files changed
+890
-158
No files matched your search
@@ -1,81 +1,145 @@
|
||||
use gpui::{Hsla, rgb};
|
||||
|
||||
pub fn window_bg() -> Hsla {
|
||||
rgb(0xf7f8fb).into()
|
||||
}
|
||||
|
||||
pub fn canvas() -> Hsla {
|
||||
rgb(0xf3efe8).into()
|
||||
rgb(0xf7f8fb).into()
|
||||
}
|
||||
|
||||
pub fn shell_header() -> Hsla {
|
||||
rgb(0xf8f2e9).into()
|
||||
rgb(0xffffff).into()
|
||||
}
|
||||
|
||||
pub fn panel() -> Hsla {
|
||||
rgb(0xfffbf5).into()
|
||||
rgb(0xffffff).into()
|
||||
}
|
||||
|
||||
pub fn panel_border() -> Hsla {
|
||||
rgb(0xd9cdbf).into()
|
||||
rgb(0xe7eaf0).into()
|
||||
}
|
||||
|
||||
pub fn panel_hover() -> Hsla {
|
||||
rgb(0xf4ede4).into()
|
||||
rgb(0xf3f6fb).into()
|
||||
}
|
||||
|
||||
pub fn panel_inset() -> Hsla {
|
||||
rgb(0xf7f0e7).into()
|
||||
rgb(0xf5f7fb).into()
|
||||
}
|
||||
|
||||
pub fn panel_inset_border() -> Hsla {
|
||||
rgb(0xeee3d7).into()
|
||||
rgb(0xe8ecf3).into()
|
||||
}
|
||||
|
||||
pub fn panel_muted() -> Hsla {
|
||||
rgb(0xf1f4f8).into()
|
||||
}
|
||||
|
||||
pub fn split_divider() -> Hsla {
|
||||
rgb(0xdbe2ea).into()
|
||||
}
|
||||
|
||||
pub fn text_primary() -> Hsla {
|
||||
rgb(0x171411).into()
|
||||
rgb(0x171c25).into()
|
||||
}
|
||||
|
||||
pub fn text_secondary() -> Hsla {
|
||||
rgb(0x3e4757).into()
|
||||
}
|
||||
|
||||
pub fn text_muted() -> Hsla {
|
||||
rgb(0x6f665d).into()
|
||||
rgb(0x6e7686).into()
|
||||
}
|
||||
|
||||
pub fn text_subtle() -> Hsla {
|
||||
rgb(0x8b93a1).into()
|
||||
}
|
||||
|
||||
pub fn primary_action() -> Hsla {
|
||||
rgb(0x9e3d2d).into()
|
||||
rgb(0x556f90).into()
|
||||
}
|
||||
|
||||
pub fn primary_action_hover() -> Hsla {
|
||||
rgb(0xb24f3e).into()
|
||||
rgb(0x617b9c).into()
|
||||
}
|
||||
|
||||
pub fn primary_action_text() -> Hsla {
|
||||
rgb(0xfff7f0).into()
|
||||
rgb(0xfafcff).into()
|
||||
}
|
||||
|
||||
pub fn accent_blue() -> Hsla {
|
||||
rgb(0x5876a3).into()
|
||||
}
|
||||
|
||||
pub fn accent_blue_soft() -> Hsla {
|
||||
rgb(0xebf1ff).into()
|
||||
}
|
||||
|
||||
pub fn accent_teal() -> Hsla {
|
||||
rgb(0x167f76).into()
|
||||
}
|
||||
|
||||
pub fn accent_teal_soft() -> Hsla {
|
||||
rgb(0xe9faf4).into()
|
||||
}
|
||||
|
||||
pub fn accent_orange() -> Hsla {
|
||||
rgb(0xd97931).into()
|
||||
}
|
||||
|
||||
pub fn accent_orange_soft() -> Hsla {
|
||||
rgb(0xfdebdc).into()
|
||||
}
|
||||
|
||||
pub fn danger() -> Hsla {
|
||||
rgb(0xc94646).into()
|
||||
}
|
||||
|
||||
pub fn danger_bg() -> Hsla {
|
||||
rgb(0xffefe8).into()
|
||||
rgb(0xfdeaea).into()
|
||||
}
|
||||
|
||||
pub fn success_bg() -> Hsla {
|
||||
rgb(0xebfbf3).into()
|
||||
}
|
||||
|
||||
pub fn sidebar_bg() -> Hsla {
|
||||
rgb(0x161514).into()
|
||||
rgb(0xffffff).into()
|
||||
}
|
||||
|
||||
pub fn sidebar_surface() -> Hsla {
|
||||
rgb(0x211d1a).into()
|
||||
rgb(0xffffff).into()
|
||||
}
|
||||
|
||||
pub fn sidebar_hover() -> Hsla {
|
||||
rgb(0x2c2825).into()
|
||||
rgb(0xf4f6fa).into()
|
||||
}
|
||||
|
||||
pub fn sidebar_surface_hover() -> Hsla {
|
||||
rgb(0x362c27).into()
|
||||
rgb(0xf4f6fa).into()
|
||||
}
|
||||
|
||||
pub fn sidebar_divider() -> Hsla {
|
||||
rgb(0x2f2924).into()
|
||||
rgb(0xe7eaf0).into()
|
||||
}
|
||||
|
||||
pub fn sidebar_text() -> Hsla {
|
||||
rgb(0xf5eee4).into()
|
||||
rgb(0x596273).into()
|
||||
}
|
||||
|
||||
pub fn sidebar_text_active() -> Hsla {
|
||||
rgb(0x111827).into()
|
||||
}
|
||||
|
||||
pub fn selection_fill() -> Hsla {
|
||||
rgb(0xefe2d4).into()
|
||||
rgb(0xebf1ff).into()
|
||||
}
|
||||
|
||||
pub fn selection_border() -> Hsla {
|
||||
rgb(0xc8d8f0).into()
|
||||
}
|
||||
|
||||
pub fn badge_dark() -> Hsla {
|
||||
rgb(0x6b7280).into()
|
||||
}
|
||||
Reference in new issue
Block a user