@knpkv/herdr-work 0.3.0 → 0.5.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.
Files changed (67) hide show
  1. package/README.md +99 -1
  2. package/dist/agent-binding.d.ts +4 -0
  3. package/dist/agent-binding.d.ts.map +1 -0
  4. package/dist/agent-binding.js +26 -0
  5. package/dist/agent-binding.js.map +1 -0
  6. package/dist/errors.d.ts +141 -0
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +97 -0
  9. package/dist/errors.js.map +1 -1
  10. package/dist/goal-family.d.ts +4 -0
  11. package/dist/goal-family.d.ts.map +1 -0
  12. package/dist/goal-family.js +32 -0
  13. package/dist/goal-family.js.map +1 -0
  14. package/dist/index.d.ts +4 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +4 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/internal/agent-binding-admission.d.ts +15 -0
  19. package/dist/internal/agent-binding-admission.d.ts.map +1 -0
  20. package/dist/internal/agent-binding-admission.js +92 -0
  21. package/dist/internal/agent-binding-admission.js.map +1 -0
  22. package/dist/internal/agent-binding-readback.d.ts +55 -0
  23. package/dist/internal/agent-binding-readback.d.ts.map +1 -0
  24. package/dist/internal/agent-binding-readback.js +124 -0
  25. package/dist/internal/agent-binding-readback.js.map +1 -0
  26. package/dist/internal/coordinator-authority.d.ts +62 -0
  27. package/dist/internal/coordinator-authority.d.ts.map +1 -0
  28. package/dist/internal/coordinator-authority.js +214 -0
  29. package/dist/internal/coordinator-authority.js.map +1 -0
  30. package/dist/internal/decision-handoff-migration.d.ts +126 -0
  31. package/dist/internal/decision-handoff-migration.d.ts.map +1 -0
  32. package/dist/internal/decision-handoff-migration.js +51 -0
  33. package/dist/internal/decision-handoff-migration.js.map +1 -0
  34. package/dist/internal/history-validation.d.ts +5 -0
  35. package/dist/internal/history-validation.d.ts.map +1 -0
  36. package/dist/internal/history-validation.js +33 -0
  37. package/dist/internal/history-validation.js.map +1 -0
  38. package/dist/model.d.ts +3109 -51
  39. package/dist/model.d.ts.map +1 -1
  40. package/dist/model.js +340 -11
  41. package/dist/model.js.map +1 -1
  42. package/dist/navigation.d.ts +17 -0
  43. package/dist/navigation.d.ts.map +1 -0
  44. package/dist/navigation.js +62 -0
  45. package/dist/navigation.js.map +1 -0
  46. package/dist/projection.d.ts +660 -0
  47. package/dist/projection.d.ts.map +1 -1
  48. package/dist/projection.js +65 -25
  49. package/dist/projection.js.map +1 -1
  50. package/dist/service.d.ts +1886 -3
  51. package/dist/service.d.ts.map +1 -1
  52. package/dist/service.js +138 -5
  53. package/dist/service.js.map +1 -1
  54. package/dist/sql.d.ts +30 -0
  55. package/dist/sql.d.ts.map +1 -0
  56. package/dist/sql.js +1454 -0
  57. package/dist/sql.js.map +1 -0
  58. package/dist/store.d.ts +1072 -4
  59. package/dist/store.d.ts.map +1 -1
  60. package/dist/store.js +3328 -43
  61. package/dist/store.js.map +1 -1
  62. package/dist/view.d.ts +9 -2
  63. package/dist/view.d.ts.map +1 -1
  64. package/dist/view.js +156 -8
  65. package/dist/view.js.map +1 -1
  66. package/package.json +25 -13
  67. package/src/styles.css +91 -17
package/dist/view.js CHANGED
@@ -1,9 +1,21 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, Divider, StateLabel, Surface, Text } from "@knpkv/rly/primitives";
3
3
  import { StageRail } from "@knpkv/rly/patterns";
4
- import { useState } from "react";
4
+ import { useEffect, useRef, useState } from "react";
5
+ import { decodeWorkBoardNavigationGoal, encodeWorkBoardNavigationGoal } from "./navigation.js";
5
6
  const windows = ["now", "day", "week", "month"];
6
7
  const stageOrder = ["local", "review", "pull_request", "merged", "deployed"];
