@shivaedev/work-board 0.12.0 → 0.13.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 (989) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +11 -11
  3. package/assets/agent.js +27 -31
  4. package/assets/native.js +34 -69
  5. package/assets/react.css +1 -1
  6. package/assets/react.js +39 -34
  7. package/dist/browser/diagnostics/schema.d.ts +49 -0
  8. package/dist/browser/diagnostics/schema.d.ts.map +1 -0
  9. package/dist/browser/diagnostics/schema.js +11 -0
  10. package/dist/browser/diagnostics/schema.js.map +1 -0
  11. package/dist/browser/views/ResultProjection.d.ts +245 -0
  12. package/dist/browser/views/ResultProjection.d.ts.map +1 -0
  13. package/dist/browser/views/ResultProjection.js +32 -0
  14. package/dist/browser/views/ResultProjection.js.map +1 -0
  15. package/dist/browser/views/remaining.d.ts +345 -0
  16. package/dist/browser/views/remaining.d.ts.map +1 -0
  17. package/dist/browser/views/remaining.js +21 -0
  18. package/dist/browser/views/remaining.js.map +1 -0
  19. package/dist/browser/views/schema.d.ts +715 -0
  20. package/dist/browser/views/schema.d.ts.map +1 -0
  21. package/dist/browser/views/schema.js +60 -0
  22. package/dist/browser/views/schema.js.map +1 -0
  23. package/dist/browser/views/state.d.ts +15 -0
  24. package/dist/browser/views/state.d.ts.map +1 -0
  25. package/dist/browser/views/state.js +45 -0
  26. package/dist/browser/views/state.js.map +1 -0
  27. package/dist/client/client.d.ts +5 -5
  28. package/dist/client/client.d.ts.map +1 -1
  29. package/dist/client/client.js +4 -4
  30. package/dist/client/client.js.map +1 -1
  31. package/dist/client/document/Mermaid.d.ts.map +1 -1
  32. package/dist/client/document/Mermaid.js +39 -10
  33. package/dist/client/document/Mermaid.js.map +1 -1
  34. package/dist/client/document/View.d.ts +5 -1
  35. package/dist/client/document/View.d.ts.map +1 -1
  36. package/dist/client/document/View.js +13 -1
  37. package/dist/client/document/View.js.map +1 -1
  38. package/dist/client/document/boardLayout.d.ts +6 -0
  39. package/dist/client/document/boardLayout.d.ts.map +1 -0
  40. package/dist/client/document/boardLayout.js +69 -0
  41. package/dist/client/document/boardLayout.js.map +1 -0
  42. package/dist/client/entry.d.ts +0 -12
  43. package/dist/client/entry.d.ts.map +1 -1
  44. package/dist/client/entry.js +0 -18
  45. package/dist/client/entry.js.map +1 -1
  46. package/dist/client/formDraft.d.ts +3 -0
  47. package/dist/client/formDraft.d.ts.map +1 -0
  48. package/dist/client/formDraft.js +8 -0
  49. package/dist/client/formDraft.js.map +1 -0
  50. package/dist/client/formFocus.d.ts.map +1 -1
  51. package/dist/client/formFocus.js +5 -0
  52. package/dist/client/formFocus.js.map +1 -1
  53. package/dist/client/handoffs/failureStatus.d.ts +2 -0
  54. package/dist/client/handoffs/failureStatus.d.ts.map +1 -0
  55. package/dist/client/handoffs/failureStatus.js +7 -0
  56. package/dist/client/handoffs/failureStatus.js.map +1 -0
  57. package/dist/client/page/routeQuery.d.ts +2 -7
  58. package/dist/client/page/routeQuery.d.ts.map +1 -1
  59. package/dist/client/page/routeQuery.js +0 -3
  60. package/dist/client/page/routeQuery.js.map +1 -1
  61. package/dist/client/react/Age.d.ts +9 -0
  62. package/dist/client/react/Age.d.ts.map +1 -0
  63. package/dist/client/react/Age.js +32 -0
  64. package/dist/client/react/Age.js.map +1 -0
  65. package/dist/client/react/AnswerForm.d.ts +5 -3
  66. package/dist/client/react/AnswerForm.d.ts.map +1 -1
  67. package/dist/client/react/AnswerForm.js +21 -11
  68. package/dist/client/react/AnswerForm.js.map +1 -1
  69. package/dist/client/react/AnswerPrompts.d.ts +10 -2
  70. package/dist/client/react/AnswerPrompts.d.ts.map +1 -1
  71. package/dist/client/react/AnswerPrompts.js +28 -12
  72. package/dist/client/react/AnswerPrompts.js.map +1 -1
  73. package/dist/client/react/BoardMain.d.ts +10 -0
  74. package/dist/client/react/BoardMain.d.ts.map +1 -0
  75. package/dist/client/react/BoardMain.js +19 -0
  76. package/dist/client/react/BoardMain.js.map +1 -0
  77. package/dist/client/react/BoardShell.d.ts +6 -1
  78. package/dist/client/react/BoardShell.d.ts.map +1 -1
  79. package/dist/client/react/BoardShell.js +34 -12
  80. package/dist/client/react/BoardShell.js.map +1 -1
  81. package/dist/client/react/ChangesMain.d.ts +8 -0
  82. package/dist/client/react/ChangesMain.d.ts.map +1 -0
  83. package/dist/client/react/ChangesMain.js +24 -0
  84. package/dist/client/react/ChangesMain.js.map +1 -0
  85. package/dist/client/react/DiagnosticsFleet.d.ts +6 -0
  86. package/dist/client/react/DiagnosticsFleet.d.ts.map +1 -0
  87. package/dist/client/react/DiagnosticsFleet.js +16 -0
  88. package/dist/client/react/DiagnosticsFleet.js.map +1 -0
  89. package/dist/client/react/DiagnosticsMain.d.ts +8 -0
  90. package/dist/client/react/DiagnosticsMain.d.ts.map +1 -0
  91. package/dist/client/react/DiagnosticsMain.js +11 -0
  92. package/dist/client/react/DiagnosticsMain.js.map +1 -0
  93. package/dist/client/react/DiagnosticsPage.d.ts +5 -0
  94. package/dist/client/react/DiagnosticsPage.d.ts.map +1 -0
  95. package/dist/client/react/DiagnosticsPage.js +23 -0
  96. package/dist/client/react/DiagnosticsPage.js.map +1 -0
  97. package/dist/client/react/DocumentContext.d.ts.map +1 -1
  98. package/dist/client/react/DocumentContext.js +23 -3
  99. package/dist/client/react/DocumentContext.js.map +1 -1
  100. package/dist/client/react/DocumentMain.d.ts +2 -3
  101. package/dist/client/react/DocumentMain.d.ts.map +1 -1
  102. package/dist/client/react/DocumentMain.js +8 -4
  103. package/dist/client/react/DocumentMain.js.map +1 -1
  104. package/dist/client/react/Favorite.d.ts +5 -0
  105. package/dist/client/react/Favorite.d.ts.map +1 -0
  106. package/dist/client/react/Favorite.js +10 -0
  107. package/dist/client/react/Favorite.js.map +1 -0
  108. package/dist/client/react/FormField.d.ts +13 -0
  109. package/dist/client/react/FormField.d.ts.map +1 -0
  110. package/dist/client/react/FormField.js +39 -0
  111. package/dist/client/react/FormField.js.map +1 -0
  112. package/dist/client/react/HandoffForm.d.ts +5 -0
  113. package/dist/client/react/HandoffForm.d.ts.map +1 -0
  114. package/dist/client/react/HandoffForm.js +27 -0
  115. package/dist/client/react/HandoffForm.js.map +1 -0
  116. package/dist/client/react/HandoffPage.d.ts +5 -0
  117. package/dist/client/react/HandoffPage.d.ts.map +1 -0
  118. package/dist/client/react/HandoffPage.js +15 -0
  119. package/dist/client/react/HandoffPage.js.map +1 -0
  120. package/dist/client/react/HandoffPrompt.d.ts +6 -0
  121. package/dist/client/react/HandoffPrompt.d.ts.map +1 -0
  122. package/dist/client/react/HandoffPrompt.js +21 -0
  123. package/dist/client/react/HandoffPrompt.js.map +1 -0
  124. package/dist/client/react/Header.d.ts +11 -2
  125. package/dist/client/react/Header.d.ts.map +1 -1
  126. package/dist/client/react/Header.js +2 -2
  127. package/dist/client/react/Header.js.map +1 -1
  128. package/dist/client/react/HistoryComparison.d.ts +5 -0
  129. package/dist/client/react/HistoryComparison.d.ts.map +1 -0
  130. package/dist/client/react/HistoryComparison.js +14 -0
  131. package/dist/client/react/HistoryComparison.js.map +1 -0
  132. package/dist/client/react/HistoryRetention.d.ts +5 -0
  133. package/dist/client/react/HistoryRetention.d.ts.map +1 -0
  134. package/dist/client/react/HistoryRetention.js +28 -0
  135. package/dist/client/react/HistoryRetention.js.map +1 -0
  136. package/dist/client/react/HomeBoard.d.ts +5 -0
  137. package/dist/client/react/HomeBoard.d.ts.map +1 -0
  138. package/dist/client/react/HomeBoard.js +8 -0
  139. package/dist/client/react/HomeBoard.js.map +1 -0
  140. package/dist/client/react/InboxPage.d.ts +5 -0
  141. package/dist/client/react/InboxPage.d.ts.map +1 -0
  142. package/dist/client/react/InboxPage.js +18 -0
  143. package/dist/client/react/InboxPage.js.map +1 -0
  144. package/dist/client/react/LiveControls.d.ts +8 -0
  145. package/dist/client/react/LiveControls.d.ts.map +1 -0
  146. package/dist/client/react/LiveControls.js +51 -0
  147. package/dist/client/react/LiveControls.js.map +1 -0
  148. package/dist/client/react/Modal.d.ts +12 -0
  149. package/dist/client/react/Modal.d.ts.map +1 -0
  150. package/dist/client/react/Modal.js +62 -0
  151. package/dist/client/react/Modal.js.map +1 -0
  152. package/dist/client/react/NavigationTree.d.ts.map +1 -1
  153. package/dist/client/react/NavigationTree.js +2 -1
  154. package/dist/client/react/NavigationTree.js.map +1 -1
  155. package/dist/client/react/OverviewGroups.d.ts +5 -0
  156. package/dist/client/react/OverviewGroups.d.ts.map +1 -0
  157. package/dist/client/react/OverviewGroups.js +18 -0
  158. package/dist/client/react/OverviewGroups.js.map +1 -0
  159. package/dist/client/react/OverviewPage.d.ts +5 -0
  160. package/dist/client/react/OverviewPage.d.ts.map +1 -0
  161. package/dist/client/react/OverviewPage.js +16 -0
  162. package/dist/client/react/OverviewPage.js.map +1 -0
  163. package/dist/client/react/ProjectionFrame.d.ts +19 -0
  164. package/dist/client/react/ProjectionFrame.d.ts.map +1 -0
  165. package/dist/client/react/ProjectionFrame.js +85 -0
  166. package/dist/client/react/ProjectionFrame.js.map +1 -0
  167. package/dist/client/react/ProjectionMain.d.ts +10 -0
  168. package/dist/client/react/ProjectionMain.d.ts.map +1 -0
  169. package/dist/client/react/ProjectionMain.js +22 -0
  170. package/dist/client/react/ProjectionMain.js.map +1 -0
  171. package/dist/client/react/PromptOption.d.ts +12 -0
  172. package/dist/client/react/PromptOption.d.ts.map +1 -0
  173. package/dist/client/react/PromptOption.js +9 -0
  174. package/dist/client/react/PromptOption.js.map +1 -0
  175. package/dist/client/react/ReadingLibrary.d.ts +9 -0
  176. package/dist/client/react/ReadingLibrary.d.ts.map +1 -0
  177. package/dist/client/react/ReadingLibrary.js +78 -0
  178. package/dist/client/react/ReadingLibrary.js.map +1 -0
  179. package/dist/client/react/RemainingMain.d.ts +10 -0
  180. package/dist/client/react/RemainingMain.d.ts.map +1 -0
  181. package/dist/client/react/RemainingMain.js +27 -0
  182. package/dist/client/react/RemainingMain.js.map +1 -0
  183. package/dist/client/react/RespondPage.d.ts +5 -0
  184. package/dist/client/react/RespondPage.d.ts.map +1 -0
  185. package/dist/client/react/RespondPage.js +16 -0
  186. package/dist/client/react/RespondPage.js.map +1 -0
  187. package/dist/client/react/ResponseMarkdown.d.ts.map +1 -1
  188. package/dist/client/react/ResponseMarkdown.js +16 -2
  189. package/dist/client/react/ResponseMarkdown.js.map +1 -1
  190. package/dist/client/react/ResultCriteria.d.ts +5 -0
  191. package/dist/client/react/ResultCriteria.d.ts.map +1 -0
  192. package/dist/client/react/ResultCriteria.js +33 -0
  193. package/dist/client/react/ResultCriteria.js.map +1 -0
  194. package/dist/client/react/ResultFeedback.d.ts +5 -0
  195. package/dist/client/react/ResultFeedback.d.ts.map +1 -0
  196. package/dist/client/react/ResultFeedback.js +12 -0
  197. package/dist/client/react/ResultFeedback.js.map +1 -0
  198. package/dist/client/react/ResultPage.d.ts +5 -0
  199. package/dist/client/react/ResultPage.d.ts.map +1 -0
  200. package/dist/client/react/ResultPage.js +15 -0
  201. package/dist/client/react/ResultPage.js.map +1 -0
  202. package/dist/client/react/SavedViews.d.ts +4 -0
  203. package/dist/client/react/SavedViews.d.ts.map +1 -0
  204. package/dist/client/react/SavedViews.js +16 -0
  205. package/dist/client/react/SavedViews.js.map +1 -0
  206. package/dist/client/react/SearchDialog.d.ts +11 -0
  207. package/dist/client/react/SearchDialog.d.ts.map +1 -0
  208. package/dist/client/react/SearchDialog.js +67 -0
  209. package/dist/client/react/SearchDialog.js.map +1 -0
  210. package/dist/client/react/SearchResults.d.ts +7 -0
  211. package/dist/client/react/SearchResults.d.ts.map +1 -0
  212. package/dist/client/react/SearchResults.js +19 -0
  213. package/dist/client/react/SearchResults.js.map +1 -0
  214. package/dist/client/react/ShellApi.d.ts +11 -1
  215. package/dist/client/react/ShellApi.d.ts.map +1 -1
  216. package/dist/client/react/Sidebar.d.ts +5 -2
  217. package/dist/client/react/Sidebar.d.ts.map +1 -1
  218. package/dist/client/react/Sidebar.js +37 -2
  219. package/dist/client/react/Sidebar.js.map +1 -1
  220. package/dist/client/react/StartPage.d.ts +5 -0
  221. package/dist/client/react/StartPage.d.ts.map +1 -0
  222. package/dist/client/react/StartPage.js +5 -0
  223. package/dist/client/react/StartPage.js.map +1 -0
  224. package/dist/client/react/UpdatesToggle.d.ts +5 -0
  225. package/dist/client/react/UpdatesToggle.d.ts.map +1 -0
  226. package/dist/client/react/UpdatesToggle.js +9 -0
  227. package/dist/client/react/UpdatesToggle.js.map +1 -0
  228. package/dist/client/react/VisualControls.d.ts +17 -0
  229. package/dist/client/react/VisualControls.d.ts.map +1 -0
  230. package/dist/client/react/VisualControls.js +6 -0
  231. package/dist/client/react/VisualControls.js.map +1 -0
  232. package/dist/client/react/VisualInspection.d.ts +2 -0
  233. package/dist/client/react/VisualInspection.d.ts.map +1 -0
  234. package/dist/client/react/VisualInspection.js +26 -0
  235. package/dist/client/react/VisualInspection.js.map +1 -0
  236. package/dist/client/react/VisualViewer.d.ts +6 -0
  237. package/dist/client/react/VisualViewer.d.ts.map +1 -0
  238. package/dist/client/react/VisualViewer.js +106 -0
  239. package/dist/client/react/VisualViewer.js.map +1 -0
  240. package/dist/client/react/WorkCards.d.ts +5 -0
  241. package/dist/client/react/WorkCards.d.ts.map +1 -0
  242. package/dist/client/react/WorkCards.js +13 -0
  243. package/dist/client/react/WorkCards.js.map +1 -0
  244. package/dist/client/react/WorkControls.d.ts +5 -0
  245. package/dist/client/react/WorkControls.d.ts.map +1 -0
  246. package/dist/client/react/WorkControls.js +18 -0
  247. package/dist/client/react/WorkControls.js.map +1 -0
  248. package/dist/client/react/WorkDetail.d.ts +5 -0
  249. package/dist/client/react/WorkDetail.d.ts.map +1 -0
  250. package/dist/client/react/WorkDetail.js +12 -0
  251. package/dist/client/react/WorkDetail.js.map +1 -0
  252. package/dist/client/react/WorkItemTitle.d.ts +7 -0
  253. package/dist/client/react/WorkItemTitle.d.ts.map +1 -0
  254. package/dist/client/react/WorkItemTitle.js +6 -0
  255. package/dist/client/react/WorkItemTitle.js.map +1 -0
  256. package/dist/client/react/WorkPage.d.ts +5 -0
  257. package/dist/client/react/WorkPage.d.ts.map +1 -0
  258. package/dist/client/react/WorkPage.js +17 -0
  259. package/dist/client/react/WorkPage.js.map +1 -0
  260. package/dist/client/react/WorkResults.d.ts +5 -0
  261. package/dist/client/react/WorkResults.d.ts.map +1 -0
  262. package/dist/client/react/WorkResults.js +10 -0
  263. package/dist/client/react/WorkResults.js.map +1 -0
  264. package/dist/client/react/WorkTable.d.ts +5 -0
  265. package/dist/client/react/WorkTable.d.ts.map +1 -0
  266. package/dist/client/react/WorkTable.js +10 -0
  267. package/dist/client/react/WorkTable.js.map +1 -0
  268. package/dist/client/react/WorkTools.d.ts +5 -0
  269. package/dist/client/react/WorkTools.d.ts.map +1 -0
  270. package/dist/client/react/WorkTools.js +7 -0
  271. package/dist/client/react/WorkTools.js.map +1 -0
  272. package/dist/client/react/activeRead.d.ts +7 -0
  273. package/dist/client/react/activeRead.d.ts.map +1 -0
  274. package/dist/client/react/activeRead.js +13 -0
  275. package/dist/client/react/activeRead.js.map +1 -0
  276. package/dist/client/react/createResponse.d.ts +26 -0
  277. package/dist/client/react/createResponse.d.ts.map +1 -0
  278. package/dist/client/react/createResponse.js +29 -0
  279. package/dist/client/react/createResponse.js.map +1 -0
  280. package/dist/client/react/diagnosticsValues.d.ts +13 -0
  281. package/dist/client/react/diagnosticsValues.d.ts.map +1 -0
  282. package/dist/client/react/diagnosticsValues.js +49 -0
  283. package/dist/client/react/diagnosticsValues.js.map +1 -0
  284. package/dist/client/react/entry.js +6 -18
  285. package/dist/client/react/entry.js.map +1 -1
  286. package/dist/client/react/historyStore.d.ts +7 -0
  287. package/dist/client/react/historyStore.d.ts.map +1 -0
  288. package/dist/client/react/historyStore.js +61 -0
  289. package/dist/client/react/historyStore.js.map +1 -0
  290. package/dist/client/react/liveStatus.d.ts +16 -0
  291. package/dist/client/react/liveStatus.d.ts.map +1 -0
  292. package/dist/client/react/liveStatus.js +43 -0
  293. package/dist/client/react/liveStatus.js.map +1 -0
  294. package/dist/client/react/loadBoardPage.d.ts +1 -1
  295. package/dist/client/react/loadBoardPage.d.ts.map +1 -1
  296. package/dist/client/react/loadBoardPage.js +14 -4
  297. package/dist/client/react/loadBoardPage.js.map +1 -1
  298. package/dist/client/react/loadProjection.d.ts +674 -0
  299. package/dist/client/react/loadProjection.d.ts.map +1 -0
  300. package/dist/client/react/loadProjection.js +15 -0
  301. package/dist/client/react/loadProjection.js.map +1 -0
  302. package/dist/client/react/loadRemaining.d.ts +577 -0
  303. package/dist/client/react/loadRemaining.d.ts.map +1 -0
  304. package/dist/client/react/loadRemaining.js +19 -0
  305. package/dist/client/react/loadRemaining.js.map +1 -0
  306. package/dist/client/react/mainLocation.d.ts +6 -0
  307. package/dist/client/react/mainLocation.d.ts.map +1 -0
  308. package/dist/client/react/mainLocation.js +9 -0
  309. package/dist/client/react/mainLocation.js.map +1 -0
  310. package/dist/client/react/navigationLocation.d.ts +33 -0
  311. package/dist/client/react/navigationLocation.d.ts.map +1 -0
  312. package/dist/client/react/navigationLocation.js +22 -0
  313. package/dist/client/react/navigationLocation.js.map +1 -0
  314. package/dist/client/react/pageQuery.d.ts +5 -0
  315. package/dist/client/react/pageQuery.d.ts.map +1 -0
  316. package/dist/client/react/pageQuery.js +35 -0
  317. package/dist/client/react/pageQuery.js.map +1 -0
  318. package/dist/client/react/projectionChanges.d.ts +6 -0
  319. package/dist/client/react/projectionChanges.d.ts.map +1 -0
  320. package/dist/client/react/projectionChanges.js +16 -0
  321. package/dist/client/react/projectionChanges.js.map +1 -0
  322. package/dist/client/react/projectionRoute.d.ts +4 -0
  323. package/dist/client/react/projectionRoute.d.ts.map +1 -0
  324. package/dist/client/react/projectionRoute.js +18 -0
  325. package/dist/client/react/projectionRoute.js.map +1 -0
  326. package/dist/client/react/readerLink.d.ts +2 -0
  327. package/dist/client/react/readerLink.d.ts.map +1 -0
  328. package/dist/client/react/readerLink.js +8 -0
  329. package/dist/client/react/readerLink.js.map +1 -0
  330. package/dist/client/react/readingHistory.d.ts +38 -0
  331. package/dist/client/react/readingHistory.d.ts.map +1 -0
  332. package/dist/client/react/readingHistory.js +33 -0
  333. package/dist/client/react/readingHistory.js.map +1 -0
  334. package/dist/client/react/readingLibrary.d.ts +24 -0
  335. package/dist/client/react/readingLibrary.d.ts.map +1 -0
  336. package/dist/client/react/readingLibrary.js +18 -0
  337. package/dist/client/react/readingLibrary.js.map +1 -0
  338. package/dist/client/react/readingState.d.ts +20 -0
  339. package/dist/client/react/readingState.d.ts.map +1 -0
  340. package/dist/client/react/readingState.js +133 -0
  341. package/dist/client/react/readingState.js.map +1 -0
  342. package/dist/client/react/remainingRoute.d.ts +3 -0
  343. package/dist/client/react/remainingRoute.d.ts.map +1 -0
  344. package/dist/client/react/remainingRoute.js +19 -0
  345. package/dist/client/react/remainingRoute.js.map +1 -0
  346. package/dist/client/react/savedViews.d.ts +14 -0
  347. package/dist/client/react/savedViews.d.ts.map +1 -0
  348. package/dist/client/react/savedViews.js +87 -0
  349. package/dist/client/react/savedViews.js.map +1 -0
  350. package/dist/client/react/scheduleReading.d.ts +3 -0
  351. package/dist/client/react/scheduleReading.d.ts.map +1 -0
  352. package/dist/client/react/scheduleReading.js +36 -0
  353. package/dist/client/react/scheduleReading.js.map +1 -0
  354. package/dist/client/react/searchCommands.d.ts +11 -0
  355. package/dist/client/react/searchCommands.d.ts.map +1 -0
  356. package/dist/client/react/searchCommands.js +7 -0
  357. package/dist/client/react/searchCommands.js.map +1 -0
  358. package/dist/client/react/searchStatus.d.ts +6 -0
  359. package/dist/client/react/searchStatus.d.ts.map +1 -0
  360. package/dist/client/react/searchStatus.js +20 -0
  361. package/dist/client/react/searchStatus.js.map +1 -0
  362. package/dist/client/react/shellIds.d.ts +59 -0
  363. package/dist/client/react/shellIds.d.ts.map +1 -1
  364. package/dist/client/react/shellIds.js +59 -0
  365. package/dist/client/react/shellIds.js.map +1 -1
  366. package/dist/client/react/useAppearance.d.ts +14 -0
  367. package/dist/client/react/useAppearance.d.ts.map +1 -0
  368. package/dist/client/react/useAppearance.js +55 -0
  369. package/dist/client/react/useAppearance.js.map +1 -0
  370. package/dist/client/react/useBoardNavigation.d.ts +3 -0
  371. package/dist/client/react/useBoardNavigation.d.ts.map +1 -0
  372. package/dist/client/react/useBoardNavigation.js +129 -0
  373. package/dist/client/react/useBoardNavigation.js.map +1 -0
  374. package/dist/client/react/useDiagnosticsPolling.d.ts +3 -0
  375. package/dist/client/react/useDiagnosticsPolling.d.ts.map +1 -0
  376. package/dist/client/react/useDiagnosticsPolling.js +23 -0
  377. package/dist/client/react/useDiagnosticsPolling.js.map +1 -0
  378. package/dist/client/react/useDocumentPage.d.ts +1 -1
  379. package/dist/client/react/useDocumentPage.d.ts.map +1 -1
  380. package/dist/client/react/useFormFocus.d.ts +5 -0
  381. package/dist/client/react/useFormFocus.d.ts.map +1 -0
  382. package/dist/client/react/useFormFocus.js +46 -0
  383. package/dist/client/react/useFormFocus.js.map +1 -0
  384. package/dist/client/react/useHandoffForm.d.ts +69 -0
  385. package/dist/client/react/useHandoffForm.d.ts.map +1 -0
  386. package/dist/client/react/useHandoffForm.js +102 -0
  387. package/dist/client/react/useHandoffForm.js.map +1 -0
  388. package/dist/client/react/useHistoryComparison.d.ts +33 -0
  389. package/dist/client/react/useHistoryComparison.d.ts.map +1 -0
  390. package/dist/client/react/useHistoryComparison.js +146 -0
  391. package/dist/client/react/useHistoryComparison.js.map +1 -0
  392. package/dist/client/react/useMedia.d.ts +2 -0
  393. package/dist/client/react/useMedia.d.ts.map +1 -0
  394. package/dist/client/react/useMedia.js +19 -0
  395. package/dist/client/react/useMedia.js.map +1 -0
  396. package/dist/client/react/useResponseForm.d.ts +107 -0
  397. package/dist/client/react/useResponseForm.d.ts.map +1 -0
  398. package/dist/client/react/useResponseForm.js +138 -0
  399. package/dist/client/react/useResponseForm.js.map +1 -0
  400. package/dist/client/react/useSearchDialog.d.ts +7 -0
  401. package/dist/client/react/useSearchDialog.d.ts.map +1 -0
  402. package/dist/client/react/useSearchDialog.js +26 -0
  403. package/dist/client/react/useSearchDialog.js.map +1 -0
  404. package/dist/client/react/useSidebar.d.ts +9 -0
  405. package/dist/client/react/useSidebar.d.ts.map +1 -0
  406. package/dist/client/react/useSidebar.js +77 -0
  407. package/dist/client/react/useSidebar.js.map +1 -0
  408. package/dist/client/react/visualDimensions.d.ts +3 -0
  409. package/dist/client/react/visualDimensions.d.ts.map +1 -0
  410. package/dist/client/react/visualDimensions.js +21 -0
  411. package/dist/client/react/visualDimensions.js.map +1 -0
  412. package/dist/client/react/visualSources.d.ts +13 -0
  413. package/dist/client/react/visualSources.d.ts.map +1 -0
  414. package/dist/client/react/visualSources.js +92 -0
  415. package/dist/client/react/visualSources.js.map +1 -0
  416. package/dist/client/reconcile/normalized.d.ts +3 -0
  417. package/dist/client/reconcile/normalized.d.ts.map +1 -0
  418. package/dist/client/reconcile/{signature.js → normalized.js} +1 -37
  419. package/dist/client/reconcile/normalized.js.map +1 -0
  420. package/dist/client/responses/answerRecovery.d.ts +14 -0
  421. package/dist/client/responses/answerRecovery.d.ts.map +1 -0
  422. package/dist/client/responses/answerRecovery.js +33 -0
  423. package/dist/client/responses/answerRecovery.js.map +1 -0
  424. package/dist/client/responses/authorLabel.d.ts +1 -1
  425. package/dist/client/responses/authorLabel.d.ts.map +1 -1
  426. package/dist/client/responses/authorLabel.js +2 -2
  427. package/dist/client/responses/authorLabel.js.map +1 -1
  428. package/dist/client/responses/failure.d.ts +5 -0
  429. package/dist/client/responses/failure.d.ts.map +1 -0
  430. package/dist/client/responses/failure.js +13 -0
  431. package/dist/client/responses/failure.js.map +1 -0
  432. package/dist/client/responses/formSchema.d.ts +9 -0
  433. package/dist/client/responses/formSchema.d.ts.map +1 -1
  434. package/dist/client/responses/formSchema.js +3 -0
  435. package/dist/client/responses/formSchema.js.map +1 -1
  436. package/dist/client/responses/preview.d.ts +2 -2
  437. package/dist/client/responses/preview.d.ts.map +1 -1
  438. package/dist/client/responses/preview.js.map +1 -1
  439. package/dist/client/responses/retainContext.d.ts +6 -0
  440. package/dist/client/responses/retainContext.d.ts.map +1 -0
  441. package/dist/client/responses/retainContext.js +12 -0
  442. package/dist/client/responses/retainContext.js.map +1 -0
  443. package/dist/client/responses/summary.d.ts +6 -0
  444. package/dist/client/responses/summary.d.ts.map +1 -0
  445. package/dist/client/responses/summary.js +21 -0
  446. package/dist/client/responses/summary.js.map +1 -0
  447. package/dist/client/sourceChanged.d.ts +2 -0
  448. package/dist/client/sourceChanged.d.ts.map +1 -0
  449. package/dist/client/sourceChanged.js +4 -0
  450. package/dist/client/sourceChanged.js.map +1 -0
  451. package/dist/diagnostics/daemonContract.d.ts +1 -1
  452. package/dist/diagnostics/daemonContract.js +1 -1
  453. package/dist/diagnostics/daemonContract.js.map +1 -1
  454. package/dist/diagnostics/source.d.ts +14 -24
  455. package/dist/diagnostics/source.d.ts.map +1 -1
  456. package/dist/diagnostics/source.js +2 -9
  457. package/dist/diagnostics/source.js.map +1 -1
  458. package/dist/history/schema.d.ts +33 -0
  459. package/dist/history/schema.d.ts.map +1 -1
  460. package/dist/history/schema.js +12 -0
  461. package/dist/history/schema.js.map +1 -1
  462. package/dist/rpc/contract.d.ts +4235 -298
  463. package/dist/rpc/contract.d.ts.map +1 -1
  464. package/dist/rpc/contract.js +57 -3
  465. package/dist/rpc/contract.js.map +1 -1
  466. package/dist/rpc/handoffContract.d.ts +3 -3
  467. package/dist/rpc/responseContract.d.ts +5 -5
  468. package/dist/server/board.d.ts +4 -4
  469. package/dist/server/board.d.ts.map +1 -1
  470. package/dist/server/board.js +18 -95
  471. package/dist/server/board.js.map +1 -1
  472. package/dist/server/boardRuntime.d.ts +12 -0
  473. package/dist/server/boardRuntime.d.ts.map +1 -0
  474. package/dist/server/boardRuntime.js +37 -0
  475. package/dist/server/boardRuntime.js.map +1 -0
  476. package/dist/server/diagnostics/daemon.js +3 -3
  477. package/dist/server/diagnostics/daemon.js.map +1 -1
  478. package/dist/server/history/html.d.ts +0 -1
  479. package/dist/server/history/html.d.ts.map +1 -1
  480. package/dist/server/history/html.js +0 -3
  481. package/dist/server/history/html.js.map +1 -1
  482. package/dist/server/history/response.d.ts.map +1 -1
  483. package/dist/server/history/response.js +14 -1
  484. package/dist/server/history/response.js.map +1 -1
  485. package/dist/server/http/assets.d.ts +4 -4
  486. package/dist/server/http/assets.d.ts.map +1 -1
  487. package/dist/server/http/assets.js +1 -35
  488. package/dist/server/http/assets.js.map +1 -1
  489. package/dist/server/http/attachment.d.ts +2 -2
  490. package/dist/server/http/attachment.d.ts.map +1 -1
  491. package/dist/server/http/boardRoutes.d.ts +6 -0
  492. package/dist/server/http/boardRoutes.d.ts.map +1 -0
  493. package/dist/server/http/boardRoutes.js +45 -0
  494. package/dist/server/http/boardRoutes.js.map +1 -0
  495. package/dist/server/http/identity.d.ts +2 -2
  496. package/dist/server/http/identity.d.ts.map +1 -1
  497. package/dist/server/http/inbox.d.ts +1 -1
  498. package/dist/server/http/inbox.d.ts.map +1 -1
  499. package/dist/server/http/overview.d.ts +1 -1
  500. package/dist/server/http/overview.d.ts.map +1 -1
  501. package/dist/server/http/page.d.ts +2 -2
  502. package/dist/server/http/page.d.ts.map +1 -1
  503. package/dist/server/http/page.js +1 -2
  504. package/dist/server/http/page.js.map +1 -1
  505. package/dist/server/http/respond.d.ts +1 -1
  506. package/dist/server/http/respond.d.ts.map +1 -1
  507. package/dist/server/http/respond.js +1 -1
  508. package/dist/server/http/respond.js.map +1 -1
  509. package/dist/server/http/rpcPolicy.d.ts +4 -0
  510. package/dist/server/http/rpcPolicy.d.ts.map +1 -0
  511. package/dist/server/http/rpcPolicy.js +11 -0
  512. package/dist/server/http/rpcPolicy.js.map +1 -0
  513. package/dist/server/http/work.d.ts +2 -2
  514. package/dist/server/http/work.d.ts.map +1 -1
  515. package/dist/server/integration/diagnostics.d.ts +1 -1
  516. package/dist/server/responses/agent.d.ts +1 -1
  517. package/dist/server/responses/agent.d.ts.map +1 -1
  518. package/dist/server/responses/agent.js +2 -2
  519. package/dist/server/responses/agent.js.map +1 -1
  520. package/dist/server/responses/composerHtml.js +1 -1
  521. package/dist/server/responses/composerHtml.js.map +1 -1
  522. package/dist/server/responses/waitFor.d.ts +1 -1
  523. package/dist/server/responses/waitFor.d.ts.map +1 -1
  524. package/dist/server/rpc/HandlerOptions.d.ts +12 -0
  525. package/dist/server/rpc/HandlerOptions.d.ts.map +1 -0
  526. package/dist/server/rpc/HandlerOptions.js +2 -0
  527. package/dist/server/rpc/HandlerOptions.js.map +1 -0
  528. package/dist/server/rpc/handlers.d.ts +2 -2
  529. package/dist/server/rpc/handlers.d.ts.map +1 -1
  530. package/dist/server/rpc/handlers.js +17 -10
  531. package/dist/server/rpc/handlers.js.map +1 -1
  532. package/dist/server/serve-cli.js +8 -8
  533. package/dist/server/serve-cli.js.map +1 -1
  534. package/dist/server/serve.d.ts +2 -3
  535. package/dist/server/serve.d.ts.map +1 -1
  536. package/dist/server/serve.js +20 -9
  537. package/dist/server/serve.js.map +1 -1
  538. package/dist/server/views/projectionQueries.d.ts +681 -0
  539. package/dist/server/views/projectionQueries.d.ts.map +1 -0
  540. package/dist/server/views/projectionQueries.js +70 -0
  541. package/dist/server/views/projectionQueries.js.map +1 -0
  542. package/dist/server/views/remainingQueries.d.ts +679 -0
  543. package/dist/server/views/remainingQueries.d.ts.map +1 -0
  544. package/dist/server/views/remainingQueries.js +58 -0
  545. package/dist/server/views/remainingQueries.js.map +1 -0
  546. package/dist/server/views/resultProjection.d.ts +420 -0
  547. package/dist/server/views/resultProjection.d.ts.map +1 -0
  548. package/dist/server/views/resultProjection.js +35 -0
  549. package/dist/server/views/resultProjection.js.map +1 -0
  550. package/dist/server/views/resultTargets.d.ts +6 -0
  551. package/dist/server/views/resultTargets.d.ts.map +1 -0
  552. package/dist/server/views/resultTargets.js +31 -0
  553. package/dist/server/views/resultTargets.js.map +1 -0
  554. package/dist/server/views/state.d.ts +8 -9
  555. package/dist/server/views/state.d.ts.map +1 -1
  556. package/dist/server/views/state.js +5 -38
  557. package/dist/server/views/state.js.map +1 -1
  558. package/dist/server/views/workStyle.d.ts.map +1 -1
  559. package/dist/server/views/workStyle.js +1 -0
  560. package/dist/server/views/workStyle.js.map +1 -1
  561. package/docs/delivery/decision-write-examples.md +1 -1
  562. package/docs/delivery/handoff-examples.md +1 -1
  563. package/docs/delivery/response-write-examples.md +1 -1
  564. package/docs/delivery/result-review-examples.md +1 -1
  565. package/docs/roadmap.md +7 -7
  566. package/package.json +52 -139
  567. package/src/browser/diagnostics/schema.ts +18 -0
  568. package/src/browser/views/ResultProjection.ts +37 -0
  569. package/src/browser/views/remaining.ts +26 -0
  570. package/src/browser/views/schema.ts +68 -0
  571. package/src/browser/views/state.ts +47 -0
  572. package/src/client/client.ts +8 -8
  573. package/src/client/document/Mermaid.ts +49 -9
  574. package/src/client/document/View.ts +14 -1
  575. package/src/client/document/boardLayout.ts +80 -0
  576. package/src/client/entry.ts +0 -24
  577. package/src/client/formDraft.ts +9 -0
  578. package/src/client/formFocus.ts +5 -0
  579. package/src/client/handoffs/failureStatus.ts +6 -0
  580. package/src/client/page/routeQuery.ts +0 -5
  581. package/src/client/react/Age.tsx +35 -0
  582. package/src/client/react/AnswerForm.tsx +88 -82
  583. package/src/client/react/AnswerPrompts.tsx +67 -54
  584. package/src/client/react/BoardMain.tsx +30 -0
  585. package/src/client/react/BoardShell.tsx +89 -27
  586. package/src/client/react/ChangesMain.tsx +68 -0
  587. package/src/client/react/DiagnosticsFleet.tsx +64 -0
  588. package/src/client/react/DiagnosticsMain.tsx +29 -0
  589. package/src/client/react/DiagnosticsPage.tsx +77 -0
  590. package/src/client/react/DocumentContext.tsx +25 -9
  591. package/src/client/react/DocumentMain.tsx +8 -6
  592. package/src/client/react/Favorite.tsx +17 -0
  593. package/src/client/react/FormField.tsx +68 -0
  594. package/src/client/react/HandoffForm.tsx +78 -0
  595. package/src/client/react/HandoffPage.tsx +78 -0
  596. package/src/client/react/HandoffPrompt.tsx +33 -0
  597. package/src/client/react/Header.tsx +34 -13
  598. package/src/client/react/HistoryComparison.tsx +60 -0
  599. package/src/client/react/HistoryRetention.tsx +29 -0
  600. package/src/client/react/HomeBoard.tsx +15 -0
  601. package/src/client/react/InboxPage.tsx +51 -0
  602. package/src/client/react/LiveControls.tsx +78 -0
  603. package/src/client/react/Modal.tsx +92 -0
  604. package/src/client/react/NavigationTree.tsx +2 -1
  605. package/src/client/react/OverviewGroups.tsx +61 -0
  606. package/src/client/react/OverviewPage.tsx +68 -0
  607. package/src/client/react/ProjectionFrame.tsx +140 -0
  608. package/src/client/react/ProjectionMain.tsx +63 -0
  609. package/src/client/react/PromptOption.tsx +56 -0
  610. package/src/client/react/ReadingLibrary.tsx +147 -0
  611. package/src/client/react/RemainingMain.tsx +66 -0
  612. package/src/client/react/RespondPage.tsx +41 -0
  613. package/src/client/react/ResponseMarkdown.tsx +32 -2
  614. package/src/client/react/ResultCriteria.tsx +78 -0
  615. package/src/client/react/ResultFeedback.tsx +67 -0
  616. package/src/client/react/ResultPage.tsx +50 -0
  617. package/src/client/react/SavedViews.tsx +61 -0
  618. package/src/client/react/SearchDialog.tsx +136 -0
  619. package/src/client/react/SearchResults.tsx +48 -0
  620. package/src/client/react/ShellApi.ts +11 -1
  621. package/src/client/react/Sidebar.tsx +57 -4
  622. package/src/client/react/StartPage.tsx +41 -0
  623. package/src/client/react/UpdatesToggle.tsx +13 -0
  624. package/src/client/react/VisualControls.tsx +59 -0
  625. package/src/client/react/VisualInspection.tsx +35 -0
  626. package/src/client/react/VisualViewer.tsx +147 -0
  627. package/src/client/react/WorkCards.tsx +39 -0
  628. package/src/client/react/WorkControls.tsx +73 -0
  629. package/src/client/react/WorkDetail.tsx +35 -0
  630. package/src/client/react/WorkItemTitle.tsx +9 -0
  631. package/src/client/react/WorkPage.tsx +59 -0
  632. package/src/client/react/WorkResults.tsx +9 -0
  633. package/src/client/react/WorkTable.tsx +39 -0
  634. package/src/client/react/WorkTools.tsx +17 -0
  635. package/src/client/react/activeRead.ts +15 -0
  636. package/src/client/react/createResponse.ts +40 -0
  637. package/src/client/react/diagnosticsValues.tsx +103 -0
  638. package/src/client/react/entry.css +20 -0
  639. package/src/client/react/entry.tsx +6 -19
  640. package/src/client/react/historyStore.ts +56 -0
  641. package/src/client/react/liveStatus.ts +52 -0
  642. package/src/client/react/loadBoardPage.ts +15 -5
  643. package/src/client/react/loadProjection.ts +23 -0
  644. package/src/client/react/loadRemaining.ts +27 -0
  645. package/src/client/react/mainLocation.ts +12 -0
  646. package/src/client/react/navigationLocation.ts +27 -0
  647. package/src/client/react/pageQuery.ts +38 -0
  648. package/src/client/react/projectionChanges.ts +21 -0
  649. package/src/client/react/projectionRoute.ts +21 -0
  650. package/src/client/react/readerLink.ts +9 -0
  651. package/src/client/react/readingHistory.ts +31 -0
  652. package/src/client/react/readingLibrary.ts +22 -0
  653. package/src/client/react/readingState.ts +133 -0
  654. package/src/client/react/remainingRoute.ts +19 -0
  655. package/src/client/react/savedViews.ts +84 -0
  656. package/src/client/react/scheduleReading.ts +41 -0
  657. package/src/client/react/searchCommands.ts +15 -0
  658. package/src/client/react/searchStatus.ts +30 -0
  659. package/src/client/react/shellIds.ts +59 -0
  660. package/src/client/react/useAppearance.ts +54 -0
  661. package/src/client/react/useBoardNavigation.ts +139 -0
  662. package/src/client/react/useDiagnosticsPolling.ts +24 -0
  663. package/src/client/react/useDocumentPage.ts +1 -1
  664. package/src/client/react/useFormFocus.ts +46 -0
  665. package/src/client/react/useHandoffForm.ts +105 -0
  666. package/src/client/react/useHistoryComparison.ts +142 -0
  667. package/src/client/react/useMedia.ts +19 -0
  668. package/src/client/react/useResponseForm.ts +147 -0
  669. package/src/client/react/useSearchDialog.ts +25 -0
  670. package/src/client/react/useSidebar.ts +81 -0
  671. package/src/client/react/visualDimensions.ts +20 -0
  672. package/src/client/react/visualSources.ts +105 -0
  673. package/src/client/reconcile/{signature.ts → normalized.ts} +0 -37
  674. package/src/client/responses/answerRecovery.ts +37 -0
  675. package/src/client/responses/authorLabel.ts +3 -3
  676. package/src/client/responses/failure.ts +13 -0
  677. package/src/client/responses/formSchema.ts +4 -0
  678. package/src/client/responses/preview.ts +2 -2
  679. package/src/client/responses/retainContext.ts +15 -0
  680. package/src/client/responses/summary.ts +25 -0
  681. package/src/client/sourceChanged.ts +3 -0
  682. package/src/diagnostics/daemonContract.ts +1 -1
  683. package/src/diagnostics/source.ts +5 -14
  684. package/src/history/schema.ts +15 -0
  685. package/src/rpc/contract.ts +57 -3
  686. package/src/server/board.ts +24 -126
  687. package/src/server/boardRuntime.ts +54 -0
  688. package/src/server/diagnostics/daemon.ts +3 -3
  689. package/src/server/history/html.ts +0 -3
  690. package/src/server/history/response.ts +15 -1
  691. package/src/server/http/assets.ts +2 -36
  692. package/src/server/http/attachment.ts +1 -1
  693. package/src/server/http/boardRoutes.ts +62 -0
  694. package/src/server/http/identity.ts +1 -1
  695. package/src/server/http/page.ts +2 -3
  696. package/src/server/http/respond.ts +1 -1
  697. package/src/server/http/rpcPolicy.ts +16 -0
  698. package/src/server/http/work.ts +1 -1
  699. package/src/server/responses/agent.ts +2 -2
  700. package/src/server/responses/composerHtml.ts +1 -1
  701. package/src/server/responses/waitFor.ts +1 -1
  702. package/src/server/rpc/HandlerOptions.ts +12 -0
  703. package/src/server/rpc/handlers.ts +18 -15
  704. package/src/server/serve-cli.ts +8 -8
  705. package/src/server/serve.ts +23 -10
  706. package/src/server/views/projectionQueries.ts +78 -0
  707. package/src/server/views/remainingQueries.ts +74 -0
  708. package/src/server/views/resultProjection.ts +45 -0
  709. package/src/server/views/resultTargets.ts +34 -0
  710. package/src/server/views/state.ts +5 -40
  711. package/src/server/views/workStyle.ts +1 -0
  712. package/dist/client/diagnostics/script.d.ts +0 -2
  713. package/dist/client/diagnostics/script.d.ts.map +0 -1
  714. package/dist/client/diagnostics/script.js +0 -31
  715. package/dist/client/diagnostics/script.js.map +0 -1
  716. package/dist/client/fieldFeedback.d.ts +0 -17
  717. package/dist/client/fieldFeedback.d.ts.map +0 -1
  718. package/dist/client/fieldFeedback.js +0 -38
  719. package/dist/client/fieldFeedback.js.map +0 -1
  720. package/dist/client/handoffs/copy.d.ts +0 -3
  721. package/dist/client/handoffs/copy.d.ts.map +0 -1
  722. package/dist/client/handoffs/copy.js +0 -47
  723. package/dist/client/handoffs/copy.js.map +0 -1
  724. package/dist/client/handoffs/fields.d.ts +0 -9
  725. package/dist/client/handoffs/fields.d.ts.map +0 -1
  726. package/dist/client/handoffs/fields.js +0 -34
  727. package/dist/client/handoffs/fields.js.map +0 -1
  728. package/dist/client/handoffs/form.d.ts +0 -36
  729. package/dist/client/handoffs/form.d.ts.map +0 -1
  730. package/dist/client/handoffs/form.js +0 -33
  731. package/dist/client/handoffs/form.js.map +0 -1
  732. package/dist/client/handoffs/setup.d.ts +0 -2
  733. package/dist/client/handoffs/setup.d.ts.map +0 -1
  734. package/dist/client/handoffs/setup.js +0 -125
  735. package/dist/client/handoffs/setup.js.map +0 -1
  736. package/dist/client/history/script.d.ts +0 -2
  737. package/dist/client/history/script.d.ts.map +0 -1
  738. package/dist/client/history/script.js +0 -128
  739. package/dist/client/history/script.js.map +0 -1
  740. package/dist/client/legacyRuntime.d.ts +0 -9
  741. package/dist/client/legacyRuntime.d.ts.map +0 -1
  742. package/dist/client/legacyRuntime.js +0 -15
  743. package/dist/client/legacyRuntime.js.map +0 -1
  744. package/dist/client/page/ageScript.d.ts +0 -2
  745. package/dist/client/page/ageScript.d.ts.map +0 -1
  746. package/dist/client/page/ageScript.js +0 -23
  747. package/dist/client/page/ageScript.js.map +0 -1
  748. package/dist/client/page/formReadingScript.d.ts +0 -2
  749. package/dist/client/page/formReadingScript.d.ts.map +0 -1
  750. package/dist/client/page/formReadingScript.js +0 -26
  751. package/dist/client/page/formReadingScript.js.map +0 -1
  752. package/dist/client/page/itemContextScript.d.ts +0 -2
  753. package/dist/client/page/itemContextScript.d.ts.map +0 -1
  754. package/dist/client/page/itemContextScript.js +0 -21
  755. package/dist/client/page/itemContextScript.js.map +0 -1
  756. package/dist/client/page/libraryScript.d.ts +0 -2
  757. package/dist/client/page/libraryScript.d.ts.map +0 -1
  758. package/dist/client/page/libraryScript.js +0 -85
  759. package/dist/client/page/libraryScript.js.map +0 -1
  760. package/dist/client/page/navigationHistoryScript.d.ts +0 -2
  761. package/dist/client/page/navigationHistoryScript.d.ts.map +0 -1
  762. package/dist/client/page/navigationHistoryScript.js +0 -47
  763. package/dist/client/page/navigationHistoryScript.js.map +0 -1
  764. package/dist/client/page/navigationScript.d.ts +0 -2
  765. package/dist/client/page/navigationScript.d.ts.map +0 -1
  766. package/dist/client/page/navigationScript.js +0 -113
  767. package/dist/client/page/navigationScript.js.map +0 -1
  768. package/dist/client/page/preferencesScript.d.ts +0 -2
  769. package/dist/client/page/preferencesScript.d.ts.map +0 -1
  770. package/dist/client/page/preferencesScript.js +0 -46
  771. package/dist/client/page/preferencesScript.js.map +0 -1
  772. package/dist/client/page/reactNavigationScript.d.ts +0 -2
  773. package/dist/client/page/reactNavigationScript.d.ts.map +0 -1
  774. package/dist/client/page/reactNavigationScript.js +0 -31
  775. package/dist/client/page/reactNavigationScript.js.map +0 -1
  776. package/dist/client/page/readingStateScript.d.ts +0 -2
  777. package/dist/client/page/readingStateScript.d.ts.map +0 -1
  778. package/dist/client/page/readingStateScript.js +0 -65
  779. package/dist/client/page/readingStateScript.js.map +0 -1
  780. package/dist/client/page/runtime.d.ts +0 -3
  781. package/dist/client/page/runtime.d.ts.map +0 -1
  782. package/dist/client/page/runtime.js +0 -111
  783. package/dist/client/page/runtime.js.map +0 -1
  784. package/dist/client/page/scripts.d.ts +0 -3
  785. package/dist/client/page/scripts.d.ts.map +0 -1
  786. package/dist/client/page/scripts.js +0 -91
  787. package/dist/client/page/scripts.js.map +0 -1
  788. package/dist/client/page/searchResultsScript.d.ts +0 -2
  789. package/dist/client/page/searchResultsScript.d.ts.map +0 -1
  790. package/dist/client/page/searchResultsScript.js +0 -64
  791. package/dist/client/page/searchResultsScript.js.map +0 -1
  792. package/dist/client/page/searchScript.d.ts +0 -2
  793. package/dist/client/page/searchScript.d.ts.map +0 -1
  794. package/dist/client/page/searchScript.js +0 -75
  795. package/dist/client/page/searchScript.js.map +0 -1
  796. package/dist/client/page/sidebarScript.d.ts +0 -2
  797. package/dist/client/page/sidebarScript.d.ts.map +0 -1
  798. package/dist/client/page/sidebarScript.js +0 -87
  799. package/dist/client/page/sidebarScript.js.map +0 -1
  800. package/dist/client/page/stateScript.d.ts +0 -2
  801. package/dist/client/page/stateScript.d.ts.map +0 -1
  802. package/dist/client/page/stateScript.js +0 -95
  803. package/dist/client/page/stateScript.js.map +0 -1
  804. package/dist/client/page/visualScript.d.ts +0 -2
  805. package/dist/client/page/visualScript.d.ts.map +0 -1
  806. package/dist/client/page/visualScript.js +0 -42
  807. package/dist/client/page/visualScript.js.map +0 -1
  808. package/dist/client/page/visualViewport.d.ts +0 -2
  809. package/dist/client/page/visualViewport.d.ts.map +0 -1
  810. package/dist/client/page/visualViewport.js +0 -87
  811. package/dist/client/page/visualViewport.js.map +0 -1
  812. package/dist/client/react/AnswerFocus.d.ts +0 -6
  813. package/dist/client/react/AnswerFocus.d.ts.map +0 -1
  814. package/dist/client/react/AnswerFocus.js +0 -12
  815. package/dist/client/react/AnswerFocus.js.map +0 -1
  816. package/dist/client/react/LegacyMain.d.ts +0 -9
  817. package/dist/client/react/LegacyMain.d.ts.map +0 -1
  818. package/dist/client/react/LegacyMain.js +0 -32
  819. package/dist/client/react/LegacyMain.js.map +0 -1
  820. package/dist/client/react/legacyPage.d.ts +0 -7
  821. package/dist/client/react/legacyPage.d.ts.map +0 -1
  822. package/dist/client/react/legacyPage.js +0 -63
  823. package/dist/client/react/legacyPage.js.map +0 -1
  824. package/dist/client/reconcile/patch.d.ts +0 -2
  825. package/dist/client/reconcile/patch.d.ts.map +0 -1
  826. package/dist/client/reconcile/patch.js +0 -64
  827. package/dist/client/reconcile/patch.js.map +0 -1
  828. package/dist/client/reconcile/signature.d.ts +0 -8
  829. package/dist/client/reconcile/signature.d.ts.map +0 -1
  830. package/dist/client/reconcile/signature.js.map +0 -1
  831. package/dist/client/reconcile/swap.d.ts +0 -2
  832. package/dist/client/reconcile/swap.d.ts.map +0 -1
  833. package/dist/client/reconcile/swap.js +0 -36
  834. package/dist/client/reconcile/swap.js.map +0 -1
  835. package/dist/client/responses/attach.d.ts +0 -2
  836. package/dist/client/responses/attach.d.ts.map +0 -1
  837. package/dist/client/responses/attach.js +0 -133
  838. package/dist/client/responses/attach.js.map +0 -1
  839. package/dist/client/responses/binding.d.ts +0 -3
  840. package/dist/client/responses/binding.d.ts.map +0 -1
  841. package/dist/client/responses/binding.js +0 -16
  842. package/dist/client/responses/binding.js.map +0 -1
  843. package/dist/client/responses/draft.d.ts +0 -13
  844. package/dist/client/responses/draft.d.ts.map +0 -1
  845. package/dist/client/responses/draft.js +0 -15
  846. package/dist/client/responses/draft.js.map +0 -1
  847. package/dist/client/responses/draftSession.d.ts +0 -8
  848. package/dist/client/responses/draftSession.d.ts.map +0 -1
  849. package/dist/client/responses/draftSession.js +0 -105
  850. package/dist/client/responses/draftSession.js.map +0 -1
  851. package/dist/client/responses/drafts.d.ts +0 -21
  852. package/dist/client/responses/drafts.d.ts.map +0 -1
  853. package/dist/client/responses/drafts.js +0 -68
  854. package/dist/client/responses/drafts.js.map +0 -1
  855. package/dist/client/responses/feedback.d.ts +0 -6
  856. package/dist/client/responses/feedback.d.ts.map +0 -1
  857. package/dist/client/responses/feedback.js +0 -77
  858. package/dist/client/responses/feedback.js.map +0 -1
  859. package/dist/client/responses/fields.d.ts +0 -12
  860. package/dist/client/responses/fields.d.ts.map +0 -1
  861. package/dist/client/responses/fields.js +0 -23
  862. package/dist/client/responses/fields.js.map +0 -1
  863. package/dist/client/responses/form.d.ts +0 -37
  864. package/dist/client/responses/form.d.ts.map +0 -1
  865. package/dist/client/responses/form.js +0 -43
  866. package/dist/client/responses/form.js.map +0 -1
  867. package/dist/client/responses/questionnaireControls.d.ts +0 -9
  868. package/dist/client/responses/questionnaireControls.d.ts.map +0 -1
  869. package/dist/client/responses/questionnaireControls.js +0 -82
  870. package/dist/client/responses/questionnaireControls.js.map +0 -1
  871. package/dist/client/responses/setup.d.ts +0 -2
  872. package/dist/client/responses/setup.d.ts.map +0 -1
  873. package/dist/client/responses/setup.js +0 -7
  874. package/dist/client/responses/setup.js.map +0 -1
  875. package/dist/client/responses/submit.d.ts +0 -5
  876. package/dist/client/responses/submit.d.ts.map +0 -1
  877. package/dist/client/responses/submit.js +0 -33
  878. package/dist/client/responses/submit.js.map +0 -1
  879. package/dist/client/views/savedScript.d.ts +0 -2
  880. package/dist/client/views/savedScript.d.ts.map +0 -1
  881. package/dist/client/views/savedScript.js +0 -89
  882. package/dist/client/views/savedScript.js.map +0 -1
  883. package/dist/server/diagnostics/html.d.ts +0 -8
  884. package/dist/server/diagnostics/html.d.ts.map +0 -1
  885. package/dist/server/diagnostics/html.js +0 -79
  886. package/dist/server/diagnostics/html.js.map +0 -1
  887. package/dist/server/diagnostics/page.d.ts +0 -55
  888. package/dist/server/diagnostics/page.d.ts.map +0 -1
  889. package/dist/server/diagnostics/page.js +0 -11
  890. package/dist/server/diagnostics/page.js.map +0 -1
  891. package/dist/server/handoffs/html.d.ts +0 -36
  892. package/dist/server/handoffs/html.d.ts.map +0 -1
  893. package/dist/server/handoffs/html.js +0 -31
  894. package/dist/server/handoffs/html.js.map +0 -1
  895. package/dist/server/handoffs/page.d.ts +0 -6
  896. package/dist/server/handoffs/page.d.ts.map +0 -1
  897. package/dist/server/handoffs/page.js +0 -34
  898. package/dist/server/handoffs/page.js.map +0 -1
  899. package/dist/server/http/changesPage.d.ts +0 -5
  900. package/dist/server/http/changesPage.d.ts.map +0 -1
  901. package/dist/server/http/changesPage.js +0 -13
  902. package/dist/server/http/changesPage.js.map +0 -1
  903. package/dist/server/http/readPage.d.ts +0 -4
  904. package/dist/server/http/readPage.d.ts.map +0 -1
  905. package/dist/server/http/readPage.js +0 -9
  906. package/dist/server/http/readPage.js.map +0 -1
  907. package/dist/server/http/start.d.ts +0 -5
  908. package/dist/server/http/start.d.ts.map +0 -1
  909. package/dist/server/http/start.js +0 -13
  910. package/dist/server/http/start.js.map +0 -1
  911. package/dist/server/page/startHtml.d.ts +0 -2
  912. package/dist/server/page/startHtml.d.ts.map +0 -1
  913. package/dist/server/page/startHtml.js +0 -10
  914. package/dist/server/page/startHtml.js.map +0 -1
  915. package/dist/server/responses/page.d.ts +0 -6
  916. package/dist/server/responses/page.d.ts.map +0 -1
  917. package/dist/server/responses/page.js +0 -25
  918. package/dist/server/responses/page.js.map +0 -1
  919. package/dist/server/results/criteria.d.ts +0 -3
  920. package/dist/server/results/criteria.d.ts.map +0 -1
  921. package/dist/server/results/criteria.js +0 -34
  922. package/dist/server/results/criteria.js.map +0 -1
  923. package/dist/server/results/feedback.d.ts +0 -6
  924. package/dist/server/results/feedback.d.ts.map +0 -1
  925. package/dist/server/results/feedback.js +0 -32
  926. package/dist/server/results/feedback.js.map +0 -1
  927. package/dist/server/results/page.d.ts +0 -6
  928. package/dist/server/results/page.d.ts.map +0 -1
  929. package/dist/server/results/page.js +0 -41
  930. package/dist/server/results/page.js.map +0 -1
  931. package/dist/server/rpc/transport.d.ts +0 -14
  932. package/dist/server/rpc/transport.d.ts.map +0 -1
  933. package/dist/server/rpc/transport.js +0 -15
  934. package/dist/server/rpc/transport.js.map +0 -1
  935. package/src/client/diagnostics/script.ts +0 -31
  936. package/src/client/fieldFeedback.ts +0 -53
  937. package/src/client/handoffs/copy.ts +0 -45
  938. package/src/client/handoffs/fields.ts +0 -38
  939. package/src/client/handoffs/form.ts +0 -41
  940. package/src/client/handoffs/setup.ts +0 -142
  941. package/src/client/history/script.ts +0 -127
  942. package/src/client/legacyRuntime.ts +0 -11
  943. package/src/client/page/ageScript.ts +0 -22
  944. package/src/client/page/formReadingScript.ts +0 -25
  945. package/src/client/page/itemContextScript.ts +0 -20
  946. package/src/client/page/libraryScript.ts +0 -84
  947. package/src/client/page/navigationHistoryScript.ts +0 -46
  948. package/src/client/page/navigationScript.ts +0 -113
  949. package/src/client/page/preferencesScript.ts +0 -45
  950. package/src/client/page/reactNavigationScript.ts +0 -30
  951. package/src/client/page/readingStateScript.ts +0 -64
  952. package/src/client/page/runtime.ts +0 -111
  953. package/src/client/page/scripts.ts +0 -91
  954. package/src/client/page/searchResultsScript.ts +0 -63
  955. package/src/client/page/searchScript.ts +0 -74
  956. package/src/client/page/sidebarScript.ts +0 -86
  957. package/src/client/page/stateScript.ts +0 -95
  958. package/src/client/page/visualScript.ts +0 -41
  959. package/src/client/page/visualViewport.ts +0 -86
  960. package/src/client/react/AnswerFocus.tsx +0 -10
  961. package/src/client/react/LegacyMain.tsx +0 -46
  962. package/src/client/react/legacyPage.ts +0 -69
  963. package/src/client/reconcile/patch.ts +0 -71
  964. package/src/client/reconcile/swap.ts +0 -37
  965. package/src/client/responses/attach.ts +0 -150
  966. package/src/client/responses/binding.ts +0 -16
  967. package/src/client/responses/draft.ts +0 -20
  968. package/src/client/responses/draftSession.ts +0 -108
  969. package/src/client/responses/drafts.ts +0 -82
  970. package/src/client/responses/feedback.ts +0 -81
  971. package/src/client/responses/fields.ts +0 -26
  972. package/src/client/responses/form.ts +0 -58
  973. package/src/client/responses/questionnaireControls.ts +0 -94
  974. package/src/client/responses/setup.ts +0 -6
  975. package/src/client/responses/submit.ts +0 -44
  976. package/src/client/views/savedScript.ts +0 -88
  977. package/src/server/diagnostics/html.ts +0 -93
  978. package/src/server/diagnostics/page.ts +0 -31
  979. package/src/server/handoffs/html.ts +0 -42
  980. package/src/server/handoffs/page.ts +0 -51
  981. package/src/server/http/changesPage.ts +0 -15
  982. package/src/server/http/readPage.ts +0 -13
  983. package/src/server/http/start.ts +0 -27
  984. package/src/server/page/startHtml.ts +0 -10
  985. package/src/server/responses/page.ts +0 -37
  986. package/src/server/results/criteria.ts +0 -37
  987. package/src/server/results/feedback.ts +0 -44
  988. package/src/server/results/page.ts +0 -63
  989. package/src/server/rpc/transport.ts +0 -34
