create-principles-disciple 1.146.4 → 1.146.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/_release/product-identity.json +1 -1
  2. package/package.json +3 -3
  3. package/release-manager/package.json +3 -3
  4. package/console/dist/ui/App.d.ts +0 -1
  5. package/console/dist/ui/App.js +0 -172
  6. package/console/dist/ui/api.d.ts +0 -611
  7. package/console/dist/ui/api.js +0 -1094
  8. package/console/dist/ui/components/auth/login-form.d.ts +0 -4
  9. package/console/dist/ui/components/auth/login-form.js +0 -142
  10. package/console/dist/ui/components/auth/splash-screen.d.ts +0 -9
  11. package/console/dist/ui/components/auth/splash-screen.js +0 -22
  12. package/console/dist/ui/components/error-boundary.d.ts +0 -15
  13. package/console/dist/ui/components/error-boundary.js +0 -30
  14. package/console/dist/ui/components/focus/daily-thought-card.d.ts +0 -1
  15. package/console/dist/ui/components/focus/daily-thought-card.js +0 -41
  16. package/console/dist/ui/components/language-switcher.d.ts +0 -2
  17. package/console/dist/ui/components/language-switcher.js +0 -17
  18. package/console/dist/ui/components/layout/app-sidebar.d.ts +0 -27
  19. package/console/dist/ui/components/layout/app-sidebar.js +0 -128
  20. package/console/dist/ui/components/layout/page-loading.d.ts +0 -13
  21. package/console/dist/ui/components/layout/page-loading.js +0 -14
  22. package/console/dist/ui/components/layout/page-shell.d.ts +0 -12
  23. package/console/dist/ui/components/layout/page-shell.js +0 -11
  24. package/console/dist/ui/components/layout/section-title.d.ts +0 -10
  25. package/console/dist/ui/components/layout/section-title.js +0 -9
  26. package/console/dist/ui/components/notifications/NotificationProvider.d.ts +0 -14
  27. package/console/dist/ui/components/notifications/NotificationProvider.js +0 -136
  28. package/console/dist/ui/components/notifications/favicon-badge.d.ts +0 -3
  29. package/console/dist/ui/components/notifications/favicon-badge.js +0 -68
  30. package/console/dist/ui/components/notifications/notification-reducer.d.ts +0 -9
  31. package/console/dist/ui/components/notifications/notification-reducer.js +0 -9
  32. package/console/dist/ui/components/notifications/sound-storage.d.ts +0 -3
  33. package/console/dist/ui/components/notifications/sound-storage.js +0 -37
  34. package/console/dist/ui/components/notifications/useNotifications.d.ts +0 -1
  35. package/console/dist/ui/components/notifications/useNotifications.js +0 -9
  36. package/console/dist/ui/components/onboarding/CircuitDiagram.d.ts +0 -8
  37. package/console/dist/ui/components/onboarding/CircuitDiagram.js +0 -18
  38. package/console/dist/ui/components/onboarding/DemoResultView.d.ts +0 -22
  39. package/console/dist/ui/components/onboarding/DemoResultView.js +0 -33
  40. package/console/dist/ui/components/onboarding/SlashCommandsCard.d.ts +0 -16
  41. package/console/dist/ui/components/onboarding/SlashCommandsCard.js +0 -20
  42. package/console/dist/ui/components/onboarding/slashCommands.d.ts +0 -20
  43. package/console/dist/ui/components/onboarding/slashCommands.js +0 -22
  44. package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.d.ts +0 -6
  45. package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.js +0 -66
  46. package/console/dist/ui/components/theme-provider.d.ts +0 -14
  47. package/console/dist/ui/components/theme-provider.js +0 -40
  48. package/console/dist/ui/components/theme-toggle.d.ts +0 -2
  49. package/console/dist/ui/components/theme-toggle.js +0 -11
  50. package/console/dist/ui/components/ui/alert-dialog.d.ts +0 -20
  51. package/console/dist/ui/components/ui/alert-dialog.js +0 -26
  52. package/console/dist/ui/components/ui/badge.d.ts +0 -9
  53. package/console/dist/ui/components/ui/badge.js +0 -22
  54. package/console/dist/ui/components/ui/button.d.ts +0 -11
  55. package/console/dist/ui/components/ui/button.js +0 -34
  56. package/console/dist/ui/components/ui/card.d.ts +0 -8
  57. package/console/dist/ui/components/ui/card.js +0 -16
  58. package/console/dist/ui/components/ui/charts.d.ts +0 -51
  59. package/console/dist/ui/components/ui/charts.js +0 -72
  60. package/console/dist/ui/components/ui/dialog.d.ts +0 -19
  61. package/console/dist/ui/components/ui/dialog.js +0 -22
  62. package/console/dist/ui/components/ui/input.d.ts +0 -3
  63. package/console/dist/ui/components/ui/input.js +0 -8
  64. package/console/dist/ui/components/ui/markdown.d.ts +0 -24
  65. package/console/dist/ui/components/ui/markdown.js +0 -119
  66. package/console/dist/ui/components/ui/progress-bar.d.ts +0 -20
  67. package/console/dist/ui/components/ui/progress-bar.js +0 -38
  68. package/console/dist/ui/components/ui/select.d.ts +0 -13
  69. package/console/dist/ui/components/ui/select.js +0 -26
  70. package/console/dist/ui/components/ui/separator.d.ts +0 -3
  71. package/console/dist/ui/components/ui/separator.js +0 -6
  72. package/console/dist/ui/components/ui/sheet.d.ts +0 -25
  73. package/console/dist/ui/components/ui/sheet.js +0 -37
  74. package/console/dist/ui/components/ui/shiny-text.d.ts +0 -28
  75. package/console/dist/ui/components/ui/shiny-text.js +0 -46
  76. package/console/dist/ui/components/ui/skeleton.d.ts +0 -3
  77. package/console/dist/ui/components/ui/skeleton.js +0 -6
  78. package/console/dist/ui/components/ui/sonner.d.ts +0 -3
  79. package/console/dist/ui/components/ui/sonner.js +0 -13
  80. package/console/dist/ui/components/ui/tooltip.d.ts +0 -7
  81. package/console/dist/ui/components/ui/tooltip.js +0 -10
  82. package/console/dist/ui/data/daily-thoughts.d.ts +0 -15
  83. package/console/dist/ui/data/daily-thoughts.js +0 -164
  84. package/console/dist/ui/hooks/useNotificationSound.d.ts +0 -12
  85. package/console/dist/ui/hooks/useNotificationSound.js +0 -74
  86. package/console/dist/ui/i18n/en.json +0 -2399
  87. package/console/dist/ui/i18n/index.d.ts +0 -2
  88. package/console/dist/ui/i18n/index.js +0 -32
  89. package/console/dist/ui/i18n/zh-CN.json +0 -2399
  90. package/console/dist/ui/main.d.ts +0 -1
  91. package/console/dist/ui/main.js +0 -9
  92. package/console/dist/ui/pages/ReportProblemValidators.d.ts +0 -144
  93. package/console/dist/ui/pages/ReportProblemValidators.js +0 -418
  94. package/console/dist/ui/pages/activation/ActivationPage.d.ts +0 -1
  95. package/console/dist/ui/pages/activation/ActivationPage.js +0 -512
  96. package/console/dist/ui/pages/activation/ActivationValidators.d.ts +0 -20
  97. package/console/dist/ui/pages/activation/ActivationValidators.js +0 -160
  98. package/console/dist/ui/pages/control-center/AgentCard.d.ts +0 -31
  99. package/console/dist/ui/pages/control-center/AgentCard.js +0 -212
  100. package/console/dist/ui/pages/control-center/AgentGroup.d.ts +0 -26
  101. package/console/dist/ui/pages/control-center/AgentGroup.js +0 -38
  102. package/console/dist/ui/pages/control-center/ControlCenterPage.d.ts +0 -1
  103. package/console/dist/ui/pages/control-center/ControlCenterPage.js +0 -509
  104. package/console/dist/ui/pages/control-center/DesignGatePanel.d.ts +0 -1
  105. package/console/dist/ui/pages/control-center/DesignGatePanel.js +0 -137
  106. package/console/dist/ui/pages/control-center/RuntimeProfileManager.d.ts +0 -31
  107. package/console/dist/ui/pages/control-center/RuntimeProfileManager.js +0 -199
  108. package/console/dist/ui/pages/control-center/WorkflowDiagram.d.ts +0 -17
  109. package/console/dist/ui/pages/control-center/WorkflowDiagram.js +0 -55
  110. package/console/dist/ui/pages/debt/DebtPage.d.ts +0 -2
  111. package/console/dist/ui/pages/debt/DebtPage.js +0 -222
  112. package/console/dist/ui/pages/design-system/DesignSystemPage.d.ts +0 -2
  113. package/console/dist/ui/pages/design-system/DesignSystemPage.js +0 -30
  114. package/console/dist/ui/pages/examiner/ExaminerPage.d.ts +0 -15
  115. package/console/dist/ui/pages/examiner/ExaminerPage.js +0 -158
  116. package/console/dist/ui/pages/failed-tasks/FailedTasksPage.d.ts +0 -1
  117. package/console/dist/ui/pages/failed-tasks/FailedTasksPage.js +0 -421
  118. package/console/dist/ui/pages/focus/ApprovalSubjectReading.d.ts +0 -24
  119. package/console/dist/ui/pages/focus/ApprovalSubjectReading.js +0 -133
  120. package/console/dist/ui/pages/focus/FocusPage.d.ts +0 -123
  121. package/console/dist/ui/pages/focus/FocusPage.js +0 -567
  122. package/console/dist/ui/pages/focus/OwnerDecisionCard.d.ts +0 -9
  123. package/console/dist/ui/pages/focus/OwnerDecisionCard.js +0 -111
  124. package/console/dist/ui/pages/focus/OwnerWorkbench.d.ts +0 -19
  125. package/console/dist/ui/pages/focus/OwnerWorkbench.js +0 -75
  126. package/console/dist/ui/pages/focus/RuleCandidateBindingPanel.d.ts +0 -34
  127. package/console/dist/ui/pages/focus/RuleCandidateBindingPanel.js +0 -298
  128. package/console/dist/ui/pages/focus/focus-validation.d.ts +0 -40
  129. package/console/dist/ui/pages/focus/focus-validation.js +0 -211
  130. package/console/dist/ui/pages/intent/IntentOnboarding.d.ts +0 -67
  131. package/console/dist/ui/pages/intent/IntentOnboarding.js +0 -289
  132. package/console/dist/ui/pages/intent/IntentPage.d.ts +0 -1
  133. package/console/dist/ui/pages/intent/IntentPage.js +0 -252
  134. package/console/dist/ui/pages/pain/PainEvidenceValidators.d.ts +0 -59
  135. package/console/dist/ui/pages/pain/PainEvidenceValidators.js +0 -125
  136. package/console/dist/ui/pages/pain/PainPage.d.ts +0 -1
  137. package/console/dist/ui/pages/pain/PainPage.js +0 -420
  138. package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +0 -175
  139. package/console/dist/ui/pages/pain/pain-card-helpers.js +0 -181
  140. package/console/dist/ui/pages/principles/CorePrinciplesPage.d.ts +0 -10
  141. package/console/dist/ui/pages/principles/CorePrinciplesPage.js +0 -59
  142. package/console/dist/ui/pages/principles/PrincipleDetailPage.d.ts +0 -60
  143. package/console/dist/ui/pages/principles/PrincipleDetailPage.js +0 -602
  144. package/console/dist/ui/pages/principles/PrinciplesPage.d.ts +0 -1
  145. package/console/dist/ui/pages/principles/PrinciplesPage.js +0 -327
  146. package/console/dist/ui/pages/principles/PrinciplesViewNav.d.ts +0 -8
  147. package/console/dist/ui/pages/principles/PrinciplesViewNav.js +0 -15
  148. package/console/dist/ui/pages/report-problem/ReportProblemPage.d.ts +0 -1
  149. package/console/dist/ui/pages/report-problem/ReportProblemPage.js +0 -467
  150. package/console/dist/ui/pages/settings/SettingsPage.d.ts +0 -4
  151. package/console/dist/ui/pages/settings/SettingsPage.js +0 -457
  152. package/console/dist/ui/pages/settings/UpdatePage.d.ts +0 -1
  153. package/console/dist/ui/pages/settings/UpdatePage.js +0 -215
  154. package/console/dist/ui/pages/welcome/WelcomePage.d.ts +0 -5
  155. package/console/dist/ui/pages/welcome/WelcomePage.js +0 -187
  156. package/console/dist/ui/utils/agent-metadata.d.ts +0 -71
  157. package/console/dist/ui/utils/agent-metadata.js +0 -284
  158. package/console/dist/ui/utils/approval-review.d.ts +0 -30
  159. package/console/dist/ui/utils/approval-review.js +0 -50
  160. package/console/dist/ui/utils/approval-warning-localization.d.ts +0 -34
  161. package/console/dist/ui/utils/approval-warning-localization.js +0 -148
  162. package/console/dist/ui/utils/attention-presentation.d.ts +0 -35
  163. package/console/dist/ui/utils/attention-presentation.js +0 -46
  164. package/console/dist/ui/utils/blocker-localization.d.ts +0 -23
  165. package/console/dist/ui/utils/blocker-localization.js +0 -36
  166. package/console/dist/ui/utils/control-center-helpers.d.ts +0 -79
  167. package/console/dist/ui/utils/control-center-helpers.js +0 -189
  168. package/console/dist/ui/utils/enum-labels.d.ts +0 -50
  169. package/console/dist/ui/utils/enum-labels.js +0 -171
  170. package/console/dist/ui/utils/format-date.d.ts +0 -11
  171. package/console/dist/ui/utils/format-date.js +0 -17
  172. package/console/dist/ui/utils/onboarding-state.d.ts +0 -25
  173. package/console/dist/ui/utils/onboarding-state.js +0 -77
  174. package/console/dist/ui/utils/reading-layout.d.ts +0 -20
  175. package/console/dist/ui/utils/reading-layout.js +0 -46
  176. package/console/dist/ui/utils/rule-binding-validators.d.ts +0 -13
  177. package/console/dist/ui/utils/rule-binding-validators.js +0 -188
  178. package/console/dist/ui/utils/runtime-mode.d.ts +0 -11
  179. package/console/dist/ui/utils/runtime-mode.js +0 -11
  180. package/console/dist/ui/utils/token-storage.d.ts +0 -22
  181. package/console/dist/ui/utils/token-storage.js +0 -47
  182. package/console/dist/ui/utils/validators.d.ts +0 -1178
  183. package/console/dist/ui/utils/validators.js +0 -3297
  184. package/release-manager/dist/bootstrap-entry.d.ts +0 -2
  185. package/release-manager/dist/bootstrap-entry.d.ts.map +0 -1
  186. package/release-manager/dist/bootstrap-entry.js.map +0 -1
  187. package/release-manager/dist/i18n.d.ts +0 -6
  188. package/release-manager/dist/i18n.d.ts.map +0 -1
  189. package/release-manager/dist/i18n.js.map +0 -1
  190. package/release-manager/dist/index.d.ts +0 -7
  191. package/release-manager/dist/index.d.ts.map +0 -1
  192. package/release-manager/dist/index.js +0 -656
  193. package/release-manager/dist/index.js.map +0 -1
  194. package/release-manager/dist/installer.d.ts +0 -629
  195. package/release-manager/dist/installer.d.ts.map +0 -1
  196. package/release-manager/dist/installer.js.map +0 -1
  197. package/release-manager/dist/installers/codex-host-installer.d.ts +0 -39
  198. package/release-manager/dist/installers/codex-host-installer.d.ts.map +0 -1
  199. package/release-manager/dist/installers/codex-host-installer.js.map +0 -1
  200. package/release-manager/dist/installers/index.d.ts +0 -51
  201. package/release-manager/dist/installers/index.d.ts.map +0 -1
  202. package/release-manager/dist/installers/index.js.map +0 -1
  203. package/release-manager/dist/installers/openclaw-host-installer.d.ts +0 -14
  204. package/release-manager/dist/installers/openclaw-host-installer.d.ts.map +0 -1
  205. package/release-manager/dist/installers/openclaw-host-installer.js.map +0 -1
  206. package/release-manager/dist/installers/workbuddy-host-installer.d.ts +0 -335
  207. package/release-manager/dist/installers/workbuddy-host-installer.d.ts.map +0 -1
  208. package/release-manager/dist/installers/workbuddy-host-installer.js.map +0 -1
  209. package/release-manager/dist/mvp-config.d.ts +0 -233
  210. package/release-manager/dist/mvp-config.d.ts.map +0 -1
  211. package/release-manager/dist/mvp-config.js.map +0 -1
  212. package/release-manager/dist/prompts.d.ts +0 -43
  213. package/release-manager/dist/prompts.d.ts.map +0 -1
  214. package/release-manager/dist/prompts.js +0 -268
  215. package/release-manager/dist/prompts.js.map +0 -1
  216. package/release-manager/dist/skill-language.d.ts +0 -32
  217. package/release-manager/dist/skill-language.d.ts.map +0 -1
  218. package/release-manager/dist/skill-language.js.map +0 -1
  219. package/release-manager/dist/uninstaller.d.ts +0 -68
  220. package/release-manager/dist/uninstaller.d.ts.map +0 -1
  221. package/release-manager/dist/uninstaller.js +0 -746
  222. package/release-manager/dist/uninstaller.js.map +0 -1
  223. package/release-manager/dist/update/apply-payload.d.ts +0 -143
  224. package/release-manager/dist/update/apply-payload.d.ts.map +0 -1
  225. package/release-manager/dist/update/apply-payload.js.map +0 -1
  226. package/release-manager/dist/update/atomic-file.d.ts +0 -35
  227. package/release-manager/dist/update/atomic-file.d.ts.map +0 -1
  228. package/release-manager/dist/update/atomic-file.js.map +0 -1
  229. package/release-manager/dist/update/bootstrap-executor.d.ts +0 -21
  230. package/release-manager/dist/update/bootstrap-executor.d.ts.map +0 -1
  231. package/release-manager/dist/update/bootstrap-executor.js.map +0 -1
  232. package/release-manager/dist/update/bootstrap-protocol.d.ts +0 -56
  233. package/release-manager/dist/update/bootstrap-protocol.d.ts.map +0 -1
  234. package/release-manager/dist/update/bootstrap-protocol.js.map +0 -1
  235. package/release-manager/dist/update/channel-metadata.d.ts +0 -28
  236. package/release-manager/dist/update/channel-metadata.d.ts.map +0 -1
  237. package/release-manager/dist/update/channel-metadata.js.map +0 -1
  238. package/release-manager/dist/update/channel-promotion.d.ts +0 -39
  239. package/release-manager/dist/update/channel-promotion.d.ts.map +0 -1
  240. package/release-manager/dist/update/channel-promotion.js +0 -55
  241. package/release-manager/dist/update/channel-promotion.js.map +0 -1
  242. package/release-manager/dist/update/console-surface.d.ts +0 -19
  243. package/release-manager/dist/update/console-surface.d.ts.map +0 -1
  244. package/release-manager/dist/update/console-surface.js.map +0 -1
  245. package/release-manager/dist/update/data-compatibility.d.ts +0 -35
  246. package/release-manager/dist/update/data-compatibility.d.ts.map +0 -1
  247. package/release-manager/dist/update/data-compatibility.js +0 -45
  248. package/release-manager/dist/update/data-compatibility.js.map +0 -1
  249. package/release-manager/dist/update/install-layout.d.ts +0 -105
  250. package/release-manager/dist/update/install-layout.d.ts.map +0 -1
  251. package/release-manager/dist/update/install-layout.js.map +0 -1
  252. package/release-manager/dist/update/product-identity.d.ts +0 -70
  253. package/release-manager/dist/update/product-identity.d.ts.map +0 -1
  254. package/release-manager/dist/update/product-identity.js.map +0 -1
  255. package/release-manager/dist/update/release-asset-manifest.d.ts +0 -31
  256. package/release-manager/dist/update/release-asset-manifest.d.ts.map +0 -1
  257. package/release-manager/dist/update/release-asset-manifest.js.map +0 -1
  258. package/release-manager/dist/update/release-identity.d.ts +0 -33
  259. package/release-manager/dist/update/release-identity.d.ts.map +0 -1
  260. package/release-manager/dist/update/release-identity.js.map +0 -1
  261. package/release-manager/dist/update/release-manager-authority.d.ts +0 -39
  262. package/release-manager/dist/update/release-manager-authority.d.ts.map +0 -1
  263. package/release-manager/dist/update/release-manager-authority.js.map +0 -1
  264. package/release-manager/dist/update/release-manager.d.ts +0 -156
  265. package/release-manager/dist/update/release-manager.d.ts.map +0 -1
  266. package/release-manager/dist/update/release-manager.js.map +0 -1
  267. package/release-manager/dist/update/release-metadata-publisher.d.ts +0 -199
  268. package/release-manager/dist/update/release-metadata-publisher.d.ts.map +0 -1
  269. package/release-manager/dist/update/release-metadata-publisher.js +0 -478
  270. package/release-manager/dist/update/release-metadata-publisher.js.map +0 -1
  271. package/release-manager/dist/update/release-metadata-source.d.ts +0 -85
  272. package/release-manager/dist/update/release-metadata-source.d.ts.map +0 -1
  273. package/release-manager/dist/update/release-metadata-source.js.map +0 -1
  274. package/release-manager/dist/update/release-metadata.d.ts +0 -60
  275. package/release-manager/dist/update/release-metadata.d.ts.map +0 -1
  276. package/release-manager/dist/update/release-metadata.js.map +0 -1
  277. package/release-manager/dist/update/release-policy.d.ts +0 -51
  278. package/release-manager/dist/update/release-policy.d.ts.map +0 -1
  279. package/release-manager/dist/update/release-policy.js.map +0 -1
  280. package/release-manager/dist/update/rollback-policy.d.ts +0 -56
  281. package/release-manager/dist/update/rollback-policy.d.ts.map +0 -1
  282. package/release-manager/dist/update/rollback-policy.js +0 -61
  283. package/release-manager/dist/update/rollback-policy.js.map +0 -1
  284. package/release-manager/dist/update/transaction-journal.d.ts +0 -212
  285. package/release-manager/dist/update/transaction-journal.d.ts.map +0 -1
  286. package/release-manager/dist/update/transaction-journal.js.map +0 -1
  287. package/release-manager/dist/update/trust-metadata.d.ts +0 -55
  288. package/release-manager/dist/update/trust-metadata.d.ts.map +0 -1
  289. package/release-manager/dist/update/trust-metadata.js.map +0 -1
  290. package/release-manager/dist/update/trust-root-provisioning.d.ts +0 -99
  291. package/release-manager/dist/update/trust-root-provisioning.d.ts.map +0 -1
  292. package/release-manager/dist/update/trust-root-provisioning.js.map +0 -1
  293. package/release-manager/dist/update/update-history.d.ts +0 -46
  294. package/release-manager/dist/update/update-history.d.ts.map +0 -1
  295. package/release-manager/dist/update/update-history.js +0 -123
  296. package/release-manager/dist/update/update-history.js.map +0 -1
  297. package/release-manager/dist/utils/config-file-io.d.ts +0 -34
  298. package/release-manager/dist/utils/config-file-io.d.ts.map +0 -1
  299. package/release-manager/dist/utils/config-file-io.js.map +0 -1
  300. package/release-manager/dist/utils/env.d.ts +0 -94
  301. package/release-manager/dist/utils/env.d.ts.map +0 -1
  302. package/release-manager/dist/utils/env.js.map +0 -1
  303. package/release-manager/dist/utils/logger.d.ts +0 -15
  304. package/release-manager/dist/utils/logger.d.ts.map +0 -1
  305. package/release-manager/dist/utils/logger.js.map +0 -1
  306. package/release-manager/dist/utils/workspace-divergence.d.ts +0 -36
  307. package/release-manager/dist/utils/workspace-divergence.d.ts.map +0 -1
  308. package/release-manager/dist/utils/workspace-divergence.js.map +0 -1
