create-principles-disciple 1.146.4 → 1.146.7
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/_release/product-identity.json +1 -1
- package/codex-adapter/package.json +1 -1
- package/core/dist/runtime-v2/evidence-triage/index.d.ts +1 -3
- package/core/dist/runtime-v2/evidence-triage/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/index.js +1 -2
- package/core/dist/runtime-v2/evidence-triage/index.js.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts +0 -19
- package/core/dist/runtime-v2/evidence-triage/observation-resolver.d.ts.map +1 -1
- package/core/dist/runtime-v2/evidence-triage/observation-resolver.js +0 -25
- package/core/dist/runtime-v2/evidence-triage/observation-resolver.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +2 -2
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +1 -1
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/telemetry-event.d.ts +2 -2
- package/core/dist/telemetry-event.d.ts.map +1 -1
- package/core/dist/telemetry-event.js +4 -5
- package/core/dist/telemetry-event.js.map +1 -1
- package/core/dist/trajectory-store.d.ts.map +1 -1
- package/core/dist/trajectory-store.js +4 -44
- package/core/dist/trajectory-store.js.map +1 -1
- package/core/package.json +1 -1
- package/host-runtime/package.json +1 -1
- package/package.json +4 -4
- package/plugin/dist/bundle.js +460 -460
- package/plugin/dist/core/config.d.ts +0 -2
- package/plugin/dist/core/trajectory.d.ts +0 -6
- package/plugin/dist/hooks/llm.d.ts +0 -1
- package/plugin/dist/hooks/prompt-helpers.d.ts +2 -1
- package/plugin/dist/hooks/raw-observation-adapter.d.ts +6 -4
- package/plugin/dist/hooks/triage-adapter.d.ts +1 -1
- package/plugin/dist/openclaw.plugin.json +1 -1
- package/plugin/dist/rulehost-evidence.js +6 -6
- package/plugin/dist/templates/pain_settings.json +0 -2
- package/plugin/openclaw.plugin.json +1 -1
- package/plugin/package.json +1 -1
- package/plugin/templates/pain_settings.json +0 -2
- package/release-manager/package.json +4 -4
- package/workbuddy-adapter/package.json +1 -1
- package/console/dist/ui/App.d.ts +0 -1
- package/console/dist/ui/App.js +0 -172
- package/console/dist/ui/api.d.ts +0 -611
- package/console/dist/ui/api.js +0 -1094
- package/console/dist/ui/components/auth/login-form.d.ts +0 -4
- package/console/dist/ui/components/auth/login-form.js +0 -142
- package/console/dist/ui/components/auth/splash-screen.d.ts +0 -9
- package/console/dist/ui/components/auth/splash-screen.js +0 -22
- package/console/dist/ui/components/error-boundary.d.ts +0 -15
- package/console/dist/ui/components/error-boundary.js +0 -30
- package/console/dist/ui/components/focus/daily-thought-card.d.ts +0 -1
- package/console/dist/ui/components/focus/daily-thought-card.js +0 -41
- package/console/dist/ui/components/language-switcher.d.ts +0 -2
- package/console/dist/ui/components/language-switcher.js +0 -17
- package/console/dist/ui/components/layout/app-sidebar.d.ts +0 -27
- package/console/dist/ui/components/layout/app-sidebar.js +0 -128
- package/console/dist/ui/components/layout/page-loading.d.ts +0 -13
- package/console/dist/ui/components/layout/page-loading.js +0 -14
- package/console/dist/ui/components/layout/page-shell.d.ts +0 -12
- package/console/dist/ui/components/layout/page-shell.js +0 -11
- package/console/dist/ui/components/layout/section-title.d.ts +0 -10
- package/console/dist/ui/components/layout/section-title.js +0 -9
- package/console/dist/ui/components/notifications/NotificationProvider.d.ts +0 -14
- package/console/dist/ui/components/notifications/NotificationProvider.js +0 -136
- package/console/dist/ui/components/notifications/favicon-badge.d.ts +0 -3
- package/console/dist/ui/components/notifications/favicon-badge.js +0 -68
- package/console/dist/ui/components/notifications/notification-reducer.d.ts +0 -9
- package/console/dist/ui/components/notifications/notification-reducer.js +0 -9
- package/console/dist/ui/components/notifications/sound-storage.d.ts +0 -3
- package/console/dist/ui/components/notifications/sound-storage.js +0 -37
- package/console/dist/ui/components/notifications/useNotifications.d.ts +0 -1
- package/console/dist/ui/components/notifications/useNotifications.js +0 -9
- package/console/dist/ui/components/onboarding/CircuitDiagram.d.ts +0 -8
- package/console/dist/ui/components/onboarding/CircuitDiagram.js +0 -18
- package/console/dist/ui/components/onboarding/DemoResultView.d.ts +0 -22
- package/console/dist/ui/components/onboarding/DemoResultView.js +0 -33
- package/console/dist/ui/components/onboarding/SlashCommandsCard.d.ts +0 -16
- package/console/dist/ui/components/onboarding/SlashCommandsCard.js +0 -20
- package/console/dist/ui/components/onboarding/slashCommands.d.ts +0 -20
- package/console/dist/ui/components/onboarding/slashCommands.js +0 -22
- package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.d.ts +0 -6
- package/console/dist/ui/components/receipts/ReceiptCoverageDisclosure.js +0 -66
- package/console/dist/ui/components/theme-provider.d.ts +0 -14
- package/console/dist/ui/components/theme-provider.js +0 -40
- package/console/dist/ui/components/theme-toggle.d.ts +0 -2
- package/console/dist/ui/components/theme-toggle.js +0 -11
- package/console/dist/ui/components/ui/alert-dialog.d.ts +0 -20
- package/console/dist/ui/components/ui/alert-dialog.js +0 -26
- package/console/dist/ui/components/ui/badge.d.ts +0 -9
- package/console/dist/ui/components/ui/badge.js +0 -22
- package/console/dist/ui/components/ui/button.d.ts +0 -11
- package/console/dist/ui/components/ui/button.js +0 -34
- package/console/dist/ui/components/ui/card.d.ts +0 -8
- package/console/dist/ui/components/ui/card.js +0 -16
- package/console/dist/ui/components/ui/charts.d.ts +0 -51
- package/console/dist/ui/components/ui/charts.js +0 -72
- package/console/dist/ui/components/ui/dialog.d.ts +0 -19
- package/console/dist/ui/components/ui/dialog.js +0 -22
- package/console/dist/ui/components/ui/input.d.ts +0 -3
- package/console/dist/ui/components/ui/input.js +0 -8
- package/console/dist/ui/components/ui/markdown.d.ts +0 -24
- package/console/dist/ui/components/ui/markdown.js +0 -119
- package/console/dist/ui/components/ui/progress-bar.d.ts +0 -20
- package/console/dist/ui/components/ui/progress-bar.js +0 -38
- package/console/dist/ui/components/ui/select.d.ts +0 -13
- package/console/dist/ui/components/ui/select.js +0 -26
- package/console/dist/ui/components/ui/separator.d.ts +0 -3
- package/console/dist/ui/components/ui/separator.js +0 -6
- package/console/dist/ui/components/ui/sheet.d.ts +0 -25
- package/console/dist/ui/components/ui/sheet.js +0 -37
- package/console/dist/ui/components/ui/shiny-text.d.ts +0 -28
- package/console/dist/ui/components/ui/shiny-text.js +0 -46
- package/console/dist/ui/components/ui/skeleton.d.ts +0 -3
- package/console/dist/ui/components/ui/skeleton.js +0 -6
- package/console/dist/ui/components/ui/sonner.d.ts +0 -3
- package/console/dist/ui/components/ui/sonner.js +0 -13
- package/console/dist/ui/components/ui/tooltip.d.ts +0 -7
- package/console/dist/ui/components/ui/tooltip.js +0 -10
- package/console/dist/ui/data/daily-thoughts.d.ts +0 -15
- package/console/dist/ui/data/daily-thoughts.js +0 -164
- package/console/dist/ui/hooks/useNotificationSound.d.ts +0 -12
- package/console/dist/ui/hooks/useNotificationSound.js +0 -74
- package/console/dist/ui/i18n/en.json +0 -2399
- package/console/dist/ui/i18n/index.d.ts +0 -2
- package/console/dist/ui/i18n/index.js +0 -32
- package/console/dist/ui/i18n/zh-CN.json +0 -2399
- package/console/dist/ui/main.d.ts +0 -1
- package/console/dist/ui/main.js +0 -9
- package/console/dist/ui/pages/ReportProblemValidators.d.ts +0 -144
- package/console/dist/ui/pages/ReportProblemValidators.js +0 -418
- package/console/dist/ui/pages/activation/ActivationPage.d.ts +0 -1
- package/console/dist/ui/pages/activation/ActivationPage.js +0 -512
- package/console/dist/ui/pages/activation/ActivationValidators.d.ts +0 -20
- package/console/dist/ui/pages/activation/ActivationValidators.js +0 -160
- package/console/dist/ui/pages/control-center/AgentCard.d.ts +0 -31
- package/console/dist/ui/pages/control-center/AgentCard.js +0 -212
- package/console/dist/ui/pages/control-center/AgentGroup.d.ts +0 -26
- package/console/dist/ui/pages/control-center/AgentGroup.js +0 -38
- package/console/dist/ui/pages/control-center/ControlCenterPage.d.ts +0 -1
- package/console/dist/ui/pages/control-center/ControlCenterPage.js +0 -509
- package/console/dist/ui/pages/control-center/DesignGatePanel.d.ts +0 -1
- package/console/dist/ui/pages/control-center/DesignGatePanel.js +0 -137
- package/console/dist/ui/pages/control-center/RuntimeProfileManager.d.ts +0 -31
- package/console/dist/ui/pages/control-center/RuntimeProfileManager.js +0 -199
- package/console/dist/ui/pages/control-center/WorkflowDiagram.d.ts +0 -17
- package/console/dist/ui/pages/control-center/WorkflowDiagram.js +0 -55
- package/console/dist/ui/pages/debt/DebtPage.d.ts +0 -2
- package/console/dist/ui/pages/debt/DebtPage.js +0 -222
- package/console/dist/ui/pages/design-system/DesignSystemPage.d.ts +0 -2
- package/console/dist/ui/pages/design-system/DesignSystemPage.js +0 -30
- package/console/dist/ui/pages/examiner/ExaminerPage.d.ts +0 -15
- package/console/dist/ui/pages/examiner/ExaminerPage.js +0 -158
- package/console/dist/ui/pages/failed-tasks/FailedTasksPage.d.ts +0 -1
- package/console/dist/ui/pages/failed-tasks/FailedTasksPage.js +0 -421
- package/console/dist/ui/pages/focus/ApprovalSubjectReading.d.ts +0 -24
- package/console/dist/ui/pages/focus/ApprovalSubjectReading.js +0 -133
- package/console/dist/ui/pages/focus/FocusPage.d.ts +0 -123
- package/console/dist/ui/pages/focus/FocusPage.js +0 -567
- package/console/dist/ui/pages/focus/OwnerDecisionCard.d.ts +0 -9
- package/console/dist/ui/pages/focus/OwnerDecisionCard.js +0 -111
- package/console/dist/ui/pages/focus/OwnerWorkbench.d.ts +0 -19
- package/console/dist/ui/pages/focus/OwnerWorkbench.js +0 -75
- package/console/dist/ui/pages/focus/RuleCandidateBindingPanel.d.ts +0 -34
- package/console/dist/ui/pages/focus/RuleCandidateBindingPanel.js +0 -298
- package/console/dist/ui/pages/focus/focus-validation.d.ts +0 -40
- package/console/dist/ui/pages/focus/focus-validation.js +0 -211
- package/console/dist/ui/pages/intent/IntentOnboarding.d.ts +0 -67
- package/console/dist/ui/pages/intent/IntentOnboarding.js +0 -289
- package/console/dist/ui/pages/intent/IntentPage.d.ts +0 -1
- package/console/dist/ui/pages/intent/IntentPage.js +0 -252
- package/console/dist/ui/pages/pain/PainEvidenceValidators.d.ts +0 -59
- package/console/dist/ui/pages/pain/PainEvidenceValidators.js +0 -125
- package/console/dist/ui/pages/pain/PainPage.d.ts +0 -1
- package/console/dist/ui/pages/pain/PainPage.js +0 -420
- package/console/dist/ui/pages/pain/pain-card-helpers.d.ts +0 -175
- package/console/dist/ui/pages/pain/pain-card-helpers.js +0 -181
- package/console/dist/ui/pages/principles/CorePrinciplesPage.d.ts +0 -10
- package/console/dist/ui/pages/principles/CorePrinciplesPage.js +0 -59
- package/console/dist/ui/pages/principles/PrincipleDetailPage.d.ts +0 -60
- package/console/dist/ui/pages/principles/PrincipleDetailPage.js +0 -602
- package/console/dist/ui/pages/principles/PrinciplesPage.d.ts +0 -1
- package/console/dist/ui/pages/principles/PrinciplesPage.js +0 -327
- package/console/dist/ui/pages/principles/PrinciplesViewNav.d.ts +0 -8
- package/console/dist/ui/pages/principles/PrinciplesViewNav.js +0 -15
- package/console/dist/ui/pages/report-problem/ReportProblemPage.d.ts +0 -1
- package/console/dist/ui/pages/report-problem/ReportProblemPage.js +0 -467
- package/console/dist/ui/pages/settings/SettingsPage.d.ts +0 -4
- package/console/dist/ui/pages/settings/SettingsPage.js +0 -457
- package/console/dist/ui/pages/settings/UpdatePage.d.ts +0 -1
- package/console/dist/ui/pages/settings/UpdatePage.js +0 -215
- package/console/dist/ui/pages/welcome/WelcomePage.d.ts +0 -5
- package/console/dist/ui/pages/welcome/WelcomePage.js +0 -187
- package/console/dist/ui/utils/agent-metadata.d.ts +0 -71
- package/console/dist/ui/utils/agent-metadata.js +0 -284
- package/console/dist/ui/utils/approval-review.d.ts +0 -30
- package/console/dist/ui/utils/approval-review.js +0 -50
- package/console/dist/ui/utils/approval-warning-localization.d.ts +0 -34
- package/console/dist/ui/utils/approval-warning-localization.js +0 -148
- package/console/dist/ui/utils/attention-presentation.d.ts +0 -35
- package/console/dist/ui/utils/attention-presentation.js +0 -46
- package/console/dist/ui/utils/blocker-localization.d.ts +0 -23
- package/console/dist/ui/utils/blocker-localization.js +0 -36
- package/console/dist/ui/utils/control-center-helpers.d.ts +0 -79
- package/console/dist/ui/utils/control-center-helpers.js +0 -189
- package/console/dist/ui/utils/enum-labels.d.ts +0 -50
- package/console/dist/ui/utils/enum-labels.js +0 -171
- package/console/dist/ui/utils/format-date.d.ts +0 -11
- package/console/dist/ui/utils/format-date.js +0 -17
- package/console/dist/ui/utils/onboarding-state.d.ts +0 -25
- package/console/dist/ui/utils/onboarding-state.js +0 -77
- package/console/dist/ui/utils/reading-layout.d.ts +0 -20
- package/console/dist/ui/utils/reading-layout.js +0 -46
- package/console/dist/ui/utils/rule-binding-validators.d.ts +0 -13
- package/console/dist/ui/utils/rule-binding-validators.js +0 -188
- package/console/dist/ui/utils/runtime-mode.d.ts +0 -11
- package/console/dist/ui/utils/runtime-mode.js +0 -11
- package/console/dist/ui/utils/token-storage.d.ts +0 -22
- package/console/dist/ui/utils/token-storage.js +0 -47
- package/console/dist/ui/utils/validators.d.ts +0 -1178
- package/console/dist/ui/utils/validators.js +0 -3297
- package/core/dist/runtime-v2/evidence-triage/admission-events.d.ts +0 -126
- package/core/dist/runtime-v2/evidence-triage/admission-events.d.ts.map +0 -1
- package/core/dist/runtime-v2/evidence-triage/admission-events.js +0 -159
- package/core/dist/runtime-v2/evidence-triage/admission-events.js.map +0 -1
- package/plugin/dist/core/detection-funnel.d.ts +0 -47
- package/plugin/dist/core/detection-service.d.ts +0 -15
- package/release-manager/dist/bootstrap-entry.d.ts +0 -2
- package/release-manager/dist/bootstrap-entry.d.ts.map +0 -1
- package/release-manager/dist/bootstrap-entry.js.map +0 -1
- package/release-manager/dist/i18n.d.ts +0 -6
- package/release-manager/dist/i18n.d.ts.map +0 -1
- package/release-manager/dist/i18n.js.map +0 -1
- package/release-manager/dist/index.d.ts +0 -7
- package/release-manager/dist/index.d.ts.map +0 -1
- package/release-manager/dist/index.js +0 -656
- package/release-manager/dist/index.js.map +0 -1
- package/release-manager/dist/installer.d.ts +0 -629
- package/release-manager/dist/installer.d.ts.map +0 -1
- package/release-manager/dist/installer.js.map +0 -1
- package/release-manager/dist/installers/codex-host-installer.d.ts +0 -39
- package/release-manager/dist/installers/codex-host-installer.d.ts.map +0 -1
- package/release-manager/dist/installers/codex-host-installer.js.map +0 -1
- package/release-manager/dist/installers/index.d.ts +0 -51
- package/release-manager/dist/installers/index.d.ts.map +0 -1
- package/release-manager/dist/installers/index.js.map +0 -1
- package/release-manager/dist/installers/openclaw-host-installer.d.ts +0 -14
- package/release-manager/dist/installers/openclaw-host-installer.d.ts.map +0 -1
- package/release-manager/dist/installers/openclaw-host-installer.js.map +0 -1
- package/release-manager/dist/installers/workbuddy-host-installer.d.ts +0 -335
- package/release-manager/dist/installers/workbuddy-host-installer.d.ts.map +0 -1
- package/release-manager/dist/installers/workbuddy-host-installer.js.map +0 -1
- package/release-manager/dist/mvp-config.d.ts +0 -233
- package/release-manager/dist/mvp-config.d.ts.map +0 -1
- package/release-manager/dist/mvp-config.js.map +0 -1
- package/release-manager/dist/prompts.d.ts +0 -43
- package/release-manager/dist/prompts.d.ts.map +0 -1
- package/release-manager/dist/prompts.js +0 -268
- package/release-manager/dist/prompts.js.map +0 -1
- package/release-manager/dist/skill-language.d.ts +0 -32
- package/release-manager/dist/skill-language.d.ts.map +0 -1
- package/release-manager/dist/skill-language.js.map +0 -1
- package/release-manager/dist/uninstaller.d.ts +0 -68
- package/release-manager/dist/uninstaller.d.ts.map +0 -1
- package/release-manager/dist/uninstaller.js +0 -746
- package/release-manager/dist/uninstaller.js.map +0 -1
- package/release-manager/dist/update/apply-payload.d.ts +0 -143
- package/release-manager/dist/update/apply-payload.d.ts.map +0 -1
- package/release-manager/dist/update/apply-payload.js.map +0 -1
- package/release-manager/dist/update/atomic-file.d.ts +0 -35
- package/release-manager/dist/update/atomic-file.d.ts.map +0 -1
- package/release-manager/dist/update/atomic-file.js.map +0 -1
- package/release-manager/dist/update/bootstrap-executor.d.ts +0 -21
- package/release-manager/dist/update/bootstrap-executor.d.ts.map +0 -1
- package/release-manager/dist/update/bootstrap-executor.js.map +0 -1
- package/release-manager/dist/update/bootstrap-protocol.d.ts +0 -56
- package/release-manager/dist/update/bootstrap-protocol.d.ts.map +0 -1
- package/release-manager/dist/update/bootstrap-protocol.js.map +0 -1
- package/release-manager/dist/update/channel-metadata.d.ts +0 -28
- package/release-manager/dist/update/channel-metadata.d.ts.map +0 -1
- package/release-manager/dist/update/channel-metadata.js.map +0 -1
- package/release-manager/dist/update/channel-promotion.d.ts +0 -39
- package/release-manager/dist/update/channel-promotion.d.ts.map +0 -1
- package/release-manager/dist/update/channel-promotion.js +0 -55
- package/release-manager/dist/update/channel-promotion.js.map +0 -1
- package/release-manager/dist/update/console-surface.d.ts +0 -19
- package/release-manager/dist/update/console-surface.d.ts.map +0 -1
- package/release-manager/dist/update/console-surface.js.map +0 -1
- package/release-manager/dist/update/data-compatibility.d.ts +0 -35
- package/release-manager/dist/update/data-compatibility.d.ts.map +0 -1
- package/release-manager/dist/update/data-compatibility.js +0 -45
- package/release-manager/dist/update/data-compatibility.js.map +0 -1
- package/release-manager/dist/update/install-layout.d.ts +0 -105
- package/release-manager/dist/update/install-layout.d.ts.map +0 -1
- package/release-manager/dist/update/install-layout.js.map +0 -1
- package/release-manager/dist/update/product-identity.d.ts +0 -70
- package/release-manager/dist/update/product-identity.d.ts.map +0 -1
- package/release-manager/dist/update/product-identity.js.map +0 -1
- package/release-manager/dist/update/release-asset-manifest.d.ts +0 -31
- package/release-manager/dist/update/release-asset-manifest.d.ts.map +0 -1
- package/release-manager/dist/update/release-asset-manifest.js.map +0 -1
- package/release-manager/dist/update/release-identity.d.ts +0 -33
- package/release-manager/dist/update/release-identity.d.ts.map +0 -1
- package/release-manager/dist/update/release-identity.js.map +0 -1
- package/release-manager/dist/update/release-manager-authority.d.ts +0 -39
- package/release-manager/dist/update/release-manager-authority.d.ts.map +0 -1
- package/release-manager/dist/update/release-manager-authority.js.map +0 -1
- package/release-manager/dist/update/release-manager.d.ts +0 -156
- package/release-manager/dist/update/release-manager.d.ts.map +0 -1
- package/release-manager/dist/update/release-manager.js.map +0 -1
- package/release-manager/dist/update/release-metadata-publisher.d.ts +0 -199
- package/release-manager/dist/update/release-metadata-publisher.d.ts.map +0 -1
- package/release-manager/dist/update/release-metadata-publisher.js +0 -478
- package/release-manager/dist/update/release-metadata-publisher.js.map +0 -1
- package/release-manager/dist/update/release-metadata-source.d.ts +0 -85
- package/release-manager/dist/update/release-metadata-source.d.ts.map +0 -1
- package/release-manager/dist/update/release-metadata-source.js.map +0 -1
- package/release-manager/dist/update/release-metadata.d.ts +0 -60
- package/release-manager/dist/update/release-metadata.d.ts.map +0 -1
- package/release-manager/dist/update/release-metadata.js.map +0 -1
- package/release-manager/dist/update/release-policy.d.ts +0 -51
- package/release-manager/dist/update/release-policy.d.ts.map +0 -1
- package/release-manager/dist/update/release-policy.js.map +0 -1
- package/release-manager/dist/update/rollback-policy.d.ts +0 -56
- package/release-manager/dist/update/rollback-policy.d.ts.map +0 -1
- package/release-manager/dist/update/rollback-policy.js +0 -61
- package/release-manager/dist/update/rollback-policy.js.map +0 -1
- package/release-manager/dist/update/transaction-journal.d.ts +0 -212
- package/release-manager/dist/update/transaction-journal.d.ts.map +0 -1
- package/release-manager/dist/update/transaction-journal.js.map +0 -1
- package/release-manager/dist/update/trust-metadata.d.ts +0 -55
- package/release-manager/dist/update/trust-metadata.d.ts.map +0 -1
- package/release-manager/dist/update/trust-metadata.js.map +0 -1
- package/release-manager/dist/update/trust-root-provisioning.d.ts +0 -99
- package/release-manager/dist/update/trust-root-provisioning.d.ts.map +0 -1
- package/release-manager/dist/update/trust-root-provisioning.js.map +0 -1
- package/release-manager/dist/update/update-history.d.ts +0 -46
- package/release-manager/dist/update/update-history.d.ts.map +0 -1
- package/release-manager/dist/update/update-history.js +0 -123
- package/release-manager/dist/update/update-history.js.map +0 -1
- package/release-manager/dist/utils/config-file-io.d.ts +0 -34
- package/release-manager/dist/utils/config-file-io.d.ts.map +0 -1
- package/release-manager/dist/utils/config-file-io.js.map +0 -1
- package/release-manager/dist/utils/env.d.ts +0 -94
- package/release-manager/dist/utils/env.d.ts.map +0 -1
- package/release-manager/dist/utils/env.js.map +0 -1
- package/release-manager/dist/utils/logger.d.ts +0 -15
- package/release-manager/dist/utils/logger.d.ts.map +0 -1
- package/release-manager/dist/utils/logger.js.map +0 -1
- package/release-manager/dist/utils/workspace-divergence.d.ts +0 -36
- package/release-manager/dist/utils/workspace-divergence.d.ts.map +0 -1
- 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
|
-
}
|