8
+ const initialVisibleGoalCount = 10;
9
+ const selectedGoalFragment = "work-selected-goal";
10
+ const goalStates = [
11
+ "planned",
12
+ "working",
13
+ "blocked",
14
+ "review",
15
+ "deployed",
16
+ "completed"
17
+ ];
18
+ const statusFilters = ["all", ...goalStates];
7
19
  const windowLabel = {
8
20
  now: "Now",
9
21
  day: "24 hours ago",
@@ -84,11 +96,45 @@ const stagesFor = (goal) => {
84
96
  };
85
97
  const SummaryCell = ({ label, value }) => (_jsxs(Surface, { className: "work-summary-cell", padding: "compact", tone: "secondary", children: [_jsx(Text, { tone: "secondary", variant: "meta", children: label }), _jsx(Text, { as: "span", variant: "card-title", children: value })] }));
86
98
  const snapshotFor = (snapshots, window) => snapshots[window];
87
- export const WorkBoard = ({ snapshots }) => {
88
- const [window, setWindow] = useState("now");
99
+ const familyForGoal = (snapshot, goalId) => (snapshot.families ?? []).find((group) => group.canonicalGoalId === goalId) ?? null;
100
+ const familyLabelForGoal = (snapshot, goal) => {
101
+ const group = familyForGoal(snapshot, goal.id);
102
+ if (group === null)
103
+ return null;
104
+ const count = group.superseded.length;
105
+ return `${count} superseded`;
106
+ };
107
+ const withFragment = (href, fragment) => {
108
+ const fragmentIndex = href.indexOf("#");
109
+ return `${fragmentIndex === -1 ? href : href.slice(0, fragmentIndex)}#${fragment}`;
110
+ };
111
+ export const WorkBoard = ({ externalLinks = "enabled", initialGoalId, initialWindow = "now", navigation, snapshots }) => {
112
+ const [window, setWindow] = useState(initialWindow);
89
113
  const snapshot = snapshotFor(snapshots, window);
90
- const [selectedId, setSelectedId] = useState(snapshot.goals[0]?.id ?? null);
91
- const selected = snapshot.goals.find(({ id }) => id === selectedId) ?? null;
114
+ const directInitialGoal = snapshot.goals.find(({ id }) => id === initialGoalId);
115
+ const boardNavigation = directInitialGoal === undefined ? decodeWorkBoardNavigationGoal(initialGoalId ?? null) : null;
116
+ const requestedInitialSelectedId = boardNavigation === null ? (initialGoalId ?? null) : boardNavigation.goalId;
117
+ const initialStatusFilter = boardNavigation?.statusFilter ?? "all";
118
+ const requestedInitialSelectedGoal = snapshot.goals.find(({ id }) => id === requestedInitialSelectedId);
119
+ const initialSelectedGoal = requestedInitialSelectedGoal !== undefined &&
120
+ (initialStatusFilter === "all" || requestedInitialSelectedGoal.state === initialStatusFilter)
121
+ ? requestedInitialSelectedGoal
122
+ : undefined;
123
+ const initialSelectedId = initialSelectedGoal?.id ?? null;
124
+ const [selectedId, setSelectedId] = useState(initialSelectedId);
125
+ const [detailsOpen, setDetailsOpen] = useState(initialSelectedGoal !== undefined &&
126
+ (initialStatusFilter === "all" || initialSelectedGoal.state === initialStatusFilter) &&
127
+ (boardNavigation?.detailsOpen ?? (initialGoalId !== undefined && initialGoalId !== null)));
128
+ const [statusFilter, setStatusFilter] = useState(initialStatusFilter);
129
+ const [visibleGoalCount, setVisibleGoalCount] = useState(boardNavigation?.visibleGoalCount ?? initialVisibleGoalCount);
130
+ const detailsRef = useRef(null);
131
+ const selectedLinkRowRef = useRef(null);
132
+ const selectedRowRef = useRef(null);
133
+ const filteredGoals = statusFilter === "all" ? snapshot.goals : snapshot.goals.filter(({ state }) => state === statusFilter);
134
+ const selectedFilteredGoalIndex = filteredGoals.findIndex(({ id }) => id === selectedId);
135
+ const selected = filteredGoals.find(({ id }) => id === selectedId) ?? null;
136
+ const visibleGoalStart = selectedFilteredGoalIndex < visibleGoalCount ? 0 : selectedFilteredGoalIndex - visibleGoalCount + 1;
137
+ const visibleGoals = filteredGoals.slice(visibleGoalStart, visibleGoalStart + visibleGoalCount);
92
138
  const counts = {
93
139
  blocked: snapshot.goals.filter(({ state }) => state === "blocked").length,
94
140
  deployed: snapshot.goals.filter(({ state }) => state === "deployed").length,
@@ -96,8 +142,110 @@ export const WorkBoard = ({ snapshots }) => {
96
142
  review: snapshot.goals.filter(({ state }) => state === "review").length,
97
143
  working: snapshot.goals.filter(({ state }) => state === "working").length
98
144
  };
99
- return (_jsxs("section", { className: "work-page", "aria-labelledby": "work-board-title", children: [_jsxs("header", { className: "work-page-intro", children: [_jsxs("div", { children: [_jsx(Text, { as: "h1", id: "work-board-title", variant: "page-title", children: "Daily fleet Work" }), _jsx(Text, { tone: "secondary", variant: "body-large", children: "One durable view of who owns the work, what is blocked, and what ships next." })] }), _jsxs("div", { className: "work-snapshot-stamp", children: [_jsx(Text, { tone: "secondary", variant: "meta", children: "Durable snapshot" }), _jsx(Text, { variant: "code", children: formatTimestamp(snapshot.asOf) })] })] }), _jsxs(Surface, { className: "work-time-travel", padding: "compact", tone: "secondary", children: [_jsxs("div", { className: "work-time-heading", children: [_jsxs("div", { children: [_jsx(Text, { as: "h2", variant: "card-title", children: "Time travel" }), _jsx(Text, { tone: "secondary", variant: "meta", children: "Checkpoint events only. Missing history stays absent." })] }), _jsx(StateLabel, { label: window === "now" ? "Live" : "Historical", tone: window === "now" ? "positive" : "neutral" })] }), _jsx("div", { "aria-label": "Choose work snapshot", className: "work-time-controls", role: "group", children: windows.map((option) => (_jsx(Button, { "aria-pressed": window === option, onClick: () => setWindow(option), variant: window === option ? "primary" : "secondary", children: windowLabel[option] }, option))) })] }), _jsxs("div", { className: "work-summary-grid", "aria-label": "Work summary", children: [_jsx(SummaryCell, { label: "Goals", value: String(snapshot.goals.length) }), _jsx(SummaryCell, { label: "Working", value: String(counts.working) }), _jsx(SummaryCell, { label: "Blocked", value: String(counts.blocked) }), _jsx(SummaryCell, { label: "Open requests", value: String(counts.openRequests) }), _jsx(SummaryCell, { label: "In review", value: String(counts.review) }), _jsx(SummaryCell, { label: "Deployed", value: String(counts.deployed) })] }), snapshot.goals.length === 0 ? (_jsxs(Surface, { padding: "spacious", tone: "secondary", children: [_jsx(Text, { as: "h2", variant: "card-title", children: "No goals at this checkpoint" }), _jsx(Text, { tone: "secondary", children: "Record a WorkGoalCheckpoint to add durable work state." })] })) : (_jsxs("div", { className: "work-board-layout", children: [_jsxs(Surface, { className: "work-departure-board", padding: "none", tone: "secondary", children: [_jsxs("div", { className: "work-board-head", "aria-hidden": "true", children: [_jsx("span", { children: "Status" }), _jsx("span", { children: "Work" }), _jsx("span", { children: "Owner" }), _jsx("span", { children: "Agent / host" }), _jsx("span", { children: "Repository" }), _jsx("span", { children: "Shipment" }), _jsx("span", { children: "Spend" })] }), snapshot.goals.map((goal) => (_jsxs("button", { "aria-pressed": selected?.id === goal.id, className: "work-board-row", onClick: () => setSelectedId(goal.id), type: "button", children: [_jsx(StateLabel, { label: statePresentation[goal.state].label, size: "compact", tone: statePresentation[goal.state].tone }), _jsxs("span", { className: "work-board-copy", children: [_jsx(Text, { as: "strong", variant: "label", children: goal.title }), _jsx(Text, { tone: "secondary", variant: "meta", children: goal.summary })] }), _jsx(Text, { "data-label": "Owner", children: goal.owner.name }), _jsxs("span", { className: "work-board-copy", "data-label": "Agent / host", children: [_jsx(Text, { children: hierarchyLabel(goal) }), goal.agentHierarchy?.agent.relationship === undefined ? null : (_jsxs(Text, { tone: "secondary", variant: "meta", children: [goal.agentHierarchy.agent.relationship.relation, " \u00B7", " ", goal.agentHierarchy.agent.relationship.parentAgentId] }))] }), _jsxs("span", { className: "work-board-copy", "data-label": "Repository", children: [_jsx(Text, { variant: "code", children: goal.repository.repository }), _jsx(Text, { tone: "secondary", variant: "meta", children: goal.repository.branch })] }), _jsx(Text, { "data-label": "Shipment", children: deliveryLabel[goal.delivery] }), _jsx(Text, { "data-label": "Spend", variant: "code", children: formatSpend(goal) })] }, goal.id)))] }), selected === null ? null : (_jsxs(Surface, { as: "aside", className: "work-inspector", padding: "spacious", children: [_jsx(StateLabel, { label: statePresentation[selected.state].label, tone: statePresentation[selected.state].tone }), _jsx(Text, { as: "h2", variant: "section-title", children: selected.title }), _jsx(Text, { tone: "secondary", children: selected.detail }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Agent hierarchy" }), selected.agentHierarchy === undefined || selected.agentHierarchy === null ? (_jsx(Text, { tone: "secondary", children: "No authoritative agent assignment recorded." })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { children: [selected.agentHierarchy.agent.host, " / ", selected.agentHierarchy.agent.name] }), _jsx(Text, { tone: "secondary", variant: "code", children: selected.agentHierarchy.agent.agentId }), selected.agentHierarchy.agent.relationship === undefined ? (_jsx(Text, { tone: "secondary", variant: "meta", children: "Fleet root agent" })) : (_jsxs(Text, { tone: "secondary", variant: "meta", children: [selected.agentHierarchy.agent.relationship.relation, " from", " ", selected.agentHierarchy.agent.relationship.parentAgentId] }))] }))] }), _jsx(Divider, {}), _jsxs("dl", { className: "work-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: "Owner" }), _jsx("dd", { children: selected.owner.name })] }), _jsxs("div", { children: [_jsx("dt", { children: "Repository" }), _jsx("dd", { children: selected.repository.repository })] }), _jsxs("div", { children: [_jsx("dt", { children: "Branch" }), _jsx("dd", { children: selected.repository.branch })] }), _jsxs("div", { children: [_jsx("dt", { children: "Shipment stage" }), _jsx("dd", { children: deliveryLabel[selected.delivery] })] }), _jsxs("div", { children: [_jsx("dt", { children: "Spend" }), _jsx("dd", { children: formatSpend(selected) })] })] }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Blockers" }), blockersFor(selected).length === 0 ? (_jsx(Text, { tone: "secondary", children: "No blockers recorded." })) : (blockersFor(selected).map((blocker) => (_jsxs(Surface, { padding: "compact", tone: "secondary", children: [_jsxs(Text, { variant: "meta", tone: "secondary", children: ["Since ", formatTimestamp(blocker.since)] }), _jsx(Text, { children: blocker.summary })] }, `${blocker.since}-${blocker.summary}`))))] }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Activity" }), selected.activity === undefined ? (_jsx(Text, { tone: "secondary", children: "No activity recorded." })) : activityFor(selected).length === 0 ? (_jsx(Text, { tone: "secondary", children: "Activity is clear." })) : (_jsx("ul", { className: "work-detail-list", children: activityFor(selected).map((entry) => (_jsxs("li", { children: [_jsxs(Text, { variant: "meta", tone: "secondary", children: [entry.kind, " \u00B7 ", formatTimestamp(entry.occurredAt)] }), _jsx(Text, { children: entry.summary })] }, entry.id))) }))] }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Requests" }), selected.requests === undefined ? (_jsx(Text, { tone: "secondary", children: "No requests recorded." })) : requestsFor(selected).length === 0 ? (_jsx(Text, { tone: "secondary", children: "No outstanding requests." })) : (_jsx("ul", { className: "work-detail-list", children: requestsFor(selected).map((request) => (_jsxs("li", { children: [_jsxs("div", { className: "work-request-heading", children: [_jsx(Text, { children: request.summary }), _jsx(StateLabel, { label: requestPresentation[request.state].label, size: "compact", tone: requestPresentation[request.state].tone })] }), request.approvalTarget === null ? (_jsx(Text, { tone: "secondary", variant: "meta", children: "No approval link recorded." })) : (exactLink(request.approvalTarget, `Open ${request.approvalTarget.host} approval`))] }, request.id))) }))] }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Review" }), _jsxs("div", { className: "work-review-heading", children: [reviewLabel(selected.review), selected.review?.url === null || selected.review?.url === undefined
100
- ? null
101
- : reviewLink(selected.review.url)] }), selected.review?.summary === null || selected.review?.summary === undefined ? null : (_jsx(Text, { tone: "secondary", children: selected.review.summary }))] }), selected.connectTarget === null ? (_jsx(Text, { tone: "secondary", children: "No exact Connect target recorded." })) : (_jsx("a", { className: "work-connect-link", href: selected.connectTarget.url, children: "Open exact agent in Connect \u2192" })), selected.approvalTarget === undefined || selected.approvalTarget === null ? (_jsx(Text, { tone: "secondary", children: "No exact approval target recorded." })) : (exactLink(selected.approvalTarget, `Open ${selected.approvalTarget.host} approval`))] }))] })), selected === null ? null : (_jsx(Surface, { className: "work-delivery-evidence", padding: "spacious", children: _jsx(StageRail, { heading: `Shipment path · ${selected.title}`, stages: stagesFor(selected) }) }))] }));
145
+ useEffect(() => {
146
+ if (detailsOpen)
147
+ detailsRef.current?.focus();
148
+ }, [detailsOpen, selectedId]);
149
+ useEffect(() => {
150
+ if (navigation !== undefined &&
151
+ !detailsOpen &&
152
+ selectedId !== null &&
153
+ document.location.hash === `#${selectedGoalFragment}`) {
154
+ selectedLinkRowRef.current?.focus();
155
+ }
156
+ }, [detailsOpen, navigation, selectedId]);
157
+ useEffect(() => {
158
+ if (selectedId === null || selectedFilteredGoalIndex !== -1)
159
+ return;
160
+ setDetailsOpen(false);
161
+ setSelectedId(null);
162
+ setVisibleGoalCount(initialVisibleGoalCount);
163
+ }, [selectedFilteredGoalIndex, selectedId]);
164
+ return (_jsxs("section", { className: "work-page", "aria-labelledby": "work-board-title", children: [_jsxs("header", { className: "work-page-intro", children: [_jsxs("div", { children: [_jsx(Text, { as: "h1", id: "work-board-title", variant: "page-title", children: "Daily fleet Work" }), _jsx(Text, { tone: "secondary", variant: "body-large", children: "One durable view of who owns the work, what is blocked, and what ships next." })] }), _jsxs("div", { className: "work-snapshot-stamp", children: [_jsx(Text, { tone: "secondary", variant: "meta", children: "Durable snapshot" }), _jsx(Text, { variant: "code", children: formatTimestamp(snapshot.asOf) })] })] }), _jsxs(Surface, { className: "work-time-travel", padding: "compact", tone: "secondary", children: [_jsxs("div", { className: "work-time-heading", children: [_jsxs("div", { children: [_jsx(Text, { as: "h2", variant: "card-title", children: "Time travel" }), _jsx(Text, { tone: "secondary", variant: "meta", children: "Checkpoint events only. Missing history stays absent." })] }), _jsx(StateLabel, { label: window === "now" ? "Live" : "Historical", tone: window === "now" ? "positive" : "neutral" })] }), _jsx("div", { "aria-label": "Choose work snapshot", className: "work-time-controls", role: "group", children: windows.map((option) => {
165
+ if (navigation === undefined) {
166
+ return (_jsx(Button, { "aria-pressed": window === option, onClick: () => {
167
+ const selectedAtOption = snapshotFor(snapshots, option).goals.find(({ id }) => id === selectedId);
168
+ if (selectedAtOption === undefined ||
169
+ (statusFilter !== "all" && selectedAtOption.state !== statusFilter)) {
170
+ setDetailsOpen(false);
171
+ }
172
+ setVisibleGoalCount(initialVisibleGoalCount);
173
+ setWindow(option);
174
+ }, variant: window === option ? "primary" : "secondary", children: windowLabel[option] }, option));
175
+ }
176
+ const selectedAtOption = snapshotFor(snapshots, option).goals.find(({ id }) => id === selectedId);
177
+ const hasBoardState = selectedId !== null || statusFilter !== "all" || visibleGoalCount !== initialVisibleGoalCount;
178
+ return (_jsx("a", { "aria-current": window === option ? "page" : undefined, className: "work-time-link", href: navigation({
179
+ goalId: hasBoardState
180
+ ? encodeWorkBoardNavigationGoal({
181
+ detailsOpen: detailsOpen &&
182
+ selectedAtOption !== undefined &&
183
+ (statusFilter === "all" || selectedAtOption.state === statusFilter),
184
+ goalId: selectedId,
185
+ statusFilter,
186
+ visibleGoalCount: initialVisibleGoalCount
187
+ })
188
+ : null,
189
+ window: option
190
+ }), children: windowLabel[option] }, option));
191
+ }) })] }), _jsxs("div", { className: "work-summary-grid", "aria-label": "Work summary", children: [_jsx(SummaryCell, { label: "Goals", value: String(snapshot.goals.length) }), _jsx(SummaryCell, { label: "Working", value: String(counts.working) }), _jsx(SummaryCell, { label: "Blocked", value: String(counts.blocked) }), _jsx(SummaryCell, { label: "Open requests", value: String(counts.openRequests) }), _jsx(SummaryCell, { label: "In review", value: String(counts.review) }), _jsx(SummaryCell, { label: "Deployed", value: String(counts.deployed) })] }), snapshot.goals.length === 0 ? (_jsxs(Surface, { padding: "spacious", tone: "secondary", children: [_jsx(Text, { as: "h2", variant: "card-title", children: "No goals at this checkpoint" }), _jsx(Text, { tone: "secondary", children: "Record a WorkGoalCheckpoint to add durable work state." })] })) : (_jsxs("div", { className: "work-board-layout", children: [_jsxs("div", { className: "work-board-list", children: [_jsxs("div", { className: "work-board-toolbar", children: [_jsx("div", { "aria-label": "Filter goals by status", className: "work-status-filters", role: "group", children: statusFilters.map((state) => {
192
+ const label = state === "all" ? "All" : statePresentation[state].label;
193
+ return navigation === undefined ? (_jsx("button", { "aria-pressed": statusFilter === state, className: "work-status-filter", onClick: () => {
194
+ setDetailsOpen(false);
195
+ setSelectedId(null);
196
+ setStatusFilter(state);
197
+ setVisibleGoalCount(initialVisibleGoalCount);
198
+ }, type: "button", children: label }, state)) : (_jsx("a", { "aria-current": statusFilter === state ? "page" : undefined, className: "work-status-filter", href: navigation({
199
+ goalId: encodeWorkBoardNavigationGoal({
200
+ detailsOpen: false,
201
+ goalId: null,
202
+ statusFilter: state,
203
+ visibleGoalCount: initialVisibleGoalCount
204
+ }),
205
+ window
206
+ }), children: label }, state));
207
+ }) }), _jsxs(Text, { "aria-live": "polite", tone: "secondary", variant: "meta", children: ["Showing ", visibleGoals.length, " of ", filteredGoals.length, " goals"] })] }), _jsxs(Surface, { className: "work-departure-board", padding: "none", tone: "secondary", children: [_jsxs("div", { className: "work-board-head", "aria-hidden": "true", children: [_jsx("span", { children: "Status" }), _jsx("span", { children: "Work" }), _jsx("span", { children: "Owner" }), _jsx("span", { children: "Agent / host" }), _jsx("span", { children: "Repository" }), _jsx("span", { children: "Shipment" }), _jsx("span", { children: "Spend" })] }), filteredGoals.length === 0 ? (_jsx("div", { className: "work-empty-filter", children: _jsx(Text, { tone: "secondary", children: "No goals match this status." }) })) : null, visibleGoals.map((goal) => {
208
+ const row = (_jsxs(_Fragment, { children: [_jsx(StateLabel, { label: statePresentation[goal.state].label, size: "compact", tone: statePresentation[goal.state].tone }), _jsxs("span", { className: "work-board-copy", children: [_jsx(Text, { as: "strong", variant: "label", children: goal.title }), _jsx(Text, { tone: "secondary", variant: "meta", children: goal.summary }), familyLabelForGoal(snapshot, goal) === null ? null : (_jsx(Text, { tone: "secondary", variant: "meta", children: familyLabelForGoal(snapshot, goal) }))] }), _jsx(Text, { "data-label": "Owner", children: goal.owner.name }), _jsxs("span", { className: "work-board-copy", "data-label": "Agent / host", children: [_jsx(Text, { children: hierarchyLabel(goal) }), goal.agentHierarchy?.agent.relationship === undefined ? null : (_jsxs(Text, { tone: "secondary", variant: "meta", children: [goal.agentHierarchy.agent.relationship.relation, " \u00B7", " ", goal.agentHierarchy.agent.relationship.parentAgentId] }))] }), _jsxs("span", { className: "work-board-copy", "data-label": "Repository", children: [_jsx(Text, { variant: "code", children: goal.repository.repository }), _jsx(Text, { tone: "secondary", variant: "meta", children: goal.repository.branch })] }), _jsx(Text, { "data-label": "Shipment", children: deliveryLabel[goal.delivery] }), _jsx(Text, { "data-label": "Spend", variant: "code", children: formatSpend(goal) })] }));
209
+ return navigation === undefined ? (_jsx("button", { "aria-controls": detailsOpen && selected?.id === goal.id ? "work-goal-details" : undefined, "aria-expanded": detailsOpen && selected?.id === goal.id, "aria-pressed": selected?.id === goal.id, className: "work-board-row", id: selected?.id === goal.id ? selectedGoalFragment : undefined, onClick: () => {
210
+ setDetailsOpen(true);
211
+ setSelectedId(goal.id);
212
+ }, ref: selected?.id === goal.id ? selectedRowRef : undefined, type: "button", children: row }, goal.id)) : (_jsx("a", { "aria-current": selected?.id === goal.id ? "true" : undefined, className: "work-board-row", href: navigation({
213
+ goalId: statusFilter === "all" && visibleGoalCount === initialVisibleGoalCount
214
+ ? goal.id
215
+ : encodeWorkBoardNavigationGoal({
216
+ detailsOpen: true,
217
+ goalId: goal.id,
218
+ statusFilter,
219
+ visibleGoalCount
220
+ }),
221
+ window
222
+ }), id: selected?.id === goal.id ? selectedGoalFragment : undefined, ref: selected?.id === goal.id ? selectedLinkRowRef : undefined, children: row }, goal.id));
223
+ })] }), visibleGoals.length < filteredGoals.length ? (navigation === undefined ? (_jsx(Button, { onClick: () => setVisibleGoalCount((count) => Math.min(count + initialVisibleGoalCount, filteredGoals.length)), children: "Load 10 more" })) : (_jsx("a", { className: "work-load-more-link", href: navigation({
224
+ goalId: encodeWorkBoardNavigationGoal({
225
+ detailsOpen,
226
+ goalId: selectedId,
227
+ statusFilter,
228
+ visibleGoalCount: Math.min(visibleGoalCount + initialVisibleGoalCount, filteredGoals.length)
229
+ }),
230
+ window
231
+ }), children: "Load 10 more" }))) : null] }), selected === null || !detailsOpen ? null : (_jsxs(Surface, { "aria-label": "Goal details", as: "aside", className: "work-inspector", id: "work-goal-details", padding: "spacious", ref: detailsRef, tabIndex: -1, children: [_jsxs("div", { className: "work-inspector-heading", children: [_jsx(StateLabel, { label: statePresentation[selected.state].label, tone: statePresentation[selected.state].tone }), navigation === undefined ? (_jsx(Button, { onClick: () => {
232
+ setDetailsOpen(false);
233
+ const selectedRow = selectedRowRef.current ?? selectedLinkRowRef.current;
234
+ selectedRow?.focus();
235
+ }, variant: "secondary", children: "Close details" })) : (_jsx("a", { className: "work-exact-link", href: withFragment(navigation({
236
+ goalId: encodeWorkBoardNavigationGoal({
237
+ detailsOpen: false,
238
+ goalId: selectedId,
239
+ statusFilter,
240
+ visibleGoalCount
241
+ }),
242
+ window
243
+ }), selectedGoalFragment), children: "Close details" }))] }), _jsx(Text, { as: "h2", variant: "section-title", children: selected.title }), _jsx(Text, { tone: "secondary", children: selected.detail }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Agent hierarchy" }), selected.agentHierarchy === undefined || selected.agentHierarchy === null ? (_jsx(Text, { tone: "secondary", children: "No authoritative agent assignment recorded." })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { children: [selected.agentHierarchy.agent.host, " / ", selected.agentHierarchy.agent.name] }), _jsx(Text, { tone: "secondary", variant: "code", children: selected.agentHierarchy.agent.agentId }), selected.agentHierarchy.agent.relationship === undefined ? (_jsx(Text, { tone: "secondary", variant: "meta", children: "Fleet root agent" })) : (_jsxs(Text, { tone: "secondary", variant: "meta", children: [selected.agentHierarchy.agent.relationship.relation, " from", " ", selected.agentHierarchy.agent.relationship.parentAgentId] }))] }))] }), _jsx(Divider, {}), _jsxs("dl", { className: "work-facts", children: [_jsxs("div", { children: [_jsx("dt", { children: "Owner" }), _jsx("dd", { children: selected.owner.name })] }), _jsxs("div", { children: [_jsx("dt", { children: "Repository" }), _jsx("dd", { children: selected.repository.repository })] }), _jsxs("div", { children: [_jsx("dt", { children: "Branch" }), _jsx("dd", { children: selected.repository.branch })] }), _jsxs("div", { children: [_jsx("dt", { children: "Shipment stage" }), _jsx("dd", { children: deliveryLabel[selected.delivery] })] }), _jsxs("div", { children: [_jsx("dt", { children: "Spend" }), _jsx("dd", { children: formatSpend(selected) })] })] }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Blockers" }), blockersFor(selected).length === 0 ? (_jsx(Text, { tone: "secondary", children: "No blockers recorded." })) : (blockersFor(selected).map((blocker) => (_jsxs(Surface, { padding: "compact", tone: "secondary", children: [_jsxs(Text, { variant: "meta", tone: "secondary", children: ["Since ", formatTimestamp(blocker.since)] }), _jsx(Text, { children: blocker.summary })] }, `${blocker.since}-${blocker.summary}`))))] }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Activity" }), selected.activity === undefined ? (_jsx(Text, { tone: "secondary", children: "No activity recorded." })) : activityFor(selected).length === 0 ? (_jsx(Text, { tone: "secondary", children: "Activity is clear." })) : (_jsx("ul", { className: "work-detail-list", children: activityFor(selected).map((entry) => (_jsxs("li", { children: [_jsxs(Text, { variant: "meta", tone: "secondary", children: [entry.kind, " \u00B7 ", formatTimestamp(entry.occurredAt)] }), _jsx(Text, { children: entry.summary })] }, entry.id))) }))] }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Requests" }), selected.requests === undefined ? (_jsx(Text, { tone: "secondary", children: "No requests recorded." })) : requestsFor(selected).length === 0 ? (_jsx(Text, { tone: "secondary", children: "No outstanding requests." })) : (_jsx("ul", { className: "work-detail-list", children: requestsFor(selected).map((request) => (_jsxs("li", { children: [_jsxs("div", { className: "work-request-heading", children: [_jsx(Text, { children: request.summary }), _jsx(StateLabel, { label: requestPresentation[request.state].label, size: "compact", tone: requestPresentation[request.state].tone })] }), request.approvalTarget === null ? (_jsx(Text, { tone: "secondary", variant: "meta", children: "No approval link recorded." })) : externalLinks === "disabled" ? (_jsx(Text, { tone: "secondary", variant: "meta", children: "Approval target recorded." })) : (exactLink(request.approvalTarget, `Open ${request.approvalTarget.host} approval`))] }, request.id))) }))] }), _jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Review" }), _jsxs("div", { className: "work-review-heading", children: [reviewLabel(selected.review), selected.review?.url === null || selected.review?.url === undefined ? null : externalLinks ===
244
+ "disabled" ? (_jsx(Text, { tone: "secondary", variant: "meta", children: "Review target recorded." })) : (reviewLink(selected.review.url))] }), selected.review?.summary === null || selected.review?.summary === undefined ? null : (_jsx(Text, { tone: "secondary", children: selected.review.summary }))] }), (() => {
245
+ const group = familyForGoal(snapshot, selected.id);
246
+ if (group === null)
247
+ return null;
248
+ return (_jsxs("div", { className: "work-inspector-section", children: [_jsx(Text, { as: "h3", variant: "label", children: "Superseded history" }), _jsxs(Text, { tone: "secondary", variant: "meta", children: ["Canonical ", group.canonicalGoalId, " \u00B7 ", group.superseded.length, " superseded preserved"] }), _jsxs("details", { className: "work-family-history", children: [_jsxs("summary", { children: ["Show ", group.superseded.length, " superseded"] }), _jsx("ul", { className: "work-detail-list", children: group.superseded.map((entry) => (_jsxs("li", { children: [_jsxs("div", { className: "work-request-heading", children: [_jsx(Text, { children: entry.title }), _jsx(StateLabel, { label: statePresentation[entry.state].label, size: "compact", tone: statePresentation[entry.state].tone })] }), _jsxs(Text, { tone: "secondary", variant: "meta", children: [entry.summary, " \u00B7 ", formatTimestamp(entry.updatedAt)] }), blockersFor(entry).length === 0 ? null : (_jsx("ul", { className: "work-detail-list", children: blockersFor(entry).map((blocker) => (_jsx("li", { children: _jsxs(Text, { tone: "secondary", variant: "meta", children: ["Blocker: ", blocker.summary, " \u00B7 ", formatTimestamp(blocker.since)] }) }, `${blocker.since}-${blocker.summary}`))) })), entry.review === undefined || entry.review === null ? null : (_jsxs(Text, { tone: "secondary", variant: "meta", children: ["Review ", reviewPresentation[entry.review.state].label, entry.review.summary === null ? "" : ` · ${entry.review.summary}`] })), entry.activity === undefined || entry.activity.length === 0 ? null : (_jsxs(Text, { tone: "secondary", variant: "meta", children: ["Activity ", entry.activity.length, " checkpoint", entry.activity.length === 1 ? "" : "s"] }))] }, entry.id))) })] })] }));
249
+ })(), selected.connectTarget === null ? (_jsx(Text, { tone: "secondary", children: "No exact Connect target recorded." })) : externalLinks === "disabled" ? (_jsx(Text, { tone: "secondary", variant: "meta", children: "Connect target recorded." })) : (_jsx("a", { className: "work-connect-link", href: selected.connectTarget.url, children: "Open exact agent in Connect \u2192" })), selected.approvalTarget === undefined || selected.approvalTarget === null ? (_jsx(Text, { tone: "secondary", children: "No exact approval target recorded." })) : externalLinks === "disabled" ? (_jsx(Text, { tone: "secondary", variant: "meta", children: "Approval target recorded." })) : (exactLink(selected.approvalTarget, `Open ${selected.approvalTarget.host} approval`))] }))] })), selected === null || !detailsOpen ? null : (_jsx(Surface, { className: "work-delivery-evidence", padding: "spacious", children: _jsx(StageRail, { heading: `Shipment path · ${selected.title}`, stages: stagesFor(selected) }) }))] }));
102
250
  };
