@shivaedev/work-board 0.17.0 → 0.18.0
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.
- package/CHANGELOG.md +27 -0
- package/README.md +27 -25
- package/assets/react.css +1 -1
- package/assets/react.js +37 -36
- package/dist/browser/responses/cardContext.d.ts +8 -1
- package/dist/browser/responses/cardContext.d.ts.map +1 -1
- package/dist/browser/responses/cardContext.js +12 -7
- package/dist/browser/responses/cardContext.js.map +1 -1
- package/dist/browser/views/now.d.ts +5 -0
- package/dist/browser/views/now.d.ts.map +1 -1
- package/dist/browser/views/now.js +38 -2
- package/dist/browser/views/now.js.map +1 -1
- package/dist/browser/views/schema.d.ts +11 -0
- package/dist/browser/views/schema.d.ts.map +1 -1
- package/dist/browser/views/schema.js +1 -0
- package/dist/browser/views/schema.js.map +1 -1
- package/dist/client/document/View.js +1 -1
- package/dist/client/document/View.js.map +1 -1
- package/dist/client/formStatus.d.ts +2 -2
- package/dist/client/formStatus.d.ts.map +1 -1
- package/dist/client/formStatus.js +2 -2
- package/dist/client/formStatus.js.map +1 -1
- package/dist/client/react/AnswerContext.d.ts.map +1 -1
- package/dist/client/react/AnswerContext.js +5 -2
- package/dist/client/react/AnswerContext.js.map +1 -1
- package/dist/client/react/AnswerForm.d.ts.map +1 -1
- package/dist/client/react/AnswerForm.js +6 -2
- package/dist/client/react/AnswerForm.js.map +1 -1
- package/dist/client/react/AnswerMarkdown.d.ts +6 -0
- package/dist/client/react/AnswerMarkdown.d.ts.map +1 -0
- package/dist/client/react/AnswerMarkdown.js +7 -0
- package/dist/client/react/AnswerMarkdown.js.map +1 -0
- package/dist/client/react/AnswerMore.d.ts.map +1 -1
- package/dist/client/react/AnswerMore.js +2 -1
- package/dist/client/react/AnswerMore.js.map +1 -1
- package/dist/client/react/AnswerPanel.d.ts.map +1 -1
- package/dist/client/react/AnswerPanel.js +3 -2
- package/dist/client/react/AnswerPanel.js.map +1 -1
- package/dist/client/react/AnswerPrompts.d.ts.map +1 -1
- package/dist/client/react/AnswerPrompts.js +16 -10
- package/dist/client/react/AnswerPrompts.js.map +1 -1
- package/dist/client/react/BoardShell.js +2 -2
- package/dist/client/react/BoardShell.js.map +1 -1
- package/dist/client/react/DocumentMain.d.ts.map +1 -1
- package/dist/client/react/DocumentMain.js +2 -2
- package/dist/client/react/DocumentMain.js.map +1 -1
- package/dist/client/react/FleetMain.js +1 -1
- package/dist/client/react/FleetMain.js.map +1 -1
- package/dist/client/react/FormField.js +1 -1
- package/dist/client/react/FormField.js.map +1 -1
- package/dist/client/react/GoalPage.js +2 -2
- package/dist/client/react/GoalPage.js.map +1 -1
- package/dist/client/react/GoalProgressHeader.js +2 -2
- package/dist/client/react/GoalProgressHeader.js.map +1 -1
- package/dist/client/react/Header.d.ts.map +1 -1
- package/dist/client/react/Header.js +3 -2
- package/dist/client/react/Header.js.map +1 -1
- package/dist/client/react/LibraryContents.js +1 -1
- package/dist/client/react/LibraryContents.js.map +1 -1
- package/dist/client/react/LibraryMain.d.ts.map +1 -1
- package/dist/client/react/LibraryMain.js +1 -1
- package/dist/client/react/LibraryMain.js.map +1 -1
- package/dist/client/react/LibraryPage.js +2 -2
- package/dist/client/react/LibraryPage.js.map +1 -1
- package/dist/client/react/LiveControls.js +1 -1
- package/dist/client/react/LiveControls.js.map +1 -1
- package/dist/client/react/ProjectionMain.d.ts.map +1 -1
- package/dist/client/react/ProjectionMain.js +1 -1
- package/dist/client/react/ProjectionMain.js.map +1 -1
- package/dist/client/react/PromptOption.d.ts.map +1 -1
- package/dist/client/react/PromptOption.js +7 -5
- package/dist/client/react/PromptOption.js.map +1 -1
- package/dist/client/react/ReadingHistory.js +1 -1
- package/dist/client/react/ReadingHistory.js.map +1 -1
- package/dist/client/react/RemainingMain.d.ts.map +1 -1
- package/dist/client/react/RemainingMain.js +1 -1
- package/dist/client/react/RemainingMain.js.map +1 -1
- package/dist/client/react/ResponseHistory.d.ts.map +1 -1
- package/dist/client/react/ResponseHistory.js +11 -5
- package/dist/client/react/ResponseHistory.js.map +1 -1
- package/dist/client/react/SearchPalette.js +1 -1
- package/dist/client/react/SearchPalette.js.map +1 -1
- package/dist/client/react/Sidebar.d.ts.map +1 -1
- package/dist/client/react/Sidebar.js +9 -2
- package/dist/client/react/Sidebar.js.map +1 -1
- package/dist/client/react/SystemFleetLane.d.ts.map +1 -1
- package/dist/client/react/SystemFleetLane.js +2 -1
- package/dist/client/react/SystemFleetLane.js.map +1 -1
- package/dist/client/react/SystemHealth.d.ts +2 -1
- package/dist/client/react/SystemHealth.d.ts.map +1 -1
- package/dist/client/react/SystemHealth.js +3 -2
- package/dist/client/react/SystemHealth.js.map +1 -1
- package/dist/client/react/SystemMain.d.ts.map +1 -1
- package/dist/client/react/SystemMain.js +6 -2
- package/dist/client/react/SystemMain.js.map +1 -1
- package/dist/client/react/SystemPage.d.ts +2 -1
- package/dist/client/react/SystemPage.d.ts.map +1 -1
- package/dist/client/react/SystemPage.js +2 -2
- package/dist/client/react/SystemPage.js.map +1 -1
- package/dist/client/react/TodayNeeds.d.ts +5 -0
- package/dist/client/react/TodayNeeds.d.ts.map +1 -1
- package/dist/client/react/TodayNeeds.js +6 -3
- package/dist/client/react/TodayNeeds.js.map +1 -1
- package/dist/client/react/TodayOptionButton.d.ts +14 -0
- package/dist/client/react/TodayOptionButton.d.ts.map +1 -0
- package/dist/client/react/TodayOptionButton.js +10 -0
- package/dist/client/react/TodayOptionButton.js.map +1 -0
- package/dist/client/react/TodayOptions.d.ts.map +1 -1
- package/dist/client/react/TodayOptions.js +18 -14
- package/dist/client/react/TodayOptions.js.map +1 -1
- package/dist/client/react/TodayPage.d.ts.map +1 -1
- package/dist/client/react/TodayPage.js +20 -5
- package/dist/client/react/TodayPage.js.map +1 -1
- package/dist/client/react/WorkCard.d.ts.map +1 -1
- package/dist/client/react/WorkCard.js +7 -2
- package/dist/client/react/WorkCard.js.map +1 -1
- package/dist/client/react/WorkLane.d.ts.map +1 -1
- package/dist/client/react/WorkLane.js +1 -1
- package/dist/client/react/WorkLane.js.map +1 -1
- package/dist/client/react/WorkNow.js +1 -1
- package/dist/client/react/WorkNow.js.map +1 -1
- package/dist/client/react/activeRead.js +1 -1
- package/dist/client/react/activeRead.js.map +1 -1
- package/dist/client/react/destinationName.d.ts +2 -0
- package/dist/client/react/destinationName.d.ts.map +1 -0
- package/dist/client/react/destinationName.js +4 -0
- package/dist/client/react/destinationName.js.map +1 -0
- package/dist/client/react/loadBoardPage.d.ts.map +1 -1
- package/dist/client/react/loadBoardPage.js +2 -2
- package/dist/client/react/loadBoardPage.js.map +1 -1
- package/dist/client/react/loadProjection.d.ts +135 -135
- package/dist/client/react/loadProjection.d.ts.map +1 -1
- package/dist/client/react/loadProjection.js +2 -2
- package/dist/client/react/loadProjection.js.map +1 -1
- package/dist/client/react/loadRemaining.d.ts +184 -184
- package/dist/client/react/loadRemaining.d.ts.map +1 -1
- package/dist/client/react/loadRemaining.js +2 -2
- package/dist/client/react/loadRemaining.js.map +1 -1
- package/dist/client/react/pageQueries.js +1 -1
- package/dist/client/react/pageQueries.js.map +1 -1
- package/dist/client/react/resolvedDocumentFailure.d.ts.map +1 -0
- package/dist/client/react/resolvedDocumentFailure.js.map +1 -0
- package/dist/client/react/routeQuery.d.ts.map +1 -0
- package/dist/client/react/routeQuery.js.map +1 -0
- package/dist/client/react/useHandoffForm.js +1 -1
- package/dist/client/react/useHandoffForm.js.map +1 -1
- package/dist/client/react/useProjectionData.d.ts +1 -1
- package/dist/client/react/useProjectionData.js +1 -1
- package/dist/client/react/useProjectionData.js.map +1 -1
- package/dist/client/react/useResponseForm.d.ts.map +1 -1
- package/dist/client/react/useResponseForm.js +3 -3
- package/dist/client/react/useResponseForm.js.map +1 -1
- package/dist/client/responses/summary.d.ts +1 -0
- package/dist/client/responses/summary.d.ts.map +1 -1
- package/dist/client/responses/summary.js +12 -1
- package/dist/client/responses/summary.js.map +1 -1
- package/dist/diagnostics/source.js +1 -1
- package/dist/diagnostics/source.js.map +1 -1
- package/dist/rpc/contract.d.ts +1951 -1918
- package/dist/rpc/contract.d.ts.map +1 -1
- package/dist/server/Responses.js +2 -2
- package/dist/server/Responses.js.map +1 -1
- package/dist/server/attention/inbox.d.ts +13 -2
- package/dist/server/attention/inbox.d.ts.map +1 -1
- package/dist/server/attention/inbox.js +44 -27
- package/dist/server/attention/inbox.js.map +1 -1
- package/dist/server/attention/managedRequestReceipt.d.ts +10 -0
- package/dist/server/attention/managedRequestReceipt.d.ts.map +1 -1
- package/dist/server/attention/managedRequestReceipt.js +29 -10
- package/dist/server/attention/managedRequestReceipt.js.map +1 -1
- package/dist/server/attention/projection.d.ts.map +1 -1
- package/dist/server/attention/projection.js +2 -1
- package/dist/server/attention/projection.js.map +1 -1
- package/dist/server/attention/requestInbox.d.ts +3 -3
- package/dist/server/attention/requestInbox.js +2 -2
- package/dist/server/attention/requestInbox.js.map +1 -1
- package/dist/server/attention/requests.d.ts +1 -0
- package/dist/server/attention/requests.d.ts.map +1 -1
- package/dist/server/attention/requests.js +7 -3
- package/dist/server/attention/requests.js.map +1 -1
- package/dist/server/board.js +1 -1
- package/dist/server/board.js.map +1 -1
- package/dist/server/document/answerBody.d.ts.map +1 -1
- package/dist/server/document/answerBody.js +9 -1
- package/dist/server/document/answerBody.js.map +1 -1
- package/dist/server/document/reviewedWork.d.ts +3 -0
- package/dist/server/document/reviewedWork.d.ts.map +1 -0
- package/dist/server/document/reviewedWork.js +23 -0
- package/dist/server/document/reviewedWork.js.map +1 -0
- package/dist/server/files/changes.d.ts.map +1 -1
- package/dist/server/files/changes.js +1 -1
- package/dist/server/files/changes.js.map +1 -1
- package/dist/server/files/watchDirectories.d.ts +1 -1
- package/dist/server/files/watchDirectories.d.ts.map +1 -1
- package/dist/server/files/watchDirectories.js +71 -12
- package/dist/server/files/watchDirectories.js.map +1 -1
- package/dist/server/handoffs/Service.js +2 -2
- package/dist/server/handoffs/Service.js.map +1 -1
- package/dist/server/handoffs/source.js +1 -1
- package/dist/server/handoffs/source.js.map +1 -1
- package/dist/server/http/boardRoutes.js +1 -1
- package/dist/server/http/boardRoutes.js.map +1 -1
- package/dist/server/mcp/client.d.ts +11 -0
- package/dist/server/mcp/client.d.ts.map +1 -1
- package/dist/server/mcp/queries.d.ts +2851 -2818
- package/dist/server/mcp/queries.d.ts.map +1 -1
- package/dist/server/packageInfo.d.ts +1 -1
- package/dist/server/packageInfo.js +1 -1
- package/dist/server/render/Highlighter.js +1 -1
- package/dist/server/render/Highlighter.js.map +1 -1
- package/dist/server/responses/locate.js +1 -1
- package/dist/server/responses/locate.js.map +1 -1
- package/dist/server/rpc/handlers.js +2 -2
- package/dist/server/rpc/handlers.js.map +1 -1
- package/dist/server/serve.js +1 -1
- package/dist/server/serve.js.map +1 -1
- package/dist/server/views/projectionQueries.d.ts +11 -0
- package/dist/server/views/projectionQueries.d.ts.map +1 -1
- package/dist/server/workspace.js +1 -1
- package/dist/server/workspace.js.map +1 -1
- package/docs/delivery/README.md +2 -2
- package/package.json +18 -362
- package/src/browser/responses/cardContext.ts +13 -7
- package/src/browser/views/now.ts +42 -2
- package/src/browser/views/schema.ts +1 -0
- package/src/client/document/View.ts +1 -1
- package/src/client/formStatus.ts +3 -3
- package/src/client/react/AnswerContext.tsx +9 -4
- package/src/client/react/AnswerForm.tsx +25 -6
- package/src/client/react/AnswerMarkdown.tsx +15 -0
- package/src/client/react/AnswerMore.tsx +58 -46
- package/src/client/react/AnswerPanel.tsx +14 -8
- package/src/client/react/AnswerPrompts.tsx +33 -18
- package/src/client/react/BoardShell.tsx +2 -2
- package/src/client/react/DocumentMain.tsx +2 -2
- package/src/client/react/FleetMain.tsx +1 -1
- package/src/client/react/FormField.tsx +1 -1
- package/src/client/react/GoalPage.tsx +2 -2
- package/src/client/react/GoalProgressHeader.tsx +2 -2
- package/src/client/react/Header.tsx +3 -2
- package/src/client/react/LibraryContents.tsx +1 -1
- package/src/client/react/LibraryMain.tsx +1 -1
- package/src/client/react/LibraryPage.tsx +2 -2
- package/src/client/react/LiveControls.tsx +1 -1
- package/src/client/react/ProjectionMain.tsx +1 -1
- package/src/client/react/PromptOption.tsx +39 -24
- package/src/client/react/ReadingHistory.tsx +1 -1
- package/src/client/react/RemainingMain.tsx +1 -1
- package/src/client/react/ResponseHistory.tsx +53 -14
- package/src/client/react/SearchPalette.tsx +1 -1
- package/src/client/react/Sidebar.tsx +10 -2
- package/src/client/react/SystemFleetLane.tsx +2 -1
- package/src/client/react/SystemHealth.tsx +24 -4
- package/src/client/react/SystemMain.tsx +6 -2
- package/src/client/react/SystemPage.tsx +8 -2
- package/src/client/react/TodayNeeds.tsx +21 -6
- package/src/client/react/TodayOptionButton.tsx +35 -0
- package/src/client/react/TodayOptions.tsx +42 -33
- package/src/client/react/TodayPage.tsx +36 -7
- package/src/client/react/WorkCard.tsx +16 -8
- package/src/client/react/WorkLane.tsx +8 -2
- package/src/client/react/WorkNow.tsx +1 -1
- package/src/client/react/activeRead.ts +1 -1
- package/src/client/react/destinationName.ts +3 -0
- package/src/client/react/entry.css +0 -6
- package/src/client/react/loadBoardPage.ts +2 -2
- package/src/client/react/loadProjection.ts +2 -2
- package/src/client/react/loadRemaining.ts +2 -2
- package/src/client/react/pageQueries.ts +1 -1
- package/src/client/react/useHandoffForm.ts +1 -1
- package/src/client/react/useProjectionData.ts +1 -1
- package/src/client/react/useResponseForm.ts +5 -3
- package/src/client/responses/summary.ts +13 -1
- package/src/diagnostics/source.ts +1 -1
- package/src/server/Responses.ts +2 -2
- package/src/server/attention/inbox.ts +51 -27
- package/src/server/attention/managedRequestReceipt.ts +41 -10
- package/src/server/attention/projection.ts +5 -2
- package/src/server/attention/requestInbox.ts +2 -2
- package/src/server/attention/requests.ts +7 -2
- package/src/server/board.ts +1 -1
- package/src/server/document/answerBody.ts +10 -1
- package/src/server/document/reviewedWork.ts +24 -0
- package/src/server/files/changes.ts +1 -0
- package/src/server/files/watchDirectories.ts +90 -27
- package/src/server/handoffs/Service.ts +2 -2
- package/src/server/handoffs/source.ts +1 -1
- package/src/server/http/boardRoutes.ts +1 -1
- package/src/server/packageInfo.ts +1 -1
- package/src/server/render/Highlighter.ts +1 -1
- package/src/server/responses/locate.ts +1 -1
- package/src/server/rpc/handlers.ts +2 -2
- package/src/server/serve.ts +1 -1
- package/src/server/workspace.ts +1 -1
- package/dist/client/page/resolvedDocumentFailure.d.ts.map +0 -1
- package/dist/client/page/resolvedDocumentFailure.js.map +0 -1
- package/dist/client/page/routeQuery.d.ts.map +0 -1
- package/dist/client/page/routeQuery.js.map +0 -1
- /package/dist/client/{page → react}/resolvedDocumentFailure.d.ts +0 -0
- /package/dist/client/{page → react}/resolvedDocumentFailure.js +0 -0
- /package/dist/client/{page → react}/routeQuery.d.ts +0 -0
- /package/dist/client/{page → react}/routeQuery.js +0 -0
- /package/src/client/{page → react}/resolvedDocumentFailure.ts +0 -0
- /package/src/client/{page → react}/routeQuery.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchPalette.js","sourceRoot":"","sources":["../../../src/client/react/SearchPalette.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SearchPalette.js","sourceRoot":"","sources":["../../../src/client/react/SearchPalette.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/client/react/Sidebar.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/client/react/Sidebar.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAQzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE,wBAAgB,OAAO,CAAC,EACvB,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,WAAW,GACX,EAAE;IACF,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;CACjC,+BA6EA"}
|
|
@@ -2,9 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Option } from "effect";
|
|
3
3
|
import { PanelsTopLeft } from "lucide-react";
|
|
4
4
|
import { useContext, useEffect } from "react";
|
|
5
|
-
import { useQuery } from "@shivaedev/effect-react/
|
|
5
|
+
import { useQuery } from "@shivaedev/effect-react/client/resultState.ts";
|
|
6
6
|
import { Badge } from "#client/react/components/ui/Badge.tsx";
|
|
7
7
|
import { buttonVariants } from "#client/react/components/ui/buttonVariants.ts";
|
|
8
|
+
import { destinationName } from "#client/react/destinationName.ts";
|
|
8
9
|
import { GoalProgress } from "#client/react/GoalProgress.tsx";
|
|
9
10
|
import { InboxCount } from "#client/react/Header.tsx";
|
|
10
11
|
import { LibraryContext } from "#client/react/LibraryContext.ts";
|
|
@@ -20,6 +21,12 @@ export function Sidebar({ api, data, main, home, controls, openLibrary, }) {
|
|
|
20
21
|
today: data?.inboxCount,
|
|
21
22
|
work: data?.counts.now,
|
|
22
23
|
};
|
|
24
|
+
function name(view, label) {
|
|
25
|
+
if (view === "today") {
|
|
26
|
+
return destinationName(label, counts.today, "need you");
|
|
27
|
+
}
|
|
28
|
+
return view === "work" ? destinationName(label, counts.work, "open tasks") : label;
|
|
29
|
+
}
|
|
23
30
|
useEffect(() => {
|
|
24
31
|
const sidebar = document.getElementById(shellIds.sidebar);
|
|
25
32
|
if (controls.narrow && controls.open) {
|
|
@@ -29,7 +36,7 @@ export function Sidebar({ api, data, main, home, controls, openLibrary, }) {
|
|
|
29
36
|
sidebar?.removeAttribute("aria-modal");
|
|
30
37
|
}
|
|
31
38
|
}, [controls.narrow, controls.open]);
|
|
32
|
-
return (_jsxs("aside", { "aria-label": "Workspace navigation", className: "sticky top-0 flex h-dvh flex-col gap-5 overflow-y-auto border-r bg-card p-4 text-card-foreground max-md:fixed max-md:inset-y-0 max-md:left-0 max-md:z-40 max-md:w-[min(320px,calc(100vw-48px))] print:hidden", hidden: !controls.open, id: shellIds.sidebar, role: controls.narrow && controls.open ? "dialog" : undefined, children: [_jsxs("a", { "aria-current": home ? "page" : undefined, className: "flex items-center gap-2 px-2 py-3 font-semibold text-lg text-primary no-underline", href: "/", children: [_jsx(PanelsTopLeft, { "aria-hidden": "true", className: "size-5" }), "work board"] }), _jsx("nav", { "aria-label": "Workspace", className: "grid shrink-0 gap-1", "data-inbox-count": String(data?.inboxCount ?? "?"), id: shellIds.primaryNavigation, children: workspaceDestinations.map(({ label, href, view, id }) => (_jsxs("a", { "aria-current": (view === "today" ? home : main.view === view) ? "page" : undefined, className: cn(buttonVariants({ variant: "ghost" }), "justify-between no-underline", (view === "today" ? home : main.view === view) && "bg-accent"), href: href, id: id, children: [_jsx("span", { children: label }), view === "today" && _jsx(InboxCount, { count: counts.today ?? null, id: shellIds.inboxCount }), view === "work" && _jsx(Badge, { children: counts.work
|
|
39
|
+
return (_jsxs("aside", { "aria-label": "Workspace navigation", className: "sticky top-0 flex h-dvh flex-col gap-5 overflow-y-auto border-r bg-card p-4 text-card-foreground max-md:fixed max-md:inset-y-0 max-md:left-0 max-md:z-40 max-md:w-[min(320px,calc(100vw-48px))] print:hidden", hidden: !controls.open, id: shellIds.sidebar, role: controls.narrow && controls.open ? "dialog" : undefined, children: [_jsxs("a", { "aria-current": home ? "page" : undefined, className: "flex items-center gap-2 px-2 py-3 font-semibold text-lg text-primary no-underline", href: "/", children: [_jsx(PanelsTopLeft, { "aria-hidden": "true", className: "size-5" }), "work board"] }), _jsx("nav", { "aria-label": "Workspace", className: "grid shrink-0 gap-1", "data-inbox-count": String(data?.inboxCount ?? "?"), id: shellIds.primaryNavigation, children: workspaceDestinations.map(({ label, href, view, id }) => (_jsxs("a", { "aria-current": (view === "today" ? home : main.view === view) ? "page" : undefined, "aria-label": name(view, label), className: cn(buttonVariants({ variant: "ghost" }), "justify-between no-underline", (view === "today" ? home : main.view === view) && "bg-accent"), href: href, id: id, children: [_jsx("span", { children: label }), view === "today" && _jsx(InboxCount, { count: counts.today ?? null, id: shellIds.inboxCount }), view === "work" && counts.work !== undefined && _jsx(Badge, { "aria-hidden": "true", children: counts.work })] }, view))) }), _jsx(ReadingSection, { current: main.file, items: reading.favorites, title: "Pinned" }), _jsxs("section", { "aria-label": "Active goals", children: [_jsx("h2", { className: "mb-2 px-2 font-semibold text-muted-foreground text-xs", children: "Active goals" }), goals?.length === 0 && _jsx("p", { className: "px-2 text-muted-foreground text-xs", children: "No active goals." }), goals?.map((goal) => (_jsxs("div", { className: "mb-3 px-2", children: [_jsx("a", { className: "block truncate text-sm", href: `/_board/item/${encodeURIComponent(goal.id)}/`, children: goal.title }), _jsx(GoalProgress, { compact: true, counts: goal.counts, title: goal.title })] }, goal.id)))] }), _jsx(ReadingSection, { current: main.file, items: reading.recents.slice(0, 5), title: "Recent" }), _jsx("button", { className: "mt-auto text-left text-muted-foreground text-xs", id: shellIds.libraryOpen, onClick: () => openLibrary(), type: "button", children: "Reading history" })] }));
|
|
33
40
|
}
|
|
34
41
|
function ReadingSection({ title, items, current }) {
|
|
35
42
|
return (_jsxs("section", { "aria-label": title, children: [_jsx("h2", { className: "mb-2 px-2 font-semibold text-muted-foreground text-xs", children: title }), _jsx("ul", { className: "m-0 grid list-none gap-2 p-0", children: items.map((item) => (_jsx("li", { className: "min-w-0 px-2 text-sm", children: _jsx("a", { "aria-current": item.file === current ? "page" : undefined, className: "block truncate", href: fileUrl(item.file), title: item.title, children: item.title }) }, item.file))) }), items.length === 0 && (_jsx("p", { className: "px-2 text-muted-foreground text-xs", children: title === "Pinned" ? "Pin a document to keep it here." : "No recent documents." }))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../src/client/react/Sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../src/client/react/Sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemFleetLane.d.ts","sourceRoot":"","sources":["../../../src/client/react/SystemFleetLane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"SystemFleetLane.d.ts","sourceRoot":"","sources":["../../../src/client/react/SystemFleetLane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAKnF,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CAAA;CAAE,+BAgB5F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { fleetHolder } from "#browser/views/now.ts";
|
|
2
3
|
import { Badge } from "#client/react/components/ui/Badge.tsx";
|
|
3
4
|
import { Card } from "#client/react/components/ui/Card.tsx";
|
|
4
5
|
export function SystemFleetLane({ data }) {
|
|
@@ -7,6 +8,6 @@ export function SystemFleetLane({ data }) {
|
|
|
7
8
|
}
|
|
8
9
|
function FleetRow({ item }) {
|
|
9
10
|
const title = item.document?.title ?? item.workId;
|
|
10
|
-
return (_jsxs("li", { className: "flex min-w-0 flex-wrap items-center gap-2 py-3", "data-fleet-id": item.workId, children: [_jsx("a", { className: "min-w-0 flex-1 basis-40 font-medium text-sm [overflow-wrap:anywhere]", href: `/_board/item/${encodeURIComponent(item.workId)}/`, children: title }), _jsx(Badge, { variant: "outline", children: item.stage }),
|
|
11
|
+
return (_jsxs("li", { className: "flex min-w-0 flex-wrap items-center gap-2 py-3", "data-fleet-id": item.workId, children: [_jsx("a", { className: "min-w-0 flex-1 basis-40 font-medium text-sm [overflow-wrap:anywhere]", href: `/_board/item/${encodeURIComponent(item.workId)}/`, children: title }), _jsx(Badge, { variant: "outline", children: item.stage }), _jsx("span", { className: "text-muted-foreground text-xs", children: fleetHolder(item) }), Boolean(item.prUrl) && (_jsx("a", { "aria-label": `Pull request for ${title}`, className: "text-sm underline", href: item.prUrl, children: "PR \u2197" }))] }));
|
|
11
12
|
}
|
|
12
13
|
//# sourceMappingURL=SystemFleetLane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemFleetLane.js","sourceRoot":"","sources":["../../../src/client/react/SystemFleetLane.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAE5D,MAAM,UAAU,eAAe,CAAC,EAAE,IAAI,EAAuD;IAC5F,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjI,OAAO,CACN,MAAC,IAAI,kBAAY,YAAY,EAAC,SAAS,EAAC,mBAAmB,aAC1D,aAAI,SAAS,EAAC,uBAAuB,2BAAgB,EACpD,KAAK,KAAK,SAAS,IAAI,YAAG,IAAI,EAAC,QAAQ,YAAE,IAAI,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,qBAAqB,GAAK,EAC9I,KAAK,EAAE,MAAM,KAAK,CAAC,IAAI,YAAG,SAAS,EAAC,+BAA+B,kDAAsC,EACzG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAC7B,aAAI,SAAS,EAAC,4BAA4B,YACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACpB,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,IAAO,IAAI,CAAC,MAAM,CAAI,CAC1C,CAAC,GACE,CACL,IACK,CACP,CAAC;AACH,CAAC;AAGD,SAAS,QAAQ,CAAC,EAAE,IAAI,EAA2B;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;IAClD,OAAO,CACN,cAAI,SAAS,EAAC,gDAAgD,mBAAgB,IAAI,CAAC,MAAM,aACxF,YAAG,SAAS,EAAC,sEAAsE,EAAC,IAAI,EAAE,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,YAC1I,KAAK,GACH,EACJ,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,YAAE,IAAI,CAAC,KAAK,GAAS,
|
|
1
|
+
{"version":3,"file":"SystemFleetLane.js","sourceRoot":"","sources":["../../../src/client/react/SystemFleetLane.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAE5D,MAAM,UAAU,eAAe,CAAC,EAAE,IAAI,EAAuD;IAC5F,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjI,OAAO,CACN,MAAC,IAAI,kBAAY,YAAY,EAAC,SAAS,EAAC,mBAAmB,aAC1D,aAAI,SAAS,EAAC,uBAAuB,2BAAgB,EACpD,KAAK,KAAK,SAAS,IAAI,YAAG,IAAI,EAAC,QAAQ,YAAE,IAAI,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,qBAAqB,GAAK,EAC9I,KAAK,EAAE,MAAM,KAAK,CAAC,IAAI,YAAG,SAAS,EAAC,+BAA+B,kDAAsC,EACzG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAC7B,aAAI,SAAS,EAAC,4BAA4B,YACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACpB,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,IAAO,IAAI,CAAC,MAAM,CAAI,CAC1C,CAAC,GACE,CACL,IACK,CACP,CAAC;AACH,CAAC;AAGD,SAAS,QAAQ,CAAC,EAAE,IAAI,EAA2B;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;IAClD,OAAO,CACN,cAAI,SAAS,EAAC,gDAAgD,mBAAgB,IAAI,CAAC,MAAM,aACxF,YAAG,SAAS,EAAC,sEAAsE,EAAC,IAAI,EAAE,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,YAC1I,KAAK,GACH,EACJ,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,YAAE,IAAI,CAAC,KAAK,GAAS,EAC7C,eAAM,SAAS,EAAC,+BAA+B,YAAE,WAAW,CAAC,IAAI,CAAC,GAAQ,EACzE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CACvB,0BAAe,oBAAoB,KAAK,EAAE,EAAE,SAAS,EAAC,mBAAmB,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,0BAEtF,CACJ,IACG,CACL,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { FleetHealth } from "#diagnostics/health.ts";
|
|
2
|
-
export declare function SystemHealth({ value, now }: {
|
|
2
|
+
export declare function SystemHealth({ value, now, needsYou, }: {
|
|
3
3
|
readonly value: FleetHealth;
|
|
4
4
|
readonly now: number;
|
|
5
|
+
readonly needsYou?: number | null | undefined;
|
|
5
6
|
}): import("react").JSX.Element;
|
|
6
7
|
//# sourceMappingURL=SystemHealth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemHealth.d.ts","sourceRoot":"","sources":["../../../src/client/react/SystemHealth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"SystemHealth.d.ts","sourceRoot":"","sources":["../../../src/client/react/SystemHealth.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK1D,wBAAgB,YAAY,CAAC,EAC5B,KAAK,EACL,GAAG,EACH,QAAQ,GACR,EAAE;IACF,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC9C,+BA0DA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ObservedTime } from "./diagnosticsValues.js";
|
|
3
|
-
|
|
3
|
+
const waitingOn = { automation: "Waiting on Fleet agents", orchestrator: "Waiting on the orchestrator" };
|
|
4
|
+
export function SystemHealth({ value, now, needsYou, }) {
|
|
4
5
|
let freshness = "Current snapshot";
|
|
5
6
|
if (now < value.observedAt) {
|
|
6
7
|
freshness = "Publisher clock is ahead";
|
|
@@ -8,7 +9,7 @@ export function SystemHealth({ value, now }) {
|
|
|
8
9
|
else if (now - value.observedAt > value.staleAfterMs) {
|
|
9
10
|
freshness = "Stale snapshot — Fleet has not refreshed its health";
|
|
10
11
|
}
|
|
11
|
-
return (_jsxs(_Fragment, { children: [_jsx("p", { className: "text-muted-foreground text-xs", children: freshness }), _jsxs("dl", { className: "grid gap-4 text-sm [&_dt]:text-muted-foreground", children: [_jsxs("div", { children: [_jsx("dt", { children: "Running / concurrency cap" }), _jsx("dd", { children: _jsxs("strong", { children: [value.running, " / ", value.concurrency] }) })] }), _jsxs("div", { children: [_jsx("dt", { children: "Queued" }), _jsx("dd", { children: _jsx("strong", { children: value.queued }) })] }),
|
|
12
|
+
return (_jsxs(_Fragment, { children: [_jsx("p", { className: "text-muted-foreground text-xs", children: freshness }), _jsxs("dl", { className: "grid gap-4 text-sm [&_dt]:text-muted-foreground", children: [_jsxs("div", { children: [_jsx("dt", { children: "Running / concurrency cap" }), _jsx("dd", { children: _jsxs("strong", { children: [value.running, " / ", value.concurrency] }) })] }), _jsxs("div", { children: [_jsx("dt", { children: "Queued" }), _jsx("dd", { children: _jsx("strong", { children: value.queued }) })] }), _jsxs("div", { "data-needs-you": true, children: [_jsx("dt", { children: "Needs you" }), _jsxs("dd", { className: "flex flex-wrap items-baseline gap-2", children: [_jsx("strong", { children: needsYou ?? "Unavailable" }), _jsx("a", { className: "text-xs", href: "/#needs-you", children: "Open Today" })] })] }), ["orchestrator", "automation"].map((owner) => (_jsxs("div", { children: [_jsx("dt", { children: waitingOn[owner] }), _jsx("dd", { children: _jsx("strong", { children: value.waiting[owner] }) })] }, owner))), _jsxs("div", { children: [_jsx("dt", { children: "Last scheduler pass" }), _jsx("dd", { children: _jsx(ObservedTime, { at: value.lastSchedulerPass }) })] }), _jsxs("div", { children: [_jsx("dt", { children: "Last provider capacity rejection" }), _jsx("dd", { children: _jsx(CapacityRejection, { value: value.lastCapacityRejection }) })] })] })] }));
|
|
12
13
|
}
|
|
13
14
|
function CapacityRejection({ value }) {
|
|
14
15
|
return value === null ? ("None observed") : (_jsxs(_Fragment, { children: [value.cause, _jsx("br", {}), _jsx(ObservedTime, { at: value.at })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemHealth.js","sourceRoot":"","sources":["../../../src/client/react/SystemHealth.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"SystemHealth.js","sourceRoot":"","sources":["../../../src/client/react/SystemHealth.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAyB,CAAC;AAEvD,MAAM,SAAS,GAAG,EAAE,UAAU,EAAE,yBAAyB,EAAE,YAAY,EAAE,6BAA6B,EAAW,CAAC;AAElH,MAAM,UAAU,YAAY,CAAC,EAC5B,KAAK,EACL,GAAG,EACH,QAAQ,GAKR;IACA,IAAI,SAAS,GAAG,kBAAkB,CAAC;IACnC,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAC5B,SAAS,GAAG,0BAA0B,CAAC;IACxC,CAAC;SAAM,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACxD,SAAS,GAAG,qDAAqD,CAAC;IACnE,CAAC;IAED,OAAO,CACN,8BACC,YAAG,SAAS,EAAC,+BAA+B,YAAE,SAAS,GAAK,EAC5D,cAAI,SAAS,EAAC,iDAAiD,aAC9D,0BACC,qDAAkC,EAClC,uBACC,6BACE,KAAK,CAAC,OAAO,SAAK,KAAK,CAAC,WAAW,IAC5B,GACL,IACA,EACN,0BACC,kCAAe,EACf,uBACC,2BAAS,KAAK,CAAC,MAAM,GAAU,GAC3B,IACA,EACN,kDACC,qCAAkB,EAClB,cAAI,SAAS,EAAC,qCAAqC,aAClD,2BAAS,QAAQ,IAAI,aAAa,GAAU,EAC5C,YAAG,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,aAAa,2BAErC,IACA,IACA,EACJ,CAAC,cAAc,EAAE,YAAY,CAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACzD,0BACC,uBAAK,SAAS,CAAC,KAAK,CAAC,GAAM,EAC3B,uBACC,2BAAS,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAU,GACnC,KAJI,KAAK,CAKT,CACN,CAAC,EACF,0BACC,+CAA4B,EAC5B,uBACC,KAAC,YAAY,IAAC,EAAE,EAAE,KAAK,CAAC,iBAAiB,GAAI,GACzC,IACA,EACN,0BACC,4DAAyC,EACzC,uBACC,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,CAAC,qBAAqB,GAAI,GACrD,IACA,IACF,IACH,CACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,KAAK,EAA4D;IAC7F,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CACvB,eAAe,CACf,CAAC,CAAC,CAAC,CACH,8BACE,KAAK,CAAC,KAAK,EACZ,cAAM,EACN,KAAC,YAAY,IAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAI,IAC5B,CACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemMain.d.ts","sourceRoot":"","sources":["../../../src/client/react/SystemMain.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SystemMain.d.ts","sourceRoot":"","sources":["../../../src/client/react/SystemMain.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,wBAAgB,UAAU,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,GAAG,GACH,EAAE;IACF,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACrB,+BAeA"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Option } from "effect";
|
|
2
3
|
import { useContext } from "react";
|
|
3
|
-
import {
|
|
4
|
+
import { useQuery } from "@shivaedev/effect-react/client/resultState.ts";
|
|
4
5
|
import { ProjectionFrame } from "./ProjectionFrame.js";
|
|
6
|
+
import { navigationQuery, routeQueryOptions } from "./routeQuery.js";
|
|
5
7
|
import { SessionContext } from "./SessionContext.js";
|
|
6
8
|
import { SystemPage } from "./SystemPage.js";
|
|
7
9
|
import { useDiagnosticsPolling } from "./useDiagnosticsPolling.js";
|
|
8
10
|
export function SystemMain({ api, onPage, url, }) {
|
|
9
11
|
const atom = api.diagnostics.query(undefined, routeQueryOptions);
|
|
10
12
|
useDiagnosticsPolling(useContext(SessionContext), atom, api.fleetItems.query(undefined, routeQueryOptions));
|
|
11
|
-
|
|
13
|
+
const navigation = useQuery(navigationQuery(api), { keepPreviousData: true });
|
|
14
|
+
const needsYou = Option.getOrUndefined(navigation.data)?.inboxCount;
|
|
15
|
+
return (_jsx(ProjectionFrame, { atom: atom, location: () => ({ file: "System", status: 200, view: "system" }), onPage: onPage, render: (data) => _jsx(SystemPage, { data: data, needsYou: needsYou }), route: "system", url: url }));
|
|
12
16
|
}
|
|
13
17
|
//# sourceMappingURL=SystemMain.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemMain.js","sourceRoot":"","sources":["../../../src/client/react/SystemMain.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SystemMain.js","sourceRoot":"","sources":["../../../src/client/react/SystemMain.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,UAAU,UAAU,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,GAAG,GAKH;IACA,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACjE,qBAAqB,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC5G,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IACpE,OAAO,CACN,KAAC,eAAe,IACf,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EACjE,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAChE,KAAK,EAAC,QAAQ,EACd,GAAG,EAAE,GAAG,GACP,CACF,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DiagnosticsProjection } from "#browser/views/remaining.ts";
|
|
2
|
-
export declare function SystemPage({ data: { sources: data, now } }: {
|
|
2
|
+
export declare function SystemPage({ data: { sources: data, now }, needsYou, }: {
|
|
3
3
|
readonly data: DiagnosticsProjection;
|
|
4
|
+
readonly needsYou?: number | null | undefined;
|
|
4
5
|
}): import("react").JSX.Element;
|
|
5
6
|
//# sourceMappingURL=SystemPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemPage.d.ts","sourceRoot":"","sources":["../../../src/client/react/SystemPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAOzE,wBAAgB,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"SystemPage.d.ts","sourceRoot":"","sources":["../../../src/client/react/SystemPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAOzE,wBAAgB,UAAU,CAAC,EAC1B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAC5B,QAAQ,GACR,EAAE;IACF,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC9C,+BAuCA"}
|
|
@@ -6,14 +6,14 @@ import { FleetItemsContext } from "./FleetItemsContext.js";
|
|
|
6
6
|
import { githubLimited } from "./githubLimited.js";
|
|
7
7
|
import { SystemFleetLane } from "./SystemFleetLane.js";
|
|
8
8
|
import { SystemHealth } from "./SystemHealth.js";
|
|
9
|
-
export function SystemPage({ data: { sources: data, now } }) {
|
|
9
|
+
export function SystemPage({ data: { sources: data, now }, needsYou, }) {
|
|
10
10
|
const items = useContext(FleetItemsContext);
|
|
11
11
|
const fleet = data.fleet.state === "ready" ? { ...data.fleet, observedAt: data.fleet.value.observedAt } : data.fleet;
|
|
12
12
|
return (_jsxs("div", { className: "space-y-6", children: [_jsx("h1", { className: "font-semibold text-2xl", children: "System" }), _jsx("p", { children: "Agent usage and Fleet health. Refreshes every 15 seconds while this view is visible; Pause updates holds the current view." }), _jsxs("div", { className: "grid gap-4 lg:grid-cols-2", children: [_jsx(Card, { attention: data.codex.state === "ready"
|
|
13
13
|
&& [data.codex.value.primary, data.codex.value.secondary].some((window) => window !== null && window.usedPercent >= 90), name: "Codex", render: (value) => _jsx(DiagnosticsWindows, { now: now, value: value }), source: data.codex }), _jsx(Card, { attention: data.github.state === "ready" && data.github.value.some((window) => githubLimited(window, now)), name: "GitHub", render: (value) => _jsx(DiagnosticsGithub, { now: now, value: value }), source: data.github }), _jsx(Card, { attention: fleet.state === "ready"
|
|
14
14
|
&& (fleet.value.running >= fleet.value.concurrency
|
|
15
15
|
|| Object.values(fleet.value.waiting).some((count) => count > 0)
|
|
16
|
-
|| now < fleet.value.observedAt), name: "Fleet", render: (value) => _jsx(SystemHealth, { now: now, value: value }), source: fleet, stale: fleet.state === "ready" && now - fleet.value.observedAt > fleet.value.staleAfterMs })] }), _jsx(SystemFleetLane, { data: items })] }));
|
|
16
|
+
|| now < fleet.value.observedAt), name: "Fleet", render: (value) => _jsx(SystemHealth, { needsYou: needsYou, now: now, value: value }), source: fleet, stale: fleet.state === "ready" && now - fleet.value.observedAt > fleet.value.staleAfterMs })] }), _jsx(SystemFleetLane, { data: items })] }));
|
|
17
17
|
}
|
|
18
18
|
function Card({ name, source, attention, stale, render, }) {
|
|
19
19
|
let state = source.state;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemPage.js","sourceRoot":"","sources":["../../../src/client/react/SystemPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,wBAAyB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAClD,MAAM,UAAU,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"SystemPage.js","sourceRoot":"","sources":["../../../src/client/react/SystemPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { InboxProjection } from "#browser/views/schema.ts";
|
|
2
2
|
import type { ShellApi } from "./ShellApi.ts";
|
|
3
|
+
type Item = InboxProjection["you"][number];
|
|
3
4
|
export declare function TodayNeeds({ api, data }: {
|
|
4
5
|
readonly api: ShellApi;
|
|
5
6
|
readonly data: InboxProjection;
|
|
6
7
|
}): import("react").JSX.Element;
|
|
8
|
+
export declare function TodayLater({ items }: {
|
|
9
|
+
readonly items: readonly Item[];
|
|
10
|
+
}): import("react").JSX.Element;
|
|
11
|
+
export {};
|
|
7
12
|
//# sourceMappingURL=TodayNeeds.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TodayNeeds.d.ts","sourceRoot":"","sources":["../../../src/client/react/TodayNeeds.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TodayNeeds.d.ts","sourceRoot":"","sources":["../../../src/client/react/TodayNeeds.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,KAAK,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3C,wBAAgB,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,+BAiBnG;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,+BAUxE"}
|
|
@@ -6,9 +6,12 @@ export function TodayNeeds({ api, data }) {
|
|
|
6
6
|
if (!data.complete) {
|
|
7
7
|
return _jsx("p", { role: "status", children: "Workspace incomplete. Needs-you membership and counts are unavailable." });
|
|
8
8
|
}
|
|
9
|
-
return data.you.length > 0 ? (_jsx("ul", { "aria-label": "Needs you", className: "m-0 list-none divide-y rounded-lg border border-border p-0", children: data.you.map((item) => (_jsx("li", { className: "h-12 max-h-12", "data-attention-id": item.id, children: _jsx(TodayRow, { api: api, item: item }) }, `${item.file}:${item.href}`))) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: "All quiet \u2014 nothing needs you." }));
|
|
9
|
+
return data.you.length > 0 ? (_jsx("ul", { "aria-label": "Needs you", className: "m-0 list-none divide-y rounded-lg border border-border p-0", children: data.you.map((item) => (_jsx("li", { className: "h-12 max-h-12", "data-attention-id": item.id, children: _jsx(TodayRow, { item: item, status: "needs-you", children: _jsx(TodayOptions, { api: api, item: item }) }) }, `${item.file}:${item.href}`))) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: "All quiet \u2014 nothing needs you." }));
|
|
10
10
|
}
|
|
11
|
-
function
|
|
12
|
-
return (
|
|
11
|
+
export function TodayLater({ items }) {
|
|
12
|
+
return (_jsx("ul", { "aria-label": "Later", className: "m-0 list-none divide-y rounded-lg border border-border p-0", children: items.map((item) => (_jsx("li", { className: "h-12 max-h-12", children: _jsx(TodayRow, { item: item, status: "deferred" }) }, item.file))) }));
|
|
13
|
+
}
|
|
14
|
+
function TodayRow({ children, item, status }) {
|
|
15
|
+
return (_jsxs("div", { className: "today-row flex h-full min-w-0 items-center gap-2 px-2", "data-attention-row": status === "needs-you" ? "" : undefined, children: [_jsx(StatusChip, { "aria-label": status === "needs-you" ? "Needs you" : "Deferred", className: "shrink-0 max-sm:size-6 max-sm:justify-center max-sm:gap-0 max-sm:px-1 max-sm:text-[0px] max-sm:[&_svg]:shrink-0", status: status }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex min-w-0 items-baseline gap-2", children: [_jsx("a", { className: "truncate font-medium text-sm", href: item.href, title: item.title, children: item.title }), _jsx("span", { className: "shrink-0 font-mono text-[10px] text-muted-foreground max-sm:hidden", children: item.id })] }), _jsxs("p", { className: "m-0 truncate text-muted-foreground text-xs", title: item.problem ?? item.reason, children: [_jsx("span", { className: "inline-block max-w-24 truncate align-bottom font-mono text-[10px] sm:hidden", title: item.id, children: item.id }), _jsx("span", { className: "sm:hidden", children: " \u00B7 " }), item.problem ?? item.reason] })] }), _jsx("span", { className: "shrink-0 text-[10px] text-muted-foreground tabular-nums", children: item.modified === undefined ? "Age ?" : _jsx(Age, { modified: item.modified, short: true }) }), children] }));
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=TodayNeeds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TodayNeeds.js","sourceRoot":"","sources":["../../../src/client/react/TodayNeeds.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TodayNeeds.js","sourceRoot":"","sources":["../../../src/client/react/TodayNeeds.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAW,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAoB,CAAC;AAGlD,MAAM,UAAU,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAA8D;IACnG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,YAAG,IAAI,EAAC,QAAQ,uFAA2E,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC5B,2BAAe,WAAW,EAAC,SAAS,EAAC,4DAA4D,YAC/F,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACvB,aAAI,SAAS,EAAC,eAAe,uBAAoB,IAAI,CAAC,EAAE,YACvD,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,WAAW,YACvC,KAAC,YAAY,IAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,GAAI,GAC5B,IAHmD,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAIrF,CACL,CAAC,GACE,CACL,CAAC,CAAC,CAAC,CACH,YAAG,SAAS,EAAC,+BAA+B,oDAAmC,CAC/E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAuC;IACxE,OAAO,CACN,2BAAe,OAAO,EAAC,SAAS,EAAC,4DAA4D,YAC3F,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACpB,aAAI,SAAS,EAAC,eAAe,YAC5B,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,UAAU,GAAG,IADR,IAAI,CAAC,IAAI,CAEvC,CACL,CAAC,GACE,CACL,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAqG;IAC9I,OAAO,CACN,eAAK,SAAS,EAAC,uDAAuD,wBAAqB,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,aACjI,KAAC,UAAU,kBACE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAC7D,SAAS,EAAC,iHAAiH,EAC3H,MAAM,EAAE,MAAM,GACb,EACF,eAAK,SAAS,EAAC,gBAAgB,aAC9B,eAAK,SAAS,EAAC,mCAAmC,aACjD,YAAG,SAAS,EAAC,8BAA8B,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,YAC5E,IAAI,CAAC,KAAK,GACR,EACJ,eAAM,SAAS,EAAC,oEAAoE,YAAE,IAAI,CAAC,EAAE,GAAQ,IAChG,EACN,aAAG,SAAS,EAAC,4CAA4C,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,aAC3F,eAAM,SAAS,EAAC,6EAA6E,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,YAC1G,IAAI,CAAC,EAAE,GACF,EACP,eAAM,SAAS,EAAC,WAAW,yBAAW,EACrC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IACzB,IACC,EACN,eAAM,SAAS,EAAC,yDAAyD,YACvE,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,GAAG,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAG,GACzE,EACN,QAAQ,IACJ,CACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function TodayOptionButton({ disabled, onChoose, option, recommended, source, }: {
|
|
2
|
+
readonly disabled: boolean;
|
|
3
|
+
readonly onChoose: () => void;
|
|
4
|
+
readonly option: {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly source: string;
|
|
7
|
+
};
|
|
8
|
+
readonly recommended: string | undefined;
|
|
9
|
+
readonly source: {
|
|
10
|
+
readonly label: string;
|
|
11
|
+
readonly description: string;
|
|
12
|
+
} | undefined;
|
|
13
|
+
}): import("react").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=TodayOptionButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TodayOptionButton.d.ts","sourceRoot":"","sources":["../../../src/client/react/TodayOptionButton.tsx"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,MAAM,GACN,EAAE;IACF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACtF,+BAmBA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { optionText } from "#browser/responses/cardContext.ts";
|
|
3
|
+
import { Button } from "#client/react/components/ui/Button.tsx";
|
|
4
|
+
export function TodayOptionButton({ disabled, onChoose, option, recommended, source, }) {
|
|
5
|
+
const authored = optionText(option.id, option.source);
|
|
6
|
+
const text = source?.label ?? authored.label;
|
|
7
|
+
const description = source?.description ?? authored.description;
|
|
8
|
+
return (_jsxs(Button, { className: "h-auto w-full flex-col items-start gap-0.5 whitespace-normal px-3 py-2 text-left", disabled: disabled, onClick: onChoose, size: "sm", variant: "outline", children: [_jsxs("span", { children: [text, recommended === text ? " · Recommended" : null] }), description ? _jsx("span", { className: "font-normal text-muted-foreground text-xs", children: description }) : null] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=TodayOptionButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TodayOptionButton.js","sourceRoot":"","sources":["../../../src/client/react/TodayOptionButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;AAEhE,MAAM,UAAU,iBAAiB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,MAAM,GAON;IACA,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;IAChE,OAAO,CACN,MAAC,MAAM,IACN,SAAS,EAAC,kFAAkF,EAC5F,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,aAEjB,2BACE,IAAI,EACJ,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,IACzC,EACN,WAAW,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,2CAA2C,YAAE,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC9F,CACT,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TodayOptions.d.ts","sourceRoot":"","sources":["../../../src/client/react/TodayOptions.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TodayOptions.d.ts","sourceRoot":"","sources":["../../../src/client/react/TodayOptions.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAUhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,+BAsBpH"}
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { RegistryContext } from "@effect/atom-react";
|
|
3
3
|
import { Cause, Effect, Option } from "effect";
|
|
4
|
-
import { useContext, useMemo, useState } from "react";
|
|
5
|
-
import { useAction, useQuery } from "@shivaedev/effect-react/
|
|
4
|
+
import { useContext, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { useAction, useQuery } from "@shivaedev/effect-react/client/resultState.ts";
|
|
6
6
|
import { answerBody } from "#browser/responses/answerBody.ts";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { Button } from "#client/react/components/ui/Button.tsx";
|
|
7
|
+
import { promptHeading } from "#browser/responses/cardContext.ts";
|
|
8
|
+
import { reasonMarkdown } from "#browser/responses/reasonMarkdown.ts";
|
|
10
9
|
import { Popover } from "#client/react/components/ui/Popover.tsx";
|
|
11
10
|
import { authorLabel } from "#client/responses/authorLabel.ts";
|
|
11
|
+
import { chosenLabels } from "#client/responses/summary.ts";
|
|
12
12
|
import { saveFailure } from "#client/saveFailure.ts";
|
|
13
13
|
import { fileUrl } from "#files/url.ts";
|
|
14
14
|
import { responseUrl } from "#responses/url.ts";
|
|
15
15
|
import { createResponse } from "./createResponse.js";
|
|
16
16
|
import { useFormClient } from "./FormContext.js";
|
|
17
|
+
import { documentQuery, navigationQuery, routeQueryOptions } from "./routeQuery.js";
|
|
18
|
+
import { TodayOptionButton } from "./TodayOptionButton.js";
|
|
17
19
|
export function TodayOptions({ api, item }) {
|
|
18
20
|
const query = useQuery(documentQuery(api, fileUrl(item.file)), { keepPreviousData: true });
|
|
19
21
|
const data = Option.getOrUndefined(query.data);
|
|
@@ -24,16 +26,18 @@ export function TodayOptions({ api, item }) {
|
|
|
24
26
|
&& !request.unavailable
|
|
25
27
|
&& !request.promptUnavailable
|
|
26
28
|
&& request.prompts?.length === 1
|
|
27
|
-
&& request.prompts[0]?.mode === "one" ? (_jsxs(Popover, { label: `Answer ${item.title}`, trigger: "Answer", triggerClassName: "h-8 w-auto px-1 text-xs", children: [_jsx("a", { className: "
|
|
29
|
+
&& request.prompts[0]?.mode === "one" ? (_jsxs(Popover, { className: "w-80", label: `Answer ${item.title}`, trigger: "Answer", triggerClassName: "h-8 w-auto px-1 text-xs", children: [_jsx(InlineOptions, { api: api, document: data, request: request }, request.preview.reviewedRevision), _jsx("a", { className: "mt-3 block border-t px-2 pt-2 text-muted-foreground text-xs hover:text-foreground", href: item.href, children: "Open the full question with its context \u2192" })] })) : (_jsx("a", { "aria-label": `Answer ${item.title}`, className: "shrink-0 text-xs", href: item.href, children: "Answer" }));
|
|
28
30
|
}
|
|
29
31
|
function InlineOptions({ api, document: data, request }) {
|
|
30
32
|
const registry = useContext(RegistryContext);
|
|
33
|
+
const requestRef = useRef(request);
|
|
34
|
+
requestRef.current = request;
|
|
31
35
|
const client = useFormClient();
|
|
32
36
|
const [label] = useState(() => authorLabel(() => localStorage, document.documentElement.dataset.workspace));
|
|
33
37
|
const [author, setAuthor] = useState(() => label.read("") || "maintainer");
|
|
34
38
|
const actionAtom = useMemo(() => client.runtime.fn(Effect.fn("Board.answerOption")(function* (choice) {
|
|
35
|
-
const preview =
|
|
36
|
-
const prompt =
|
|
39
|
+
const preview = requestRef.current.preview;
|
|
40
|
+
const prompt = requestRef.current.prompts?.[0];
|
|
37
41
|
if (!(preview && prompt && author.trim())) {
|
|
38
42
|
return yield* Effect.fail("Add your local author label.");
|
|
39
43
|
}
|
|
@@ -53,11 +57,13 @@ function InlineOptions({ api, document: data, request }) {
|
|
|
53
57
|
registry.refresh(navigationQuery(api));
|
|
54
58
|
registry.refresh(documentQuery(api, fileUrl(data.file)));
|
|
55
59
|
return saved;
|
|
56
|
-
})), [client, api, registry,
|
|
60
|
+
})), [client, api, registry, author, data.file, label.save]);
|
|
57
61
|
const action = useAction(actionAtom);
|
|
58
62
|
const failure = Option.getOrUndefined(Option.flatMap(action.cause, Cause.findErrorOption));
|
|
59
63
|
const saved = Option.getOrUndefined(action.data);
|
|
60
|
-
let status = saved
|
|
64
|
+
let status = saved
|
|
65
|
+
? `Saved: your answer “${chosenLabels(request.prompts ?? [], saved.answers)}” is recorded. The agent reads it the next time it checks.`
|
|
66
|
+
: "";
|
|
61
67
|
if (failure) {
|
|
62
68
|
status = typeof failure === "string" ? failure : saveFailure(failure, "response").text;
|
|
63
69
|
}
|
|
@@ -65,9 +71,7 @@ function InlineOptions({ api, document: data, request }) {
|
|
|
65
71
|
status = "Pending: registering reviewed context, then recording response…";
|
|
66
72
|
}
|
|
67
73
|
const prompt = request.prompts?.[0];
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return (_jsxs(Button, { disabled: !(data.writable && author.trim()) || action.pending || Boolean(saved), onClick: () => action.dispatch(option.id), size: "sm", variant: "outline", children: [text, data.metadata.recommended === text && " · Recommended"] }, option.id));
|
|
71
|
-
}) }), _jsxs("details", { className: "text-muted-foreground text-xs", children: [_jsxs("summary", { className: "cursor-pointer", children: ["Answer as ", author || "…"] }), _jsxs("label", { children: ["Local author label", " ", _jsx("input", { className: "rounded border px-2 py-1", maxLength: 200, onChange: (event) => setAuthor(event.currentTarget.value), value: author })] })] }), !data.writable && _jsx("p", { className: "m-0 text-muted-foreground text-xs", children: "Read-only. Enable responses to record an answer." }), Boolean(status) && (_jsx("p", { className: "m-0 text-xs", role: "status", children: status }))] }));
|
|
74
|
+
const reason = reasonMarkdown(request.preview?.reason ?? "").split("\n")[0];
|
|
75
|
+
return (_jsxs("fieldset", { "aria-label": `Options for ${data.identity}`, className: "m-0 min-w-0 space-y-3 border-0 px-2 pb-1", children: [Boolean(reason) && _jsx("p", { className: "m-0 font-medium text-sm", children: reason }), prompt ? _jsx("p", { className: "m-0 text-muted-foreground text-xs", children: promptHeading(prompt.source).title ?? "Choose one option." }) : null, _jsx("div", { className: "grid gap-2", children: prompt?.options.map((option, index) => (_jsx(TodayOptionButton, { disabled: !(data.writable && author.trim()) || action.pending || Boolean(saved), onChoose: () => action.dispatch(option.id), option: option, recommended: data.metadata.recommended, source: data.metadata.options?.[index] }, option.id))) }), _jsxs("details", { className: "text-muted-foreground text-xs", children: [_jsxs("summary", { className: "cursor-pointer", children: ["Answer as ", author || "…"] }), _jsxs("label", { className: "mt-2 flex items-center gap-2", children: ["Local author label", " ", _jsx("input", { className: "rounded border bg-background px-2 py-1", maxLength: 200, onChange: (event) => setAuthor(event.currentTarget.value), value: author })] })] }), !data.writable && _jsx("p", { className: "m-0 text-muted-foreground text-xs", children: "This Board is read-only. Start it with --responses to record answers." }), Boolean(status) && (_jsx("p", { className: "m-0 text-xs", role: "status", children: status }))] }));
|
|
72
76
|
}
|
|
73
77
|
//# sourceMappingURL=TodayOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TodayOptions.js","sourceRoot":"","sources":["../../../src/client/react/TodayOptions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TodayOptions.js","sourceRoot":"","sources":["../../../src/client/react/TodayOptions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAyB,CAAC;AAE5D,MAAM,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,EAA6E;IACpH,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1H,OAAO,IAAI;WACP,CAAC,IAAI,CAAC,OAAO;WACb,OAAO,EAAE,OAAO;WAChB,CAAC,OAAO,CAAC,WAAW;WACpB,CAAC,OAAO,CAAC,iBAAiB;WAC1B,OAAO,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC;WAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CACxC,MAAC,OAAO,IAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAC,QAAQ,EAAC,gBAAgB,EAAC,yBAAyB,aACnH,KAAC,aAAa,IAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAyC,OAAO,EAAE,OAAO,IAAlD,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAsB,EACpG,YAAG,SAAS,EAAC,mFAAmF,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,+DAE5G,IACK,CACV,CAAC,CAAC,CAAC,CACH,0BAAe,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,uBAE/E,CACJ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAA8F;IAClJ,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5G,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,OAAO,CACzB,GAAG,EAAE,CACJ,MAAM,CAAC,OAAO,CAAC,EAAE,CAChB,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAc;QACxD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG;YAClB,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,IAAI,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YACvC,EAAE,EAAE,YAAY,MAAM,CAAC,UAAU,EAAE,EAAE;YACrC,QAAQ,EAAE,OAAO,CAAC,EAAE;YACpB,QAAQ,EAAE,OAAO,CAAC,gBAAgB;YAClC,IAAI,EAAE,QAAiB;SACvB,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAChE,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CACF,EACF,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CACtD,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,MAAM,GAAG,KAAK;QACjB,CAAC,CAAC,uBAAuB,YAAY,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,4DAA4D;QACvI,CAAC,CAAC,EAAE,CAAC;IACN,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC;IACxF,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,GAAG,iEAAiE,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,CACN,kCAAsB,eAAe,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAC,0CAA0C,aACxG,OAAO,CAAC,MAAM,CAAC,IAAI,YAAG,SAAS,EAAC,yBAAyB,YAAE,MAAM,GAAK,EACtE,MAAM,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,mCAAmC,YAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,oBAAoB,GAAK,CAAC,CAAC,CAAC,IAAI,EAClI,cAAK,SAAS,EAAC,YAAY,YACzB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACvC,KAAC,iBAAiB,IACjB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,EAE/E,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAC1C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EACtC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAJjC,MAAM,CAAC,EAAE,CAKb,CACF,CAAC,GACG,EACN,mBAAS,SAAS,EAAC,+BAA+B,aACjD,mBAAS,SAAS,EAAC,gBAAgB,2BAAY,MAAM,IAAI,GAAG,IAAW,EACvE,iBAAO,SAAS,EAAC,8BAA8B,mCAC3B,GAAG,EACtB,gBACC,SAAS,EAAC,wCAAwC,EAClD,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EACzD,KAAK,EAAE,MAAM,GACZ,IACK,IACC,EACT,CAAC,IAAI,CAAC,QAAQ,IAAI,YAAG,SAAS,EAAC,mCAAmC,sFAA0E,EAC5I,OAAO,CAAC,MAAM,CAAC,IAAI,CACnB,YAAG,SAAS,EAAC,aAAa,EAAC,IAAI,EAAC,QAAQ,YACtC,MAAM,GACJ,CACJ,IACS,CACX,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TodayPage.d.ts","sourceRoot":"","sources":["../../../src/client/react/TodayPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C,wBAAgB,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,+
|
|
1
|
+
{"version":3,"file":"TodayPage.d.ts","sourceRoot":"","sources":["../../../src/client/react/TodayPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C,wBAAgB,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,+BA0ClG"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Option } from "effect";
|
|
3
|
-
import { useQuery } from "@shivaedev/effect-react/
|
|
4
|
-
import { navigationQuery, routeQueryOptions } from "#client/page/routeQuery.ts";
|
|
3
|
+
import { useQuery } from "@shivaedev/effect-react/client/resultState.ts";
|
|
5
4
|
import { fileUrl } from "#files/url.ts";
|
|
6
5
|
import { inProgressItems } from "./inProgressItems.js";
|
|
6
|
+
import { navigationQuery, routeQueryOptions } from "./routeQuery.js";
|
|
7
7
|
import { TodayGoals } from "./TodayGoals.js";
|
|
8
|
-
import { TodayNeeds } from "./TodayNeeds.js";
|
|
8
|
+
import { TodayLater, TodayNeeds } from "./TodayNeeds.js";
|
|
9
9
|
import { TodayProgress } from "./TodayProgress.js";
|
|
10
|
-
const todayIds = { goals: "today-goals", needs: "needs-you", progress: "in-progress" };
|
|
10
|
+
const todayIds = { goals: "today-goals", later: "later", needs: "needs-you", progress: "in-progress" };
|
|
11
11
|
export function TodayPage({ api, data }) {
|
|
12
12
|
const query = useQuery(api.goals.query(undefined, routeQueryOptions), { keepPreviousData: true });
|
|
13
13
|
const goals = Option.getOrUndefined(query.data);
|
|
@@ -16,9 +16,24 @@ export function TodayPage({ api, data }) {
|
|
|
16
16
|
const progress = inProgressItems(fleet);
|
|
17
17
|
const navigation = useQuery(navigationQuery(api), { keepPreviousData: true });
|
|
18
18
|
const home = Option.getOrUndefined(navigation.data)?.home;
|
|
19
|
-
return (_jsxs("div", { className: "today-page min-w-0 space-y-3 md:space-y-6", children: [_jsxs("header", { className: "flex items-center justify-between gap-3", children: [_jsx("h1", { className: "m-0 font-semibold text-2xl", children: "Today" }), home !== undefined && (_jsx("a", { className: "text-sm", href: fileUrl(home.file), children: "Workspace notes" }))] }), _jsxs("nav", { "aria-label": "Today summary", className: "today-strip flex items-center gap-1 whitespace-nowrap text-xs tabular-nums sm:gap-2 sm:text-sm", children: [
|
|
19
|
+
return (_jsxs("div", { className: "today-page min-w-0 space-y-3 md:space-y-6", children: [_jsxs("header", { className: "flex items-center justify-between gap-3", children: [_jsx("h1", { className: "m-0 font-semibold text-2xl", children: "Today" }), home !== undefined && (_jsx("a", { className: "text-sm", href: fileUrl(home.file), children: "Workspace notes" }))] }), _jsxs("nav", { "aria-label": "Today summary", className: "today-strip flex items-center gap-1 whitespace-nowrap text-xs tabular-nums sm:gap-2 sm:text-sm", children: [_jsx("a", { href: `#${todayIds.needs}`, children: data.complete ? `${data.you.length} need you` : "Needs you unavailable" }), _jsx("span", { "aria-hidden": "true", children: "\u00B7" }), _jsx("a", { href: `#${todayIds.progress}`, children: progressSummary(progress?.length, fleet?.state === "unavailable" || Option.isSome(fleetQuery.cause)) }), _jsx("span", { "aria-hidden": "true", children: "\u00B7" }), _jsx("a", { href: `#${todayIds.goals}`, children: goalsSummary(goals?.goals.length, Option.isSome(query.cause)) })] }), _jsxs("div", { className: "today-grid grid min-w-0 gap-6 xl:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]", children: [_jsxs("div", { className: "min-w-0 space-y-6", children: [_jsx(NeedsYou, { api: api, data: data }), _jsxs("section", { className: "min-w-0", id: todayIds.progress, children: [_jsx("h2", { className: "mt-0 mb-3 font-semibold text-lg", children: "In progress" }), _jsx(TodayProgress, { data: fleet, failed: Option.isSome(fleetQuery.cause) })] }), data.complete && data.later.length > 0 && _jsx(Later, { items: data.later })] }), _jsxs("section", { className: "min-w-0", id: todayIds.goals, children: [_jsx("h2", { className: "mt-0 mb-3 font-semibold text-lg", children: "Goals" }), goals ? _jsx(TodayGoals, { data: goals }) : _jsx("p", { role: "status", children: Option.isSome(query.cause) ? "Goals unavailable." : "Loading goals…" }), goals && Option.isSome(query.cause) && _jsx("p", { role: "status", children: "Goal refresh failed. Displayed goals are retained." })] })] })] }));
|
|
20
20
|
}
|
|
21
21
|
function NeedsYou({ api, data }) {
|
|
22
22
|
return (_jsxs("section", { className: "min-w-0", id: todayIds.needs, children: [_jsx("h2", { className: "mt-0 mb-3 font-semibold text-lg", children: "Needs you" }), _jsx(TodayNeeds, { api: api, data: data }), data.complete && data.you.length === 0 && (_jsx("a", { className: "text-sm", href: "/_board/start", children: "Getting started" }))] }));
|
|
23
23
|
}
|
|
24
|
+
function Later({ items }) {
|
|
25
|
+
return (_jsx("section", { className: "min-w-0", id: todayIds.later, children: _jsxs("details", { children: [_jsxs("summary", { className: "mb-3 cursor-pointer", children: [_jsx("h2", { className: "m-0 inline font-semibold text-lg", children: "Later" }), _jsx("span", { className: "ml-2 text-muted-foreground text-sm tabular-nums", children: items.length })] }), _jsx(TodayLater, { items: items })] }) }));
|
|
26
|
+
}
|
|
27
|
+
function progressSummary(count, unavailable) {
|
|
28
|
+
if (count !== undefined) {
|
|
29
|
+
return `${count} in progress`;
|
|
30
|
+
}
|
|
31
|
+
return unavailable ? "Fleet unavailable" : "Loading Fleet…";
|
|
32
|
+
}
|
|
33
|
+
function goalsSummary(count, failed) {
|
|
34
|
+
if (count !== undefined) {
|
|
35
|
+
return `${count} active goals`;
|
|
36
|
+
}
|
|
37
|
+
return failed ? "Goals unavailable" : "Loading goals…";
|
|
38
|
+
}
|
|
24
39
|
//# sourceMappingURL=TodayPage.js.map
|