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,136 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useCallback, useEffect, useRef, useState, } from 'react';
|
|
3
|
-
import { fetchGovernanceQueue, fetchOwnerDecisions } from '../../api.js';
|
|
4
|
-
import { useNotificationSound } from '../../hooks/useNotificationSound.js';
|
|
5
|
-
import { diffNotificationCounts } from './notification-reducer.js';
|
|
6
|
-
import { loadSoundEnabled, saveSoundEnabled } from './sound-storage.js';
|
|
7
|
-
import { resetFaviconAndTitle, updateFaviconAndTitle } from './favicon-badge.js';
|
|
8
|
-
const POLL_INTERVAL_MS = 30000;
|
|
9
|
-
export const NotificationContext = createContext(null);
|
|
10
|
-
export function NotificationProvider({ children }) {
|
|
11
|
-
const [state, setState] = useState({
|
|
12
|
-
pendingCount: 0,
|
|
13
|
-
degradedCount: 0,
|
|
14
|
-
soundEnabled: loadSoundEnabled(),
|
|
15
|
-
});
|
|
16
|
-
const { playSound, unlockAudio, audioUnlocked } = useNotificationSound();
|
|
17
|
-
const prevCountsRef = useRef(null);
|
|
18
|
-
const hasSuccessfulPollRef = useRef(false);
|
|
19
|
-
const pollInFlightRef = useRef(false);
|
|
20
|
-
const pendingAlertWhileHiddenRef = useRef(false);
|
|
21
|
-
const degradedAlertWhileHiddenRef = useRef(false);
|
|
22
|
-
const setSoundEnabled = useCallback((enabled) => {
|
|
23
|
-
saveSoundEnabled(enabled);
|
|
24
|
-
setState((prev) => ({ ...prev, soundEnabled: enabled }));
|
|
25
|
-
}, []);
|
|
26
|
-
const poll = useCallback(async () => {
|
|
27
|
-
if (pollInFlightRef.current)
|
|
28
|
-
return;
|
|
29
|
-
pollInFlightRef.current = true;
|
|
30
|
-
try {
|
|
31
|
-
const result = await fetchGovernanceQueue();
|
|
32
|
-
if (!result.success) {
|
|
33
|
-
console.warn('Notification poll failed:', result.error);
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const degradedCount = result.data.degradedSignals?.length ?? 0;
|
|
37
|
-
// PRI-629 (SPEC §27): 侧边栏徽标 N = 真实可执行 Owner 决策数
|
|
38
|
-
// (OwnerDecisionItem.length) — 不是 approvals pending / candidate /
|
|
39
|
-
// needs_human_review 计数。投影失败时回退 approvals pending (保守)。
|
|
40
|
-
const decisionsResult = await fetchOwnerDecisions();
|
|
41
|
-
const pendingCount = decisionsResult.success
|
|
42
|
-
? decisionsResult.data.total
|
|
43
|
-
: result.data.pendingReviewCount;
|
|
44
|
-
hasSuccessfulPollRef.current = true;
|
|
45
|
-
setState((prev) => ({
|
|
46
|
-
...prev,
|
|
47
|
-
pendingCount,
|
|
48
|
-
degradedCount,
|
|
49
|
-
}));
|
|
50
|
-
}
|
|
51
|
-
finally {
|
|
52
|
-
pollInFlightRef.current = false;
|
|
53
|
-
}
|
|
54
|
-
}, []);
|
|
55
|
-
// Initial poll + interval
|
|
56
|
-
useEffect(() => {
|
|
57
|
-
poll();
|
|
58
|
-
const interval = setInterval(poll, POLL_INTERVAL_MS);
|
|
59
|
-
return () => clearInterval(interval);
|
|
60
|
-
}, [poll]);
|
|
61
|
-
// Play sounds when counts increase (respect hidden state)
|
|
62
|
-
useEffect(() => {
|
|
63
|
-
if (!hasSuccessfulPollRef.current)
|
|
64
|
-
return;
|
|
65
|
-
if (typeof document !== 'undefined' && document.hidden) {
|
|
66
|
-
const diff = diffNotificationCounts(state, prevCountsRef.current);
|
|
67
|
-
if (state.soundEnabled && diff.pendingIncreased)
|
|
68
|
-
pendingAlertWhileHiddenRef.current = true;
|
|
69
|
-
if (state.soundEnabled && diff.degradedIncreased)
|
|
70
|
-
degradedAlertWhileHiddenRef.current = true;
|
|
71
|
-
prevCountsRef.current = {
|
|
72
|
-
pendingCount: state.pendingCount,
|
|
73
|
-
degradedCount: state.degradedCount,
|
|
74
|
-
};
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if (!state.soundEnabled || !audioUnlocked) {
|
|
78
|
-
if (!state.soundEnabled) {
|
|
79
|
-
pendingAlertWhileHiddenRef.current = false;
|
|
80
|
-
degradedAlertWhileHiddenRef.current = false;
|
|
81
|
-
}
|
|
82
|
-
prevCountsRef.current = {
|
|
83
|
-
pendingCount: state.pendingCount,
|
|
84
|
-
degradedCount: state.degradedCount,
|
|
85
|
-
};
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const diff = diffNotificationCounts(state, prevCountsRef.current);
|
|
89
|
-
if (diff.pendingIncreased || pendingAlertWhileHiddenRef.current) {
|
|
90
|
-
playSound('pending');
|
|
91
|
-
pendingAlertWhileHiddenRef.current = false;
|
|
92
|
-
}
|
|
93
|
-
if (diff.degradedIncreased || degradedAlertWhileHiddenRef.current) {
|
|
94
|
-
playSound('degraded');
|
|
95
|
-
degradedAlertWhileHiddenRef.current = false;
|
|
96
|
-
}
|
|
97
|
-
prevCountsRef.current = {
|
|
98
|
-
pendingCount: state.pendingCount,
|
|
99
|
-
degradedCount: state.degradedCount,
|
|
100
|
-
};
|
|
101
|
-
}, [state, playSound, audioUnlocked]);
|
|
102
|
-
// Update favicon + title
|
|
103
|
-
useEffect(() => {
|
|
104
|
-
updateFaviconAndTitle(state.pendingCount, state.degradedCount);
|
|
105
|
-
}, [state.pendingCount, state.degradedCount]);
|
|
106
|
-
useEffect(() => () => {
|
|
107
|
-
resetFaviconAndTitle();
|
|
108
|
-
}, []);
|
|
109
|
-
// Unlock audio on first user interaction
|
|
110
|
-
useEffect(() => {
|
|
111
|
-
if (typeof window === 'undefined')
|
|
112
|
-
return;
|
|
113
|
-
const handleInteraction = () => {
|
|
114
|
-
unlockAudio();
|
|
115
|
-
};
|
|
116
|
-
window.addEventListener('click', handleInteraction, { once: true });
|
|
117
|
-
window.addEventListener('keydown', handleInteraction, { once: true });
|
|
118
|
-
return () => {
|
|
119
|
-
window.removeEventListener('click', handleInteraction);
|
|
120
|
-
window.removeEventListener('keydown', handleInteraction);
|
|
121
|
-
};
|
|
122
|
-
}, [unlockAudio]);
|
|
123
|
-
// Re-poll immediately when tab becomes visible
|
|
124
|
-
useEffect(() => {
|
|
125
|
-
if (typeof document === 'undefined')
|
|
126
|
-
return;
|
|
127
|
-
const handleVisibilityChange = () => {
|
|
128
|
-
if (!document.hidden) {
|
|
129
|
-
poll();
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
document.addEventListener('visibilitychange', handleVisibilityChange);
|
|
133
|
-
return () => document.removeEventListener('visibilitychange', handleVisibilityChange);
|
|
134
|
-
}, [poll]);
|
|
135
|
-
return (_jsx(NotificationContext.Provider, { value: { ...state, setSoundEnabled, audioUnlocked }, children: children }));
|
|
136
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
const ORIGINAL_TITLE = 'PD Console';
|
|
2
|
-
const CANVAS_SIZE = 32;
|
|
3
|
-
const DYNAMIC_FAVICON_ID = 'pd-dynamic-favicon';
|
|
4
|
-
function drawBaseFavicon(ctx) {
|
|
5
|
-
ctx.fillStyle = '#1a1a1a';
|
|
6
|
-
ctx.fillRect(0, 0, CANVAS_SIZE, CANVAS_SIZE);
|
|
7
|
-
ctx.fillStyle = '#d4a853';
|
|
8
|
-
ctx.font = 'bold 14px sans-serif';
|
|
9
|
-
ctx.textAlign = 'center';
|
|
10
|
-
ctx.textBaseline = 'middle';
|
|
11
|
-
ctx.fillText('PD', CANVAS_SIZE / 2, CANVAS_SIZE / 2);
|
|
12
|
-
}
|
|
13
|
-
function drawRedDot(ctx) {
|
|
14
|
-
ctx.fillStyle = '#dc2626';
|
|
15
|
-
ctx.beginPath();
|
|
16
|
-
ctx.arc(CANVAS_SIZE - 6, 6, 5, 0, Math.PI * 2);
|
|
17
|
-
ctx.fill();
|
|
18
|
-
}
|
|
19
|
-
export function renderFaviconDataUrl(totalCount) {
|
|
20
|
-
if (typeof document === 'undefined')
|
|
21
|
-
return '';
|
|
22
|
-
// eslint-disable-next-line no-undef
|
|
23
|
-
const canvas = document.createElement('canvas');
|
|
24
|
-
canvas.width = CANVAS_SIZE;
|
|
25
|
-
canvas.height = CANVAS_SIZE;
|
|
26
|
-
const ctx = canvas.getContext('2d');
|
|
27
|
-
if (!ctx)
|
|
28
|
-
return '';
|
|
29
|
-
drawBaseFavicon(ctx);
|
|
30
|
-
if (totalCount > 0) {
|
|
31
|
-
drawRedDot(ctx);
|
|
32
|
-
}
|
|
33
|
-
return canvas.toDataURL('image/png');
|
|
34
|
-
}
|
|
35
|
-
export function updateFaviconAndTitle(pendingCount, degradedCount) {
|
|
36
|
-
if (typeof document === 'undefined')
|
|
37
|
-
return;
|
|
38
|
-
const totalCount = pendingCount + degradedCount;
|
|
39
|
-
// eslint-disable-next-line no-undef
|
|
40
|
-
document.title = totalCount > 0
|
|
41
|
-
? `(${totalCount}) PD Governance Workspace`
|
|
42
|
-
: ORIGINAL_TITLE;
|
|
43
|
-
// eslint-disable-next-line no-undef
|
|
44
|
-
const existing = document.getElementById(DYNAMIC_FAVICON_ID);
|
|
45
|
-
let link = existing instanceof HTMLLinkElement ? existing : null;
|
|
46
|
-
if (!link) {
|
|
47
|
-
existing?.remove();
|
|
48
|
-
// eslint-disable-next-line no-undef
|
|
49
|
-
link = document.createElement('link');
|
|
50
|
-
link.id = DYNAMIC_FAVICON_ID;
|
|
51
|
-
link.rel = 'icon';
|
|
52
|
-
link.type = 'image/png';
|
|
53
|
-
// eslint-disable-next-line no-undef
|
|
54
|
-
document.head.appendChild(link);
|
|
55
|
-
}
|
|
56
|
-
const dataUrl = renderFaviconDataUrl(totalCount);
|
|
57
|
-
if (dataUrl) {
|
|
58
|
-
link.href = dataUrl;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export function resetFaviconAndTitle() {
|
|
62
|
-
if (typeof document === 'undefined')
|
|
63
|
-
return;
|
|
64
|
-
// eslint-disable-next-line no-undef
|
|
65
|
-
document.title = ORIGINAL_TITLE;
|
|
66
|
-
// eslint-disable-next-line no-undef
|
|
67
|
-
document.getElementById(DYNAMIC_FAVICON_ID)?.remove();
|
|
68
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export type NotificationCounts = {
|
|
2
|
-
pendingCount: number;
|
|
3
|
-
degradedCount: number;
|
|
4
|
-
};
|
|
5
|
-
export type NotificationDiff = {
|
|
6
|
-
pendingIncreased: boolean;
|
|
7
|
-
degradedIncreased: boolean;
|
|
8
|
-
};
|
|
9
|
-
export declare function diffNotificationCounts(current: NotificationCounts, previous: NotificationCounts | null): NotificationDiff;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export function diffNotificationCounts(current, previous) {
|
|
2
|
-
if (previous === null) {
|
|
3
|
-
return { pendingIncreased: false, degradedIncreased: false };
|
|
4
|
-
}
|
|
5
|
-
return {
|
|
6
|
-
pendingIncreased: current.pendingCount > previous.pendingCount,
|
|
7
|
-
degradedIncreased: current.degradedCount > previous.degradedCount,
|
|
8
|
-
};
|
|
9
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export const SOUND_ENABLED_KEY = 'pd-sound-enabled';
|
|
2
|
-
function getStorage() {
|
|
3
|
-
if (typeof window === 'undefined')
|
|
4
|
-
return null;
|
|
5
|
-
try {
|
|
6
|
-
// eslint-disable-next-line no-undef
|
|
7
|
-
return window.localStorage;
|
|
8
|
-
}
|
|
9
|
-
catch (error) {
|
|
10
|
-
console.warn('Sound preference storage is unavailable:', error);
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export function loadSoundEnabled() {
|
|
15
|
-
const storage = getStorage();
|
|
16
|
-
if (!storage)
|
|
17
|
-
return true;
|
|
18
|
-
try {
|
|
19
|
-
const stored = storage.getItem(SOUND_ENABLED_KEY);
|
|
20
|
-
return stored === null ? true : stored === 'true';
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
console.warn('Failed to read sound preference:', error);
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export function saveSoundEnabled(enabled) {
|
|
28
|
-
const storage = getStorage();
|
|
29
|
-
if (!storage)
|
|
30
|
-
return;
|
|
31
|
-
try {
|
|
32
|
-
storage.setItem(SOUND_ENABLED_KEY, String(enabled));
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
console.warn('Failed to save sound preference:', error);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useNotifications(): import("./NotificationProvider.js").NotificationContextValue;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { useContext } from 'react';
|
|
2
|
-
import { NotificationContext } from './NotificationProvider.js';
|
|
3
|
-
export function useNotifications() {
|
|
4
|
-
const ctx = useContext(NotificationContext);
|
|
5
|
-
if (!ctx) {
|
|
6
|
-
throw new Error('useNotifications must be used within NotificationProvider');
|
|
7
|
-
}
|
|
8
|
-
return ctx;
|
|
9
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
interface CircuitDiagramProps {
|
|
2
|
-
/** Highlight a specific node (evidence/principle/ownerGate/behavior) */
|
|
3
|
-
highlightNode?: 'evidence' | 'principle' | 'ownerGate' | 'behavior' | null;
|
|
4
|
-
/** Compact mode for smaller spaces */
|
|
5
|
-
compact?: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare function CircuitDiagram({ highlightNode, compact }: CircuitDiagramProps): import("react").JSX.Element;
|
|
8
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
-
const NODES = [
|
|
4
|
-
{ id: 'evidence', labelKey: 'pages.welcome.step1.circuitNodes.evidence', cx: 80, cy: 80 },
|
|
5
|
-
{ id: 'principle', labelKey: 'pages.welcome.step1.circuitNodes.principle', cx: 240, cy: 80 },
|
|
6
|
-
{ id: 'ownerGate', labelKey: 'pages.welcome.step1.circuitNodes.ownerGate', cx: 240, cy: 180 },
|
|
7
|
-
{ id: 'behavior', labelKey: 'pages.welcome.step1.circuitNodes.behavior', cx: 80, cy: 180 },
|
|
8
|
-
];
|
|
9
|
-
export function CircuitDiagram({ highlightNode = null, compact = false }) {
|
|
10
|
-
const { t } = useTranslation();
|
|
11
|
-
const size = compact ? 240 : 320;
|
|
12
|
-
const nodeRadius = compact ? 28 : 36;
|
|
13
|
-
return (_jsx("div", { className: "circuit-diagram", role: "img", "aria-label": t('pages.welcome.step1.circuitLabel'), children: _jsxs("svg", { width: size, height: size * 0.75, viewBox: "0 0 320 240", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("line", { x1: NODES[0].cx, y1: NODES[0].cy, x2: NODES[1].cx, y2: NODES[1].cy, stroke: "var(--color-gov)", strokeWidth: "1.5" }), _jsx("line", { x1: NODES[1].cx, y1: NODES[1].cy, x2: NODES[2].cx, y2: NODES[2].cy, stroke: "var(--color-gov)", strokeWidth: "1.5" }), _jsx("line", { x1: NODES[2].cx, y1: NODES[2].cy, x2: NODES[3].cx, y2: NODES[3].cy, stroke: "var(--color-gov)", strokeWidth: "1.5" }), _jsx("line", { x1: NODES[3].cx, y1: NODES[3].cy, x2: NODES[0].cx, y2: NODES[0].cy, stroke: "var(--color-gov)", strokeWidth: "1.5" }), _jsx("polygon", { points: `${NODES[1].cx - 8},${NODES[1].cy - 4} ${NODES[1].cx - 8},${NODES[1].cy + 4} ${NODES[1].cx},${NODES[1].cy}`, fill: "var(--color-gov)" }), _jsx("polygon", { points: `${NODES[2].cx + 4},${NODES[2].cy - 8} ${NODES[2].cx - 4},${NODES[2].cy - 8} ${NODES[2].cx},${NODES[2].cy}`, fill: "var(--color-gov)" }), _jsx("polygon", { points: `${NODES[3].cx + 8},${NODES[3].cy - 4} ${NODES[3].cx + 8},${NODES[3].cy + 4} ${NODES[3].cx},${NODES[3].cy}`, fill: "var(--color-gov)" }), _jsx("polygon", { points: `${NODES[0].cx - 4},${NODES[0].cy + 8} ${NODES[0].cx + 4},${NODES[0].cy + 8} ${NODES[0].cx},${NODES[0].cy}`, fill: "var(--color-gov)" }), NODES.map((node) => {
|
|
14
|
-
const isHighlighted = highlightNode === node.id;
|
|
15
|
-
const isOwnerGate = node.id === 'ownerGate';
|
|
16
|
-
return (_jsxs("g", { children: [_jsx("circle", { cx: node.cx, cy: node.cy, r: nodeRadius, fill: isHighlighted ? 'var(--color-gov)' : 'var(--color-surface)', stroke: isOwnerGate ? 'var(--color-gov)' : 'var(--color-border)', strokeWidth: isOwnerGate ? 2.5 : 1.5 }), _jsx("text", { x: node.cx, y: node.cy, textAnchor: "middle", dominantBaseline: "middle", fontSize: compact ? 9 : 11, fill: isHighlighted ? 'white' : 'var(--color-ink)', fontFamily: "var(--font-sans)", children: t(node.labelKey) })] }, node.id));
|
|
17
|
-
})] }) }));
|
|
18
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export interface DemoStage {
|
|
2
|
-
name: string;
|
|
3
|
-
status: 'passed' | 'failed' | 'degraded' | 'skipped';
|
|
4
|
-
reason?: string;
|
|
5
|
-
nextAction?: string;
|
|
6
|
-
evidenceRef?: string;
|
|
7
|
-
}
|
|
8
|
-
export interface DemoResultData {
|
|
9
|
-
status: string;
|
|
10
|
-
generatedAt?: string;
|
|
11
|
-
narrative?: string;
|
|
12
|
-
storyDescription?: string;
|
|
13
|
-
stages?: DemoStage[];
|
|
14
|
-
simulated?: boolean;
|
|
15
|
-
}
|
|
16
|
-
interface DemoResultViewProps {
|
|
17
|
-
result: DemoResultData | null;
|
|
18
|
-
loading: boolean;
|
|
19
|
-
error: string | null;
|
|
20
|
-
}
|
|
21
|
-
export declare function DemoResultView({ result, loading, error }: DemoResultViewProps): import("react").JSX.Element | null;
|
|
22
|
-
export {};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
-
/**
|
|
4
|
-
* Map backend demo stage identifiers (snake_case English, stable contract
|
|
5
|
-
* from demo-story-a-runner.ts) to localized labels. Falls back to the raw
|
|
6
|
-
* name if no mapping exists, so new stages still render (rc-9: no silent
|
|
7
|
-
* failure) but future stages should be added here.
|
|
8
|
-
*/
|
|
9
|
-
const STAGE_LABEL_KEYS = {
|
|
10
|
-
evidence_seed: 'pages.welcome.step2.stages.evidenceSeed',
|
|
11
|
-
principle_proposal: 'pages.welcome.step2.stages.principleProposal',
|
|
12
|
-
owner_review: 'pages.welcome.step2.stages.ownerReview',
|
|
13
|
-
activation: 'pages.welcome.step2.stages.activation',
|
|
14
|
-
follow_up_observation: 'pages.welcome.step2.stages.followUpObservation',
|
|
15
|
-
rollback_proof: 'pages.welcome.step2.stages.rollbackProof',
|
|
16
|
-
};
|
|
17
|
-
function localizeStageName(rawName, t) {
|
|
18
|
-
const key = STAGE_LABEL_KEYS[rawName];
|
|
19
|
-
return key ? t(key) : rawName;
|
|
20
|
-
}
|
|
21
|
-
export function DemoResultView({ result, loading, error }) {
|
|
22
|
-
const { t } = useTranslation();
|
|
23
|
-
if (loading) {
|
|
24
|
-
return (_jsx("div", { className: "demo-result-view demo-loading", role: "status", "aria-live": "polite", children: _jsx("span", { className: "demo-status-text", children: t('pages.welcome.step2.demoRunning') }) }));
|
|
25
|
-
}
|
|
26
|
-
if (error) {
|
|
27
|
-
return (_jsxs("div", { className: "demo-result-view demo-error", role: "alert", children: [_jsx("span", { className: "demo-status-text", children: t('pages.welcome.step2.demoFailed') }), _jsx("p", { className: "demo-error-detail", children: error })] }));
|
|
28
|
-
}
|
|
29
|
-
if (!result) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
return (_jsxs("div", { className: "demo-result-view", role: "region", "aria-label": t('pages.welcome.step2.demoComplete'), children: [result.simulated && (_jsx("div", { className: "demo-simulated-banner", role: "note", children: t('pages.welcome.step2.demoSimulatedNote') })), result.stages && result.stages.length > 0 && (_jsx("ol", { className: "demo-stages", children: result.stages.map((stage, idx) => (_jsxs("li", { className: `demo-stage demo-stage-${stage.status}`, children: [_jsx("span", { className: "demo-stage-name", children: localizeStageName(stage.name, t) }), stage.reason && _jsx("span", { className: "demo-stage-detail", children: stage.reason })] }, idx))) })), _jsxs("div", { className: "demo-labels", children: [_jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.evidenceLabel') }) }), _jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.candidateLabel') }) }), _jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.ownerGateLabel') }) }), _jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.activationLabel') }) }), _jsx("div", { className: "demo-label-item", children: _jsx("span", { className: "demo-label-title", children: t('pages.welcome.step2.rollbackLabel') }) })] })] }));
|
|
33
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SlashCommandsCard — renders the core slash command list for onboarding Step 3.
|
|
3
|
-
*
|
|
4
|
-
* Receives the commands array (with descriptionKey) as a prop from
|
|
5
|
-
* ONBOARDING_SLASH_COMMANDS. Each command's description text is fetched via
|
|
6
|
-
* i18n using the descriptionKey, keeping all user-facing strings in i18n.
|
|
7
|
-
*
|
|
8
|
-
* rc-9-no-silent-fallback: when commands array is empty, render the fallback
|
|
9
|
-
* message instead of a blank section.
|
|
10
|
-
*/
|
|
11
|
-
import type { SlashCommand } from './slashCommands.js';
|
|
12
|
-
interface SlashCommandsCardProps {
|
|
13
|
-
commands: SlashCommand[];
|
|
14
|
-
}
|
|
15
|
-
export declare function SlashCommandsCard({ commands }: SlashCommandsCardProps): import("react").JSX.Element;
|
|
16
|
-
export {};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* SlashCommandsCard — renders the core slash command list for onboarding Step 3.
|
|
4
|
-
*
|
|
5
|
-
* Receives the commands array (with descriptionKey) as a prop from
|
|
6
|
-
* ONBOARDING_SLASH_COMMANDS. Each command's description text is fetched via
|
|
7
|
-
* i18n using the descriptionKey, keeping all user-facing strings in i18n.
|
|
8
|
-
*
|
|
9
|
-
* rc-9-no-silent-fallback: when commands array is empty, render the fallback
|
|
10
|
-
* message instead of a blank section.
|
|
11
|
-
*/
|
|
12
|
-
import { useTranslation } from 'react-i18next';
|
|
13
|
-
export function SlashCommandsCard({ commands }) {
|
|
14
|
-
const { t } = useTranslation();
|
|
15
|
-
// rc-9: empty commands must not render as a blank section — show fallback.
|
|
16
|
-
if (!commands || commands.length === 0) {
|
|
17
|
-
return (_jsx("p", { className: "slash-commands-empty", role: "note", children: t('pages.welcome.step3.emptyListFallback') }));
|
|
18
|
-
}
|
|
19
|
-
return (_jsx("ul", { className: "slash-commands-list", role: "list", children: commands.map((cmd) => (_jsxs("li", { className: "slash-command-item", children: [_jsxs("div", { className: "slash-command-header", children: [_jsx("code", { className: "slash-command-name", children: cmd.name }), cmd.alias && (_jsx("code", { className: "slash-command-alias", children: cmd.alias }))] }), _jsx("p", { className: "slash-command-description", children: t(cmd.descriptionKey) })] }, cmd.name))) }));
|
|
20
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Onboarding slash command metadata (PRI-506).
|
|
3
|
-
*
|
|
4
|
-
* Command names and aliases are NOT translatable (they are literal slash
|
|
5
|
-
* commands the user types), so they live here in a TS module rather than in
|
|
6
|
-
* i18n JSON. Only the human-readable descriptions are translated — they live
|
|
7
|
-
* under `pages.welcome.step3.commandDescriptions.*` in en.json / zh-CN.json.
|
|
8
|
-
*
|
|
9
|
-
* EP-06 (Source of Truth): the canonical command list is in
|
|
10
|
-
* packages/openclaw-plugin/src/i18n/commands.ts (`commandDescriptions`).
|
|
11
|
-
* This module mirrors the 7 core commands selected for onboarding. When the
|
|
12
|
-
* canonical list changes, update the descriptions here and in both i18n
|
|
13
|
-
* files manually (no cross-package dependency is introduced).
|
|
14
|
-
*/
|
|
15
|
-
export interface SlashCommand {
|
|
16
|
-
name: string;
|
|
17
|
-
alias?: string;
|
|
18
|
-
descriptionKey: string;
|
|
19
|
-
}
|
|
20
|
-
export declare const ONBOARDING_SLASH_COMMANDS: SlashCommand[];
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Onboarding slash command metadata (PRI-506).
|
|
3
|
-
*
|
|
4
|
-
* Command names and aliases are NOT translatable (they are literal slash
|
|
5
|
-
* commands the user types), so they live here in a TS module rather than in
|
|
6
|
-
* i18n JSON. Only the human-readable descriptions are translated — they live
|
|
7
|
-
* under `pages.welcome.step3.commandDescriptions.*` in en.json / zh-CN.json.
|
|
8
|
-
*
|
|
9
|
-
* EP-06 (Source of Truth): the canonical command list is in
|
|
10
|
-
* packages/openclaw-plugin/src/i18n/commands.ts (`commandDescriptions`).
|
|
11
|
-
* This module mirrors the 7 core commands selected for onboarding. When the
|
|
12
|
-
* canonical list changes, update the descriptions here and in both i18n
|
|
13
|
-
* files manually (no cross-package dependency is introduced).
|
|
14
|
-
*/
|
|
15
|
-
export const ONBOARDING_SLASH_COMMANDS = [
|
|
16
|
-
{ name: '/pd-init', alias: '/pdi', descriptionKey: 'pages.welcome.step3.commandDescriptions.pdInit' },
|
|
17
|
-
{ name: '/pd-status', descriptionKey: 'pages.welcome.step3.commandDescriptions.pdStatus' },
|
|
18
|
-
{ name: '/pd-pain', descriptionKey: 'pages.welcome.step3.commandDescriptions.pdPain' },
|
|
19
|
-
{ name: '/pd-help', alias: '/pdh', descriptionKey: 'pages.welcome.step3.commandDescriptions.pdHelp' },
|
|
20
|
-
{ name: '/pd-context', descriptionKey: 'pages.welcome.step3.commandDescriptions.pdContext' },
|
|
21
|
-
{ name: '/pd-focus', descriptionKey: 'pages.welcome.step3.commandDescriptions.pdFocus' },
|
|
22
|
-
];
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { ReceiptEvidenceCoverageData, ReceiptSourceStatusData } from "../../api.js";
|
|
2
|
-
/** Localized label key for a source status — shared by the degraded notes. */
|
|
3
|
-
export declare function getReceiptSourceStatusLabelKey(status: ReceiptSourceStatusData): string;
|
|
4
|
-
export declare function ReceiptCoverageDisclosure({ coverage }: {
|
|
5
|
-
coverage: ReceiptEvidenceCoverageData;
|
|
6
|
-
}): import("react").JSX.Element;
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Receipt evidence coverage disclosure — PRI-590.
|
|
4
|
-
*
|
|
5
|
-
* Shared block that explains what receipt numbers MEAN: source status,
|
|
6
|
-
* observed range, retention policy, and the "observed evidence, not full
|
|
7
|
-
* history" limitation. Used by the PrincipleDetail receipt section and the
|
|
8
|
-
* Activation page counts context.
|
|
9
|
-
*
|
|
10
|
-
* Never displays file paths, digests, raw payloads, or tool arguments.
|
|
11
|
-
*
|
|
12
|
-
* Keys use full paths ("pages.principles.…") because this component binds
|
|
13
|
-
* useTranslation() to the default `common` namespace, which carries the
|
|
14
|
-
* whole locale tree — usable from pages that pick other namespaces.
|
|
15
|
-
*/
|
|
16
|
-
import { useTranslation } from "react-i18next";
|
|
17
|
-
import { formatDate } from "../../utils/format-date.js";
|
|
18
|
-
// ERR-106: exhaustive Records over the status unions — a binary ternary would
|
|
19
|
-
// fold one member into a default and misrepresent its state.
|
|
20
|
-
const SOURCE_STATUS_LABEL_KEYS = {
|
|
21
|
-
available: "pages.principles.detail.receipts.coverage.statusAvailable",
|
|
22
|
-
disabled: "pages.principles.detail.receipts.coverage.statusDisabled",
|
|
23
|
-
unavailable: "pages.principles.detail.receipts.coverage.statusUnavailable",
|
|
24
|
-
};
|
|
25
|
-
const SOURCE_STATUS_PILL_CLASS = {
|
|
26
|
-
available: "border-green/35 text-green bg-green/5",
|
|
27
|
-
disabled: "border-amber/35 text-amber bg-amber/5",
|
|
28
|
-
unavailable: "border-line text-ink-4 bg-surface/80",
|
|
29
|
-
};
|
|
30
|
-
const VALIDATION_NOTE_KEYS = {
|
|
31
|
-
valid: null,
|
|
32
|
-
partial: "pages.principles.detail.receipts.coverage.validationPartial",
|
|
33
|
-
malformed: "pages.principles.detail.receipts.coverage.validationMalformed",
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* reasonCode → localized phrase. Owner-facing copy must not leak snake_case
|
|
37
|
-
* technical codes (review round 2). A Map (not a plain object) because the
|
|
38
|
-
* lookup key comes from the API payload — no prototype-chain exposure
|
|
39
|
-
* (EP-01/ERR-013). Unknown codes fall back to the raw code — fail-visible
|
|
40
|
-
* rather than blank, so the debug clue survives.
|
|
41
|
-
*/
|
|
42
|
-
const REASON_CODE_LABEL_KEYS = new Map([
|
|
43
|
-
["receipt_rows_dropped", "pages.principles.detail.receipts.coverage.reasonCodes.receiptRowsDropped"],
|
|
44
|
-
["ledger_level_invalid", "pages.principles.detail.receipts.coverage.reasonCodes.ledgerLevelInvalid"],
|
|
45
|
-
["ledger_counts_unreadable", "pages.principles.detail.receipts.coverage.reasonCodes.ledgerCountsUnreadable"],
|
|
46
|
-
]);
|
|
47
|
-
/** Localized label key for a source status — shared by the degraded notes. */
|
|
48
|
-
export function getReceiptSourceStatusLabelKey(status) {
|
|
49
|
-
return SOURCE_STATUS_LABEL_KEYS[status];
|
|
50
|
-
}
|
|
51
|
-
export function ReceiptCoverageDisclosure({ coverage }) {
|
|
52
|
-
const { t, i18n } = useTranslation();
|
|
53
|
-
const validationNoteKey = VALIDATION_NOTE_KEYS[coverage.validationStatus];
|
|
54
|
-
// Known codes render as a localized phrase; unknown codes fall back to the
|
|
55
|
-
// raw code in parentheses (fail-visible debug clue, never a blank verdict).
|
|
56
|
-
let reasonSuffix = null;
|
|
57
|
-
if (coverage.reasonCode !== undefined) {
|
|
58
|
-
const labelKey = REASON_CODE_LABEL_KEYS.get(coverage.reasonCode);
|
|
59
|
-
reasonSuffix = labelKey !== undefined ? ` — ${t(labelKey)}` : ` (${coverage.reasonCode})`;
|
|
60
|
-
}
|
|
61
|
-
return (_jsxs("div", { "data-testid": "receipt-coverage", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "font-mono text-[11px] uppercase tracking-[0.08em] text-ink-4", children: t("pages.principles.detail.receipts.coverage.label") }), _jsx("span", { className: `inline-flex items-center border rounded-[2px] px-[7px] py-0.5 font-mono text-[11px] uppercase ${SOURCE_STATUS_PILL_CLASS[coverage.sourceStatus]}`, children: t(SOURCE_STATUS_LABEL_KEYS[coverage.sourceStatus]) })] }), _jsxs("p", { className: "mt-1.5 text-[11px] leading-relaxed text-ink-4", children: [coverage.observedFrom !== null
|
|
62
|
-
? t("pages.principles.detail.receipts.coverage.observedSince", {
|
|
63
|
-
date: formatDate(coverage.observedFrom, i18n.language),
|
|
64
|
-
})
|
|
65
|
-
: t("pages.principles.detail.receipts.coverage.observedSinceEmpty"), " · ", t("pages.principles.detail.receipts.coverage.asOf", { date: formatDate(coverage.asOf, i18n.language) }), " · ", t("pages.principles.detail.receipts.coverage.retention", { days: coverage.retentionPolicyDays })] }), _jsx("p", { className: "mt-1 text-[11px] leading-relaxed text-ink-4", children: t("pages.principles.detail.receipts.coverage.limitation") }), validationNoteKey !== null && (_jsxs("p", { "data-testid": "receipt-coverage-validation", className: "mt-1 text-[11px] leading-relaxed text-amber", children: [t(validationNoteKey), reasonSuffix] }))] }));
|
|
66
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
type Theme = "light" | "dark";
|
|
3
|
-
interface ThemeProviderProps {
|
|
4
|
-
children: React.ReactNode;
|
|
5
|
-
defaultTheme?: Theme;
|
|
6
|
-
storageKey?: string;
|
|
7
|
-
}
|
|
8
|
-
interface ThemeProviderState {
|
|
9
|
-
theme: Theme;
|
|
10
|
-
setTheme: (theme: Theme) => void;
|
|
11
|
-
}
|
|
12
|
-
export declare function ThemeProvider({ children, defaultTheme, storageKey, }: ThemeProviderProps): React.JSX.Element;
|
|
13
|
-
export declare function useTheme(): ThemeProviderState;
|
|
14
|
-
export {};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
const initialState = {
|
|
4
|
-
theme: "light",
|
|
5
|
-
setTheme: () => { },
|
|
6
|
-
};
|
|
7
|
-
const ThemeProviderContext = React.createContext(initialState);
|
|
8
|
-
export function ThemeProvider({ children, defaultTheme, storageKey = "pd-theme", }) {
|
|
9
|
-
const [theme, setThemeState] = React.useState(() => {
|
|
10
|
-
if (typeof window !== "undefined") {
|
|
11
|
-
const stored = localStorage.getItem(storageKey);
|
|
12
|
-
if (stored === "light" || stored === "dark") {
|
|
13
|
-
return stored;
|
|
14
|
-
}
|
|
15
|
-
if (defaultTheme) {
|
|
16
|
-
return defaultTheme;
|
|
17
|
-
}
|
|
18
|
-
return window.matchMedia("(prefers-color-scheme: dark)").matches
|
|
19
|
-
? "dark"
|
|
20
|
-
: "light";
|
|
21
|
-
}
|
|
22
|
-
return defaultTheme ?? "light";
|
|
23
|
-
});
|
|
24
|
-
React.useEffect(() => {
|
|
25
|
-
const root = window.document.documentElement;
|
|
26
|
-
root.setAttribute("data-theme", theme);
|
|
27
|
-
localStorage.setItem(storageKey, theme);
|
|
28
|
-
}, [theme, storageKey]);
|
|
29
|
-
const setTheme = (newTheme) => {
|
|
30
|
-
setThemeState(newTheme);
|
|
31
|
-
};
|
|
32
|
-
return (_jsx(ThemeProviderContext.Provider, { value: { theme, setTheme }, children: children }));
|
|
33
|
-
}
|
|
34
|
-
export function useTheme() {
|
|
35
|
-
const context = React.useContext(ThemeProviderContext);
|
|
36
|
-
if (context === undefined) {
|
|
37
|
-
throw new Error("useTheme must be used within a ThemeProvider");
|
|
38
|
-
}
|
|
39
|
-
return context;
|
|
40
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Sun, Moon } from "lucide-react";
|
|
3
|
-
import { Button } from "./ui/button.js";
|
|
4
|
-
import { useTheme } from "./theme-provider.js";
|
|
5
|
-
export function ThemeToggle() {
|
|
6
|
-
const { theme, setTheme } = useTheme();
|
|
7
|
-
const toggleTheme = () => {
|
|
8
|
-
setTheme(theme === "dark" ? "light" : "dark");
|
|
9
|
-
};
|
|
10
|
-
return (_jsx(Button, { variant: "ghost", size: "icon", onClick: toggleTheme, className: "transition-transform duration-300 hover:rotate-180 motion-reduce:transition-none motion-reduce:hover:rotate-0", title: theme === "dark" ? "Switch to light mode" : "Switch to dark mode", "aria-label": theme === "dark" ? "Switch to light mode" : "Switch to dark mode", children: theme === "dark" ? (_jsx(Sun, { className: "h-5 w-5" })) : (_jsx(Moon, { className: "h-5 w-5" })) }));
|
|
11
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
3
|
-
declare const AlertDialog: React.FC<AlertDialogPrimitive.AlertDialogProps>;
|
|
4
|
-
declare const AlertDialogTrigger: React.ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
-
declare const AlertDialogPortal: React.FC<AlertDialogPrimitive.AlertDialogPortalProps>;
|
|
6
|
-
declare const AlertDialogOverlay: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
-
declare const AlertDialogContent: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
-
declare function AlertDialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
9
|
-
declare namespace AlertDialogHeader {
|
|
10
|
-
var displayName: string;
|
|
11
|
-
}
|
|
12
|
-
declare function AlertDialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
|
|
13
|
-
declare namespace AlertDialogFooter {
|
|
14
|
-
var displayName: string;
|
|
15
|
-
}
|
|
16
|
-
declare const AlertDialogTitle: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
17
|
-
declare const AlertDialogDescription: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
18
|
-
declare const AlertDialogAction: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
19
|
-
declare const AlertDialogCancel: React.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
20
|
-
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
|