103
251
  //# sourceMappingURL=view.js.map
package/dist/view.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knpkv/herdr-work",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Durable fleet work checkpoints and departure-board projections",
5
5
  "license": "MIT",
6
6
  "author": "knpkv",
@@ -25,6 +25,14 @@
25
25
  "types": "./dist/model.d.ts",
26
26
  "import": "./dist/model.js"
27
27
  },
28
+ "./navigation": {
29
+ "types": "./dist/navigation.d.ts",
30
+ "import": "./dist/navigation.js"
31
+ },
32
+ "./sql": {
33
+ "types": "./dist/sql.d.ts",
34
+ "import": "./dist/sql.js"
35
+ },
28
36
  "./react": {
29
37
  "types": "./dist/view.d.ts",
30
38
  "import": "./dist/view.js"
@@ -43,21 +51,24 @@
43
51
  "node": ">=26"
44
52
  },
45
53
  "dependencies": {
46
- "effect": "4.0.0-rc.109",
47
- "@knpkv/herdr-fleet": "^0.2.0",
48
- "@knpkv/rly": "^0.5.0"
54
+ "effect": "4.0.0",
55
+ "@knpkv/herdr-fleet": "^0.4.0",
56
+ "@knpkv/rly": "^0.6.0"
49
57
  },