@@ -1,44 +0,0 @@
1
- import { Schema } from "effect";
2
- import { InternalServerError } from "@shivaedev/platform/errors/taxonomy.ts";
3
- import { session } from "#client/session.ts";
4
- import { PublicationUncertain, ResponseRejection } from "#rpc/rejections.ts";
5
- import type { draftSession } from "./draftSession.ts";
6
- import type { Draft } from "./drafts.ts";
7
- import type { ResponseSubmission } from "./formSchema.ts";
8
-
9
- export async function submitResponse(
10
- form: HTMLFormElement,
11
- status: HTMLParagraphElement,
12
- drafts: ReturnType<typeof draftSession>,
13
- pending: Draft,
14
- values: ResponseSubmission,
15
- ) {
16
- status.dataset.outcome = "pending";
17
- status.textContent = "Pending: registering reviewed context, then recording response…";
18
- const native = session(window);
19
- try {
20
- const question = await native.mutate(
21
- native.responses.registerQuestion.run({ item: form.dataset.item ?? "", request: form.dataset.request ?? "", revision: values.revision }),
22
- );
23
- await native.mutate(native.responses.recordResponse.run({ ...values, question: question.id }));
24
- if (form.isConnected) {
25
- status.dataset.outcome = "saved";
26
- status.textContent = `Saved: responses/${values.id}.md. This records feedback, not acceptance.`;
27
- }
28
- const cleared = drafts.saved(pending);
29
- if (!cleared && form.isConnected) {
30
- status.textContent += " Your current draft remains unsaved.";
31
- }
32
- return cleared;
33
- } catch (error) {
34
- if (form.isConnected) {
35
- const outcome =
36
- Schema.is(ResponseRejection)(error) && !(error instanceof PublicationUncertain) && !(error instanceof InternalServerError)
37
- ? "rejected"
38
- : "uncertain";
39
- status.dataset.outcome = outcome;
40
- status.textContent = `${outcome === "rejected" ? "Rejected" : "Uncertain"}: ${String(error)}. Draft retained. Preview and retry with the same identity; saved content will be reconciled.`;
41
- }
42
- throw error;
43
- }
44
- }
@@ -1,88 +0,0 @@
1
- export function savedScript(): string {
2
- return `
3
- const key = "work-board:views:" + document.documentElement.dataset.workspace;
4
- let views = [];
5
- let notice = "";
6
- let selectedName = "";
7
- const localUrl = (value) => {
8
- if (typeof value !== "string" || value.length > 8192) return null;
9
- try {
10
- const url = new URL(value, location.href);
11
- if (url.origin !== location.origin || url.pathname !== "/_board/work") return null;
12
- for (const name of [...url.searchParams.keys()]) {
13
- if (!["view", "board", "owner", "status", "q", "sort"].includes(name)) url.searchParams.delete(name);
14
- }
15
- return url.pathname + url.search;
16
- } catch { return null; }
17
- };
18
- try {
19
- const saved = JSON.parse(localStorage.getItem(key) ?? "[]");
20
- if (Array.isArray(saved)) {
21
- for (const entry of saved) {
22
- const url = localUrl(entry?.url);
23
- if (!url || typeof entry.name !== "string" || !entry.name.trim() || entry.name.length > 60 || views.some((view) => view.name === entry.name)) continue;
24
- views.push({ name: entry.name, url });
25
- if (views.length === 10) break;
26
- }
27
- }
28
- } catch { notice = "Saved views could not be restored; new views apply to this page until saved."; }
29
- const persist = () => {
30
- try { localStorage.setItem(key, JSON.stringify(views)); notice = ""; }
31
- catch { notice = "Saved views apply to this page only; browser storage is unavailable."; }
32
- };
33
- const selectedView = () => views.find((view) => view.name === document.getElementById("saved-view")?.value);
34
- const showSelection = () => {
35
- const open = document.getElementById("open-saved-view");
36
- if (!open) return;
37
- const selected = selectedView();
38
- open.hidden = !selected;
39
- if (selected) open.href = selected.url; else open.removeAttribute("href");
40
- document.getElementById("remove-saved-view").disabled = !selected;
41
- };
42
- const option = (label, value) => {
43
- const node = document.createElement("option");
44
- node.textContent = label; node.value = value;
45
- return node;
46
- };
47
- const refresh = (chosen) => {
48
- const tools = document.getElementById("saved-work-views");
49
- if (!tools) return;
50
- const picker = document.getElementById("saved-view");
51
- const previous = chosen ?? selectedName;
52
- const labels = views.map((view) => view.name);
53
- if (JSON.stringify([...picker.options].slice(1).map((option) => option.value)) !== JSON.stringify(labels)) {
54
- picker.replaceChildren(option(views.length ? "Choose a saved view" : "No saved views", ""), ...views.map((view) => option(view.name, view.name)));
55
- }
56
- picker.value = views.some((view) => view.name === previous) ? previous : "";
57
- selectedName = picker.value;
58
- picker.disabled = views.length === 0;
59
- tools.querySelector('#save-work-view button').disabled = false;
60
- document.getElementById("clear-saved-views").disabled = views.length === 0;
61
- document.getElementById("saved-view-status").textContent = notice || "Save board, filters, sort, and layout locally. Up to 10 named views; saving the same name updates it. Item selection stays in the URL.";
62
- showSelection();
63
- };
64
- document.addEventListener("submit", (event) => {
65
- if (!event.target.matches?.("#save-work-view")) return;
66
- event.preventDefault();
67
- const name = document.getElementById("view-name").value.trim().slice(0, 60);
68
- const url = localUrl(document.getElementById("saved-work-views").dataset.url);
69
- if (!name || !url) return;
70
- if (views.length === 10 && !views.some((view) => view.name === name)) {
71
- notice = "You have 10 saved views. Remove one or update an existing name."; refresh(); return;
72
- }
73
- views = [{ name, url }, ...views.filter((view) => view.name !== name)];
74
- persist(); refresh(name);
75
- });
76
- document.addEventListener("change", (event) => {
77
- if (event.target.id === "saved-view") { selectedName = event.target.value; showSelection(); }
78
- });
79
- document.addEventListener("click", (event) => {
80
- if (event.target.id === "remove-saved-view") views = views.filter((view) => view.name !== selectedView()?.name);
81
- else if (event.target.id === "clear-saved-views") views = [];
82
- else return;
83
- persist(); refresh();
84
- });
85
- document.addEventListener("board-page", () => refresh());
86
- refresh();
87
- `;
88
- }
@@ -1,93 +0,0 @@
1
- import { escapeHtml } from "#browser/escapeHtml.ts";
2
- import type { FleetHealth } from "#diagnostics/health.ts";
3
- import { resetLabel } from "#diagnostics/resetLabel.ts";
4
- import type { CodexLimits, GithubLimits, Observation, UsageWindow } from "#diagnostics/source.ts";
5
-
6
- function time(milliseconds: number | null): string {
7
- return milliseconds === null
8
- ? "Not reported"
9
- : `<time datetime="${new Date(milliseconds).toISOString()}">${new Date(milliseconds)
10
- .toISOString()
11
- .replace("T", " ")
12
- .replace(/\.\d{3}Z$/u, " UTC")}</time>`;
13
- }
14
- function observed(at: number): string {
15
- return `<p class="diagnostics-freshness">Observed ${time(at)}</p>`;
16
- }
17
- function card<A>(name: string, source: Observation<A>, render: (value: A) => string, attention = false, stale = false): string {
18
- let state: Observation<A>["state"] | "attention" | "stale" = source.state;
19
- if (state === "ready" && attention) {
20
- state = "attention";
21
- }
22
- if (source.state === "ready" && stale) {
23
- state = "stale";
24
- }
25
- const label = { attention: "Needs attention", error: "Unavailable", "not-configured": "Not configured", ready: "Available", stale: "Stale" }[state];
26
- return `<section class="diagnostics-card" data-source="${name.toLowerCase()}" data-state="${state}" aria-labelledby="diagnostics-${name.toLowerCase()}"><header><h2 id="diagnostics-${name.toLowerCase()}">${name}</h2><span class="diagnostics-status">${label}</span></header>${source.state === "ready" ? render(source.value) : `<p role="status">${escapeHtml(source.cause)}</p>`}${observed(source.observedAt)}</section>`;
27
- }
28
- function reset(at: number | null, now: number): string {
29
- return at === null ? "Not reported" : `<time data-reset datetime="${new Date(at).toISOString()}">${resetLabel(at, now)}</time>`;
30
- }
31
- function windowLabel(name: string, minutes: number | null): string {
32
- if (minutes === null) {
33
- return `${name} — duration not reported`;
34
- }
35
- if (minutes === 10_080) {
36
- return "Weekly";
37
- }
38
- for (const [duration, unit] of [
39
- [1440, "day"],
40
- [60, "hour"],
41
- ] as const) {
42
- if (minutes % duration === 0) {
43
- return `${minutes / duration}-${unit}`;
44
- }
45
- }
46
- return `${minutes}-minute`;
47
- }
48
- function usage(name: string, window: UsageWindow | null, now: number): string {
49
- if (window === null) {
50
- return `<li><h3>${name}</h3><p>Window not reported</p></li>`;
51
- }
52
- const label = windowLabel(name, window.windowDurationMins);
53
- return `<li><h3>${label}</h3><p><strong>${window.usedPercent}% used</strong></p><meter min="0" max="100" value="${Math.min(window.usedPercent, 100)}" aria-label="${label} percent used">${window.usedPercent}%</meter><p>Resets ${reset(window.resetsAt === null ? null : window.resetsAt * 1000, now)}</p></li>`;
54
- }
55
- function codex(value: CodexLimits, now: number): string {
56
- return `<ul class="diagnostics-windows">${usage("Primary", value.primary, now)}${usage("Secondary", value.secondary, now)}</ul>`;
57
- }
58
- function github(value: GithubLimits, now: number): string {
59
- return `<dl class="diagnostics-metrics">${(
60
- [
61
- ["REST", value.core],
62
- ["GraphQL", value.graphql],
63
- ] as const
64
- )
65
- .map(
66
- ([name, window]) =>
67
- `<div><dt>${name}</dt><dd><strong>${window.remaining} / ${window.limit}</strong> remaining</dd><dd>Resets ${reset(window.reset * 1000, now)}</dd></div>`,
68
- )
69
- .join("")}</dl><p class="diagnostics-freshness">Cached for one minute across all tabs.</p>`;
70
- }
71
- function fleet(value: FleetHealth, now: number): string {
72
- let freshness = "Current snapshot";
73
- if (now < value.observedAt) {
74
- freshness = "Publisher clock is ahead";
75
- } else if (now - value.observedAt > value.staleAfterMs) {
76
- freshness = "Stale snapshot — Fleet has not refreshed its health";
77
- }
78
- return `<p class="diagnostics-freshness">${freshness}</p><dl class="diagnostics-metrics"><div><dt>Running / concurrency cap</dt><dd><strong>${value.running} / ${value.concurrency}</strong></dd></div><div><dt>Queued</dt><dd><strong>${value.queued}</strong></dd></div>${Object.entries(
79
- value.waiting,
80
- )
81
- .map(([owner, count]) => `<div><dt>Waiting on ${owner}</dt><dd><strong>${count}</strong></dd></div>`)
82
- .join(
83
- "",
84
- )}<div><dt>Last scheduler pass</dt><dd>${time(value.lastSchedulerPass)}</dd></div><div><dt>Last provider capacity rejection</dt><dd>${value.lastCapacityRejection === null ? "None observed" : `${escapeHtml(value.lastCapacityRejection.cause)}<br>${time(value.lastCapacityRejection.at)}`}</dd></div></dl>`;
85
- }
86
-
87
- export function diagnosticsHtml(
88
- sources: { readonly codex: Observation<CodexLimits>; readonly github: Observation<GithubLimits>; readonly fleet: Observation<FleetHealth> },
89
- now: number,
90
- ): string {
91
- const fleetSource = sources.fleet.state === "ready" ? { ...sources.fleet, observedAt: sources.fleet.value.observedAt } : sources.fleet;
92
- return `<div class="diagnostics"><h1>Diagnostics</h1><p>Agent usage and Fleet health. Refreshes every 15 seconds while this view is visible; Pause updates holds the current view.</p><div class="diagnostics-grid">${card("Codex", sources.codex, (value) => codex(value, now), sources.codex.state === "ready" && [sources.codex.value.primary, sources.codex.value.secondary].some((window) => window !== null && window.usedPercent >= 90))}${card("GitHub", sources.github, (value) => github(value, now), sources.github.state === "ready" && [sources.github.value.core, sources.github.value.graphql].some((window) => window.remaining === 0))}${card("Fleet", fleetSource, (value) => fleet(value, now), fleetSource.state === "ready" && (fleetSource.value.running >= fleetSource.value.concurrency || Object.values(fleetSource.value.waiting).some((count) => count > 0) || now < fleetSource.value.observedAt), fleetSource.state === "ready" && now - fleetSource.value.observedAt > fleetSource.value.staleAfterMs)}</div></div>`;
93
- }
@@ -1,31 +0,0 @@
1
- import { Clock, Effect } from "effect";
2
- import type { diagnostics } from "#diagnostics/source.ts";
3
- import type { Changes } from "#server/files/changes.ts";
4
- import { respond } from "#server/http/respond.ts";
5
- import { navHtml } from "#server/page/nav.ts";
6
- import { shell } from "#server/page/shell.ts";
7
- import type { searchSnapshot } from "#server/search/snapshot.ts";
8
- import { diagnosticsHtml } from "./html.ts";
9
-
10
- export const diagnosticsPage = Effect.fn("WorkBoard.diagnosticsPage")(function* (
11
- read: Effect.Success<ReturnType<typeof diagnostics>>,
12
- changes: Changes,
13
- home: string | undefined,
14
- index?: Effect.Success<ReturnType<typeof searchSnapshot>>,
15
- ) {
16
- const result = yield* read;
17
- const snapshot = index ? yield* index : undefined;
18
- return respond(
19
- shell(
20
- "Diagnostics",
21
- navHtml(yield* changes.files, "", home, snapshot),
22
- diagnosticsHtml(result, yield* Clock.currentTimeMillis),
23
- changes.realRoot,
24
- true,
25
- undefined,
26
- "diagnostics",
27
- snapshot,
28
- ),
29
- "text/html",
30
- );
31
- });
@@ -1,42 +0,0 @@
1
- import { Effect } from "effect";
2
- import { escapeHtml } from "#browser/escapeHtml.ts";
3
- import type { Handoff, HandoffPreview } from "#browser/handoffs/schema.ts";
4
- import { fileUrl } from "#files/url.ts";
5
- import type { RenderFailed } from "#render/failed.ts";
6
- import { metadataParse } from "#server/metadata/parse.ts";
7
- import type { Highlighter } from "#server/render/Highlighter.ts";
8
- import { renderMarkdown } from "#server/render/markdown.ts";
9
-
10
- export function promptHtml(id: string, prompt: string) {
11
- return `<div class="handoff-copy"><label>Prompt for your existing agent session<textarea id="handoff-prompt-${escapeHtml(id)}" readonly rows="3">${escapeHtml(prompt)}</textarea></label><button type="button" data-handoff-copy="handoff-prompt-${escapeHtml(id)}">Copy tiny prompt</button><p role="status" data-copy-status>Copy and paste this into your agent session. Preparing a file does not notify an agent.</p></div>`;
12
- }
13
- function receiptNote(h: Handoff["handoff"]) {
14
- if (!(h.by || h.note)) {
15
- return "";
16
- }
17
- return `<p>${escapeHtml(h.by ?? "Attribution not recorded")}${h.note ? ` · ${escapeHtml(h.note)}` : ""}</p>`;
18
- }
19
- export const handoffHistoryHtml = Effect.fn("WorkBoard.handoffHistoryHtml")(function* (
20
- records: readonly Handoff[],
21
- current?: HandoffPreview,
22
- ): Effect.fn.Return<string[], RenderFailed, Highlighter> {
23
- return yield* Effect.forEach(records, (record) =>
24
- Effect.gen(function* () {
25
- const h = record.handoff;
26
- const goal = yield* renderMarkdown(h.goal, { file: h.source, safe: true });
27
- const constraints = yield* renderMarkdown(h.constraints, { file: h.source, safe: true });
28
- const next = yield* renderMarkdown(h.nextAction, { file: h.source, safe: true });
29
- const same = current?.reviewedRevision === h.reviewedRevision && current.source === h.source;
30
- return `<article id="${escapeHtml(record.id)}"><h3><a href="${fileUrl(record.file)}">${escapeHtml(record.id)}</a> · ${escapeHtml(h.recipient)}</h3><p><b>Receipt: ${escapeHtml(h.state)}</b>${h.state === "requested" ? " — prepared; receipt not confirmed" : ""}. Execution and acceptance are not recorded by this state.</p><p>${same ? "Current reviewed source" : "Earlier or unavailable reviewed source; recheck before acting"} · <a href="${fileUrl(h.source)}">${escapeHtml(h.source)}</a> · <code>${h.reviewedRevision}</code></p>${receiptNote(h)}<h4>Goal</h4>${goal}<h4>Constraints</h4>${constraints || "<p>None recorded.</p>"}<h4>Next action</h4>${next}${promptHtml(record.id, record.prompt)}<details><summary>Exact reviewed source snapshot</summary><pre>${escapeHtml(record.context)}</pre></details></article>`;
31
- }),
32
- );
33
- });
34
- export const handoffFormHtml = Effect.fn("WorkBoard.handoffFormHtml")(function* (
35
- source: HandoffPreview,
36
- enabled: boolean,
37
- ): Effect.fn.Return<string, RenderFailed, Highlighter> {
38
- const parsed = metadataParse(source.context);
39
- const background = yield* renderMarkdown(parsed.body, { file: source.source, safe: true });
40
- const goal = /^#\s+(?<title>.+)$/mu.exec(parsed.body)?.groups?.title ?? source.item;
41
- return `<section class="response-context">${background}</section><details><summary>Exact source being reviewed</summary><pre>${escapeHtml(source.context)}</pre></details><form id="handoff-form" data-item="${escapeHtml(source.item)}" data-source="${escapeHtml(source.source)}" data-revision="${source.reviewedRevision}" data-question="${source.id}" data-writable="${enabled}"><label>Recipient — local agent label<input name="recipient" required maxlength="200"></label><label>Goal<textarea name="goal" required maxlength="8192" rows="3">${escapeHtml(goal)}</textarea></label><label>Constraints (optional)<textarea name="constraints" maxlength="8192" rows="4"></textarea></label><label>Next action<textarea name="nextAction" required maxlength="8192" rows="3">${escapeHtml(parsed.fields.nextAction ?? "")}</textarea></label><p>The file includes the full reviewed source and its declared acceptance criteria. Preparing it does not change the item or start an agent. Drafts use the existing 30-day/2-MiB workspace store.</p><button id="handoff-preview" type="button" disabled>Preview Markdown</button><pre id="handoff-preview-content" hidden></pre><button id="handoff-submit" type="submit" disabled>Prepare handoff</button><button id="handoff-clear" type="button" disabled>Clear workspace drafts</button><p id="handoff-status" role="status">${enabled ? "JavaScript is required to prepare a handoff." : "Read-only mode. Restart with --responses to enable local writes."}</p><section id="handoff-prepared" hidden></section></form>`;
42
- });
@@ -1,51 +0,0 @@
1
- import { Effect, type FileSystem, type Path, type PlatformError } from "effect";
2
- import type { HttpServerRequest, HttpServerResponse } from "effect/unstable/http";
3
- import { escapeHtml } from "#browser/escapeHtml.ts";
4
- import type { Changes } from "#server/files/changes.ts";
5
- import { handoffFormHtml, handoffHistoryHtml } from "#server/handoffs/html.ts";
6
- import { HandoffsService } from "#server/handoffs/Service.ts";
7
- import { respond } from "#server/http/respond.ts";
8
- import { navHtml } from "#server/page/nav.ts";
9
- import { shell } from "#server/page/shell.ts";
10
- import type { Highlighter } from "#server/render/Highlighter.ts";
11
- import type { searchSnapshot } from "#server/search/snapshot.ts";
12
-
13
- function unknownHistory(files: readonly string[]) {
14
- return files.length > 0
15
- ? `<p role="status">Some handoff history is unavailable: ${files.map(escapeHtml).join(", ")}. Missing records do not establish that no receipt exists.</p>`
16
- : "";
17
- }
18
- export function handoffPage(changes: Changes, home: string | undefined, enabled: boolean, index?: Effect.Success<ReturnType<typeof searchSnapshot>>) {
19
- return Effect.fn("WorkBoard.handoffPage")(function* (
20
- request: HttpServerRequest.HttpServerRequest,
21
- ): Effect.fn.Return<
22
- HttpServerResponse.HttpServerResponse,
23
- PlatformError.PlatformError,
24
- FileSystem.FileSystem | Path.Path | Highlighter | HandoffsService
25
- > {
26
- const service = yield* HandoffsService;
27
- const item = new URL(request.url, "http://127.0.0.1").searchParams.get("item") ?? "";
28
- const files = yield* changes.files;
29
- const snapshot = index ? yield* index : undefined;
30
- function layout(body: string, status = 200) {
31
- return respond(
32
- shell("Handoff", navHtml(files, "", home, snapshot), body, changes.realRoot, false, undefined, "handoff", snapshot),
33
- "text/html",
34
- status,
35
- );
36
- }
37
- return yield* Effect.gen(function* () {
38
- const source = yield* Effect.result(service.locate(item));
39
- const current = source._tag === "Success" ? source.success : undefined;
40
- const reading = yield* service.read(item);
41
- const history = yield* handoffHistoryHtml(reading.records, current);
42
- const form = current
43
- ? yield* handoffFormHtml(current, enabled)
44
- : `<p role="status">Source unavailable: ${escapeHtml(String(source._tag === "Failure" ? source.failure : ""))}. Existing handoffs remain readable.</p>`;
45
- return layout(
46
- `<section class="response-panel"><h1>Agent handoff · ${escapeHtml(item)}</h1><p>Prepare a Markdown file, then copy a tiny prompt into your existing agent session. Sessions may poll or wait for human answers. Agents record receipt with ordinary file edits.</p>${form}<section id="handoff-history"><h2>Prepared handoffs</h2>${unknownHistory(reading.unknown)}${history.join("") || "<p>No readable handoff is recorded for this item.</p>"}</section></section>`,
47
- current || reading.records.length > 0 ? 200 : 409,
48
- );
49
- }).pipe(Effect.catch((error) => Effect.succeed(layout(`<h1>Handoff unavailable</h1><p>${escapeHtml(String(error))}</p>`, 409))));
50
- });
51
- }
@@ -1,15 +0,0 @@
1
- import { Effect } from "effect";
2
- import type { Changes } from "#server/files/changes.ts";
3
- import { changesHtml } from "#server/history/html.ts";
4
- import { navHtml } from "#server/page/nav.ts";
5
- import { shell } from "#server/page/shell.ts";
6
- import type { searchSnapshot } from "#server/search/snapshot.ts";
7
- import { respond } from "./respond.ts";
8
-
9
- export function changesPage(changes: Changes, home: string | undefined, index?: Effect.Success<ReturnType<typeof searchSnapshot>>) {
10
- return Effect.fn("WorkBoard.changesPage")(function* () {
11
- const snapshot = index ? yield* index : undefined;
12
- const nav = navHtml(yield* changes.files, "", home, snapshot);
13
- return respond(shell("Changes", nav, changesHtml(), changes.realRoot, true, undefined, "changes", snapshot), "text/html");
14
- });
15
- }
@@ -1,13 +0,0 @@
1
- import type { Effect } from "effect";
2
- import { HttpServerRequest, type HttpServerResponse } from "effect/unstable/http";
3
-
4
- export function readPage<E, R>(
5
- routes: Readonly<Record<string, (request: HttpServerRequest.HttpServerRequest) => Effect.Effect<HttpServerResponse.HttpServerResponse, E, R>>>,
6
- fallback: (request: HttpServerRequest.HttpServerRequest) => Effect.Effect<HttpServerResponse.HttpServerResponse, E, R>,
7
- ) {
8
- return (url: string) => {
9
- const request = HttpServerRequest.fromWeb(new Request(`http://127.0.0.1${url}`));
10
- const path = new URL(url, "http://127.0.0.1").pathname;
11
- return (routes[path] ?? fallback)(request);
12
- };
13
- }
@@ -1,27 +0,0 @@
1
- import { Effect } from "effect";
2
- import type { Changes } from "#server/files/changes.ts";
3
- import { navHtml } from "#server/page/nav.ts";
4
- import { shell } from "#server/page/shell.ts";
5
- import { startHtml } from "#server/page/startHtml.ts";
6
- import type { searchSnapshot } from "#server/search/snapshot.ts";
7
- import { respond } from "./respond.ts";
8
-
9
- export function start(changes: Changes, home: string | undefined, index?: Effect.Success<ReturnType<typeof searchSnapshot>>) {
10
- return Effect.fn("WorkBoard.start")(function* () {
11
- const files = yield* changes.files;
12
- const snapshot = index ? yield* index : undefined;
13
- return respond(
14
- shell(
15
- "Getting started",
16
- navHtml(files, "", home, snapshot),
17
- startHtml(files.length === 0),
18
- changes.realRoot,
19
- false,
20
- undefined,
21
- "start",
22
- snapshot,
23
- ),
24
- "text/html",
25
- );
26
- });
27
- }
@@ -1,10 +0,0 @@
1
- import { escapeHtml } from "#browser/escapeHtml.ts";
2
- import { startTemplates } from "./startTemplates.ts";
3
-
4
- export function startHtml(empty = false): string {
5
- return `<article class="doc onboarding"><h1>${empty ? "Start your local workspace" : "Project and report templates"}</h1>
6
- <p>Work Board reads Markdown files from your workspace folder. Use your editor or existing agent tools to create and update them; this viewer does not write project files.</p>
7
- <ol><li>Choose a template below. Focus its text area, select all, and copy the Markdown.</li><li>Save it in the served folder with the suggested filename, or adjust its links to your chosen filenames.</li><li>Replace the example IDs with unique stable IDs and update every matching relationship and criterion reference. Frontmatter is optional; ordinary Markdown and existing heading boards also work.</li><li>Fill in real context and observations. Work Board discovers saved files automatically. Start with the project, then follow the investigation and result links.</li></ol>
8
- <p>Unknown checks stay unknown. Add criterion evidence only after a real observation; a finished agent run is not verified acceptance. No project content is created or marked seen by opening these templates.</p>
9
- ${startTemplates.map((template) => `<section class="start-template"><h2>${template.label}</h2><p>Suggested file: <code>${template.file}</code></p><details data-key="template:${template.file}"><summary>Read and copy ${template.label.toLowerCase()} Markdown</summary><label for="template-${template.file}">${template.label} template Markdown</label><textarea id="template-${template.file}" readonly rows="16" spellcheck="false">${escapeHtml(template.source)}</textarea></details></section>`).join("")}</article>`;
10
- }
@@ -1,37 +0,0 @@
1
- import { Effect } from "effect";
2
- import type { HttpServerRequest } from "effect/unstable/http";
3
- import { escapeHtml } from "#browser/escapeHtml.ts";
4
- import type { Changes } from "#server/files/changes.ts";
5
- import { respond } from "#server/http/respond.ts";
6
- import { navHtml } from "#server/page/nav.ts";
7
- import { shell } from "#server/page/shell.ts";
8
- import type { searchSnapshot } from "#server/search/snapshot.ts";
9
- import { composerHtml } from "./composerHtml.ts";
10
- import { Responses } from "./service.ts";
11
-
12
- export function responsePage(
13
- changes: Changes,
14
- home: string | undefined,
15
- enabled: boolean,
16
- index?: Effect.Success<ReturnType<typeof searchSnapshot>>,
17
- ) {
18
- return Effect.fn("WorkBoard.responsePage")(function* (request: HttpServerRequest.HttpServerRequest) {
19
- const service = yield* Responses;
20
- const params = new URL(request.url, "http://127.0.0.1").searchParams;
21
- const files = yield* changes.files;
22
- const snapshot = index ? yield* index : undefined;
23
- function layout(body: string, status = 200) {
24
- return respond(
25
- shell("Respond", navHtml(files, "", home, snapshot), body, changes.realRoot, false, undefined, "response", snapshot),
26
- "text/html",
27
- status,
28
- );
29
- }
30
- return yield* Effect.gen(function* () {
31
- const question = yield* service.locate(params.get("item") ?? "", params.get("request") ?? "");
32
- yield* service.read(question.id).pipe(Effect.catch((error) => (error._tag === "NotFound" ? Effect.void : Effect.fail(error))));
33
- const records = yield* service.history(question);
34
- return layout(yield* composerHtml(question, records, enabled));
35
- }).pipe(Effect.catch((error) => Effect.succeed(layout(`<h1>Response unavailable</h1><p>${escapeHtml(error.message)}</p>`, 409))));
36
- });
37
- }
@@ -1,37 +0,0 @@
1
- import { escapeHtml } from "#browser/escapeHtml.ts";
2
- import { referenceTarget } from "#server/metadata/links.ts";
3
- import type { MetadataDocument, MetadataModel } from "#server/metadata/model.ts";
4
- import { referenceHtml, sourceHtml, valueHtml } from "#server/page/metadataLinks.ts";
5
-
6
- function criterionRow(reference: string, text: string, result: MetadataDocument, model: MetadataModel): string {
7
- if (!referenceTarget(reference, model)) {
8
- return `<li>${escapeHtml(text)} — criterion identity is ambiguous; evidence association unavailable.</li>`;
9
- }
10
- const claims = result.parsed.fields.evidence?.filter((claim) => claim.criterion === reference) ?? [];
11
- const evidence =
12
- claims.length > 0
13
- ? `<p>${claims.length} recorded claim(s) in this result; not verified acceptance.</p><ul>${claims.map((claim) => `<li>${sourceHtml(claim.source, result.file, model)}<dl><dt>Checked Git revision (reported)</dt><dd>${valueHtml(claim.checkedRevision)}</dd><dt>Method</dt><dd>${valueHtml(claim.method)}</dd><dt>Outcome (reported)</dt><dd>${valueHtml(claim.outcome)}</dd><dt>Observed time</dt><dd>${valueHtml(claim.observedAt)}</dd></dl></li>`).join("")}</ul>`
14
- : "<p>No recorded evidence in this result naming this criterion. Acceptance is not established.</p>";
15
- return `<li>${referenceHtml(text, reference, model)}${evidence}</li>`;
16
- }
17
- function targetRow(target: string, result: MetadataDocument, model: MetadataModel): string {
18
- const [id, criterion] = target.split("#");
19
- const document = model.ids.get(id ?? "")?.[0];
20
- if (!(document && referenceTarget(target, model))) {
21
- return `<li>${referenceHtml(target, target, model)} — criteria unavailable.</li>`;
22
- }
23
- const criteria = (document.parsed.fields.criteria ?? []).filter((item) => !criterion || item.id === criterion);
24
- const rows =
25
- criteria.length > 0
26
- ? `<ul>${criteria.map((item) => criterionRow(`${id}#${item.id}`, item.text, result, model)).join("")}</ul>`
27
- : "<p>No criteria declared in this source.</p>";
28
- return `<li>${referenceHtml(target, target, model)} · source status: ${valueHtml(document.parsed.fields.status)}${rows}</li>`;
29
- }
30
- export function resultCriteria(result: MetadataDocument, model: MetadataModel): string {
31
- const targets = new Set(result.parsed.fields.relationships?.map((link) => link.target));
32
- if (result.parsed.fields.id) {
33
- targets.add(result.parsed.fields.id);
34
- }
35
- const rows = [...targets].map((target) => targetRow(target, result, model));
36
- return `<section id="result-criteria"><h2>Criteria and this result’s claims</h2><p>Only explicit relationships and criterion references are associated. Missing provenance stays missing. Git revisions are authored records; Work Board does not compare them with the current checkout. Evidence freshness is unknown.</p>${rows.length > 0 ? `<ul>${rows.join("")}</ul>` : "<p>No explicitly linked work or criteria.</p>"}<p>${escapeHtml(result.file)} does not change the linked work’s status.</p></section>`;
37
- }
@@ -1,44 +0,0 @@
1
- import { Effect } from "effect";
2
- import { escapeHtml } from "#browser/escapeHtml.ts";
3
- import { fileUrl } from "#files/url.ts";
4
- import type { MetadataDocument } from "#integration/metadata.ts";
5
- import type { RenderFailed } from "#render/failed.ts";
6
- import type { Highlighter } from "#server/render/Highlighter.ts";
7
- import { renderMarkdown } from "#server/render/markdown.ts";
8
- import { readResponses } from "#server/responses/read.ts";
9
- import { malformedResponse, questionFrom, revisionOf } from "#server/responses/records.ts";
10
- import type { Snapshot } from "#server/search/snapshot.ts";
11
-
12
- export const resultFeedback = Effect.fn("WorkBoard.resultFeedback")(function* (
13
- result: MetadataDocument,
14
- data: Snapshot,
15
- ): Effect.fn.Return<string, RenderFailed, Highlighter> {
16
- const unknown =
17
- data.unavailable.length > 0
18
- || data.documents.some((document) => malformedResponse(document) || (document.parsed.fields.kind === "question" && !questionFrom(document)));
19
- const questions = data.documents.flatMap((document) => {
20
- const question = questionFrom(document);
21
- return question && question.question.item === result.parsed.fields.id ? [question] : [];
22
- });
23
- const read = readResponses(Effect.succeed(data));
24
- const readings = yield* Effect.forEach(questions, (question) => Effect.result(read(question.id)));
25
- if (unknown || readings.some((reading) => reading._tag === "Failure")) {
26
- return '<section id="result-feedback"><h2>Recorded human feedback</h2><p role="status">Response history is unknown or ambiguous. Unreadable records do not establish that no feedback exists. Read the source files before relying on it.</p></section>';
27
- }
28
- const current = revisionOf((result.parsed.raw ?? "") + result.parsed.body);
29
- const records = readings.flatMap((reading) =>
30
- reading._tag === "Success" ? reading.success.responses.map((response) => ({ question: reading.success.question, response })) : [],
31
- );
32
- records.sort((a, b) => b.response.response.recordedAt - a.response.response.recordedAt || a.response.id.localeCompare(b.response.id));
33
- const bodies = yield* Effect.forEach(records, ({ question, response }) =>
34
- Effect.gen(function* () {
35
- const matching = question.question.reviewedRevision === current && question.question.source === result.file;
36
- const responseFile = data.model.ids.get(response.id)?.[0]?.file ?? `responses/${response.id}.md`;
37
- const questionFile = data.model.ids.get(question.id)?.[0]?.file ?? `responses/${question.id}.md`;
38
- const body = yield* renderMarkdown(response.body, { file: responseFile, safe: true });
39
- const selected = response.response.answers?.map((answer) => `${answer.prompt}: ${answer.selected.join(", ") || "text only"}`).join("; ");
40
- return `<article id="${escapeHtml(response.id)}"><h3>${escapeHtml(response.response.author)} · ${escapeHtml(response.response.type)}</h3><p><b>${matching ? "Feedback on this exact result revision" : "Earlier or moved result context — does not apply automatically to this revision"}</b></p><p>Reviewed source: ${escapeHtml(question.question.source)} · SHA-256 <code>${question.question.reviewedRevision}</code></p>${selected ? `<p>Recorded option IDs: ${escapeHtml(selected)}. Labels and reasoning are recorded below.</p>` : ""}${response.response.supersedes ? `<p>Explicitly supersedes <a href="${fileUrl(data.model.ids.get(response.response.supersedes)?.[0]?.file ?? `responses/${response.response.supersedes}.md`)}">${escapeHtml(response.response.supersedes)}</a>.</p>` : ""}${body}<p><a href="${fileUrl(responseFile)}">Response source</a> · <a href="${fileUrl(questionFile)}">Registered reviewed context</a></p><details><summary>Exact reviewed result source</summary><pre>${escapeHtml(question.context)}</pre></details></article>`;
41
- }),
42
- );
43
- return `<section id="result-feedback"><h2>Recorded human feedback</h2><p>Human direction is pinned to its reviewed report. Option IDs and authored acceptance text are not a computed verified-acceptance state. Completing a run or receiving feedback does not change work status.</p>${bodies.join("") || "<p>No readable response is recorded for this result.</p>"}</section>`;
44
- });
@@ -1,63 +0,0 @@
1
- import { Effect, type FileSystem, type Path, type PlatformError } from "effect";
2
- import type { HttpServerRequest, HttpServerResponse } from "effect/unstable/http";
3
- import { escapeHtml } from "#browser/escapeHtml.ts";
4
- import { fileUrl } from "#files/url.ts";
5
- import type { Changes } from "#server/files/changes.ts";
6
- import { respond } from "#server/http/respond.ts";
7
- import type { MetadataDocument } from "#server/metadata/model.ts";
8
- import { metadataHtml } from "#server/page/metadata.ts";
9
- import { navHtml } from "#server/page/nav.ts";
10
- import { shell } from "#server/page/shell.ts";
11
- import type { Highlighter } from "#server/render/Highlighter.ts";
12
- import { renderMarkdown } from "#server/render/markdown.ts";
13
- import { revisionOf } from "#server/responses/records.ts";
14
- import { resultCriteria } from "#server/results/criteria.ts";
15
- import { resultFeedback } from "#server/results/feedback.ts";
16
- import type { Snapshot } from "#server/search/snapshot.ts";
17
-
18
- function reviewActions(result: MetadataDocument) {
19
- const requests = result.parsed.fields.attention ?? [];
20
- const actions = requests
21
- .filter(
22
- (attention) => attention.kind === "review" && attention.state === "open" && requests.filter((other) => other.id === attention.id).length === 1,
23
- )
24
- .map(
25
- (attention) =>
26
- `<li><a href="/_board/respond?item=${encodeURIComponent(result.parsed.fields.id ?? "")}&amp;request=${encodeURIComponent(attention.id)}">Review ${escapeHtml(attention.id)}</a> — ${escapeHtml(attention.reason)}</li>`,
27
- );
28
- return `<section id="result-actions"><h2>Respond to this report</h2>${actions.length > 0 ? `<ul>${actions.join("")}</ul>` : "<p>No unique open review request is declared. The agent can add an explicit attention review and Markdown question packet with ordinary file editing. Work Board does not infer one from status.</p>"}</section>`;
29
- }
30
-
31
- export function resultPage(index: Effect.Effect<Snapshot, unknown, FileSystem.FileSystem | Path.Path>, changes: Changes, home: string | undefined) {
32
- return Effect.fn("WorkBoard.resultPage")(function* (
33
- request: HttpServerRequest.HttpServerRequest,
34
- ): Effect.fn.Return<HttpServerResponse.HttpServerResponse, PlatformError.PlatformError, FileSystem.FileSystem | Path.Path | Highlighter> {
35
- const item = new URL(request.url, "http://127.0.0.1").searchParams.get("item") ?? "";
36
- const files = yield* changes.files;
37
- const snapshot = yield* index.pipe(Effect.catch(() => Effect.succeed(undefined)));
38
- function layout(body: string, status = 200) {
39
- return respond(
40
- shell("Result review", navHtml(files, "", home, snapshot), body, changes.realRoot, false, undefined, "result", snapshot),
41
- "text/html",
42
- status,
43
- );
44
- }
45
- return yield* Effect.gen(function* () {
46
- const data = yield* index;
47
- const matches = data.model.ids.get(item);
48
- const result = matches?.length === 1 ? matches[0] : undefined;
49
- if (result?.parsed.fields.kind !== "result" || data.unavailable.length > 0) {
50
- return layout(
51
- '<h1>Result unavailable</h1><p role="status">Choose one uniquely identified, readable result. Missing or ambiguous work is not accepted.</p>',
52
- 409,
53
- );
54
- }
55
- const report = yield* renderMarkdown(result.parsed.body, { file: result.file, safe: true });
56
- const feedback = yield* resultFeedback(result, data);
57
- const revision = revisionOf((result.parsed.raw ?? "") + result.parsed.body);
58
- return layout(
59
- `<section class="response-panel"><h1>Review returned result · ${escapeHtml(item)}</h1><p>Result status (source): <b>${escapeHtml(result.parsed.fields.status ?? "Not recorded")}</b>. This is a supplied claim, not an execution receipt or work acceptance.</p><p>Current report SHA-256: <code>${revision}</code> · <a href="${fileUrl(result.file)}">Read source</a></p>${metadataHtml(result.parsed, result.file, data.model)}${reviewActions(result)}${resultCriteria(result, data.model)}<section id="result-report"><h2>Report, evidence and limitations</h2>${report}</section>${feedback}</section>`,
60
- );
61
- }).pipe(Effect.catch((error) => Effect.succeed(layout(`<h1>Result review unavailable</h1><p>${escapeHtml(String(error))}</p>`, 409))));
62
- });
63
- }