@@ -1,77 +0,0 @@
1
- /**
2
- * Onboarding state persistence with workspaceId dimension.
3
- * Prevents cross-workspace state leakage (spec §6.3 改动 1).
4
- * localStorage is the single source of truth (no cross-device sync — YAGNI).
5
- */
6
- const DEFAULT_STATE = {
7
- completed: false,
8
- step: 0,
9
- status: 'pending',
10
- };
11
- export const ONBOARDING_STORAGE_KEY_PREFIX = 'pd_onboarding';
12
- function storageKey(workspaceId) {
13
- return `${ONBOARDING_STORAGE_KEY_PREFIX}_${workspaceId}`;
14
- }
15
- /**
16
- * Type guard for OnboardingState (rc-2: no `as` bypass).
17
- */
18
- function isOnboardingState(value) {
19
- if (typeof value !== 'object' || value === null)
20
- return false;
21
- const completed = Object.hasOwn(value, 'completed') ? Reflect.get(value, 'completed') : undefined;
22
- const step = Object.hasOwn(value, 'step') ? Reflect.get(value, 'step') : undefined;
23
- const status = Object.hasOwn(value, 'status') ? Reflect.get(value, 'status') : undefined;
24
- const completedAt = Object.hasOwn(value, 'completedAt') ? Reflect.get(value, 'completedAt') : undefined;
25
- return (typeof completed === 'boolean' &&
26
- typeof step === 'number' &&
27
- (status === 'pending' || status === 'demo' || status === 'skipped' || status === 'evidence_found') &&
28
- (!Object.hasOwn(value, 'completedAt') || typeof completedAt === 'string'));
29
- }
30
- /**
31
- * Get onboarding state for a specific workspace.
32
- * Treats localStorage data as unknown (rc-1) — validates shape before use.
33
- */
34
- export function getOnboardingState(workspaceId) {
35
- try {
36
- const raw = localStorage.getItem(storageKey(workspaceId));
37
- if (!raw)
38
- return DEFAULT_STATE;
39
- // rc-1: treat parsed JSON as unknown, validate shape
40
- const parsed = JSON.parse(raw);
41
- if (!isOnboardingState(parsed))
42
- return DEFAULT_STATE;
43
- return parsed;
44
- }
45
- catch (err) {
46
- // rc-9: surface the failure — don't silently swallow.
47
- console.error('[onboarding-state] Failed to read onboarding state:', err);
48
- return DEFAULT_STATE;
49
- }
50
- }
51
- /**
52
- * Set onboarding state for a specific workspace.
53
- */
54
- export function setOnboardingState(workspaceId, state) {
55
- try {
56
- localStorage.setItem(storageKey(workspaceId), JSON.stringify(state));
57
- return true;
58
- }
59
- catch (err) {
60
- // rc-9: surface the failure — don't silently swallow.
61
- console.error('[onboarding-state] Failed to save onboarding state:', err);
62
- return false;
63
- }
64
- }
65
- /**
66
- * Reset onboarding state for a specific workspace (Settings page "reset" button).
67
- */
68
- export function resetOnboardingState(workspaceId) {
69
- try {
70
- localStorage.removeItem(storageKey(workspaceId));
71
- return true;
72
- }
73
- catch (err) {
74
- console.error('[onboarding-state] Failed to reset onboarding state:', err);
75
- return false;
76
- }
77
- }
@@ -1,20 +0,0 @@
1
- /**
2
- * SPEC-PD-CONSOLE-READABILITY-002 切片 1 — 阅读分层(R2/R3/R7)。
3
- *
4
- * 长规则正文曾被整段当作加粗标题渲染(Focus 卡标题、原则详情 h1)。这里把
5
- * 「候选描述/原则正文」拆成短标题预览 + 逐字全文两层:
6
- * - 短单行文本:只作标题,不产生正文(R7:同一卡片正文只出现一次);
7
- * - 长文本/多行文本:标题取首个非空行的截断预览(截断只作预览),正文承载
8
- * 完整原文(逐字保留换行/空行/编号/特殊字符,由容器 whitespace-pre-wrap
9
- * 渲染)。
10
- *
11
- * 这是纯展示拆分:不解析、不改写、不截断存储值——body 永远是原文。
12
- */
13
- export interface ReadingLayout {
14
- /** 短标题(预览)。空串表示没有可用文本,由调用方落到本地化占位。 */
15
- title: string;
16
- /** 逐字全文。null 表示原文即短标题、已由 title 完整承载(不重复渲染)。 */
17
- body: string | null;
18
- }
19
- export declare function truncateByCodePoints(text: string, max: number): string;
20
- export declare function splitReadingTitleBody(text: string | null | undefined): ReadingLayout;
@@ -1,46 +0,0 @@
1
- /**
2
- * SPEC-PD-CONSOLE-READABILITY-002 切片 1 — 阅读分层(R2/R3/R7)。
3
- *
4
- * 长规则正文曾被整段当作加粗标题渲染(Focus 卡标题、原则详情 h1)。这里把
5
- * 「候选描述/原则正文」拆成短标题预览 + 逐字全文两层:
6
- * - 短单行文本:只作标题,不产生正文(R7:同一卡片正文只出现一次);
7
- * - 长文本/多行文本:标题取首个非空行的截断预览(截断只作预览),正文承载
8
- * 完整原文(逐字保留换行/空行/编号/特殊字符,由容器 whitespace-pre-wrap
9
- * 渲染)。
10
- *
11
- * 这是纯展示拆分:不解析、不改写、不截断存储值——body 永远是原文。
12
- */
13
- /** 单行短文本直接作标题的码点上限(约一条短句)。 */
14
- const SINGLE_LINE_TITLE_MAX = 48;
15
- /** 长文本标题预览的码点上限(预览不是全文替代品,保持一行可扫读)。 */
16
- const TITLE_PREVIEW_MAX = 24;
17
- function firstNonEmptyLine(text) {
18
- for (const line of text.split("\n")) {
19
- const trimmed = line.trim();
20
- if (trimmed.length > 0)
21
- return trimmed;
22
- }
23
- return "";
24
- }
25
- export function truncateByCodePoints(text, max) {
26
- const chars = Array.from(text);
27
- if (chars.length <= max)
28
- return text;
29
- return `${chars.slice(0, max).join("")}…`;
30
- }
31
- export function splitReadingTitleBody(text) {
32
- if (typeof text !== "string")
33
- return { title: "", body: null };
34
- const trimmed = text.trim();
35
- if (trimmed.length === 0)
36
- return { title: "", body: null };
37
- const hasNewline = trimmed.includes("\n");
38
- const codePoints = Array.from(trimmed).length;
39
- if (!hasNewline && codePoints <= SINGLE_LINE_TITLE_MAX) {
40
- return { title: trimmed, body: null };
41
- }
42
- return {
43
- title: truncateByCodePoints(firstNonEmptyLine(trimmed), TITLE_PREVIEW_MAX),
44
- body: text,
45
- };
46
- }
@@ -1,13 +0,0 @@
1
- import type { RuleBindingReviewView, RuleBindingQueueView } from '../../shared/rule-candidate-binding-contract.js';
2
- export declare function validateBindingQueue(value: unknown): RuleBindingQueueView | null;
3
- export declare function validateBindingReview(value: unknown): RuleBindingReviewView | null;
4
- export declare function validateBindingMutation(value: unknown): {
5
- status: string;
6
- revisionStatus?: string;
7
- nextAction?: string;
8
- } | null;
9
- export declare function validateBindingRevise(value: unknown): {
10
- status: string;
11
- reason?: string;
12
- nextAction?: string;
13
- } | null;
@@ -1,188 +0,0 @@
1
- function record(value) { return typeof value === 'object' && value !== null && !Array.isArray(value); }
2
- function integer(value) { return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0; }
3
- function stringOrNull(value) { return value === null || typeof value === 'string'; }
4
- function validatePainSource(value) {
5
- if (!record(value) || typeof value.painId !== 'string' || !stringOrNull(value.text)
6
- || typeof value.source !== 'string' || !stringOrNull(value.createdAt))
7
- return null;
8
- return { painId: value.painId, text: value.text, source: value.source, createdAt: value.createdAt };
9
- }
10
- const GENERATION_STAGES = ['not_built', 'in_progress', 'blocked', 'advanced', 'ambiguous'];
11
- function isGenerationStage(value) {
12
- return typeof value === 'string' && GENERATION_STAGES.includes(value);
13
- }
14
- /** null = legitimately absent (unlinked row); 'invalid' = malformed row. */
15
- function validateGeneration(value) {
16
- if (value === null)
17
- return null;
18
- if (!record(value) || !isGenerationStage(value.stage) || !stringOrNull(value.stageKind)
19
- || !stringOrNull(value.reasonCode) || !stringOrNull(value.detail))
20
- return 'invalid';
21
- // A blocked generation names the stage it stopped at; reasonCode may be
22
- // null for legacy tasks without humanReviewContext.
23
- return { stage: value.stage, stageKind: value.stageKind, reasonCode: value.reasonCode, detail: value.detail };
24
- }
25
- function validateResume(value) {
26
- if (value === null)
27
- return null;
28
- if (!record(value) || (value.status !== 'ready' && value.status !== 'refused')
29
- || !stringOrNull(value.reason) || !stringOrNull(value.scribeTaskId)
30
- || !(value.taskRevisionEpoch === null || integer(value.taskRevisionEpoch)))
31
- return 'invalid';
32
- return { status: value.status, reason: value.reason, scribeTaskId: value.scribeTaskId, taskRevisionEpoch: value.taskRevisionEpoch };
33
- }
34
- /** PRI-1048 R6 #4: source-correct-once eligibility preview (null = not applicable). */
35
- function validateSourceCorrection(value) {
36
- if (value === null)
37
- return null;
38
- if (!record(value) || (value.status !== 'ready' && value.status !== 'unavailable')
39
- || !stringOrNull(value.reason) || !stringOrNull(value.scribeTaskId)
40
- || !stringOrNull(value.artificerTaskId) || !stringOrNull(value.scribeArtifactDigest)
41
- || !(value.expectedBindingRevision === null || integer(value.expectedBindingRevision)))
42
- return 'invalid';
43
- // ready MUST carry the full CAS input set — a half-filled preview would render
44
- // a CTA that can never fire.
45
- if (value.status === 'ready' && (value.scribeTaskId === null || value.artificerTaskId === null
46
- || value.scribeArtifactDigest === null || value.expectedBindingRevision === null))
47
- return 'invalid';
48
- return {
49
- status: value.status, reason: value.reason, scribeTaskId: value.scribeTaskId,
50
- artificerTaskId: value.artificerTaskId, scribeArtifactDigest: value.scribeArtifactDigest,
51
- expectedBindingRevision: value.expectedBindingRevision,
52
- };
53
- }
54
- function validateBinding(value) {
55
- if (!record(value))
56
- return null;
57
- if (value.status === 'unlinked')
58
- return { status: 'unlinked' };
59
- if (value.status === 'binding_revoked')
60
- return { status: 'binding_revoked' };
61
- if (value.status === 'attention' && typeof value.reason === 'string')
62
- return { status: 'attention', reason: value.reason };
63
- if (value.status === 'bound' && record(value.principle) && typeof value.principle.principleId === 'string'
64
- && typeof value.principle.text === 'string' && typeof value.principle.status === 'string'
65
- && integer(value.principle.version) && integer(value.principle.revision) && typeof value.principle.decidedAt === 'string') {
66
- const principle = {
67
- principleId: value.principle.principleId, text: value.principle.text, status: value.principle.status,
68
- version: value.principle.version, revision: value.principle.revision, decidedAt: value.principle.decidedAt,
69
- };
70
- return { status: 'bound', principle };
71
- }
72
- return null;
73
- }
74
- export function validateBindingQueue(value) {
75
- if (!record(value) || !Array.isArray(value.items) || typeof value.truncated !== 'boolean'
76
- || !record(value.summary) || !integer(value.summary.painGroups) || !integer(value.summary.candidates)
77
- || !integer(value.summary.bound) || !integer(value.summary.unlinked) || !integer(value.summary.blocked))
78
- return null;
79
- const items = [];
80
- const seen = new Set();
81
- for (const item of value.items) {
82
- if (!record(item) || typeof item.candidateId !== 'string' || typeof item.text !== 'string'
83
- || typeof item.diagnosisStatus !== 'string')
84
- return null;
85
- // The queue contract is one entry per canonical candidate (PRI-1048);
86
- // a duplicated id means the response itself is malformed.
87
- if (seen.has(item.candidateId))
88
- return null;
89
- seen.add(item.candidateId);
90
- const pain = validatePainSource(item.pain);
91
- const binding = validateBinding(item.binding);
92
- // Nullable projection fields must still be PRESENT keys (rc-3): an absent
93
- // generation/resume is a malformed row, not an unlinked row.
94
- const generation = validateGeneration(item.generation);
95
- const resume = validateResume(item.resume);
96
- const sourceCorrection = validateSourceCorrection(item.sourceCorrection);
97
- if (!pain || !binding || generation === 'invalid' || resume === 'invalid' || sourceCorrection === 'invalid'
98
- || !Object.hasOwn(item, 'generation') || !Object.hasOwn(item, 'resume') || !Object.hasOwn(item, 'sourceCorrection'))
99
- return null;
100
- items.push({
101
- candidateId: item.candidateId, text: item.text, pain,
102
- diagnosisStatus: item.diagnosisStatus, binding,
103
- generation,
104
- resume,
105
- sourceCorrection,
106
- });
107
- }
108
- return {
109
- items,
110
- summary: {
111
- painGroups: value.summary.painGroups, candidates: value.summary.candidates,
112
- bound: value.summary.bound, unlinked: value.summary.unlinked, blocked: value.summary.blocked,
113
- },
114
- truncated: value.truncated,
115
- };
116
- }
117
- export function validateBindingReview(value) {
118
- if (!record(value) || typeof value.candidateId !== 'string' || typeof value.candidateText !== 'string'
119
- || typeof value.evidence !== 'string' || typeof value.candidateDigest !== 'string' || !integer(value.currentRevision)
120
- || typeof value.resumeNotice !== 'string' || !Array.isArray(value.eligibleTargets) || value.eligibleTargets.length > 20)
121
- return null;
122
- const sourcePain = validatePainSource(value.sourcePain);
123
- if (!sourcePain)
124
- return null;
125
- let currentBinding = null;
126
- if (value.currentBinding !== null) {
127
- const b = value.currentBinding;
128
- if (!record(b) || (b.action !== 'bind' && b.action !== 'revoke') || typeof b.principleId !== 'string' || typeof b.reason !== 'string' || !integer(b.revision))
129
- return null;
130
- currentBinding = { action: b.action, principleId: b.principleId, reason: b.reason, revision: b.revision };
131
- }
132
- let boundPrinciple = null;
133
- if (value.boundPrinciple !== null) {
134
- if (!record(value.boundPrinciple) || typeof value.boundPrinciple.principleId !== 'string'
135
- || typeof value.boundPrinciple.text !== 'string' || typeof value.boundPrinciple.status !== 'string'
136
- || !integer(value.boundPrinciple.version) || !integer(value.boundPrinciple.revision)
137
- || typeof value.boundPrinciple.decidedAt !== 'string')
138
- return null;
139
- boundPrinciple = {
140
- principleId: value.boundPrinciple.principleId, text: value.boundPrinciple.text,
141
- status: value.boundPrinciple.status, version: value.boundPrinciple.version,
142
- revision: value.boundPrinciple.revision, decidedAt: value.boundPrinciple.decidedAt,
143
- };
144
- }
145
- const eligibleTargets = [];
146
- for (const p of value.eligibleTargets) {
147
- if (!record(p) || typeof p.principleId !== 'string' || typeof p.text !== 'string' || typeof p.status !== 'string' || !integer(p.version) || typeof p.digest !== 'string')
148
- return null;
149
- eligibleTargets.push({ principleId: p.principleId, text: p.text, status: p.status, version: p.version, digest: p.digest });
150
- }
151
- if (!Object.hasOwn(value, 'generation') || !Object.hasOwn(value, 'resume') || !Object.hasOwn(value, 'sourceCorrection'))
152
- return null;
153
- const generation = validateGeneration(value.generation);
154
- const resume = validateResume(value.resume);
155
- const sourceCorrection = validateSourceCorrection(value.sourceCorrection);
156
- if (generation === 'invalid' || resume === 'invalid' || sourceCorrection === 'invalid')
157
- return null;
158
- return {
159
- candidateId: value.candidateId, candidateText: value.candidateText, sourcePain,
160
- evidence: value.evidence, candidateDigest: value.candidateDigest, currentRevision: value.currentRevision,
161
- currentBinding, boundPrinciple, eligibleTargets,
162
- generation,
163
- resume,
164
- sourceCorrection,
165
- resumeNotice: value.resumeNotice,
166
- };
167
- }
168
- export function validateBindingMutation(value) {
169
- if (!record(value) || !['bound', 'already_bound', 'revoked', 'already_revoked'].includes(String(value.status)) || typeof value.status !== 'string')
170
- return null;
171
- if (value.runtimeDeactivated !== false || value.inFlightOperationsMayComplete !== true)
172
- return null;
173
- if (value.nextAction !== undefined && typeof value.nextAction !== 'string')
174
- return null;
175
- if (value.revision !== undefined && (!record(value.revision) || typeof value.revision.status !== 'string'))
176
- return null;
177
- return { status: value.status, ...(record(value.revision) && typeof value.revision.status === 'string' ? { revisionStatus: value.revision.status } : {}),
178
- ...(typeof value.nextAction === 'string' ? { nextAction: value.nextAction } : {}) };
179
- }
180
- export function validateBindingRevise(value) {
181
- if (!record(value) || typeof value.status !== 'string' || value.status.length === 0)
182
- return null;
183
- if (value.reason !== undefined && typeof value.reason !== 'string')
184
- return null;
185
- if (value.nextAction !== undefined && typeof value.nextAction !== 'string')
186
- return null;
187
- return { status: value.status, ...(typeof value.reason === 'string' ? { reason: value.reason } : {}), ...(typeof value.nextAction === 'string' ? { nextAction: value.nextAction } : {}) };
188
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * Build-time runtime mode.
3
- *
4
- * Vite replaces `import.meta.env.DEV` with a boolean literal at build time, so
5
- * a production bundle resolves this to `false` and dead-code elimination can
6
- * drop the DEV-only surfaces from the shipped UI. This is a trust boundary in
7
- * the CLIENT only — the server independently refuses the Examiner API outside
8
- * a dev runtime (see `resolveLabRoot` / the offline-only gates in the examiner
9
- * route).
10
- */
11
- export declare const IS_DEV: boolean;
@@ -1,11 +0,0 @@
1
- /**
2
- * Build-time runtime mode.
3
- *
4
- * Vite replaces `import.meta.env.DEV` with a boolean literal at build time, so
5
- * a production bundle resolves this to `false` and dead-code elimination can
6
- * drop the DEV-only surfaces from the shipped UI. This is a trust boundary in
7
- * the CLIENT only — the server independently refuses the Examiner API outside
8
- * a dev runtime (see `resolveLabRoot` / the offline-only gates in the examiner
9
- * route).
10
- */
11
- export const IS_DEV = import.meta.env.DEV;
@@ -1,22 +0,0 @@
1
- /**
2
- * Browser-side persistence for the Console login token (PRI-793).
3
- *
4
- * The token lives in localStorage so the Owner is not re-prompted on every
5
- * browser start. sessionStorage is only a migration source: a token left
6
- * there by older builds is promoted to localStorage once and then removed —
7
- * localStorage is the single source of truth afterwards (P4).
8
- *
9
- * Clearing (logout / Settings "清除凭证") removes both keys so a stale copy
10
- * can never resurrect the session.
11
- *
12
- * Storages are resolved from globalThis (browsers expose localStorage /
13
- * sessionStorage there) and may be absent — non-DOM test environments run
14
- * the same code path with null storages, where persistence degrades to
15
- * "no stored token" instead of crashing. Explicit arguments override the
16
- * builtins for tests.
17
- */
18
- type TokenStorage = Storage | null | undefined;
19
- export declare function loadStoredToken(storage?: TokenStorage, legacy?: TokenStorage): string | null;
20
- export declare function storeToken(token: string, storage?: TokenStorage, legacy?: TokenStorage): void;
21
- export declare function clearStoredToken(storage?: TokenStorage, legacy?: TokenStorage): void;
22
- export {};
@@ -1,47 +0,0 @@
1
- /**
2
- * Browser-side persistence for the Console login token (PRI-793).
3
- *
4
- * The token lives in localStorage so the Owner is not re-prompted on every
5
- * browser start. sessionStorage is only a migration source: a token left
6
- * there by older builds is promoted to localStorage once and then removed —
7
- * localStorage is the single source of truth afterwards (P4).
8
- *
9
- * Clearing (logout / Settings "清除凭证") removes both keys so a stale copy
10
- * can never resurrect the session.
11
- *
12
- * Storages are resolved from globalThis (browsers expose localStorage /
13
- * sessionStorage there) and may be absent — non-DOM test environments run
14
- * the same code path with null storages, where persistence degrades to
15
- * "no stored token" instead of crashing. Explicit arguments override the
16
- * builtins for tests.
17
- */
18
- const TOKEN_KEY = "pd_token";
19
- function builtin(kind) {
20
- const g = globalThis;
21
- return (kind === "local" ? g.localStorage : g.sessionStorage) ?? null;
22
- }
23
- export function loadStoredToken(storage, legacy) {
24
- const main = storage ?? builtin("local");
25
- const old = legacy ?? builtin("session");
26
- const current = main?.getItem(TOKEN_KEY) ?? null;
27
- if (current !== null)
28
- return current;
29
- const legacyToken = old?.getItem(TOKEN_KEY) ?? null;
30
- if (legacyToken === null)
31
- return null;
32
- main?.setItem(TOKEN_KEY, legacyToken);
33
- old?.removeItem(TOKEN_KEY);
34
- return legacyToken;
35
- }
36
- export function storeToken(token, storage, legacy) {
37
- const main = storage ?? builtin("local");
38
- const old = legacy ?? builtin("session");
39
- main?.setItem(TOKEN_KEY, token);
40
- old?.removeItem(TOKEN_KEY);
41
- }
42
- export function clearStoredToken(storage, legacy) {
43
- const main = storage ?? builtin("local");
44
- const old = legacy ?? builtin("session");
45
- main?.removeItem(TOKEN_KEY);
46
- old?.removeItem(TOKEN_KEY);
47
- }