50
58
  "devDependencies": {
51
- "@effect/platform-node": "4.0.0-rc.109",
52
- "@effect/vitest": "4.0.0-rc.109",
53
- "@types/node": "^26.2.0",
54
- "@types/react": "^19.2.18",
55
- "@types/react-dom": "^19.2.4",
56
- "react": "^19.2.8",
57
- "react-dom": "^19.2.8",
59
+ "@effect/platform-node": "4.0.0",
60
+ "@effect/vitest": "4.0.0",
61
+ "@playwright/test": "1.63.0",
62
+ "@types/node": "^26.6.4",
63
+ "@types/react": "^19.3.0",
64
+ "@types/react-dom": "^19.3.0",
65
+ "happy-dom": "20.14.5",
66
+ "react": "^19.3.0",
67
+ "react-dom": "^19.3.0",
58
68
  "rimraf": "^6.1.3",
59
69
  "typescript": "npm:@typescript/typescript6@^6.0.2",
60
- "vitest": "^4.1.10"
70
+ "vite": "8.3.2",
71
+ "vitest": "^5.0.3"
61
72
  },
62
73
  "peerDependencies": {
63
74
  "react": "^19.2.8"
@@ -68,6 +79,7 @@
68
79
  "clean": "rimraf dist *.tsbuildinfo",
69
80
  "lint": "eslint \"{src,test}/**/*.{ts,tsx}\"",
70
81
  "pack:deterministic": "pnpm build && node ../../scripts/pack-herdr.mjs .",
71
- "test": "vitest run"
82
+ "test": "vitest run",
83
+ "test:browser": "pnpm --filter \"@knpkv/herdr-work^...\" build && playwright test --config playwright.config.ts"
72
84
  }
