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,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Activation page validators — PRI-CR6
|
|
3
|
-
*
|
|
4
|
-
* Runtime validators for activation and lifecycle API responses.
|
|
5
|
-
* All API responses are treated as `unknown` and validated with runtime type guards.
|
|
6
|
-
* No `as` casts to bypass validation (ERR-001/005).
|
|
7
|
-
* Required fields fail loud when missing or malformed (ERR-009/010).
|
|
8
|
-
* Array elements validated individually (ERR-005/007).
|
|
9
|
-
* `Object.hasOwn()` used for untrusted keys (ERR-013).
|
|
10
|
-
* Degraded states include a reason (ERR-002).
|
|
11
|
-
*/
|
|
12
|
-
// ── Type guard helpers ───────────────────────────────────────────────────────
|
|
13
|
-
/** Type guard: is this a non-null object with own properties (not inherited)? */
|
|
14
|
-
export function isRecord(value) {
|
|
15
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
16
|
-
}
|
|
17
|
-
const VALID_ACTIVATION_STATUSES = new Set(["active", "inactive", "deactivated", "suspended_by_flag"]);
|
|
18
|
-
// ── Activation validators ────────────────────────────────────────────────────
|
|
19
|
-
export function validateActivationRecord(raw) {
|
|
20
|
-
if (!isRecord(raw))
|
|
21
|
-
return null;
|
|
22
|
-
if (!Object.hasOwn(raw, "activationId") ||
|
|
23
|
-
!Object.hasOwn(raw, "artifactId") ||
|
|
24
|
-
!Object.hasOwn(raw, "principleId") ||
|
|
25
|
-
!Object.hasOwn(raw, "channel") ||
|
|
26
|
-
!Object.hasOwn(raw, "action") ||
|
|
27
|
-
!Object.hasOwn(raw, "targetRef") ||
|
|
28
|
-
!Object.hasOwn(raw, "activatedAt") ||
|
|
29
|
-
!Object.hasOwn(raw, "status")) {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
const { activationId, artifactId, principleId, channel, action, targetRef, activatedAt, status } = raw;
|
|
33
|
-
if (typeof activationId !== "string" ||
|
|
34
|
-
activationId.length === 0 ||
|
|
35
|
-
typeof artifactId !== "string" ||
|
|
36
|
-
typeof principleId !== "string" ||
|
|
37
|
-
typeof channel !== "string" ||
|
|
38
|
-
typeof action !== "string" ||
|
|
39
|
-
typeof targetRef !== "string" ||
|
|
40
|
-
(activatedAt !== null && typeof activatedAt !== "string") ||
|
|
41
|
-
typeof status !== "string" ||
|
|
42
|
-
!VALID_ACTIVATION_STATUSES.has(status)) {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
// Narrow status from string to union type via const assertion
|
|
46
|
-
const narrowStatus = status;
|
|
47
|
-
return {
|
|
48
|
-
activationId: activationId,
|
|
49
|
-
artifactId: artifactId,
|
|
50
|
-
principleId: principleId,
|
|
51
|
-
channel: channel,
|
|
52
|
-
action: action,
|
|
53
|
-
targetRef: targetRef,
|
|
54
|
-
activatedAt: activatedAt,
|
|
55
|
-
status: narrowStatus,
|
|
56
|
-
...(Object.hasOwn(raw, "enforcement") && (raw.enforcement === "eligible" || raw.enforcement === "safety_isolated") ? { enforcement: raw.enforcement } : {}),
|
|
57
|
-
...(Object.hasOwn(raw, "legacyDecisionUnknown") && raw.legacyDecisionUnknown === true ? { legacyDecisionUnknown: true } : {}),
|
|
58
|
-
...(Object.hasOwn(raw, "ownerReviewDueAt") && typeof raw.ownerReviewDueAt === "string" ? { ownerReviewDueAt: raw.ownerReviewDueAt } : {}),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
export function validateActivationsData(raw) {
|
|
62
|
-
if (!isRecord(raw))
|
|
63
|
-
return null;
|
|
64
|
-
if (!Object.hasOwn(raw, "activations") || !Object.hasOwn(raw, "status")) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
const { activations, status } = raw;
|
|
68
|
-
if (!Array.isArray(activations) || typeof status !== "string") {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
// Fail loud: any invalid record rejects the entire payload (ERR-009)
|
|
72
|
-
const validatedRecords = [];
|
|
73
|
-
for (const record of activations) {
|
|
74
|
-
const validated = validateActivationRecord(record);
|
|
75
|
-
if (validated === null)
|
|
76
|
-
return null;
|
|
77
|
-
validatedRecords.push(validated);
|
|
78
|
-
}
|
|
79
|
-
const result = { activations: validatedRecords, status };
|
|
80
|
-
if (Object.hasOwn(raw, "reason") && typeof raw.reason === "string")
|
|
81
|
-
result.reason = raw.reason;
|
|
82
|
-
if (Object.hasOwn(raw, "nextAction") && typeof raw.nextAction === "string")
|
|
83
|
-
result.nextAction = raw.nextAction;
|
|
84
|
-
return result;
|
|
85
|
-
}
|
|
86
|
-
// ── Lifecycle validators ─────────────────────────────────────────────────────
|
|
87
|
-
export function validateLifecycleRuleMetric(raw) {
|
|
88
|
-
if (!isRecord(raw))
|
|
89
|
-
return null;
|
|
90
|
-
if (!Object.hasOwn(raw, "ruleId") ||
|
|
91
|
-
!Object.hasOwn(raw, "triggered") ||
|
|
92
|
-
!Object.hasOwn(raw, "lastTriggeredAt")) {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
const { ruleId, triggered, lastTriggeredAt } = raw;
|
|
96
|
-
if (typeof ruleId !== "string" ||
|
|
97
|
-
typeof triggered !== "number" ||
|
|
98
|
-
(lastTriggeredAt !== null && typeof lastTriggeredAt !== "string")) {
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
return {
|
|
102
|
-
ruleId,
|
|
103
|
-
triggered,
|
|
104
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TS cannot narrow from Record<string, unknown> without assertion
|
|
105
|
-
lastTriggeredAt: lastTriggeredAt,
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
export function validateLifecycleAdherence(raw) {
|
|
109
|
-
if (!isRecord(raw))
|
|
110
|
-
return null;
|
|
111
|
-
if (!Object.hasOwn(raw, "insufficientData") ||
|
|
112
|
-
!Object.hasOwn(raw, "rate") ||
|
|
113
|
-
!Object.hasOwn(raw, "note")) {
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
const { insufficientData, rate, note } = raw;
|
|
117
|
-
if (typeof insufficientData !== "boolean" ||
|
|
118
|
-
(rate !== null && typeof rate !== "number") ||
|
|
119
|
-
typeof note !== "string") {
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
return {
|
|
123
|
-
insufficientData,
|
|
124
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TS cannot narrow from Record<string, unknown> without assertion
|
|
125
|
-
rate: rate,
|
|
126
|
-
note,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
export function validateLifecycleMetricsData(raw) {
|
|
130
|
-
if (!isRecord(raw))
|
|
131
|
-
return null;
|
|
132
|
-
if (!Object.hasOwn(raw, "principleId") ||
|
|
133
|
-
!Object.hasOwn(raw, "adherence") ||
|
|
134
|
-
!Object.hasOwn(raw, "ruleMetrics")) {
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
const { principleId, adherence, ruleMetrics } = raw;
|
|
138
|
-
if (typeof principleId !== "string" || !Array.isArray(ruleMetrics)) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
const validatedAdherence = validateLifecycleAdherence(adherence);
|
|
142
|
-
if (validatedAdherence === null)
|
|
143
|
-
return null;
|
|
144
|
-
const validatedRules = [];
|
|
145
|
-
for (const r of ruleMetrics) {
|
|
146
|
-
const validated = validateLifecycleRuleMetric(r);
|
|
147
|
-
if (validated === null)
|
|
148
|
-
return null;
|
|
149
|
-
validatedRules.push(validated);
|
|
150
|
-
}
|
|
151
|
-
return {
|
|
152
|
-
principleId,
|
|
153
|
-
adherence: validatedAdherence,
|
|
154
|
-
ruleMetrics: validatedRules,
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
// ── Channel helpers ──────────────────────────────────────────────────────────
|
|
158
|
-
export function isReversibleChannel(channel) {
|
|
159
|
-
return channel === "prompt" || channel === "defer_archive";
|
|
160
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { AgentMeta } from "../../utils/agent-metadata.js";
|
|
2
|
-
import type { RedactedAgentSummary, RedactedRuntimeProfileSummary } from "../../api.js";
|
|
3
|
-
/**
|
|
4
|
-
* AgentCard — 三层渐进式披露代理卡片 + 核心代理内联确认
|
|
5
|
-
*
|
|
6
|
-
* L1(折叠态):状态点 + 显示名 + agent.name + 角色一句话 + 开关 + 展开箭头
|
|
7
|
-
* L2(展开态):详细说明段落 + impact-box + 技术细节 toggle + profile-row
|
|
8
|
-
* L3(嵌套折叠):技术细节 grid
|
|
9
|
-
*
|
|
10
|
-
* 核心代理(isCore=true)关闭时显示内联确认条(不弹模态)。
|
|
11
|
-
*
|
|
12
|
-
* rc 合规:
|
|
13
|
-
* - rc-1: agent/profiles 由父组件已验证;meta 是静态数据
|
|
14
|
-
* - rc-2: 无 as 绕过
|
|
15
|
-
* - rc-8: 无 JSON 序列化
|
|
16
|
-
*
|
|
17
|
-
* 品牌约束(PRI-CR1 B.4.4):
|
|
18
|
-
* - 禁止 translateY / scale hover(rotate 仅用于箭头朝向,允许)
|
|
19
|
-
* - 无硬编码十六进制色值
|
|
20
|
-
*/
|
|
21
|
-
export type AgentLocale = "zh-CN" | "en";
|
|
22
|
-
interface AgentCardProps {
|
|
23
|
-
agent: RedactedAgentSummary;
|
|
24
|
-
meta: AgentMeta;
|
|
25
|
-
profiles: RedactedRuntimeProfileSummary[];
|
|
26
|
-
onBindingChange: (agentName: string, runtimeProfile: string, enabled: boolean) => void;
|
|
27
|
-
saving: string | null;
|
|
28
|
-
locale: AgentLocale;
|
|
29
|
-
}
|
|
30
|
-
export declare function AgentCard({ agent, meta, profiles, onBindingChange, saving, locale, }: AgentCardProps): import("react").JSX.Element;
|
|
31
|
-
export {};
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useEffect } from "react";
|
|
3
|
-
import { useTranslation } from "react-i18next";
|
|
4
|
-
import { useNavigate } from "react-router-dom";
|
|
5
|
-
import { ChevronRight } from "lucide-react";
|
|
6
|
-
import { cn } from "../../../lib/utils.js";
|
|
7
|
-
import { fetchAgentReadiness } from "../../api.js";
|
|
8
|
-
/** 状态点样式:ready / notready / off
|
|
9
|
-
*
|
|
10
|
-
* 接受 readiness + enabled 而非整个 agent 对象,以便 L1 状态点可以使用
|
|
11
|
-
* 动态获取的 readiness(fetchAgentReadiness)替换静态悲观值。
|
|
12
|
-
*/
|
|
13
|
-
function statusDotClasses(readiness, enabled) {
|
|
14
|
-
const base = "w-2 h-2 rounded-full border-2 shrink-0";
|
|
15
|
-
if (!enabled) {
|
|
16
|
-
return cn(base, "border-ink-4 bg-surface opacity-50");
|
|
17
|
-
}
|
|
18
|
-
switch (readiness) {
|
|
19
|
-
case "ready":
|
|
20
|
-
return cn(base, "border-green bg-green");
|
|
21
|
-
case "not_ready":
|
|
22
|
-
return cn(base, "border-amber bg-surface");
|
|
23
|
-
case "needs_setup":
|
|
24
|
-
return cn(base, "border-amber bg-surface");
|
|
25
|
-
default:
|
|
26
|
-
return cn(base, "border-ink-4 bg-surface");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/** impact-box 左边框色 */
|
|
30
|
-
function impactBorderClass(level) {
|
|
31
|
-
switch (level) {
|
|
32
|
-
case "danger":
|
|
33
|
-
return "border-l-danger";
|
|
34
|
-
case "green":
|
|
35
|
-
return "border-l-green";
|
|
36
|
-
default:
|
|
37
|
-
return "border-l-amber";
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/** impact label 色 */
|
|
41
|
-
function impactLabelClass(level) {
|
|
42
|
-
switch (level) {
|
|
43
|
-
case "danger":
|
|
44
|
-
return "text-danger";
|
|
45
|
-
case "green":
|
|
46
|
-
return "text-green";
|
|
47
|
-
default:
|
|
48
|
-
return "text-ink-4";
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* 渲染含反引号 code 片段的文本。
|
|
53
|
-
* 输入示例:'`DiagnosticianContextPayload`(pain 信号上下文)'
|
|
54
|
-
* 输出:[<code>DiagnosticianContextPayload</code>, "(pain 信号上下文)"]
|
|
55
|
-
*/
|
|
56
|
-
function renderTextWithCode(text) {
|
|
57
|
-
const parts = text.split("`");
|
|
58
|
-
const nodes = [];
|
|
59
|
-
for (let i = 0; i < parts.length; i++) {
|
|
60
|
-
const part = parts[i];
|
|
61
|
-
if (part === undefined)
|
|
62
|
-
continue;
|
|
63
|
-
if (i % 2 === 0) {
|
|
64
|
-
if (part.length > 0) {
|
|
65
|
-
nodes.push(part);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
// Odd index = content between backticks = code
|
|
70
|
-
nodes.push(_jsx("code", { className: "font-mono text-[11px] text-ink-2 bg-paper-2 px-[5px] py-[1px] rounded-[2px]", children: part }, `code-${i}`));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return nodes;
|
|
74
|
-
}
|
|
75
|
-
export function AgentCard({ agent, meta, profiles, onBindingChange, saving, locale, }) {
|
|
76
|
-
const { t } = useTranslation();
|
|
77
|
-
const navigate = useNavigate();
|
|
78
|
-
const isSaving = saving === agent.name;
|
|
79
|
-
// L2 / L3 / confirm 状态
|
|
80
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
81
|
-
const [showTechDetail, setShowTechDetail] = useState(false);
|
|
82
|
-
const [confirming, setConfirming] = useState(false);
|
|
83
|
-
// 动态 readiness:L2 展开时,若静态 readiness 为 'unknown'(悲观值),
|
|
84
|
-
// 调用 /api/v1/config/readiness/:agentName 获取实时探测结果替换静态值。
|
|
85
|
-
// 仅在 agent.enabled && agent.readiness === 'unknown' 时发起请求。
|
|
86
|
-
const [dynamicReadiness, setDynamicReadiness] = useState(null);
|
|
87
|
-
const [readinessLoading, setReadinessLoading] = useState(false);
|
|
88
|
-
const [readinessFetched, setReadinessFetched] = useState(false);
|
|
89
|
-
useEffect(() => {
|
|
90
|
-
if (!isOpen)
|
|
91
|
-
return;
|
|
92
|
-
if (readinessFetched)
|
|
93
|
-
return;
|
|
94
|
-
if (!agent.enabled)
|
|
95
|
-
return;
|
|
96
|
-
if (agent.readiness !== "unknown")
|
|
97
|
-
return;
|
|
98
|
-
let cancelled = false;
|
|
99
|
-
setReadinessFetched(true);
|
|
100
|
-
setReadinessLoading(true);
|
|
101
|
-
fetchAgentReadiness(agent.name).then((result) => {
|
|
102
|
-
if (cancelled)
|
|
103
|
-
return;
|
|
104
|
-
setReadinessLoading(false);
|
|
105
|
-
if (result.success && result.data) {
|
|
106
|
-
setDynamicReadiness(result.data.readiness);
|
|
107
|
-
}
|
|
108
|
-
// rc-9: 调用失败时不静默吞错——result.error 已由 request() 提取;
|
|
109
|
-
// 此处 fallback 到静态 agent.readiness('unknown'),状态点保持 amber。
|
|
110
|
-
// loading 指示器消失即告知用户探测已结束但未获得确定结果。
|
|
111
|
-
});
|
|
112
|
-
return () => {
|
|
113
|
-
cancelled = true;
|
|
114
|
-
};
|
|
115
|
-
}, [isOpen, readinessFetched, agent.enabled, agent.readiness, agent.name]);
|
|
116
|
-
// 有效 readiness:静态值为 'unknown' 且已获取动态值时使用动态值;
|
|
117
|
-
// 否则使用静态值(父组件 re-fetch 后若不再是 'unknown' 则自动优先)。
|
|
118
|
-
const effectiveReadiness = agent.readiness === "unknown" && dynamicReadiness !== null
|
|
119
|
-
? dynamicReadiness
|
|
120
|
-
: agent.readiness;
|
|
121
|
-
// locale 决定取 Zh 还是 En 字段
|
|
122
|
-
const isZh = locale === "zh-CN";
|
|
123
|
-
const displayName = isZh ? meta.displayNameZh : meta.displayNameEn;
|
|
124
|
-
const role = isZh ? meta.roleZh : meta.roleEn;
|
|
125
|
-
const detail = isZh ? meta.detailZh : meta.detailEn;
|
|
126
|
-
const impact = isZh ? meta.impactZh : meta.impactEn;
|
|
127
|
-
const techDetail = isZh ? meta.techDetailZh : meta.techDetailEn;
|
|
128
|
-
const mvpNote = isZh ? meta.mvpNoteZh : meta.mvpNoteEn;
|
|
129
|
-
const actionLinkText = isZh ? meta.action?.linkTextZh : meta.action?.linkTextEn;
|
|
130
|
-
// 段落用 \n\n 分隔
|
|
131
|
-
const detailParagraphs = detail.split("\n\n").filter((p) => p.length > 0);
|
|
132
|
-
// 头部点击:toggle isOpen(但点击 toggle 按钮 / confirm-bar / tech-toggle / action-row 不触发)
|
|
133
|
-
const handleHeadClick = (e) => {
|
|
134
|
-
const target = e.target;
|
|
135
|
-
if (target.closest("[data-agent-toggle]") ||
|
|
136
|
-
target.closest("[data-confirm-bar]") ||
|
|
137
|
-
target.closest("[data-tech-toggle]") ||
|
|
138
|
-
target.closest("[data-action-row]")) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
setIsOpen((prev) => !prev);
|
|
142
|
-
};
|
|
143
|
-
// toggle 按钮点击
|
|
144
|
-
const handleToggleClick = (e) => {
|
|
145
|
-
e.stopPropagation();
|
|
146
|
-
if (agent.enabled) {
|
|
147
|
-
// 当前 on → 要关
|
|
148
|
-
if (meta.isCore) {
|
|
149
|
-
// 核心代理:显示内联确认 + 自动展开
|
|
150
|
-
setConfirming(true);
|
|
151
|
-
setIsOpen(true);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
// 非核心代理:直接关
|
|
155
|
-
onBindingChange(agent.name, agent.runtimeProfileId, false);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
// 当前 off → 要开
|
|
160
|
-
onBindingChange(agent.name, agent.runtimeProfileId, true);
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
// 确认停用
|
|
164
|
-
const handleConfirmOff = (e) => {
|
|
165
|
-
e.stopPropagation();
|
|
166
|
-
onBindingChange(agent.name, agent.runtimeProfileId, false);
|
|
167
|
-
setConfirming(false);
|
|
168
|
-
};
|
|
169
|
-
// 取消确认
|
|
170
|
-
const handleCancelConfirm = (e) => {
|
|
171
|
-
e.stopPropagation();
|
|
172
|
-
setConfirming(false);
|
|
173
|
-
};
|
|
174
|
-
// tech-toggle 点击
|
|
175
|
-
const handleTechToggleClick = (e) => {
|
|
176
|
-
e.stopPropagation();
|
|
177
|
-
setShowTechDetail((prev) => !prev);
|
|
178
|
-
};
|
|
179
|
-
// profile select 变更
|
|
180
|
-
const handleProfileChange = (e) => {
|
|
181
|
-
onBindingChange(agent.name, e.target.value, agent.enabled);
|
|
182
|
-
};
|
|
183
|
-
return (_jsxs("div", { "data-agent-card": agent.name, className: cn("bg-surface border border-line-2 rounded-[4px] mb-[6px] overflow-hidden transition-colors hover:border-line", !meta.isCore && "border-dashed", !agent.enabled && "opacity-72"), children: [_jsxs("div", { className: "px-[16px] py-[12px] cursor-pointer flex items-center gap-[12px]", onClick: handleHeadClick, role: "button", tabIndex: 0, "aria-expanded": isOpen, onKeyDown: (e) => {
|
|
184
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
185
|
-
e.preventDefault();
|
|
186
|
-
setIsOpen((prev) => !prev);
|
|
187
|
-
}
|
|
188
|
-
}, children: [_jsx("div", { className: statusDotClasses(effectiveReadiness, agent.enabled), "aria-hidden": "true" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: cn("text-[14px] font-semibold tracking-[-0.005em] flex items-center gap-[8px]", agent.enabled ? "text-ink" : "text-ink-3"), children: [_jsx("span", { children: displayName }), _jsx("span", { className: "font-mono text-[11.5px] text-ink-4 font-normal", children: agent.name })] }), _jsx("div", { className: "text-[12.5px] text-ink-3 mt-[2px] leading-[1.5]", children: role })] }), _jsx("button", { type: "button", "data-agent-toggle": true, onClick: handleToggleClick, disabled: isSaving, "aria-label": agent.enabled
|
|
189
|
-
? t("pages.controlCenter.agentDisabled")
|
|
190
|
-
: t("pages.controlCenter.agentEnabled"), className: cn("rounded-[3px] px-[14px] py-[6px] text-[12.5px] font-medium transition-colors disabled:opacity-50", agent.enabled
|
|
191
|
-
? "border border-gov bg-gov text-paper hover:bg-gov-2"
|
|
192
|
-
: "border border-line bg-surface text-ink hover:border-line-2"), children: isSaving
|
|
193
|
-
? t("pages.controlCenter.saving")
|
|
194
|
-
: agent.enabled
|
|
195
|
-
? t("pages.controlCenter.on")
|
|
196
|
-
: t("pages.controlCenter.off") }), _jsx(ChevronRight, { className: cn("w-[14px] h-[14px] text-ink-4 transition-transform shrink-0", isOpen && "rotate-90"), "aria-hidden": "true" })] }), isOpen && (_jsxs("div", { className: "px-[16px] pb-[14px] border-t border-line-2 bg-panel", children: [_jsx("div", { className: "pt-[14px] text-[13px] text-ink-3 leading-[1.62]", children: detailParagraphs.map((para, i) => (_jsx("p", { className: i > 0 ? "mt-2" : undefined, children: renderTextWithCode(para) }, i))) }), mvpNote && (_jsx("div", { className: "mt-3 text-[12px] text-ink-4 font-mono italic", children: mvpNote })), _jsxs("div", { className: cn("mt-[12px] px-[12px] py-[10px] border border-line-2 border-l-[2.5px] rounded-[4px] bg-paper-2 text-[12.5px] text-ink-3 leading-[1.55]", impactBorderClass(meta.impactLevel)), children: [_jsx("span", { className: cn("block mb-[3px] text-[10px] font-mono uppercase tracking-[0.08em] font-medium", impactLabelClass(meta.impactLevel)), children: t("pages.controlCenter.impact.label") }), impact] }), meta.action && actionLinkText && (_jsx("div", { "data-action-row": true, className: "mt-[12px] pt-[12px] border-t border-line-2", children: _jsxs("button", { type: "button", onClick: (e) => {
|
|
197
|
-
e.stopPropagation();
|
|
198
|
-
navigate(meta.action.to);
|
|
199
|
-
}, className: "flex items-center gap-[6px] text-[12px] text-gov hover:text-gov-2 transition-colors font-medium", children: [_jsx("span", { children: actionLinkText }), _jsx(ChevronRight, { className: "w-[12px] h-[12px]", "aria-hidden": "true" })] }) })), Object.keys(techDetail).length > 0 && (_jsxs(_Fragment, { children: [_jsxs("div", { "data-tech-toggle": true, className: "mt-[12px] pt-[12px] border-t border-line-2 flex items-center gap-[6px] cursor-pointer text-[11px] text-ink-4 font-mono uppercase tracking-[0.04em] hover:text-ink-2 transition-colors", onClick: handleTechToggleClick, role: "button", tabIndex: 0, "aria-expanded": showTechDetail, onKeyDown: (e) => {
|
|
200
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
201
|
-
e.preventDefault();
|
|
202
|
-
e.stopPropagation();
|
|
203
|
-
setShowTechDetail((prev) => !prev);
|
|
204
|
-
}
|
|
205
|
-
}, children: [_jsx(ChevronRight, { className: cn("w-[12px] h-[12px] transition-transform", showTechDetail && "rotate-90"), "aria-hidden": "true" }), t("pages.controlCenter.techDetail")] }), showTechDetail && (_jsx("div", { className: "mt-2 grid grid-cols-[72px_1fr] gap-x-[14px] gap-y-[6px] text-[12px] leading-[1.55]", children: Object.entries(techDetail).map(([k, v]) => (_jsxs("div", { className: "contents", children: [_jsx("div", { className: "text-ink-4 font-mono text-[10.5px] uppercase tracking-[0.04em] pt-px", children: k }), _jsx("div", { className: "text-ink-3", children: renderTextWithCode(v) })] }, k))) }))] })), _jsxs("div", { className: "mt-[12px] pt-[12px] border-t border-line-2 flex items-center gap-[10px] text-[12px] flex-wrap", children: [_jsx("span", { className: "text-ink-4 font-mono text-[10.5px] uppercase tracking-[0.04em]", children: t("pages.controlCenter.profileLabelShort") }), _jsx("select", { value: agent.runtimeProfileId, onChange: handleProfileChange, disabled: isSaving, className: "font-mono text-[11px] text-ink-2 bg-surface border border-line-2 rounded-[3px] px-2 py-1 cursor-pointer focus:outline-none focus:border-gov disabled:opacity-50", "aria-label": t("pages.controlCenter.profileLabel"), children: profiles.map((p) => (_jsx("option", { value: p.id, children: p.label }, p.id))) }), readinessLoading && (_jsx("span", { className: "text-[10.5px] text-ink-4 font-mono animate-pulse", children: t("pages.controlCenter.readinessChecking") })), _jsx("button", { type: "button", "data-manage-profiles": true, onClick: (e) => {
|
|
206
|
-
e.stopPropagation();
|
|
207
|
-
const el = document.getElementById("runtime-profile-manager");
|
|
208
|
-
if (el) {
|
|
209
|
-
el.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
210
|
-
}
|
|
211
|
-
}, className: "ml-auto text-[11px] text-ink-4 hover:text-ink-2 transition-colors px-[8px] py-[3px] border border-line-2 rounded-[3px] focus-visible:outline-2 focus-visible:outline-gov focus-visible:outline-offset-2", "aria-label": t("pages.controlCenter.manageProfiles"), children: t("pages.controlCenter.manageProfiles") })] }), confirming && (_jsxs("div", { "data-confirm-bar": true, className: "mt-[10px] px-[12px] py-[10px] border border-danger rounded-[4px] bg-danger/10 text-[12px] text-ink-2 leading-[1.55]", children: [_jsx("div", { children: impact }), _jsxs("div", { className: "mt-2 flex gap-[8px]", children: [_jsx("button", { type: "button", onClick: handleConfirmOff, className: "text-[11.5px] px-[12px] py-[4px] rounded-[3px] border border-transparent bg-danger text-paper font-medium hover:opacity-90 transition-opacity focus-visible:outline-2 focus-visible:outline-gov focus-visible:outline-offset-2", children: t("pages.controlCenter.impact.confirmAck") }), _jsx("button", { type: "button", onClick: handleCancelConfirm, className: "text-[11.5px] px-[12px] py-[4px] rounded-[3px] border border-line bg-transparent text-ink-3 hover:border-line-2 transition-colors focus-visible:outline-2 focus-visible:outline-gov focus-visible:outline-offset-2", children: t("pages.controlCenter.impact.confirmCancel") })] })] }))] }))] }));
|
|
212
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { type AgentGroupMeta } from "../../utils/agent-metadata.js";
|
|
2
|
-
import type { RedactedAgentSummary, RedactedRuntimeProfileSummary } from "../../api.js";
|
|
3
|
-
import { type AgentLocale } from "./AgentCard.js";
|
|
4
|
-
/**
|
|
5
|
-
* AgentGroup — 依赖分组容器
|
|
6
|
-
*
|
|
7
|
-
* 渲染 group header(名称 + 标签 + 提示)+ 该组所有 AgentCard。
|
|
8
|
-
* 标签样式按 GroupTag(must/recommend/optional/independent)区分。
|
|
9
|
-
*
|
|
10
|
-
* rc 合规:
|
|
11
|
-
* - rc-2/rc-5: 父组件已用 groupAgentsByDependency 过滤未知代理,本组件用
|
|
12
|
-
* isKnownAgentName 类型守卫二次校验 agent.name 后取 meta(防御性,不静默)
|
|
13
|
-
* - rc-9: 若 agents 为空数组,渲染 group header 但显示空状态提示
|
|
14
|
-
*
|
|
15
|
-
* 品牌约束:无 translateY / scale hover,无硬编码色值
|
|
16
|
-
*/
|
|
17
|
-
interface AgentGroupProps {
|
|
18
|
-
groupMeta: AgentGroupMeta;
|
|
19
|
-
agents: RedactedAgentSummary[];
|
|
20
|
-
profiles: RedactedRuntimeProfileSummary[];
|
|
21
|
-
onBindingChange: (agentName: string, runtimeProfile: string, enabled: boolean) => void;
|
|
22
|
-
saving: string | null;
|
|
23
|
-
locale: AgentLocale;
|
|
24
|
-
}
|
|
25
|
-
export declare function AgentGroup({ groupMeta, agents, profiles, onBindingChange, saving, locale, }: AgentGroupProps): import("react").JSX.Element;
|
|
26
|
-
export {};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslation } from "react-i18next";
|
|
3
|
-
import { cn } from "../../../lib/utils.js";
|
|
4
|
-
import { AGENT_METADATA, } from "../../utils/agent-metadata.js";
|
|
5
|
-
import { isKnownAgentName } from "../../utils/control-center-helpers.js";
|
|
6
|
-
import { AgentCard } from "./AgentCard.js";
|
|
7
|
-
/** gtag 样式按 GroupTag 区分 */
|
|
8
|
-
function gtagClasses(tag) {
|
|
9
|
-
const base = "text-[10px] font-mono px-[7px] py-[2px] rounded-[2px] tracking-[0.02em] font-medium border border-transparent";
|
|
10
|
-
switch (tag) {
|
|
11
|
-
case "must":
|
|
12
|
-
return cn(base, "bg-danger/10 text-danger border-danger/22");
|
|
13
|
-
case "recommend":
|
|
14
|
-
return cn(base, "bg-amber/10 text-amber border-amber/22");
|
|
15
|
-
case "optional":
|
|
16
|
-
return cn(base, "bg-paper-2 text-ink-4 border-line-2");
|
|
17
|
-
case "independent":
|
|
18
|
-
return cn(base, "bg-green/10 text-green border-green/22");
|
|
19
|
-
default:
|
|
20
|
-
return base;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export function AgentGroup({ groupMeta, agents, profiles, onBindingChange, saving, locale, }) {
|
|
24
|
-
const { t } = useTranslation();
|
|
25
|
-
const isZh = locale === "zh-CN";
|
|
26
|
-
const groupName = isZh ? groupMeta.labelZh : groupMeta.labelEn;
|
|
27
|
-
const groupTagLabel = isZh ? groupMeta.tagLabelZh : groupMeta.tagLabelEn;
|
|
28
|
-
const groupHint = isZh ? groupMeta.hintZh : groupMeta.hintEn;
|
|
29
|
-
// rc-2/rc-5: 先用类型守卫缩窄 agent.name,避免 as 绕过;
|
|
30
|
-
// 空状态判断基于过滤后的 knownAgents,避免"全部未知时仍渲染 group header 但无卡片"
|
|
31
|
-
// 用对象级类型谓词让 TS 在后续 map 中正确缩窄 agent.name(Array.filter 对
|
|
32
|
-
// 子属性的 string 谓词不会传播到元素类型)
|
|
33
|
-
const knownAgents = agents.filter((agent) => isKnownAgentName(agent.name));
|
|
34
|
-
return (_jsxs("div", { className: "mb-[20px]", children: [_jsxs("div", { className: "px-[14px] py-[9px] bg-paper-2 border border-line-2 rounded-[4px] flex items-center gap-[10px] mb-[8px]", children: [_jsx("span", { className: "text-[12.5px] font-semibold text-ink-2", children: groupName }), _jsx("span", { className: gtagClasses(groupMeta.tag), children: groupTagLabel }), _jsx("span", { className: "ml-auto text-[11px] text-ink-4 font-mono leading-[1.4] max-w-[32ch] text-right", children: groupHint })] }), knownAgents.length === 0 ? (_jsx("div", { className: "py-2 px-4 text-[12.5px] text-ink-4 italic", children: "\u2014" })) : (knownAgents.map((agent) => {
|
|
35
|
-
const meta = AGENT_METADATA[agent.name];
|
|
36
|
-
return (_jsx(AgentCard, { agent: agent, meta: meta, profiles: profiles, onBindingChange: onBindingChange, saving: saving, locale: locale }, agent.name));
|
|
37
|
-
}))] }));
|
|
38
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function ControlCenterPage(): import("react").JSX.Element;
|