@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.
- package/CHANGELOG.md +36 -0
- package/README.md +11 -11
- package/assets/agent.js +27 -31
- package/assets/native.js +34 -69
- package/assets/react.css +1 -1
- package/assets/react.js +39 -34
- package/dist/browser/diagnostics/schema.d.ts +49 -0
- package/dist/browser/diagnostics/schema.d.ts.map +1 -0
- package/dist/browser/diagnostics/schema.js +11 -0
- package/dist/browser/diagnostics/schema.js.map +1 -0
- package/dist/browser/views/ResultProjection.d.ts +245 -0
- package/dist/browser/views/ResultProjection.d.ts.map +1 -0
- package/dist/browser/views/ResultProjection.js +32 -0
- package/dist/browser/views/ResultProjection.js.map +1 -0
- package/dist/browser/views/remaining.d.ts +345 -0
- package/dist/browser/views/remaining.d.ts.map +1 -0
- package/dist/browser/views/remaining.js +21 -0
- package/dist/browser/views/remaining.js.map +1 -0
- package/dist/browser/views/schema.d.ts +715 -0
- package/dist/browser/views/schema.d.ts.map +1 -0
- package/dist/browser/views/schema.js +60 -0
- package/dist/browser/views/schema.js.map +1 -0
- package/dist/browser/views/state.d.ts +15 -0
- package/dist/browser/views/state.d.ts.map +1 -0
- package/dist/browser/views/state.js +45 -0
- package/dist/browser/views/state.js.map +1 -0
- package/dist/client/client.d.ts +5 -5
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +4 -4
- package/dist/client/client.js.map +1 -1
- package/dist/client/document/Mermaid.d.ts.map +1 -1
- package/dist/client/document/Mermaid.js +39 -10
- package/dist/client/document/Mermaid.js.map +1 -1
- package/dist/client/document/View.d.ts +5 -1
- package/dist/client/document/View.d.ts.map +1 -1
- package/dist/client/document/View.js +13 -1
- package/dist/client/document/View.js.map +1 -1
- package/dist/client/document/boardLayout.d.ts +6 -0
- package/dist/client/document/boardLayout.d.ts.map +1 -0
- package/dist/client/document/boardLayout.js +69 -0
- package/dist/client/document/boardLayout.js.map +1 -0
- package/dist/client/entry.d.ts +0 -12
- package/dist/client/entry.d.ts.map +1 -1
- package/dist/client/entry.js +0 -18
- package/dist/client/entry.js.map +1 -1
- package/dist/client/formDraft.d.ts +3 -0
- package/dist/client/formDraft.d.ts.map +1 -0
- package/dist/client/formDraft.js +8 -0
- package/dist/client/formDraft.js.map +1 -0
- package/dist/client/formFocus.d.ts.map +1 -1
- package/dist/client/formFocus.js +5 -0
- package/dist/client/formFocus.js.map +1 -1
- package/dist/client/handoffs/failureStatus.d.ts +2 -0
- package/dist/client/handoffs/failureStatus.d.ts.map +1 -0
- package/dist/client/handoffs/failureStatus.js +7 -0
- package/dist/client/handoffs/failureStatus.js.map +1 -0
- package/dist/client/page/routeQuery.d.ts +2 -7
- package/dist/client/page/routeQuery.d.ts.map +1 -1
- package/dist/client/page/routeQuery.js +0 -3
- package/dist/client/page/routeQuery.js.map +1 -1
- package/dist/client/react/Age.d.ts +9 -0
- package/dist/client/react/Age.d.ts.map +1 -0
- package/dist/client/react/Age.js +32 -0
- package/dist/client/react/Age.js.map +1 -0
- package/dist/client/react/AnswerForm.d.ts +5 -3
- package/dist/client/react/AnswerForm.d.ts.map +1 -1
- package/dist/client/react/AnswerForm.js +21 -11
- package/dist/client/react/AnswerForm.js.map +1 -1
- package/dist/client/react/AnswerPrompts.d.ts +10 -2
- package/dist/client/react/AnswerPrompts.d.ts.map +1 -1
- package/dist/client/react/AnswerPrompts.js +28 -12
- package/dist/client/react/AnswerPrompts.js.map +1 -1
- package/dist/client/react/BoardMain.d.ts +10 -0
- package/dist/client/react/BoardMain.d.ts.map +1 -0
- package/dist/client/react/BoardMain.js +19 -0
- package/dist/client/react/BoardMain.js.map +1 -0
- package/dist/client/react/BoardShell.d.ts +6 -1
- package/dist/client/react/BoardShell.d.ts.map +1 -1
- package/dist/client/react/BoardShell.js +34 -12
- package/dist/client/react/BoardShell.js.map +1 -1
- package/dist/client/react/ChangesMain.d.ts +8 -0
- package/dist/client/react/ChangesMain.d.ts.map +1 -0
- package/dist/client/react/ChangesMain.js +24 -0
- package/dist/client/react/ChangesMain.js.map +1 -0
- package/dist/client/react/DiagnosticsFleet.d.ts +6 -0
- package/dist/client/react/DiagnosticsFleet.d.ts.map +1 -0
- package/dist/client/react/DiagnosticsFleet.js +16 -0
- package/dist/client/react/DiagnosticsFleet.js.map +1 -0
- package/dist/client/react/DiagnosticsMain.d.ts +8 -0
- package/dist/client/react/DiagnosticsMain.d.ts.map +1 -0
- package/dist/client/react/DiagnosticsMain.js +11 -0
- package/dist/client/react/DiagnosticsMain.js.map +1 -0
- package/dist/client/react/DiagnosticsPage.d.ts +5 -0
- package/dist/client/react/DiagnosticsPage.d.ts.map +1 -0
- package/dist/client/react/DiagnosticsPage.js +23 -0
- package/dist/client/react/DiagnosticsPage.js.map +1 -0
- package/dist/client/react/DocumentContext.d.ts.map +1 -1
- package/dist/client/react/DocumentContext.js +23 -3
- package/dist/client/react/DocumentContext.js.map +1 -1
- package/dist/client/react/DocumentMain.d.ts +2 -3
- package/dist/client/react/DocumentMain.d.ts.map +1 -1
- package/dist/client/react/DocumentMain.js +8 -4
- package/dist/client/react/DocumentMain.js.map +1 -1
- package/dist/client/react/Favorite.d.ts +5 -0
- package/dist/client/react/Favorite.d.ts.map +1 -0
- package/dist/client/react/Favorite.js +10 -0
- package/dist/client/react/Favorite.js.map +1 -0
- package/dist/client/react/FormField.d.ts +13 -0
- package/dist/client/react/FormField.d.ts.map +1 -0
- package/dist/client/react/FormField.js +39 -0
- package/dist/client/react/FormField.js.map +1 -0
- package/dist/client/react/HandoffForm.d.ts +5 -0
- package/dist/client/react/HandoffForm.d.ts.map +1 -0
- package/dist/client/react/HandoffForm.js +27 -0
- package/dist/client/react/HandoffForm.js.map +1 -0
- package/dist/client/react/HandoffPage.d.ts +5 -0
- package/dist/client/react/HandoffPage.d.ts.map +1 -0
- package/dist/client/react/HandoffPage.js +15 -0
- package/dist/client/react/HandoffPage.js.map +1 -0
- package/dist/client/react/HandoffPrompt.d.ts +6 -0
- package/dist/client/react/HandoffPrompt.d.ts.map +1 -0
- package/dist/client/react/HandoffPrompt.js +21 -0
- package/dist/client/react/HandoffPrompt.js.map +1 -0
- package/dist/client/react/Header.d.ts +11 -2
- package/dist/client/react/Header.d.ts.map +1 -1
- package/dist/client/react/Header.js +2 -2
- package/dist/client/react/Header.js.map +1 -1
- package/dist/client/react/HistoryComparison.d.ts +5 -0
- package/dist/client/react/HistoryComparison.d.ts.map +1 -0
- package/dist/client/react/HistoryComparison.js +14 -0
- package/dist/client/react/HistoryComparison.js.map +1 -0
- package/dist/client/react/HistoryRetention.d.ts +5 -0
- package/dist/client/react/HistoryRetention.d.ts.map +1 -0
- package/dist/client/react/HistoryRetention.js +28 -0
- package/dist/client/react/HistoryRetention.js.map +1 -0
- package/dist/client/react/HomeBoard.d.ts +5 -0
- package/dist/client/react/HomeBoard.d.ts.map +1 -0
- package/dist/client/react/HomeBoard.js +8 -0
- package/dist/client/react/HomeBoard.js.map +1 -0
- package/dist/client/react/InboxPage.d.ts +5 -0
- package/dist/client/react/InboxPage.d.ts.map +1 -0
- package/dist/client/react/InboxPage.js +18 -0
- package/dist/client/react/InboxPage.js.map +1 -0
- package/dist/client/react/LiveControls.d.ts +8 -0
- package/dist/client/react/LiveControls.d.ts.map +1 -0
- package/dist/client/react/LiveControls.js +51 -0
- package/dist/client/react/LiveControls.js.map +1 -0
- package/dist/client/react/Modal.d.ts +12 -0
- package/dist/client/react/Modal.d.ts.map +1 -0
- package/dist/client/react/Modal.js +62 -0
- package/dist/client/react/Modal.js.map +1 -0
- package/dist/client/react/NavigationTree.d.ts.map +1 -1
- package/dist/client/react/NavigationTree.js +2 -1
- package/dist/client/react/NavigationTree.js.map +1 -1
- package/dist/client/react/OverviewGroups.d.ts +5 -0
- package/dist/client/react/OverviewGroups.d.ts.map +1 -0
- package/dist/client/react/OverviewGroups.js +18 -0
- package/dist/client/react/OverviewGroups.js.map +1 -0
- package/dist/client/react/OverviewPage.d.ts +5 -0
- package/dist/client/react/OverviewPage.d.ts.map +1 -0
- package/dist/client/react/OverviewPage.js +16 -0
- package/dist/client/react/OverviewPage.js.map +1 -0
- package/dist/client/react/ProjectionFrame.d.ts +19 -0
- package/dist/client/react/ProjectionFrame.d.ts.map +1 -0
- package/dist/client/react/ProjectionFrame.js +85 -0
- package/dist/client/react/ProjectionFrame.js.map +1 -0
- package/dist/client/react/ProjectionMain.d.ts +10 -0
- package/dist/client/react/ProjectionMain.d.ts.map +1 -0
- package/dist/client/react/ProjectionMain.js +22 -0
- package/dist/client/react/ProjectionMain.js.map +1 -0
- package/dist/client/react/PromptOption.d.ts +12 -0
- package/dist/client/react/PromptOption.d.ts.map +1 -0
- package/dist/client/react/PromptOption.js +9 -0
- package/dist/client/react/PromptOption.js.map +1 -0
- package/dist/client/react/ReadingLibrary.d.ts +9 -0
- package/dist/client/react/ReadingLibrary.d.ts.map +1 -0
- package/dist/client/react/ReadingLibrary.js +78 -0
- package/dist/client/react/ReadingLibrary.js.map +1 -0
- package/dist/client/react/RemainingMain.d.ts +10 -0
- package/dist/client/react/RemainingMain.d.ts.map +1 -0
- package/dist/client/react/RemainingMain.js +27 -0
- package/dist/client/react/RemainingMain.js.map +1 -0
- package/dist/client/react/RespondPage.d.ts +5 -0
- package/dist/client/react/RespondPage.d.ts.map +1 -0
- package/dist/client/react/RespondPage.js +16 -0
- package/dist/client/react/RespondPage.js.map +1 -0
- package/dist/client/react/ResponseMarkdown.d.ts.map +1 -1
- package/dist/client/react/ResponseMarkdown.js +16 -2
- package/dist/client/react/ResponseMarkdown.js.map +1 -1
- package/dist/client/react/ResultCriteria.d.ts +5 -0
- package/dist/client/react/ResultCriteria.d.ts.map +1 -0
- package/dist/client/react/ResultCriteria.js +33 -0
- package/dist/client/react/ResultCriteria.js.map +1 -0
- package/dist/client/react/ResultFeedback.d.ts +5 -0
- package/dist/client/react/ResultFeedback.d.ts.map +1 -0
- package/dist/client/react/ResultFeedback.js +12 -0
- package/dist/client/react/ResultFeedback.js.map +1 -0
- package/dist/client/react/ResultPage.d.ts +5 -0
- package/dist/client/react/ResultPage.d.ts.map +1 -0
- package/dist/client/react/ResultPage.js +15 -0
- package/dist/client/react/ResultPage.js.map +1 -0
- package/dist/client/react/SavedViews.d.ts +4 -0
- package/dist/client/react/SavedViews.d.ts.map +1 -0
- package/dist/client/react/SavedViews.js +16 -0
- package/dist/client/react/SavedViews.js.map +1 -0
- package/dist/client/react/SearchDialog.d.ts +11 -0
- package/dist/client/react/SearchDialog.d.ts.map +1 -0
- package/dist/client/react/SearchDialog.js +67 -0
- package/dist/client/react/SearchDialog.js.map +1 -0
- package/dist/client/react/SearchResults.d.ts +7 -0
- package/dist/client/react/SearchResults.d.ts.map +1 -0
- package/dist/client/react/SearchResults.js +19 -0
- package/dist/client/react/SearchResults.js.map +1 -0
- package/dist/client/react/ShellApi.d.ts +11 -1
- package/dist/client/react/ShellApi.d.ts.map +1 -1
- package/dist/client/react/Sidebar.d.ts +5 -2
- package/dist/client/react/Sidebar.d.ts.map +1 -1
- package/dist/client/react/Sidebar.js +37 -2
- package/dist/client/react/Sidebar.js.map +1 -1
- package/dist/client/react/StartPage.d.ts +5 -0
- package/dist/client/react/StartPage.d.ts.map +1 -0
- package/dist/client/react/StartPage.js +5 -0
- package/dist/client/react/StartPage.js.map +1 -0
- package/dist/client/react/UpdatesToggle.d.ts +5 -0
- package/dist/client/react/UpdatesToggle.d.ts.map +1 -0
- package/dist/client/react/UpdatesToggle.js +9 -0
- package/dist/client/react/UpdatesToggle.js.map +1 -0
- package/dist/client/react/VisualControls.d.ts +17 -0
- package/dist/client/react/VisualControls.d.ts.map +1 -0
- package/dist/client/react/VisualControls.js +6 -0
- package/dist/client/react/VisualControls.js.map +1 -0
- package/dist/client/react/VisualInspection.d.ts +2 -0
- package/dist/client/react/VisualInspection.d.ts.map +1 -0
- package/dist/client/react/VisualInspection.js +26 -0
- package/dist/client/react/VisualInspection.js.map +1 -0
- package/dist/client/react/VisualViewer.d.ts +6 -0
- package/dist/client/react/VisualViewer.d.ts.map +1 -0
- package/dist/client/react/VisualViewer.js +106 -0
- package/dist/client/react/VisualViewer.js.map +1 -0
- package/dist/client/react/WorkCards.d.ts +5 -0
- package/dist/client/react/WorkCards.d.ts.map +1 -0
- package/dist/client/react/WorkCards.js +13 -0
- package/dist/client/react/WorkCards.js.map +1 -0
- package/dist/client/react/WorkControls.d.ts +5 -0
- package/dist/client/react/WorkControls.d.ts.map +1 -0
- package/dist/client/react/WorkControls.js +18 -0
- package/dist/client/react/WorkControls.js.map +1 -0
- package/dist/client/react/WorkDetail.d.ts +5 -0
- package/dist/client/react/WorkDetail.d.ts.map +1 -0
- package/dist/client/react/WorkDetail.js +12 -0
- package/dist/client/react/WorkDetail.js.map +1 -0
- package/dist/client/react/WorkItemTitle.d.ts +7 -0
- package/dist/client/react/WorkItemTitle.d.ts.map +1 -0
- package/dist/client/react/WorkItemTitle.js +6 -0
- package/dist/client/react/WorkItemTitle.js.map +1 -0
- package/dist/client/react/WorkPage.d.ts +5 -0
- package/dist/client/react/WorkPage.d.ts.map +1 -0
- package/dist/client/react/WorkPage.js +17 -0
- package/dist/client/react/WorkPage.js.map +1 -0
- package/dist/client/react/WorkResults.d.ts +5 -0
- package/dist/client/react/WorkResults.d.ts.map +1 -0
- package/dist/client/react/WorkResults.js +10 -0
- package/dist/client/react/WorkResults.js.map +1 -0
- package/dist/client/react/WorkTable.d.ts +5 -0
- package/dist/client/react/WorkTable.d.ts.map +1 -0
- package/dist/client/react/WorkTable.js +10 -0
- package/dist/client/react/WorkTable.js.map +1 -0
- package/dist/client/react/WorkTools.d.ts +5 -0
- package/dist/client/react/WorkTools.d.ts.map +1 -0
- package/dist/client/react/WorkTools.js +7 -0
- package/dist/client/react/WorkTools.js.map +1 -0
- package/dist/client/react/activeRead.d.ts +7 -0
- package/dist/client/react/activeRead.d.ts.map +1 -0
- package/dist/client/react/activeRead.js +13 -0
- package/dist/client/react/activeRead.js.map +1 -0
- package/dist/client/react/createResponse.d.ts +26 -0
- package/dist/client/react/createResponse.d.ts.map +1 -0
- package/dist/client/react/createResponse.js +29 -0
- package/dist/client/react/createResponse.js.map +1 -0
- package/dist/client/react/diagnosticsValues.d.ts +13 -0
- package/dist/client/react/diagnosticsValues.d.ts.map +1 -0
- package/dist/client/react/diagnosticsValues.js +49 -0
- package/dist/client/react/diagnosticsValues.js.map +1 -0
- package/dist/client/react/entry.js +6 -18
- package/dist/client/react/entry.js.map +1 -1
- package/dist/client/react/historyStore.d.ts +7 -0
- package/dist/client/react/historyStore.d.ts.map +1 -0
- package/dist/client/react/historyStore.js +61 -0
- package/dist/client/react/historyStore.js.map +1 -0
- package/dist/client/react/liveStatus.d.ts +16 -0
- package/dist/client/react/liveStatus.d.ts.map +1 -0
- package/dist/client/react/liveStatus.js +43 -0
- package/dist/client/react/liveStatus.js.map +1 -0
- package/dist/client/react/loadBoardPage.d.ts +1 -1
- package/dist/client/react/loadBoardPage.d.ts.map +1 -1
- package/dist/client/react/loadBoardPage.js +14 -4
- package/dist/client/react/loadBoardPage.js.map +1 -1
- package/dist/client/react/loadProjection.d.ts +674 -0
- package/dist/client/react/loadProjection.d.ts.map +1 -0
- package/dist/client/react/loadProjection.js +15 -0
- package/dist/client/react/loadProjection.js.map +1 -0
- package/dist/client/react/loadRemaining.d.ts +577 -0
- package/dist/client/react/loadRemaining.d.ts.map +1 -0
- package/dist/client/react/loadRemaining.js +19 -0
- package/dist/client/react/loadRemaining.js.map +1 -0
- package/dist/client/react/mainLocation.d.ts +6 -0
- package/dist/client/react/mainLocation.d.ts.map +1 -0
- package/dist/client/react/mainLocation.js +9 -0
- package/dist/client/react/mainLocation.js.map +1 -0
- package/dist/client/react/navigationLocation.d.ts +33 -0
- package/dist/client/react/navigationLocation.d.ts.map +1 -0
- package/dist/client/react/navigationLocation.js +22 -0
- package/dist/client/react/navigationLocation.js.map +1 -0
- package/dist/client/react/pageQuery.d.ts +5 -0
- package/dist/client/react/pageQuery.d.ts.map +1 -0
- package/dist/client/react/pageQuery.js +35 -0
- package/dist/client/react/pageQuery.js.map +1 -0
- package/dist/client/react/projectionChanges.d.ts +6 -0
- package/dist/client/react/projectionChanges.d.ts.map +1 -0
- package/dist/client/react/projectionChanges.js +16 -0
- package/dist/client/react/projectionChanges.js.map +1 -0
- package/dist/client/react/projectionRoute.d.ts +4 -0
- package/dist/client/react/projectionRoute.d.ts.map +1 -0
- package/dist/client/react/projectionRoute.js +18 -0
- package/dist/client/react/projectionRoute.js.map +1 -0
- package/dist/client/react/readerLink.d.ts +2 -0
- package/dist/client/react/readerLink.d.ts.map +1 -0
- package/dist/client/react/readerLink.js +8 -0
- package/dist/client/react/readerLink.js.map +1 -0
- package/dist/client/react/readingHistory.d.ts +38 -0
- package/dist/client/react/readingHistory.d.ts.map +1 -0
- package/dist/client/react/readingHistory.js +33 -0
- package/dist/client/react/readingHistory.js.map +1 -0
- package/dist/client/react/readingLibrary.d.ts +24 -0
- package/dist/client/react/readingLibrary.d.ts.map +1 -0
- package/dist/client/react/readingLibrary.js +18 -0
- package/dist/client/react/readingLibrary.js.map +1 -0
- package/dist/client/react/readingState.d.ts +20 -0
- package/dist/client/react/readingState.d.ts.map +1 -0
- package/dist/client/react/readingState.js +133 -0
- package/dist/client/react/readingState.js.map +1 -0
- package/dist/client/react/remainingRoute.d.ts +3 -0
- package/dist/client/react/remainingRoute.d.ts.map +1 -0
- package/dist/client/react/remainingRoute.js +19 -0
- package/dist/client/react/remainingRoute.js.map +1 -0
- package/dist/client/react/savedViews.d.ts +14 -0
- package/dist/client/react/savedViews.d.ts.map +1 -0
- package/dist/client/react/savedViews.js +87 -0
- package/dist/client/react/savedViews.js.map +1 -0
- package/dist/client/react/scheduleReading.d.ts +3 -0
- package/dist/client/react/scheduleReading.d.ts.map +1 -0
- package/dist/client/react/scheduleReading.js +36 -0
- package/dist/client/react/scheduleReading.js.map +1 -0
- package/dist/client/react/searchCommands.d.ts +11 -0
- package/dist/client/react/searchCommands.d.ts.map +1 -0
- package/dist/client/react/searchCommands.js +7 -0
- package/dist/client/react/searchCommands.js.map +1 -0
- package/dist/client/react/searchStatus.d.ts +6 -0
- package/dist/client/react/searchStatus.d.ts.map +1 -0
- package/dist/client/react/searchStatus.js +20 -0
- package/dist/client/react/searchStatus.js.map +1 -0
- package/dist/client/react/shellIds.d.ts +59 -0
- package/dist/client/react/shellIds.d.ts.map +1 -1
- package/dist/client/react/shellIds.js +59 -0
- package/dist/client/react/shellIds.js.map +1 -1
- package/dist/client/react/useAppearance.d.ts +14 -0
- package/dist/client/react/useAppearance.d.ts.map +1 -0
- package/dist/client/react/useAppearance.js +55 -0
- package/dist/client/react/useAppearance.js.map +1 -0
- package/dist/client/react/useBoardNavigation.d.ts +3 -0
- package/dist/client/react/useBoardNavigation.d.ts.map +1 -0
- package/dist/client/react/useBoardNavigation.js +129 -0
- package/dist/client/react/useBoardNavigation.js.map +1 -0
- package/dist/client/react/useDiagnosticsPolling.d.ts +3 -0
- package/dist/client/react/useDiagnosticsPolling.d.ts.map +1 -0
- package/dist/client/react/useDiagnosticsPolling.js +23 -0
- package/dist/client/react/useDiagnosticsPolling.js.map +1 -0
- package/dist/client/react/useDocumentPage.d.ts +1 -1
- package/dist/client/react/useDocumentPage.d.ts.map +1 -1
- package/dist/client/react/useFormFocus.d.ts +5 -0
- package/dist/client/react/useFormFocus.d.ts.map +1 -0
- package/dist/client/react/useFormFocus.js +46 -0
- package/dist/client/react/useFormFocus.js.map +1 -0
- package/dist/client/react/useHandoffForm.d.ts +69 -0
- package/dist/client/react/useHandoffForm.d.ts.map +1 -0
- package/dist/client/react/useHandoffForm.js +102 -0
- package/dist/client/react/useHandoffForm.js.map +1 -0
- package/dist/client/react/useHistoryComparison.d.ts +33 -0
- package/dist/client/react/useHistoryComparison.d.ts.map +1 -0
- package/dist/client/react/useHistoryComparison.js +146 -0
- package/dist/client/react/useHistoryComparison.js.map +1 -0
- package/dist/client/react/useMedia.d.ts +2 -0
- package/dist/client/react/useMedia.d.ts.map +1 -0
- package/dist/client/react/useMedia.js +19 -0
- package/dist/client/react/useMedia.js.map +1 -0
- package/dist/client/react/useResponseForm.d.ts +107 -0
- package/dist/client/react/useResponseForm.d.ts.map +1 -0
- package/dist/client/react/useResponseForm.js +138 -0
- package/dist/client/react/useResponseForm.js.map +1 -0
- package/dist/client/react/useSearchDialog.d.ts +7 -0
- package/dist/client/react/useSearchDialog.d.ts.map +1 -0
- package/dist/client/react/useSearchDialog.js +26 -0
- package/dist/client/react/useSearchDialog.js.map +1 -0
- package/dist/client/react/useSidebar.d.ts +9 -0
- package/dist/client/react/useSidebar.d.ts.map +1 -0
- package/dist/client/react/useSidebar.js +77 -0
- package/dist/client/react/useSidebar.js.map +1 -0
- package/dist/client/react/visualDimensions.d.ts +3 -0
- package/dist/client/react/visualDimensions.d.ts.map +1 -0
- package/dist/client/react/visualDimensions.js +21 -0
- package/dist/client/react/visualDimensions.js.map +1 -0
- package/dist/client/react/visualSources.d.ts +13 -0
- package/dist/client/react/visualSources.d.ts.map +1 -0
- package/dist/client/react/visualSources.js +92 -0
- package/dist/client/react/visualSources.js.map +1 -0
- package/dist/client/reconcile/normalized.d.ts +3 -0
- package/dist/client/reconcile/normalized.d.ts.map +1 -0
- package/dist/client/reconcile/{signature.js → normalized.js} +1 -37
- package/dist/client/reconcile/normalized.js.map +1 -0
- package/dist/client/responses/answerRecovery.d.ts +14 -0
- package/dist/client/responses/answerRecovery.d.ts.map +1 -0
- package/dist/client/responses/answerRecovery.js +33 -0
- package/dist/client/responses/answerRecovery.js.map +1 -0
- package/dist/client/responses/authorLabel.d.ts +1 -1
- package/dist/client/responses/authorLabel.d.ts.map +1 -1
- package/dist/client/responses/authorLabel.js +2 -2
- package/dist/client/responses/authorLabel.js.map +1 -1
- package/dist/client/responses/failure.d.ts +5 -0
- package/dist/client/responses/failure.d.ts.map +1 -0
- package/dist/client/responses/failure.js +13 -0
- package/dist/client/responses/failure.js.map +1 -0
- package/dist/client/responses/formSchema.d.ts +9 -0
- package/dist/client/responses/formSchema.d.ts.map +1 -1
- package/dist/client/responses/formSchema.js +3 -0
- package/dist/client/responses/formSchema.js.map +1 -1
- package/dist/client/responses/preview.d.ts +2 -2
- package/dist/client/responses/preview.d.ts.map +1 -1
- package/dist/client/responses/preview.js.map +1 -1
- package/dist/client/responses/retainContext.d.ts +6 -0
- package/dist/client/responses/retainContext.d.ts.map +1 -0
- package/dist/client/responses/retainContext.js +12 -0
- package/dist/client/responses/retainContext.js.map +1 -0
- package/dist/client/responses/summary.d.ts +6 -0
- package/dist/client/responses/summary.d.ts.map +1 -0
- package/dist/client/responses/summary.js +21 -0
- package/dist/client/responses/summary.js.map +1 -0
- package/dist/client/sourceChanged.d.ts +2 -0
- package/dist/client/sourceChanged.d.ts.map +1 -0
- package/dist/client/sourceChanged.js +4 -0
- package/dist/client/sourceChanged.js.map +1 -0
- package/dist/diagnostics/daemonContract.d.ts +1 -1
- package/dist/diagnostics/daemonContract.js +1 -1
- package/dist/diagnostics/daemonContract.js.map +1 -1
- package/dist/diagnostics/source.d.ts +14 -24
- package/dist/diagnostics/source.d.ts.map +1 -1
- package/dist/diagnostics/source.js +2 -9
- package/dist/diagnostics/source.js.map +1 -1
- package/dist/history/schema.d.ts +33 -0
- package/dist/history/schema.d.ts.map +1 -1
- package/dist/history/schema.js +12 -0
- package/dist/history/schema.js.map +1 -1
- package/dist/rpc/contract.d.ts +4235 -298
- package/dist/rpc/contract.d.ts.map +1 -1
- package/dist/rpc/contract.js +57 -3
- package/dist/rpc/contract.js.map +1 -1
- package/dist/rpc/handoffContract.d.ts +3 -3
- package/dist/rpc/responseContract.d.ts +5 -5
- package/dist/server/board.d.ts +4 -4
- package/dist/server/board.d.ts.map +1 -1
- package/dist/server/board.js +18 -95
- package/dist/server/board.js.map +1 -1
- package/dist/server/boardRuntime.d.ts +12 -0
- package/dist/server/boardRuntime.d.ts.map +1 -0
- package/dist/server/boardRuntime.js +37 -0
- package/dist/server/boardRuntime.js.map +1 -0
- package/dist/server/diagnostics/daemon.js +3 -3
- package/dist/server/diagnostics/daemon.js.map +1 -1
- package/dist/server/history/html.d.ts +0 -1
- package/dist/server/history/html.d.ts.map +1 -1
- package/dist/server/history/html.js +0 -3
- package/dist/server/history/html.js.map +1 -1
- package/dist/server/history/response.d.ts.map +1 -1
- package/dist/server/history/response.js +14 -1
- package/dist/server/history/response.js.map +1 -1
- package/dist/server/http/assets.d.ts +4 -4
- package/dist/server/http/assets.d.ts.map +1 -1
- package/dist/server/http/assets.js +1 -35
- package/dist/server/http/assets.js.map +1 -1
- package/dist/server/http/attachment.d.ts +2 -2
- package/dist/server/http/attachment.d.ts.map +1 -1
- package/dist/server/http/boardRoutes.d.ts +6 -0
- package/dist/server/http/boardRoutes.d.ts.map +1 -0
- package/dist/server/http/boardRoutes.js +45 -0
- package/dist/server/http/boardRoutes.js.map +1 -0
- package/dist/server/http/identity.d.ts +2 -2
- package/dist/server/http/identity.d.ts.map +1 -1
- package/dist/server/http/inbox.d.ts +1 -1
- package/dist/server/http/inbox.d.ts.map +1 -1
- package/dist/server/http/overview.d.ts +1 -1
- package/dist/server/http/overview.d.ts.map +1 -1
- package/dist/server/http/page.d.ts +2 -2
- package/dist/server/http/page.d.ts.map +1 -1
- package/dist/server/http/page.js +1 -2
- package/dist/server/http/page.js.map +1 -1
- package/dist/server/http/respond.d.ts +1 -1
- package/dist/server/http/respond.d.ts.map +1 -1
- package/dist/server/http/respond.js +1 -1
- package/dist/server/http/respond.js.map +1 -1
- package/dist/server/http/rpcPolicy.d.ts +4 -0
- package/dist/server/http/rpcPolicy.d.ts.map +1 -0
- package/dist/server/http/rpcPolicy.js +11 -0
- package/dist/server/http/rpcPolicy.js.map +1 -0
- package/dist/server/http/work.d.ts +2 -2
- package/dist/server/http/work.d.ts.map +1 -1
- package/dist/server/integration/diagnostics.d.ts +1 -1
- package/dist/server/responses/agent.d.ts +1 -1
- package/dist/server/responses/agent.d.ts.map +1 -1
- package/dist/server/responses/agent.js +2 -2
- package/dist/server/responses/agent.js.map +1 -1
- package/dist/server/responses/composerHtml.js +1 -1
- package/dist/server/responses/composerHtml.js.map +1 -1
- package/dist/server/responses/waitFor.d.ts +1 -1
- package/dist/server/responses/waitFor.d.ts.map +1 -1
- package/dist/server/rpc/HandlerOptions.d.ts +12 -0
- package/dist/server/rpc/HandlerOptions.d.ts.map +1 -0
- package/dist/server/rpc/HandlerOptions.js +2 -0
- package/dist/server/rpc/HandlerOptions.js.map +1 -0
- package/dist/server/rpc/handlers.d.ts +2 -2
- package/dist/server/rpc/handlers.d.ts.map +1 -1
- package/dist/server/rpc/handlers.js +17 -10
- package/dist/server/rpc/handlers.js.map +1 -1
- package/dist/server/serve-cli.js +8 -8
- package/dist/server/serve-cli.js.map +1 -1
- package/dist/server/serve.d.ts +2 -3
- package/dist/server/serve.d.ts.map +1 -1
- package/dist/server/serve.js +20 -9
- package/dist/server/serve.js.map +1 -1
- package/dist/server/views/projectionQueries.d.ts +681 -0
- package/dist/server/views/projectionQueries.d.ts.map +1 -0
- package/dist/server/views/projectionQueries.js +70 -0
- package/dist/server/views/projectionQueries.js.map +1 -0
- package/dist/server/views/remainingQueries.d.ts +679 -0
- package/dist/server/views/remainingQueries.d.ts.map +1 -0
- package/dist/server/views/remainingQueries.js +58 -0
- package/dist/server/views/remainingQueries.js.map +1 -0
- package/dist/server/views/resultProjection.d.ts +420 -0
- package/dist/server/views/resultProjection.d.ts.map +1 -0
- package/dist/server/views/resultProjection.js +35 -0
- package/dist/server/views/resultProjection.js.map +1 -0
- package/dist/server/views/resultTargets.d.ts +6 -0
- package/dist/server/views/resultTargets.d.ts.map +1 -0
- package/dist/server/views/resultTargets.js +31 -0
- package/dist/server/views/resultTargets.js.map +1 -0
- package/dist/server/views/state.d.ts +8 -9
- package/dist/server/views/state.d.ts.map +1 -1
- package/dist/server/views/state.js +5 -38
- package/dist/server/views/state.js.map +1 -1
- package/dist/server/views/workStyle.d.ts.map +1 -1
- package/dist/server/views/workStyle.js +1 -0
- package/dist/server/views/workStyle.js.map +1 -1
- package/docs/delivery/decision-write-examples.md +1 -1
- package/docs/delivery/handoff-examples.md +1 -1
- package/docs/delivery/response-write-examples.md +1 -1
- package/docs/delivery/result-review-examples.md +1 -1
- package/docs/roadmap.md +7 -7
- package/package.json +52 -139
- package/src/browser/diagnostics/schema.ts +18 -0
- package/src/browser/views/ResultProjection.ts +37 -0
- package/src/browser/views/remaining.ts +26 -0
- package/src/browser/views/schema.ts +68 -0
- package/src/browser/views/state.ts +47 -0
- package/src/client/client.ts +8 -8
- package/src/client/document/Mermaid.ts +49 -9
- package/src/client/document/View.ts +14 -1
- package/src/client/document/boardLayout.ts +80 -0
- package/src/client/entry.ts +0 -24
- package/src/client/formDraft.ts +9 -0
- package/src/client/formFocus.ts +5 -0
- package/src/client/handoffs/failureStatus.ts +6 -0
- package/src/client/page/routeQuery.ts +0 -5
- package/src/client/react/Age.tsx +35 -0
- package/src/client/react/AnswerForm.tsx +88 -82
- package/src/client/react/AnswerPrompts.tsx +67 -54
- package/src/client/react/BoardMain.tsx +30 -0
- package/src/client/react/BoardShell.tsx +89 -27
- package/src/client/react/ChangesMain.tsx +68 -0
- package/src/client/react/DiagnosticsFleet.tsx +64 -0
- package/src/client/react/DiagnosticsMain.tsx +29 -0
- package/src/client/react/DiagnosticsPage.tsx +77 -0
- package/src/client/react/DocumentContext.tsx +25 -9
- package/src/client/react/DocumentMain.tsx +8 -6
- package/src/client/react/Favorite.tsx +17 -0
- package/src/client/react/FormField.tsx +68 -0
- package/src/client/react/HandoffForm.tsx +78 -0
- package/src/client/react/HandoffPage.tsx +78 -0
- package/src/client/react/HandoffPrompt.tsx +33 -0
- package/src/client/react/Header.tsx +34 -13
- package/src/client/react/HistoryComparison.tsx +60 -0
- package/src/client/react/HistoryRetention.tsx +29 -0
- package/src/client/react/HomeBoard.tsx +15 -0
- package/src/client/react/InboxPage.tsx +51 -0
- package/src/client/react/LiveControls.tsx +78 -0
- package/src/client/react/Modal.tsx +92 -0
- package/src/client/react/NavigationTree.tsx +2 -1
- package/src/client/react/OverviewGroups.tsx +61 -0
- package/src/client/react/OverviewPage.tsx +68 -0
- package/src/client/react/ProjectionFrame.tsx +140 -0
- package/src/client/react/ProjectionMain.tsx +63 -0
- package/src/client/react/PromptOption.tsx +56 -0
- package/src/client/react/ReadingLibrary.tsx +147 -0
- package/src/client/react/RemainingMain.tsx +66 -0
- package/src/client/react/RespondPage.tsx +41 -0
- package/src/client/react/ResponseMarkdown.tsx +32 -2
- package/src/client/react/ResultCriteria.tsx +78 -0
- package/src/client/react/ResultFeedback.tsx +67 -0
- package/src/client/react/ResultPage.tsx +50 -0
- package/src/client/react/SavedViews.tsx +61 -0
- package/src/client/react/SearchDialog.tsx +136 -0
- package/src/client/react/SearchResults.tsx +48 -0
- package/src/client/react/ShellApi.ts +11 -1
- package/src/client/react/Sidebar.tsx +57 -4
- package/src/client/react/StartPage.tsx +41 -0
- package/src/client/react/UpdatesToggle.tsx +13 -0
- package/src/client/react/VisualControls.tsx +59 -0
- package/src/client/react/VisualInspection.tsx +35 -0
- package/src/client/react/VisualViewer.tsx +147 -0
- package/src/client/react/WorkCards.tsx +39 -0
- package/src/client/react/WorkControls.tsx +73 -0
- package/src/client/react/WorkDetail.tsx +35 -0
- package/src/client/react/WorkItemTitle.tsx +9 -0
- package/src/client/react/WorkPage.tsx +59 -0
- package/src/client/react/WorkResults.tsx +9 -0
- package/src/client/react/WorkTable.tsx +39 -0
- package/src/client/react/WorkTools.tsx +17 -0
- package/src/client/react/activeRead.ts +15 -0
- package/src/client/react/createResponse.ts +40 -0
- package/src/client/react/diagnosticsValues.tsx +103 -0
- package/src/client/react/entry.css +20 -0
- package/src/client/react/entry.tsx +6 -19
- package/src/client/react/historyStore.ts +56 -0
- package/src/client/react/liveStatus.ts +52 -0
- package/src/client/react/loadBoardPage.ts +15 -5
- package/src/client/react/loadProjection.ts +23 -0
- package/src/client/react/loadRemaining.ts +27 -0
- package/src/client/react/mainLocation.ts +12 -0
- package/src/client/react/navigationLocation.ts +27 -0
- package/src/client/react/pageQuery.ts +38 -0
- package/src/client/react/projectionChanges.ts +21 -0
- package/src/client/react/projectionRoute.ts +21 -0
- package/src/client/react/readerLink.ts +9 -0
- package/src/client/react/readingHistory.ts +31 -0
- package/src/client/react/readingLibrary.ts +22 -0
- package/src/client/react/readingState.ts +133 -0
- package/src/client/react/remainingRoute.ts +19 -0
- package/src/client/react/savedViews.ts +84 -0
- package/src/client/react/scheduleReading.ts +41 -0
- package/src/client/react/searchCommands.ts +15 -0
- package/src/client/react/searchStatus.ts +30 -0
- package/src/client/react/shellIds.ts +59 -0
- package/src/client/react/useAppearance.ts +54 -0
- package/src/client/react/useBoardNavigation.ts +139 -0
- package/src/client/react/useDiagnosticsPolling.ts +24 -0
- package/src/client/react/useDocumentPage.ts +1 -1
- package/src/client/react/useFormFocus.ts +46 -0
- package/src/client/react/useHandoffForm.ts +105 -0
- package/src/client/react/useHistoryComparison.ts +142 -0
- package/src/client/react/useMedia.ts +19 -0
- package/src/client/react/useResponseForm.ts +147 -0
- package/src/client/react/useSearchDialog.ts +25 -0
- package/src/client/react/useSidebar.ts +81 -0
- package/src/client/react/visualDimensions.ts +20 -0
- package/src/client/react/visualSources.ts +105 -0
- package/src/client/reconcile/{signature.ts → normalized.ts} +0 -37
- package/src/client/responses/answerRecovery.ts +37 -0
- package/src/client/responses/authorLabel.ts +3 -3
- package/src/client/responses/failure.ts +13 -0
- package/src/client/responses/formSchema.ts +4 -0
- package/src/client/responses/preview.ts +2 -2
- package/src/client/responses/retainContext.ts +15 -0
- package/src/client/responses/summary.ts +25 -0
- package/src/client/sourceChanged.ts +3 -0
- package/src/diagnostics/daemonContract.ts +1 -1
- package/src/diagnostics/source.ts +5 -14
- package/src/history/schema.ts +15 -0
- package/src/rpc/contract.ts +57 -3
- package/src/server/board.ts +24 -126
- package/src/server/boardRuntime.ts +54 -0
- package/src/server/diagnostics/daemon.ts +3 -3
- package/src/server/history/html.ts +0 -3
- package/src/server/history/response.ts +15 -1
- package/src/server/http/assets.ts +2 -36
- package/src/server/http/attachment.ts +1 -1
- package/src/server/http/boardRoutes.ts +62 -0
- package/src/server/http/identity.ts +1 -1
- package/src/server/http/page.ts +2 -3
- package/src/server/http/respond.ts +1 -1
- package/src/server/http/rpcPolicy.ts +16 -0
- package/src/server/http/work.ts +1 -1
- package/src/server/responses/agent.ts +2 -2
- package/src/server/responses/composerHtml.ts +1 -1
- package/src/server/responses/waitFor.ts +1 -1
- package/src/server/rpc/HandlerOptions.ts +12 -0
- package/src/server/rpc/handlers.ts +18 -15
- package/src/server/serve-cli.ts +8 -8
- package/src/server/serve.ts +23 -10
- package/src/server/views/projectionQueries.ts +78 -0
- package/src/server/views/remainingQueries.ts +74 -0
- package/src/server/views/resultProjection.ts +45 -0
- package/src/server/views/resultTargets.ts +34 -0
- package/src/server/views/state.ts +5 -40
- package/src/server/views/workStyle.ts +1 -0
- package/dist/client/diagnostics/script.d.ts +0 -2
- package/dist/client/diagnostics/script.d.ts.map +0 -1
- package/dist/client/diagnostics/script.js +0 -31
- package/dist/client/diagnostics/script.js.map +0 -1
- package/dist/client/fieldFeedback.d.ts +0 -17
- package/dist/client/fieldFeedback.d.ts.map +0 -1
- package/dist/client/fieldFeedback.js +0 -38
- package/dist/client/fieldFeedback.js.map +0 -1
- package/dist/client/handoffs/copy.d.ts +0 -3
- package/dist/client/handoffs/copy.d.ts.map +0 -1
- package/dist/client/handoffs/copy.js +0 -47
- package/dist/client/handoffs/copy.js.map +0 -1
- package/dist/client/handoffs/fields.d.ts +0 -9
- package/dist/client/handoffs/fields.d.ts.map +0 -1
- package/dist/client/handoffs/fields.js +0 -34
- package/dist/client/handoffs/fields.js.map +0 -1
- package/dist/client/handoffs/form.d.ts +0 -36
- package/dist/client/handoffs/form.d.ts.map +0 -1
- package/dist/client/handoffs/form.js +0 -33
- package/dist/client/handoffs/form.js.map +0 -1
- package/dist/client/handoffs/setup.d.ts +0 -2
- package/dist/client/handoffs/setup.d.ts.map +0 -1
- package/dist/client/handoffs/setup.js +0 -125
- package/dist/client/handoffs/setup.js.map +0 -1
- package/dist/client/history/script.d.ts +0 -2
- package/dist/client/history/script.d.ts.map +0 -1
- package/dist/client/history/script.js +0 -128
- package/dist/client/history/script.js.map +0 -1
- package/dist/client/legacyRuntime.d.ts +0 -9
- package/dist/client/legacyRuntime.d.ts.map +0 -1
- package/dist/client/legacyRuntime.js +0 -15
- package/dist/client/legacyRuntime.js.map +0 -1
- package/dist/client/page/ageScript.d.ts +0 -2
- package/dist/client/page/ageScript.d.ts.map +0 -1
- package/dist/client/page/ageScript.js +0 -23
- package/dist/client/page/ageScript.js.map +0 -1
- package/dist/client/page/formReadingScript.d.ts +0 -2
- package/dist/client/page/formReadingScript.d.ts.map +0 -1
- package/dist/client/page/formReadingScript.js +0 -26
- package/dist/client/page/formReadingScript.js.map +0 -1
- package/dist/client/page/itemContextScript.d.ts +0 -2
- package/dist/client/page/itemContextScript.d.ts.map +0 -1
- package/dist/client/page/itemContextScript.js +0 -21
- package/dist/client/page/itemContextScript.js.map +0 -1
- package/dist/client/page/libraryScript.d.ts +0 -2
- package/dist/client/page/libraryScript.d.ts.map +0 -1
- package/dist/client/page/libraryScript.js +0 -85
- package/dist/client/page/libraryScript.js.map +0 -1
- package/dist/client/page/navigationHistoryScript.d.ts +0 -2
- package/dist/client/page/navigationHistoryScript.d.ts.map +0 -1
- package/dist/client/page/navigationHistoryScript.js +0 -47
- package/dist/client/page/navigationHistoryScript.js.map +0 -1
- package/dist/client/page/navigationScript.d.ts +0 -2
- package/dist/client/page/navigationScript.d.ts.map +0 -1
- package/dist/client/page/navigationScript.js +0 -113
- package/dist/client/page/navigationScript.js.map +0 -1
- package/dist/client/page/preferencesScript.d.ts +0 -2
- package/dist/client/page/preferencesScript.d.ts.map +0 -1
- package/dist/client/page/preferencesScript.js +0 -46
- package/dist/client/page/preferencesScript.js.map +0 -1
- package/dist/client/page/reactNavigationScript.d.ts +0 -2
- package/dist/client/page/reactNavigationScript.d.ts.map +0 -1
- package/dist/client/page/reactNavigationScript.js +0 -31
- package/dist/client/page/reactNavigationScript.js.map +0 -1
- package/dist/client/page/readingStateScript.d.ts +0 -2
- package/dist/client/page/readingStateScript.d.ts.map +0 -1
- package/dist/client/page/readingStateScript.js +0 -65
- package/dist/client/page/readingStateScript.js.map +0 -1
- package/dist/client/page/runtime.d.ts +0 -3
- package/dist/client/page/runtime.d.ts.map +0 -1
- package/dist/client/page/runtime.js +0 -111
- package/dist/client/page/runtime.js.map +0 -1
- package/dist/client/page/scripts.d.ts +0 -3
- package/dist/client/page/scripts.d.ts.map +0 -1
- package/dist/client/page/scripts.js +0 -91
- package/dist/client/page/scripts.js.map +0 -1
- package/dist/client/page/searchResultsScript.d.ts +0 -2
- package/dist/client/page/searchResultsScript.d.ts.map +0 -1
- package/dist/client/page/searchResultsScript.js +0 -64
- package/dist/client/page/searchResultsScript.js.map +0 -1
- package/dist/client/page/searchScript.d.ts +0 -2
- package/dist/client/page/searchScript.d.ts.map +0 -1
- package/dist/client/page/searchScript.js +0 -75
- package/dist/client/page/searchScript.js.map +0 -1
- package/dist/client/page/sidebarScript.d.ts +0 -2
- package/dist/client/page/sidebarScript.d.ts.map +0 -1
- package/dist/client/page/sidebarScript.js +0 -87
- package/dist/client/page/sidebarScript.js.map +0 -1
- package/dist/client/page/stateScript.d.ts +0 -2
- package/dist/client/page/stateScript.d.ts.map +0 -1
- package/dist/client/page/stateScript.js +0 -95
- package/dist/client/page/stateScript.js.map +0 -1
- package/dist/client/page/visualScript.d.ts +0 -2
- package/dist/client/page/visualScript.d.ts.map +0 -1
- package/dist/client/page/visualScript.js +0 -42
- package/dist/client/page/visualScript.js.map +0 -1
- package/dist/client/page/visualViewport.d.ts +0 -2
- package/dist/client/page/visualViewport.d.ts.map +0 -1
- package/dist/client/page/visualViewport.js +0 -87
- package/dist/client/page/visualViewport.js.map +0 -1
- package/dist/client/react/AnswerFocus.d.ts +0 -6
- package/dist/client/react/AnswerFocus.d.ts.map +0 -1
- package/dist/client/react/AnswerFocus.js +0 -12
- package/dist/client/react/AnswerFocus.js.map +0 -1
- package/dist/client/react/LegacyMain.d.ts +0 -9
- package/dist/client/react/LegacyMain.d.ts.map +0 -1
- package/dist/client/react/LegacyMain.js +0 -32
- package/dist/client/react/LegacyMain.js.map +0 -1
- package/dist/client/react/legacyPage.d.ts +0 -7
- package/dist/client/react/legacyPage.d.ts.map +0 -1
- package/dist/client/react/legacyPage.js +0 -63
- package/dist/client/react/legacyPage.js.map +0 -1
- package/dist/client/reconcile/patch.d.ts +0 -2
- package/dist/client/reconcile/patch.d.ts.map +0 -1
- package/dist/client/reconcile/patch.js +0 -64
- package/dist/client/reconcile/patch.js.map +0 -1
- package/dist/client/reconcile/signature.d.ts +0 -8
- package/dist/client/reconcile/signature.d.ts.map +0 -1
- package/dist/client/reconcile/signature.js.map +0 -1
- package/dist/client/reconcile/swap.d.ts +0 -2
- package/dist/client/reconcile/swap.d.ts.map +0 -1
- package/dist/client/reconcile/swap.js +0 -36
- package/dist/client/reconcile/swap.js.map +0 -1
- package/dist/client/responses/attach.d.ts +0 -2
- package/dist/client/responses/attach.d.ts.map +0 -1
- package/dist/client/responses/attach.js +0 -133
- package/dist/client/responses/attach.js.map +0 -1
- package/dist/client/responses/binding.d.ts +0 -3
- package/dist/client/responses/binding.d.ts.map +0 -1
- package/dist/client/responses/binding.js +0 -16
- package/dist/client/responses/binding.js.map +0 -1
- package/dist/client/responses/draft.d.ts +0 -13
- package/dist/client/responses/draft.d.ts.map +0 -1
- package/dist/client/responses/draft.js +0 -15
- package/dist/client/responses/draft.js.map +0 -1
- package/dist/client/responses/draftSession.d.ts +0 -8
- package/dist/client/responses/draftSession.d.ts.map +0 -1
- package/dist/client/responses/draftSession.js +0 -105
- package/dist/client/responses/draftSession.js.map +0 -1
- package/dist/client/responses/drafts.d.ts +0 -21
- package/dist/client/responses/drafts.d.ts.map +0 -1
- package/dist/client/responses/drafts.js +0 -68
- package/dist/client/responses/drafts.js.map +0 -1
- package/dist/client/responses/feedback.d.ts +0 -6
- package/dist/client/responses/feedback.d.ts.map +0 -1
- package/dist/client/responses/feedback.js +0 -77
- package/dist/client/responses/feedback.js.map +0 -1
- package/dist/client/responses/fields.d.ts +0 -12
- package/dist/client/responses/fields.d.ts.map +0 -1
- package/dist/client/responses/fields.js +0 -23
- package/dist/client/responses/fields.js.map +0 -1
- package/dist/client/responses/form.d.ts +0 -37
- package/dist/client/responses/form.d.ts.map +0 -1
- package/dist/client/responses/form.js +0 -43
- package/dist/client/responses/form.js.map +0 -1
- package/dist/client/responses/questionnaireControls.d.ts +0 -9
- package/dist/client/responses/questionnaireControls.d.ts.map +0 -1
- package/dist/client/responses/questionnaireControls.js +0 -82
- package/dist/client/responses/questionnaireControls.js.map +0 -1
- package/dist/client/responses/setup.d.ts +0 -2
- package/dist/client/responses/setup.d.ts.map +0 -1
- package/dist/client/responses/setup.js +0 -7
- package/dist/client/responses/setup.js.map +0 -1
- package/dist/client/responses/submit.d.ts +0 -5
- package/dist/client/responses/submit.d.ts.map +0 -1
- package/dist/client/responses/submit.js +0 -33
- package/dist/client/responses/submit.js.map +0 -1
- package/dist/client/views/savedScript.d.ts +0 -2
- package/dist/client/views/savedScript.d.ts.map +0 -1
- package/dist/client/views/savedScript.js +0 -89
- package/dist/client/views/savedScript.js.map +0 -1
- package/dist/server/diagnostics/html.d.ts +0 -8
- package/dist/server/diagnostics/html.d.ts.map +0 -1
- package/dist/server/diagnostics/html.js +0 -79
- package/dist/server/diagnostics/html.js.map +0 -1
- package/dist/server/diagnostics/page.d.ts +0 -55
- package/dist/server/diagnostics/page.d.ts.map +0 -1
- package/dist/server/diagnostics/page.js +0 -11
- package/dist/server/diagnostics/page.js.map +0 -1
- package/dist/server/handoffs/html.d.ts +0 -36
- package/dist/server/handoffs/html.d.ts.map +0 -1
- package/dist/server/handoffs/html.js +0 -31
- package/dist/server/handoffs/html.js.map +0 -1
- package/dist/server/handoffs/page.d.ts +0 -6
- package/dist/server/handoffs/page.d.ts.map +0 -1
- package/dist/server/handoffs/page.js +0 -34
- package/dist/server/handoffs/page.js.map +0 -1
- package/dist/server/http/changesPage.d.ts +0 -5
- package/dist/server/http/changesPage.d.ts.map +0 -1
- package/dist/server/http/changesPage.js +0 -13
- package/dist/server/http/changesPage.js.map +0 -1
- package/dist/server/http/readPage.d.ts +0 -4
- package/dist/server/http/readPage.d.ts.map +0 -1
- package/dist/server/http/readPage.js +0 -9
- package/dist/server/http/readPage.js.map +0 -1
- package/dist/server/http/start.d.ts +0 -5
- package/dist/server/http/start.d.ts.map +0 -1
- package/dist/server/http/start.js +0 -13
- package/dist/server/http/start.js.map +0 -1
- package/dist/server/page/startHtml.d.ts +0 -2
- package/dist/server/page/startHtml.d.ts.map +0 -1
- package/dist/server/page/startHtml.js +0 -10
- package/dist/server/page/startHtml.js.map +0 -1
- package/dist/server/responses/page.d.ts +0 -6
- package/dist/server/responses/page.d.ts.map +0 -1
- package/dist/server/responses/page.js +0 -25
- package/dist/server/responses/page.js.map +0 -1
- package/dist/server/results/criteria.d.ts +0 -3
- package/dist/server/results/criteria.d.ts.map +0 -1
- package/dist/server/results/criteria.js +0 -34
- package/dist/server/results/criteria.js.map +0 -1
- package/dist/server/results/feedback.d.ts +0 -6
- package/dist/server/results/feedback.d.ts.map +0 -1
- package/dist/server/results/feedback.js +0 -32
- package/dist/server/results/feedback.js.map +0 -1
- package/dist/server/results/page.d.ts +0 -6
- package/dist/server/results/page.d.ts.map +0 -1
- package/dist/server/results/page.js +0 -41
- package/dist/server/results/page.js.map +0 -1
- package/dist/server/rpc/transport.d.ts +0 -14
- package/dist/server/rpc/transport.d.ts.map +0 -1
- package/dist/server/rpc/transport.js +0 -15
- package/dist/server/rpc/transport.js.map +0 -1
- package/src/client/diagnostics/script.ts +0 -31
- package/src/client/fieldFeedback.ts +0 -53
- package/src/client/handoffs/copy.ts +0 -45
- package/src/client/handoffs/fields.ts +0 -38
- package/src/client/handoffs/form.ts +0 -41
- package/src/client/handoffs/setup.ts +0 -142
- package/src/client/history/script.ts +0 -127
- package/src/client/legacyRuntime.ts +0 -11
- package/src/client/page/ageScript.ts +0 -22
- package/src/client/page/formReadingScript.ts +0 -25
- package/src/client/page/itemContextScript.ts +0 -20
- package/src/client/page/libraryScript.ts +0 -84
- package/src/client/page/navigationHistoryScript.ts +0 -46
- package/src/client/page/navigationScript.ts +0 -113
- package/src/client/page/preferencesScript.ts +0 -45
- package/src/client/page/reactNavigationScript.ts +0 -30
- package/src/client/page/readingStateScript.ts +0 -64
- package/src/client/page/runtime.ts +0 -111
- package/src/client/page/scripts.ts +0 -91
- package/src/client/page/searchResultsScript.ts +0 -63
- package/src/client/page/searchScript.ts +0 -74
- package/src/client/page/sidebarScript.ts +0 -86
- package/src/client/page/stateScript.ts +0 -95
- package/src/client/page/visualScript.ts +0 -41
- package/src/client/page/visualViewport.ts +0 -86
- package/src/client/react/AnswerFocus.tsx +0 -10
- package/src/client/react/LegacyMain.tsx +0 -46
- package/src/client/react/legacyPage.ts +0 -69
- package/src/client/reconcile/patch.ts +0 -71
- package/src/client/reconcile/swap.ts +0 -37
- package/src/client/responses/attach.ts +0 -150
- package/src/client/responses/binding.ts +0 -16
- package/src/client/responses/draft.ts +0 -20
- package/src/client/responses/draftSession.ts +0 -108
- package/src/client/responses/drafts.ts +0 -82
- package/src/client/responses/feedback.ts +0 -81
- package/src/client/responses/fields.ts +0 -26
- package/src/client/responses/form.ts +0 -58
- package/src/client/responses/questionnaireControls.ts +0 -94
- package/src/client/responses/setup.ts +0 -6
- package/src/client/responses/submit.ts +0 -44
- package/src/client/views/savedScript.ts +0 -88
- package/src/server/diagnostics/html.ts +0 -93
- package/src/server/diagnostics/page.ts +0 -31
- package/src/server/handoffs/html.ts +0 -42
- package/src/server/handoffs/page.ts +0 -51
- package/src/server/http/changesPage.ts +0 -15
- package/src/server/http/readPage.ts +0 -13
- package/src/server/http/start.ts +0 -27
- package/src/server/page/startHtml.ts +0 -10
- package/src/server/responses/page.ts +0 -37
- package/src/server/results/criteria.ts +0 -37
- package/src/server/results/feedback.ts +0 -44
- package/src/server/results/page.ts +0 -63
- 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
|
-
}
|
package/src/server/http/start.ts
DELETED
|
@@ -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 ?? "")}&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
|
-
}
|