73
85
  }
package/src/styles.css CHANGED
@@ -42,6 +42,10 @@
42
42
  .work-time-controls {
43
43
  flex-wrap: wrap;
44
44
  }
45
+ .work-time-link {
46
+ text-decoration: none;
47
+ text-underline-offset: 0.2em;
48
+ }
45
49
  .work-summary-grid {
46
50
  display: grid;
47
51
  gap: var(--rly-space-8);
@@ -58,10 +62,65 @@
58
62
  gap: var(--rly-space-16);
59
63
  grid-template-columns: minmax(0, 1fr) minmax(20rem, 0.32fr);
60
64
  }
65
+ .work-board-list {
66
+ display: grid;
67
+ gap: var(--rly-space-12);
68
+ min-inline-size: 0;
69
+ }
70
+ .work-board-toolbar {
71
+ align-items: center;
72
+ display: flex;
73
+ gap: var(--rly-space-12);
74
+ justify-content: space-between;
75
+ min-inline-size: 0;
76
+ }
77
+ .work-board-toolbar > span {
78
+ flex: none;
79
+ }
80
+ .work-status-filters {
81
+ display: flex;
82
+ gap: var(--rly-space-6);
83
+ max-inline-size: 100%;
84
+ overflow-x: auto;
85
+ padding-block-end: var(--rly-space-4);
86
+ }
87
+ .work-status-filter {
88
+ appearance: none;
89
+ background: var(--rly-color-surface-1);
90
+ border: 1px solid var(--rly-color-border-1);
91
+ border-radius: var(--rly-radius-field);
92
+ color: var(--rly-color-text-2);
93
+ cursor: pointer;
94
+ flex: none;
95
+ font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)
96
+ var(--rly-type-label-font);
97
+ padding: var(--rly-space-8) var(--rly-space-12);
98
+ text-decoration: none;
99
+ }
100
+ .work-status-filter[aria-current="page"],
101
+ .work-status-filter[aria-pressed="true"] {
102
+ background: var(--rly-color-action-background);
103
+ border-color: var(--rly-color-action-background);
104
+ color: var(--rly-color-action-foreground);
105
+ }
61
106
  .work-departure-board {
62
107
  overflow-x: auto;
63
108
  overflow-y: hidden;
64
109
  }
