create-principles-disciple 1.146.3 → 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 (311) hide show
  1. package/_release/product-identity.json +1 -1
  2. package/console/dist/web/assets/app.js +26 -26
  3. package/console/package.json +1 -1
  4. package/package.json +3 -3
  5. package/pd-cli/package.json +1 -1
  6. package/release-manager/package.json +3 -3
  7. package/console/dist/ui/App.d.ts +0 -1
  8. package/console/dist/ui/App.js +0 -172
  9. package/console/dist/ui/api.d.ts +0 -611
  10. package/console/dist/ui/api.js +0 -1094
  11. package/console/dist/ui/components/auth/login-form.d.ts +0 -4
  12. package/console/dist/ui/components/auth/login-form.js +0 -142
  13. package/console/dist/ui/components/auth/splash-screen.d.ts +0 -9
  14. package/console/dist/ui/components/auth/splash-screen.js +0 -22
  15. package/console/dist/ui/components/error-boundary.d.ts +0 -15
  16. package/console/dist/ui/components/error-boundary.js +0 -30
  17. package/console/dist/ui/components/focus/daily-thought-card.d.ts +0 -1
  18. package/console/dist/ui/components/focus/daily-thought-card.js +0 -41
  19. package/console/dist/ui/components/language-switcher.d.ts +0 -2
  20. package/console/dist/ui/components/language-switcher.js +0 -17
  21. package/console/dist/ui/components/layout/app-sidebar.d.ts +0 -27
  22. package/console/dist/ui/components/layout/app-sidebar.js +0 -128
  23. package/console/dist/ui/components/layout/page-loading.d.ts +0 -13
  24. package/console/dist/ui/components/layout/page-loading.js +0 -14
  25. package/console/dist/ui/components/layout/page-shell.d.ts +0 -12
  26. package/console/dist/ui/components/layout/page-shell.js +0 -11
  27. package/console/dist/ui/components/layout/section-title.d.ts +0 -10
  28. package/console/dist/ui/components/layout/section-title.js +0 -9
  29. package/console/dist/ui/components/notifications/NotificationProvider.d.ts +0 -14
  30. package/console/dist/ui/components/notifications/NotificationProvider.js +0 -136
  31. package/console/dist/ui/components/notifications/favicon-badge.d.ts +0 -3
  32. package/console/dist/ui/components/notifications/favicon-badge.js +0 -68
  33. package/console/dist/ui/components/notifications/notification-reducer.d.ts +0 -9
  34. package/console/dist/ui/components/notifications/notification-reducer.js +0 -9
  35. package/console/dist/ui/components/notifications/sound-storage.d.ts +0 -3
  36. package/console/dist/ui/components/notifications/sound-storage.js +0 -37
  37. package/console/dist/ui/components/notifications/useNotifications.d.ts +0 -1
  38. package/console/dist/ui/components/notifications/useNotifications.js +0 -9
  39. package/console/dist/ui/components/onboarding/CircuitDiagram.d.ts +0 -8
  40. package/console/dist/ui/components/onboarding/CircuitDiagram.js +0 -18
  41. package/console/dist/ui/components/onboarding/DemoResultView.d.ts +0 -22
  42. package/console/dist/ui/components/onboarding/DemoResultView.js +0 -33
  43. package/console/dist/ui/components/onboarding/SlashCommandsCard.d.ts +0 -16
  44. package/console/dist/ui/components/onboarding/SlashCommandsCard.js +0 -20
  45. package/console/dist/ui/components/onboarding/slashCommands.d.ts +0 -20
  46. package/console/dist/ui/components/onboarding/slashCommands.js +0 -22
  47. package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.d.ts +0 -6
  48. package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.js +0 -66
  49. package/console/dist/ui/components/theme-provider.d.ts +0 -14
  50. package/console/dist/ui/components/theme-provider.js +0 -40
  51. package/console/dist/ui/components/theme-toggle.d.ts +0 -2
  52. package/console/dist/ui/components/theme-toggle.js +0 -11
  53. package/console/dist/ui/components/ui/alert-dialog.d.ts +0 -20
  54. package/console/dist/ui/components/ui/alert-dialog.js +0 -26
  55. package/console/dist/ui/components/ui/badge.d.ts +0 -9
  56. package/console/dist/ui/components/ui/badge.js +0 -22
  57. package/console/dist/ui/components/ui/button.d.ts +0 -11
  58. package/console/dist/ui/components/ui/button.js +0 -34
  59. package/console/dist/ui/components/ui/card.d.ts +0 -8
  60. package/console/dist/ui/components/ui/card.js +0 -16
  61. package/console/dist/ui/components/ui/charts.d.ts +0 -51
  62. package/console/dist/ui/components/ui/charts.js +0 -72
  63. package/console/dist/ui/components/ui/dialog.d.ts +0 -19
  64. package/console/dist/ui/components/ui/dialog.js +0 -22
  65. package/console/dist/ui/components/ui/input.d.ts +0 -3
  66. package/console/dist/ui/components/ui/input.js +0 -8
  67. package/console/dist/ui/components/ui/markdown.d.ts +0 -24
  68. package/console/dist/ui/components/ui/markdown.js +0 -119
  69. package/console/dist/ui/components/ui/progress-bar.d.ts +0 -20
  70. package/console/dist/ui/components/ui/progress-bar.js +0 -38
  71. package/console/dist/ui/components/ui/select.d.ts +0 -13
  72. package/console/dist/ui/components/ui/select.js +0 -26
  73. package/console/dist/ui/components/ui/separator.d.ts +0 -3
  74. package/console/dist/ui/components/ui/separator.js +0 -6
  75. package/console/dist/ui/components/ui/sheet.d.ts +0 -25
  76. package/console/dist/ui/components/ui/sheet.js +0 -37
  77. package/console/dist/ui/components/ui/shiny-text.d.ts +0 -28
  78. package/console/dist/ui/components/ui/shiny-text.js +0 -46
  79. package/console/dist/ui/components/ui/skeleton.d.ts +0 -3
  80. package/console/dist/ui/components/ui/skeleton.js +0 -6
  81. package/console/dist/ui/components/ui/sonner.d.ts +0 -3
  82. package/console/dist/ui/components/ui/sonner.js +0 -13
  83. package/console/dist/ui/components/ui/tooltip.d.ts +0 -7
  84. package/console/dist/ui/components/ui/tooltip.js +0 -10
  85. package/console/dist/ui/data/daily-thoughts.d.ts +0 -15
  86. package/console/dist/ui/data/daily-thoughts.js +0 -164
  87. package/console/dist/ui/hooks/useNotificationSound.d.ts +0 -12
  88. package/console/dist/ui/hooks/useNotificationSound.js +0 -74
  89. package/console/dist/ui/i18n/en.json +0 -2399
  90. package/console/dist/ui/i18n/index.d.ts +0 -2
  91. package/console/dist/ui/i18n/index.js +0 -32
  92. package/console/dist/ui/i18n/zh-CN.json +0 -2399
  93. package/console/dist/ui/main.d.ts +0 -1
  94. package/console/dist/ui/main.js +0 -9
  95. package/console/dist/ui/pages/ReportProblemValidators.d.ts +0 -144
  96. package/console/dist/ui/pages/ReportProblemValidators.js +0 -418
  97. package/console/dist/ui/pages/activation/ActivationPage.d.ts +0 -1
  98. package/console/dist/ui/pages/activation/ActivationPage.js +0 -512
  99. package/console/dist/ui/pages/activation/ActivationValidators.d.ts +0 -20
  100. package/console/dist/ui/pages/activation/ActivationValidators.js +0 -160
  101. package/console/dist/ui/pages/control-center/AgentCard.d.ts +0 -31
  102. package/console/dist/ui/pages/control-center/AgentCard.js +0 -212
  103. package/console/dist/ui/pages/control-center/AgentGroup.d.ts +0 -26
  104. package/console/dist/ui/pages/control-center/AgentGroup.js +0 -38
  105. package/console/dist/ui/pages/control-center/ControlCenterPage.d.ts +0 -1
  106. package/console/dist/ui/pages/control-center/ControlCenterPage.js +0 -509
  107. package/console/dist/ui/pages/control-center/DesignGatePanel.d.ts +0 -1
  108. package/console/dist/ui/pages/control-center/DesignGatePanel.js +0 -137
  109. package/console/dist/ui/pages/control-center/RuntimeProfileManager.d.ts +0 -31
  110. package/console/dist/ui/pages/control-center/RuntimeProfileManager.js +0 -199
  111. package/console/dist/ui/pages/control-center/WorkflowDiagram.d.ts +0 -17
  112. package/console/dist/ui/pages/control-center/WorkflowDiagram.js +0 -55
  113. package/console/dist/ui/pages/debt/DebtPage.d.ts +0 -2
  114. package/console/dist/ui/pages/debt/DebtPage.js +0 -222
  115. package/console/dist/ui/pages/design-system/DesignSystemPage.d.ts +0 -2
  116. package/console/dist/ui/pages/design-system/DesignSystemPage.js +0 -30
  117. package/console/dist/ui/pages/examiner/ExaminerPage.d.ts +0 -15
  118. package/console/dist/ui/pages/examiner/ExaminerPage.js +0 -158
  119. package/console/dist/ui/pages/failed-tasks/FailedTasksPage.d.ts +0 -1
  120. package/console/dist/ui/pages/failed-tasks/FailedTasksPage.js +0 -421
  121. package/console/dist/ui/pages/focus/ApprovalSubjectReading.d.ts +0 -24
  122. package/console/dist/ui/pages/focus/ApprovalSubjectReading.js +0 -133
  123. package/console/dist/ui/pages/focus/FocusPage.d.ts +0 -123
  124. package/console/dist/ui/pages/focus/FocusPage.js +0 -567
  125. package/console/dist/ui/pages/focus/OwnerDecisionCard.d.ts +0 -9
  126. package/console/dist/ui/pages/focus/OwnerDecisionCard.js +0 -111
  127. package/console/dist/ui/pages/focus/OwnerWorkbench.d.ts +0 -19
  128. package/console/dist/ui/pages/focus/OwnerWorkbench.js +0 -75
  129. package/console/dist/ui/pages/focus/RuleCandidateBindingPanel.d.ts +0 -34
  130. package/console/dist/ui/pages/focus/RuleCandidateBindingPanel.js +0 -298
  131. package/console/dist/ui/pages/focus/focus-validation.d.ts +0 -40
  132. package/console/dist/ui/pages/focus/focus-validation.js +0 -211
  133. package/console/dist/ui/pages/intent/IntentOnboarding.d.ts +0 -67
  134. package/console/dist/ui/pages/intent/IntentOnboarding.js +0 -289
  135. package/console/dist/ui/pages/intent/IntentPage.d.ts +0 -1
  136. package/console/dist/ui/pages/intent/IntentPage.js +0 -252
  137. package/console/dist/ui/pages/pain/PainEvidenceValidators.d.ts +0 -59
  138. package/console/dist/ui/pages/pain/PainEvidenceValidators.js +0 -125
  139. package/console/dist/ui/pages/pain/PainPage.d.ts +0 -1
  140. package/console/dist/ui/pages/pain/PainPage.js +0 -420
  141. package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +0 -175
  142. package/console/dist/ui/pages/pain/pain-card-helpers.js +0 -181
  143. package/console/dist/ui/pages/principles/CorePrinciplesPage.d.ts +0 -10
  144. package/console/dist/ui/pages/principles/CorePrinciplesPage.js +0 -59
  145. package/console/dist/ui/pages/principles/PrincipleDetailPage.d.ts +0 -60
  146. package/console/dist/ui/pages/principles/PrincipleDetailPage.js +0 -602
  147. package/console/dist/ui/pages/principles/PrinciplesPage.d.ts +0 -1
  148. package/console/dist/ui/pages/principles/PrinciplesPage.js +0 -327
  149. package/console/dist/ui/pages/principles/PrinciplesViewNav.d.ts +0 -8
  150. package/console/dist/ui/pages/principles/PrinciplesViewNav.js +0 -15
  151. package/console/dist/ui/pages/report-problem/ReportProblemPage.d.ts +0 -1
  152. package/console/dist/ui/pages/report-problem/ReportProblemPage.js +0 -467
  153. package/console/dist/ui/pages/settings/SettingsPage.d.ts +0 -4
  154. package/console/dist/ui/pages/settings/SettingsPage.js +0 -457
  155. package/console/dist/ui/pages/settings/UpdatePage.d.ts +0 -1
  156. package/console/dist/ui/pages/settings/UpdatePage.js +0 -215
  157. package/console/dist/ui/pages/welcome/WelcomePage.d.ts +0 -5
  158. package/console/dist/ui/pages/welcome/WelcomePage.js +0 -187
  159. package/console/dist/ui/utils/agent-metadata.d.ts +0 -71
  160. package/console/dist/ui/utils/agent-metadata.js +0 -284
  161. package/console/dist/ui/utils/approval-review.d.ts +0 -30
  162. package/console/dist/ui/utils/approval-review.js +0 -50
  163. package/console/dist/ui/utils/approval-warning-localization.d.ts +0 -34
  164. package/console/dist/ui/utils/approval-warning-localization.js +0 -148
  165. package/console/dist/ui/utils/attention-presentation.d.ts +0 -35
  166. package/console/dist/ui/utils/attention-presentation.js +0 -46
  167. package/console/dist/ui/utils/blocker-localization.d.ts +0 -23
  168. package/console/dist/ui/utils/blocker-localization.js +0 -36
  169. package/console/dist/ui/utils/control-center-helpers.d.ts +0 -79
  170. package/console/dist/ui/utils/control-center-helpers.js +0 -189
  171. package/console/dist/ui/utils/enum-labels.d.ts +0 -50
  172. package/console/dist/ui/utils/enum-labels.js +0 -171
  173. package/console/dist/ui/utils/format-date.d.ts +0 -11
  174. package/console/dist/ui/utils/format-date.js +0 -17
  175. package/console/dist/ui/utils/onboarding-state.d.ts +0 -25
  176. package/console/dist/ui/utils/onboarding-state.js +0 -77
  177. package/console/dist/ui/utils/reading-layout.d.ts +0 -20
  178. package/console/dist/ui/utils/reading-layout.js +0 -46
  179. package/console/dist/ui/utils/rule-binding-validators.d.ts +0 -13
  180. package/console/dist/ui/utils/rule-binding-validators.js +0 -188
  181. package/console/dist/ui/utils/runtime-mode.d.ts +0 -11
  182. package/console/dist/ui/utils/runtime-mode.js +0 -11
  183. package/console/dist/ui/utils/token-storage.d.ts +0 -22
  184. package/console/dist/ui/utils/token-storage.js +0 -47
  185. package/console/dist/ui/utils/validators.d.ts +0 -1178
  186. package/console/dist/ui/utils/validators.js +0 -3297
  187. package/release-manager/dist/bootstrap-entry.d.ts +0 -2
  188. package/release-manager/dist/bootstrap-entry.d.ts.map +0 -1
  189. package/release-manager/dist/bootstrap-entry.js.map +0 -1
  190. package/release-manager/dist/i18n.d.ts +0 -6
  191. package/release-manager/dist/i18n.d.ts.map +0 -1
  192. package/release-manager/dist/i18n.js.map +0 -1
  193. package/release-manager/dist/index.d.ts +0 -7
  194. package/release-manager/dist/index.d.ts.map +0 -1
  195. package/release-manager/dist/index.js +0 -656
  196. package/release-manager/dist/index.js.map +0 -1
  197. package/release-manager/dist/installer.d.ts +0 -629
  198. package/release-manager/dist/installer.d.ts.map +0 -1
  199. package/release-manager/dist/installer.js.map +0 -1
  200. package/release-manager/dist/installers/codex-host-installer.d.ts +0 -39
  201. package/release-manager/dist/installers/codex-host-installer.d.ts.map +0 -1
  202. package/release-manager/dist/installers/codex-host-installer.js.map +0 -1
  203. package/release-manager/dist/installers/index.d.ts +0 -51
  204. package/release-manager/dist/installers/index.d.ts.map +0 -1
  205. package/release-manager/dist/installers/index.js.map +0 -1
  206. package/release-manager/dist/installers/openclaw-host-installer.d.ts +0 -14
  207. package/release-manager/dist/installers/openclaw-host-installer.d.ts.map +0 -1
  208. package/release-manager/dist/installers/openclaw-host-installer.js.map +0 -1
  209. package/release-manager/dist/installers/workbuddy-host-installer.d.ts +0 -335
  210. package/release-manager/dist/installers/workbuddy-host-installer.d.ts.map +0 -1
  211. package/release-manager/dist/installers/workbuddy-host-installer.js.map +0 -1
  212. package/release-manager/dist/mvp-config.d.ts +0 -233
  213. package/release-manager/dist/mvp-config.d.ts.map +0 -1
  214. package/release-manager/dist/mvp-config.js.map +0 -1
  215. package/release-manager/dist/prompts.d.ts +0 -43
  216. package/release-manager/dist/prompts.d.ts.map +0 -1
  217. package/release-manager/dist/prompts.js +0 -268
  218. package/release-manager/dist/prompts.js.map +0 -1
  219. package/release-manager/dist/skill-language.d.ts +0 -32
  220. package/release-manager/dist/skill-language.d.ts.map +0 -1
  221. package/release-manager/dist/skill-language.js.map +0 -1
  222. package/release-manager/dist/uninstaller.d.ts +0 -68
  223. package/release-manager/dist/uninstaller.d.ts.map +0 -1
  224. package/release-manager/dist/uninstaller.js +0 -746
  225. package/release-manager/dist/uninstaller.js.map +0 -1
  226. package/release-manager/dist/update/apply-payload.d.ts +0 -143
  227. package/release-manager/dist/update/apply-payload.d.ts.map +0 -1
  228. package/release-manager/dist/update/apply-payload.js.map +0 -1
  229. package/release-manager/dist/update/atomic-file.d.ts +0 -35
  230. package/release-manager/dist/update/atomic-file.d.ts.map +0 -1
  231. package/release-manager/dist/update/atomic-file.js.map +0 -1
  232. package/release-manager/dist/update/bootstrap-executor.d.ts +0 -21
  233. package/release-manager/dist/update/bootstrap-executor.d.ts.map +0 -1
  234. package/release-manager/dist/update/bootstrap-executor.js.map +0 -1
  235. package/release-manager/dist/update/bootstrap-protocol.d.ts +0 -56
  236. package/release-manager/dist/update/bootstrap-protocol.d.ts.map +0 -1
  237. package/release-manager/dist/update/bootstrap-protocol.js.map +0 -1
  238. package/release-manager/dist/update/channel-metadata.d.ts +0 -28
  239. package/release-manager/dist/update/channel-metadata.d.ts.map +0 -1
  240. package/release-manager/dist/update/channel-metadata.js.map +0 -1
  241. package/release-manager/dist/update/channel-promotion.d.ts +0 -39
  242. package/release-manager/dist/update/channel-promotion.d.ts.map +0 -1
  243. package/release-manager/dist/update/channel-promotion.js +0 -55
  244. package/release-manager/dist/update/channel-promotion.js.map +0 -1
  245. package/release-manager/dist/update/console-surface.d.ts +0 -19
  246. package/release-manager/dist/update/console-surface.d.ts.map +0 -1
  247. package/release-manager/dist/update/console-surface.js.map +0 -1
  248. package/release-manager/dist/update/data-compatibility.d.ts +0 -35
  249. package/release-manager/dist/update/data-compatibility.d.ts.map +0 -1
  250. package/release-manager/dist/update/data-compatibility.js +0 -45
  251. package/release-manager/dist/update/data-compatibility.js.map +0 -1
  252. package/release-manager/dist/update/install-layout.d.ts +0 -105
  253. package/release-manager/dist/update/install-layout.d.ts.map +0 -1
  254. package/release-manager/dist/update/install-layout.js.map +0 -1
  255. package/release-manager/dist/update/product-identity.d.ts +0 -70
  256. package/release-manager/dist/update/product-identity.d.ts.map +0 -1
  257. package/release-manager/dist/update/product-identity.js.map +0 -1
  258. package/release-manager/dist/update/release-asset-manifest.d.ts +0 -31
  259. package/release-manager/dist/update/release-asset-manifest.d.ts.map +0 -1
  260. package/release-manager/dist/update/release-asset-manifest.js.map +0 -1
  261. package/release-manager/dist/update/release-identity.d.ts +0 -33
  262. package/release-manager/dist/update/release-identity.d.ts.map +0 -1
  263. package/release-manager/dist/update/release-identity.js.map +0 -1
  264. package/release-manager/dist/update/release-manager-authority.d.ts +0 -39
  265. package/release-manager/dist/update/release-manager-authority.d.ts.map +0 -1
  266. package/release-manager/dist/update/release-manager-authority.js.map +0 -1
  267. package/release-manager/dist/update/release-manager.d.ts +0 -156
  268. package/release-manager/dist/update/release-manager.d.ts.map +0 -1
  269. package/release-manager/dist/update/release-manager.js.map +0 -1
  270. package/release-manager/dist/update/release-metadata-publisher.d.ts +0 -199
  271. package/release-manager/dist/update/release-metadata-publisher.d.ts.map +0 -1
  272. package/release-manager/dist/update/release-metadata-publisher.js +0 -478
  273. package/release-manager/dist/update/release-metadata-publisher.js.map +0 -1
  274. package/release-manager/dist/update/release-metadata-source.d.ts +0 -85
  275. package/release-manager/dist/update/release-metadata-source.d.ts.map +0 -1
  276. package/release-manager/dist/update/release-metadata-source.js.map +0 -1
  277. package/release-manager/dist/update/release-metadata.d.ts +0 -60
  278. package/release-manager/dist/update/release-metadata.d.ts.map +0 -1
  279. package/release-manager/dist/update/release-metadata.js.map +0 -1
  280. package/release-manager/dist/update/release-policy.d.ts +0 -51
  281. package/release-manager/dist/update/release-policy.d.ts.map +0 -1
  282. package/release-manager/dist/update/release-policy.js.map +0 -1
  283. package/release-manager/dist/update/rollback-policy.d.ts +0 -56
  284. package/release-manager/dist/update/rollback-policy.d.ts.map +0 -1
  285. package/release-manager/dist/update/rollback-policy.js +0 -61
  286. package/release-manager/dist/update/rollback-policy.js.map +0 -1
  287. package/release-manager/dist/update/transaction-journal.d.ts +0 -212
  288. package/release-manager/dist/update/transaction-journal.d.ts.map +0 -1
  289. package/release-manager/dist/update/transaction-journal.js.map +0 -1
  290. package/release-manager/dist/update/trust-metadata.d.ts +0 -55
  291. package/release-manager/dist/update/trust-metadata.d.ts.map +0 -1
  292. package/release-manager/dist/update/trust-metadata.js.map +0 -1
  293. package/release-manager/dist/update/trust-root-provisioning.d.ts +0 -99
  294. package/release-manager/dist/update/trust-root-provisioning.d.ts.map +0 -1
  295. package/release-manager/dist/update/trust-root-provisioning.js.map +0 -1
  296. package/release-manager/dist/update/update-history.d.ts +0 -46
  297. package/release-manager/dist/update/update-history.d.ts.map +0 -1
  298. package/release-manager/dist/update/update-history.js +0 -123
  299. package/release-manager/dist/update/update-history.js.map +0 -1
  300. package/release-manager/dist/utils/config-file-io.d.ts +0 -34
  301. package/release-manager/dist/utils/config-file-io.d.ts.map +0 -1
  302. package/release-manager/dist/utils/config-file-io.js.map +0 -1
  303. package/release-manager/dist/utils/env.d.ts +0 -94
  304. package/release-manager/dist/utils/env.d.ts.map +0 -1
  305. package/release-manager/dist/utils/env.js.map +0 -1
  306. package/release-manager/dist/utils/logger.d.ts +0 -15
  307. package/release-manager/dist/utils/logger.d.ts.map +0 -1
  308. package/release-manager/dist/utils/logger.js.map +0 -1
  309. package/release-manager/dist/utils/workspace-divergence.d.ts +0 -36
  310. package/release-manager/dist/utils/workspace-divergence.d.ts.map +0 -1
  311. 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
- }