110
+ .work-empty-filter {
111
+ border-block-start: 1px solid var(--rly-color-border-1);
112
+ padding: var(--rly-space-20);
113
+ }
114
+ .work-load-more-link {
115
+ border: 1px solid var(--rly-color-border-1);
116
+ border-radius: var(--rly-radius-field);
117
+ color: var(--rly-color-text-1);
118
+ font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)
119
+ var(--rly-type-label-font);
120
+ padding: var(--rly-space-12) var(--rly-space-16);
121
+ text-align: center;
122
+ text-decoration: none;
123
+ }
65
124
  .work-board-head,
66
125
  .work-board-row {
67
126
  align-items: center;
@@ -87,6 +146,7 @@
87
146
  inline-size: 100%;
88
147
  min-block-size: 5.5rem;
89
148
  text-align: start;
149
+ text-decoration: none;
90
150
  }
91
151
  .work-board-row[aria-pressed="true"] {
92
152
  background: var(--rly-color-surface-3);
@@ -104,6 +164,12 @@
104
164
  inset-block-start: var(--rly-space-16);
105
165
  position: sticky;
106
166
  }
167
+ .work-inspector-heading {
168
+ align-items: center;
169
+ display: flex;
170
+ gap: var(--rly-space-12);
171
+ justify-content: space-between;
172
+ }
107
173
  .work-connect-link {
108
174
  background: var(--rly-color-action-background);
109
175
  border-radius: var(--rly-radius-field);
@@ -133,6 +199,19 @@
133
199
  .work-inspector-section h3 {
134
200
  margin: 0;
135
201
  }
202
+ .work-family-history {
203
+ border: 1px solid var(--rly-color-border-1);
204
+ border-radius: var(--rly-radius-field);
205
+ padding: var(--rly-space-8) var(--rly-space-12);
206
+ }
207
+ .work-family-history > summary {
208
+ cursor: pointer;
209
+ font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)
210
+ var(--rly-type-label-font);
211
+ }
212
+ .work-family-history[open] > summary {
213
+ margin-block-end: var(--rly-space-8);
214
+ }
136
215
  .work-detail-list {
137
216
  display: grid;
138
217
  gap: var(--rly-space-8);
@@ -177,6 +256,9 @@
177
256
  overflow-wrap: anywhere;
178
257
  }
179
258
  @media (hover: hover) {
259
+ .work-time-link:hover {
260
+ text-decoration: underline;
261
+ }
180
262
  .work-board-row:hover {
181
263
  background: var(--rly-color-surface-2);
182
264
  }
@@ -207,6 +289,10 @@
207
289
  .work-summary-grid {
208
290
  grid-template-columns: 1fr 1fr;
209
291
  }
292
+ .work-board-toolbar {
293
+ align-items: stretch;
294
+ flex-direction: column;
295
+ }
210
296
  .work-departure-board {
211
297
  overflow: hidden;
212
298
  }
@@ -214,27 +300,15 @@
214
300
  display: none;
215
301
  }
216
302
  .work-board-row {
217
- align-items: start;
303
+ align-items: center;
218
304
  gap: var(--rly-space-12);
219
- grid-template-columns: 1fr;
305
+ grid-template-columns: auto minmax(0, 1fr);
306
+ min-block-size: 0;
220
307
  min-inline-size: 0;
221
- padding: var(--rly-space-20);
308
+ padding: var(--rly-space-12);
222
309
  }
223
310
  .work-board-row > [data-label] {
224
- display: grid;
225
- gap: var(--rly-space-8);
226
- grid-template-columns: 5.5rem minmax(0, 1fr);
227
- }
228
- .work-board-row > [data-label]::before {
229
- color: var(--rly-color-text-3);
230
- content: attr(data-label);
231
- font: var(--rly-type-meta-weight) var(--rly-type-meta-size)/var(--rly-type-meta-line-height)
232
- var(--rly-type-meta-font);
233
- }
234
- }
235
- @media (max-width: 27.5rem) {
236
- .work-summary-grid {
237
- grid-template-columns: 1fr;
311
+ display: none;
238
312
  }
239
313
  }
240
314
  }