principles-disciple 1.8.0 → 1.8.2
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/ADVANCED_CONFIG_ZH.md +97 -0
- package/AGENT_INSTALL.md +173 -0
- package/AGENT_INSTALL_EN.md +173 -0
- package/INSTALL.md +256 -0
- package/SKILL.md +63 -0
- package/docs/COMMAND_REFERENCE.md +76 -0
- package/docs/COMMAND_REFERENCE_EN.md +79 -0
- package/esbuild.config.js +75 -0
- package/openclaw.plugin.json +6 -1
- package/package.json +13 -15
- package/scripts/build-web.mjs +46 -0
- package/scripts/install-dependencies.cjs +47 -0
- package/scripts/sync-plugin.mjs +802 -0
- package/scripts/verify-build.mjs +109 -0
- package/src/agents/nocturnal-dreamer.md +152 -0
- package/src/agents/nocturnal-philosopher.md +138 -0
- package/src/agents/nocturnal-reflector.md +126 -0
- package/src/agents/nocturnal-scribe.md +164 -0
- package/src/commands/capabilities.ts +85 -0
- package/{dist/commands/context.js → src/commands/context.ts} +78 -38
- package/src/commands/evolution-status.ts +146 -0
- package/src/commands/export.ts +111 -0
- package/src/commands/focus.ts +533 -0
- package/src/commands/nocturnal-review.ts +311 -0
- package/src/commands/nocturnal-rollout.ts +763 -0
- package/src/commands/nocturnal-train.ts +1002 -0
- package/{dist/commands/pain.js → src/commands/pain.ts} +68 -49
- package/src/commands/principle-rollback.ts +27 -0
- package/{dist/commands/rollback.js → src/commands/rollback.ts} +44 -12
- package/src/commands/samples.ts +60 -0
- package/src/commands/strategy.ts +38 -0
- package/{dist/commands/thinking-os.js → src/commands/thinking-os.ts} +59 -36
- package/src/commands/workflow-debug.ts +128 -0
- package/{dist/config/defaults/runtime.js → src/config/defaults/runtime.ts} +12 -5
- package/src/config/errors.ts +163 -0
- package/{dist/config/index.d.ts → src/config/index.ts} +2 -1
- package/src/constants/diagnostician.ts +66 -0
- package/src/constants/tools.ts +62 -0
- package/src/core/adaptive-thresholds.ts +476 -0
- package/{dist/core/config-service.js → src/core/config-service.ts} +7 -4
- package/{dist/core/config.js → src/core/config.ts} +158 -46
- package/src/core/control-ui-db.ts +435 -0
- package/{dist/core/detection-funnel.js → src/core/detection-funnel.ts} +36 -21
- package/{dist/core/detection-service.js → src/core/detection-service.ts} +7 -4
- package/{dist/core/dictionary-service.js → src/core/dictionary-service.ts} +7 -4
- package/{dist/core/dictionary.js → src/core/dictionary.ts} +57 -34
- package/src/core/empathy-keyword-matcher.ts +327 -0
- package/src/core/empathy-types.ts +218 -0
- package/src/core/event-log.ts +544 -0
- package/src/core/evolution-engine.ts +612 -0
- package/src/core/evolution-logger.ts +353 -0
- package/src/core/evolution-migration.ts +77 -0
- package/src/core/evolution-reducer.ts +731 -0
- package/src/core/evolution-types.ts +456 -0
- package/src/core/external-training-contract.ts +527 -0
- package/src/core/focus-history.ts +1458 -0
- package/src/core/hygiene/tracker.ts +117 -0
- package/{dist/core/init.js → src/core/init.ts} +39 -26
- package/src/core/local-worker-routing.ts +617 -0
- package/{dist/core/migration.js → src/core/migration.ts} +18 -11
- package/src/core/model-deployment-registry.ts +722 -0
- package/src/core/model-training-registry.ts +813 -0
- package/src/core/nocturnal-arbiter.ts +706 -0
- package/src/core/nocturnal-candidate-scoring.ts +392 -0
- package/src/core/nocturnal-compliance.ts +1075 -0
- package/src/core/nocturnal-dataset.ts +668 -0
- package/src/core/nocturnal-executability.ts +428 -0
- package/src/core/nocturnal-export.ts +390 -0
- package/{dist/core/nocturnal-paths.js → src/core/nocturnal-paths.ts} +49 -23
- package/src/core/nocturnal-trajectory-extractor.ts +484 -0
- package/src/core/nocturnal-trinity.ts +1384 -0
- package/src/core/pain.ts +122 -0
- package/{dist/core/path-resolver.js → src/core/path-resolver.ts} +157 -36
- package/{dist/core/paths.js → src/core/paths.ts} +13 -4
- package/src/core/principle-training-state.ts +450 -0
- package/src/core/profile.ts +226 -0
- package/src/core/promotion-gate.ts +822 -0
- package/{dist/core/risk-calculator.js → src/core/risk-calculator.ts} +42 -16
- package/{dist/core/session-tracker.js → src/core/session-tracker.ts} +185 -63
- package/src/core/shadow-observation-registry.ts +534 -0
- package/{dist/core/system-logger.js → src/core/system-logger.ts} +9 -5
- package/src/core/thinking-models.ts +217 -0
- package/src/core/training-program.ts +630 -0
- package/src/core/trajectory-types.ts +243 -0
- package/src/core/trajectory.ts +1673 -0
- package/{dist/core/workspace-context.js → src/core/workspace-context.ts} +57 -32
- package/src/hooks/bash-risk.ts +171 -0
- package/src/hooks/edit-verification.ts +295 -0
- package/src/hooks/gate-block-helper.ts +160 -0
- package/src/hooks/gate.ts +210 -0
- package/src/hooks/gfi-gate.ts +177 -0
- package/src/hooks/lifecycle.ts +326 -0
- package/{dist/hooks/llm.js → src/hooks/llm.ts} +166 -139
- package/src/hooks/message-sanitize.ts +45 -0
- package/src/hooks/pain.ts +384 -0
- package/src/hooks/progressive-trust-gate.ts +174 -0
- package/src/hooks/prompt.ts +920 -0
- package/src/hooks/subagent.ts +207 -0
- package/src/hooks/thinking-checkpoint.ts +73 -0
- package/src/hooks/trajectory-collector.ts +290 -0
- package/src/http/principles-console-route.ts +716 -0
- package/src/i18n/commands.ts +117 -0
- package/src/index.ts +694 -0
- package/src/service/central-database.ts +831 -0
- package/src/service/control-ui-query-service.ts +888 -0
- package/src/service/evolution-query-service.ts +405 -0
- package/src/service/evolution-worker.ts +1646 -0
- package/src/service/health-query-service.ts +836 -0
- package/{dist/service/nocturnal-runtime.js → src/service/nocturnal-runtime.ts} +263 -36
- package/src/service/nocturnal-service.ts +1015 -0
- package/src/service/nocturnal-target-selector.ts +532 -0
- package/src/service/phase3-input-filter.ts +237 -0
- package/src/service/runtime-summary-service.ts +757 -0
- package/src/service/subagent-workflow/deep-reflect-workflow-manager.ts +513 -0
- package/src/service/subagent-workflow/empathy-observer-workflow-manager.ts +603 -0
- package/src/service/subagent-workflow/index.ts +51 -0
- package/src/service/subagent-workflow/nocturnal-workflow-manager.ts +856 -0
- package/src/service/subagent-workflow/runtime-direct-driver.ts +166 -0
- package/src/service/subagent-workflow/types.ts +378 -0
- package/src/service/subagent-workflow/workflow-store.ts +328 -0
- package/src/service/trajectory-service.ts +15 -0
- package/{dist/tools/critique-prompt.js → src/tools/critique-prompt.ts} +25 -8
- package/src/tools/deep-reflect.ts +349 -0
- package/{dist/tools/model-index.js → src/tools/model-index.ts} +33 -17
- package/src/types/event-types.ts +453 -0
- package/src/types/hygiene-types.ts +31 -0
- package/src/types/principle-tree-schema.ts +244 -0
- package/src/types/runtime-summary.ts +49 -0
- package/src/types.ts +74 -0
- package/src/utils/file-lock.ts +391 -0
- package/{dist/utils/glob-match.js → src/utils/glob-match.ts} +21 -20
- package/{dist/utils/hashing.js → src/utils/hashing.ts} +6 -4
- package/src/utils/io.ts +110 -0
- package/{dist/utils/nlp.js → src/utils/nlp.ts} +19 -12
- package/{dist/utils/plugin-logger.js → src/utils/plugin-logger.ts} +33 -8
- package/src/utils/subagent-probe.ts +94 -0
- package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +70 -1
- package/templates/pain_settings.json +2 -1
- package/tests/README.md +120 -0
- package/tests/build-artifacts.test.ts +111 -0
- package/tests/commands/evolution-status.test.ts +222 -0
- package/tests/commands/evolver.test.ts +22 -0
- package/tests/commands/export.test.ts +78 -0
- package/tests/commands/nocturnal-review.test.ts +448 -0
- package/tests/commands/nocturnal-train.test.ts +97 -0
- package/tests/commands/pain.test.ts +108 -0
- package/tests/commands/samples.test.ts +65 -0
- package/tests/commands/strategy.test.ts +34 -0
- package/tests/commands/thinking-os.test.ts +88 -0
- package/tests/core/adaptive-thresholds.test.ts +261 -0
- package/tests/core/config-service.test.ts +89 -0
- package/tests/core/config.test.ts +90 -0
- package/tests/core/control-ui-db.test.ts +75 -0
- package/tests/core/core-template-guidance.test.ts +21 -0
- package/tests/core/detection-funnel.test.ts +63 -0
- package/tests/core/detection-service.test.ts +50 -0
- package/tests/core/dictionary-service.test.ts +116 -0
- package/tests/core/dictionary.test.ts +168 -0
- package/tests/core/empathy-keyword-matcher.test.ts +209 -0
- package/tests/core/event-log.test.ts +181 -0
- package/tests/core/evolution-e2e.test.ts +58 -0
- package/tests/core/evolution-engine-gate-integration.test.ts +543 -0
- package/tests/core/evolution-engine.test.ts +562 -0
- package/tests/core/evolution-logger.test.ts +148 -0
- package/tests/core/evolution-migration.test.ts +50 -0
- package/tests/core/evolution-paths.test.ts +21 -0
- package/tests/core/evolution-reducer.detector-metadata.test.ts +602 -0
- package/tests/core/evolution-reducer.test.ts +180 -0
- package/tests/core/evolution-types-loop.test.ts +48 -0
- package/tests/core/evolution-user-stories.e2e.test.ts +249 -0
- package/tests/core/external-training-contract.test.ts +463 -0
- package/tests/core/focus-history.test.ts +682 -0
- package/tests/core/init-flatten.test.ts +69 -0
- package/tests/core/init-refactor.test.ts +87 -0
- package/tests/core/init-v1.3.test.ts +46 -0
- package/tests/core/init.test.ts +190 -0
- package/tests/core/local-worker-routing.test.ts +757 -0
- package/tests/core/migration.test.ts +84 -0
- package/tests/core/model-deployment-registry.test.ts +845 -0
- package/tests/core/model-training-registry.test.ts +889 -0
- package/tests/core/nocturnal-arbiter.test.ts +494 -0
- package/tests/core/nocturnal-candidate-scoring.test.ts +400 -0
- package/tests/core/nocturnal-compliance.test.ts +646 -0
- package/tests/core/nocturnal-dataset.test.ts +892 -0
- package/tests/core/nocturnal-executability.test.ts +357 -0
- package/tests/core/nocturnal-export.test.ts +462 -0
- package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +428 -0
- package/tests/core/nocturnal-trajectory-extractor.test.ts +634 -0
- package/tests/core/nocturnal-trinity.test.ts +953 -0
- package/tests/core/pain.test.ts +33 -0
- package/tests/core/path-resolver.test.ts +57 -0
- package/tests/core/paths-refactor.test.ts +42 -0
- package/tests/core/phase7-rollout-integration.test.ts +477 -0
- package/tests/core/principle-training-state.test.ts +712 -0
- package/tests/core/profile.test.ts +56 -0
- package/tests/core/promotion-gate.test.ts +556 -0
- package/tests/core/risk-calculator.test.ts +168 -0
- package/tests/core/session-tracker.test.ts +191 -0
- package/tests/core/training-program.test.ts +472 -0
- package/tests/core/trajectory.test.ts +265 -0
- package/tests/core/workspace-context-factory.test.ts +18 -0
- package/tests/core/workspace-context.test.ts +134 -0
- package/tests/fixtures/nocturnal-reviewed-subset.json +183 -0
- package/tests/fixtures/production-compatibility.test.ts +147 -0
- package/tests/fixtures/production-mock-generator.ts +282 -0
- package/tests/hooks/bash-risk-integration.test.ts +137 -0
- package/tests/hooks/bash-risk.test.ts +81 -0
- package/tests/hooks/edit-verification.test.ts +678 -0
- package/tests/hooks/gate-edit-verification-p1.test.ts +632 -0
- package/tests/hooks/gate-edit-verification.test.ts +435 -0
- package/tests/hooks/gate-pipeline-integration.test.ts +404 -0
- package/tests/hooks/gate.test.ts +271 -0
- package/tests/hooks/gfi-gate-unit.test.ts +422 -0
- package/tests/hooks/gfi-gate.test.ts +669 -0
- package/tests/hooks/lifecycle.test.ts +248 -0
- package/tests/hooks/llm.test.ts +308 -0
- package/tests/hooks/message-sanitize.test.ts +36 -0
- package/tests/hooks/pain.test.ts +141 -0
- package/tests/hooks/progressive-trust-gate.test.ts +277 -0
- package/tests/hooks/prompt.test.ts +1411 -0
- package/tests/hooks/subagent.test.ts +467 -0
- package/tests/hooks/thinking-gate.test.ts +313 -0
- package/tests/http/principles-console-route.test.ts +140 -0
- package/tests/hygiene-tracker.test.ts +77 -0
- package/tests/index.integration.test.ts +179 -0
- package/tests/index.shadow-routing.integration.test.ts +140 -0
- package/tests/index.test.ts +9 -0
- package/tests/integration/empathy-workflow-integration.test.ts +627 -0
- package/tests/service/control-ui-query-service.test.ts +121 -0
- package/tests/service/empathy-observer-workflow-manager.test.ts +176 -0
- package/tests/service/evolution-worker.test.ts +585 -0
- package/tests/service/nocturnal-runtime.test.ts +470 -0
- package/tests/service/nocturnal-service.test.ts +577 -0
- package/tests/service/nocturnal-target-selector.test.ts +615 -0
- package/tests/service/nocturnal-workflow-manager.test.ts +439 -0
- package/tests/service/phase3-input-filter.test.ts +289 -0
- package/tests/service/runtime-summary-service.test.ts +919 -0
- package/tests/task-compliance.test.ts +166 -0
- package/tests/test-utils.ts +48 -0
- package/tests/tools/critique-prompt.test.ts +260 -0
- package/tests/tools/deep-reflect.test.ts +232 -0
- package/tests/tools/model-index.test.ts +246 -0
- package/tests/ui/app.test.tsx +114 -0
- package/tests/utils/file-lock.test.ts +407 -0
- package/tests/utils/hashing.test.ts +32 -0
- package/tests/utils/io.test.ts +39 -0
- package/tests/utils/nlp.test.ts +53 -0
- package/tests/utils/plugin-logger.test.ts +156 -0
- package/tsconfig.json +16 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/ui/src/App.tsx +45 -0
- package/ui/src/api.ts +216 -0
- package/ui/src/charts.tsx +586 -0
- package/ui/src/components/ErrorState.tsx +6 -0
- package/ui/src/components/Loading.tsx +13 -0
- package/ui/src/components/ProtectedRoute.tsx +12 -0
- package/ui/src/components/Shell.tsx +91 -0
- package/ui/src/components/WorkspaceConfig.tsx +146 -0
- package/ui/src/components/index.ts +5 -0
- package/ui/src/context/auth.tsx +80 -0
- package/ui/src/context/theme.tsx +66 -0
- package/ui/src/hooks/useAutoRefresh.ts +39 -0
- package/ui/src/i18n/ui.ts +363 -0
- package/ui/src/main.tsx +16 -0
- package/ui/src/pages/EvolutionPage.tsx +352 -0
- package/ui/src/pages/FeedbackPage.tsx +140 -0
- package/ui/src/pages/GateMonitorPage.tsx +136 -0
- package/ui/src/pages/LoginPage.tsx +88 -0
- package/ui/src/pages/OverviewPage.tsx +238 -0
- package/ui/src/pages/SamplesPage.tsx +174 -0
- package/ui/src/pages/ThinkingModelsPage.tsx +127 -0
- package/ui/src/styles.css +1661 -0
- package/ui/src/types.ts +368 -0
- package/ui/src/utils/format.ts +15 -0
- package/vitest.config.ts +23 -0
- package/dist/commands/capabilities.d.ts +0 -3
- package/dist/commands/capabilities.js +0 -73
- package/dist/commands/context.d.ts +0 -5
- package/dist/commands/evolution-status.d.ts +0 -4
- package/dist/commands/evolution-status.js +0 -117
- package/dist/commands/evolver.d.ts +0 -9
- package/dist/commands/evolver.js +0 -26
- package/dist/commands/export.d.ts +0 -2
- package/dist/commands/export.js +0 -98
- package/dist/commands/focus.d.ts +0 -14
- package/dist/commands/focus.js +0 -457
- package/dist/commands/nocturnal-review.d.ts +0 -24
- package/dist/commands/nocturnal-review.js +0 -265
- package/dist/commands/nocturnal-rollout.d.ts +0 -27
- package/dist/commands/nocturnal-rollout.js +0 -671
- package/dist/commands/nocturnal-train.d.ts +0 -25
- package/dist/commands/nocturnal-train.js +0 -919
- package/dist/commands/pain.d.ts +0 -5
- package/dist/commands/principle-rollback.d.ts +0 -4
- package/dist/commands/principle-rollback.js +0 -22
- package/dist/commands/rollback.d.ts +0 -19
- package/dist/commands/samples.d.ts +0 -2
- package/dist/commands/samples.js +0 -55
- package/dist/commands/strategy.d.ts +0 -3
- package/dist/commands/strategy.js +0 -29
- package/dist/commands/thinking-os.d.ts +0 -2
- package/dist/config/defaults/runtime.d.ts +0 -40
- package/dist/config/errors.d.ts +0 -84
- package/dist/config/errors.js +0 -94
- package/dist/config/index.js +0 -7
- package/dist/constants/diagnostician.d.ts +0 -12
- package/dist/constants/diagnostician.js +0 -56
- package/dist/constants/tools.d.ts +0 -17
- package/dist/constants/tools.js +0 -54
- package/dist/core/adaptive-thresholds.d.ts +0 -186
- package/dist/core/adaptive-thresholds.js +0 -300
- package/dist/core/config-service.d.ts +0 -15
- package/dist/core/config.d.ts +0 -127
- package/dist/core/control-ui-db.d.ts +0 -95
- package/dist/core/control-ui-db.js +0 -292
- package/dist/core/detection-funnel.d.ts +0 -33
- package/dist/core/detection-service.d.ts +0 -15
- package/dist/core/dictionary-service.d.ts +0 -15
- package/dist/core/dictionary.d.ts +0 -38
- package/dist/core/event-log.d.ts +0 -82
- package/dist/core/event-log.js +0 -463
- package/dist/core/evolution-engine.d.ts +0 -118
- package/dist/core/evolution-engine.js +0 -464
- package/dist/core/evolution-logger.d.ts +0 -137
- package/dist/core/evolution-logger.js +0 -256
- package/dist/core/evolution-migration.d.ts +0 -5
- package/dist/core/evolution-migration.js +0 -65
- package/dist/core/evolution-reducer.d.ts +0 -98
- package/dist/core/evolution-reducer.js +0 -465
- package/dist/core/evolution-types.d.ts +0 -287
- package/dist/core/evolution-types.js +0 -78
- package/dist/core/external-training-contract.d.ts +0 -276
- package/dist/core/external-training-contract.js +0 -269
- package/dist/core/focus-history.d.ts +0 -210
- package/dist/core/focus-history.js +0 -1185
- package/dist/core/hygiene/tracker.d.ts +0 -22
- package/dist/core/hygiene/tracker.js +0 -106
- package/dist/core/init.d.ts +0 -12
- package/dist/core/local-worker-routing.d.ts +0 -175
- package/dist/core/local-worker-routing.js +0 -525
- package/dist/core/migration.d.ts +0 -6
- package/dist/core/model-deployment-registry.d.ts +0 -218
- package/dist/core/model-deployment-registry.js +0 -503
- package/dist/core/model-training-registry.d.ts +0 -295
- package/dist/core/model-training-registry.js +0 -475
- package/dist/core/nocturnal-arbiter.d.ts +0 -159
- package/dist/core/nocturnal-arbiter.js +0 -534
- package/dist/core/nocturnal-candidate-scoring.d.ts +0 -137
- package/dist/core/nocturnal-candidate-scoring.js +0 -266
- package/dist/core/nocturnal-compliance.d.ts +0 -175
- package/dist/core/nocturnal-compliance.js +0 -824
- package/dist/core/nocturnal-dataset.d.ts +0 -224
- package/dist/core/nocturnal-dataset.js +0 -443
- package/dist/core/nocturnal-executability.d.ts +0 -85
- package/dist/core/nocturnal-executability.js +0 -331
- package/dist/core/nocturnal-export.d.ts +0 -124
- package/dist/core/nocturnal-export.js +0 -275
- package/dist/core/nocturnal-paths.d.ts +0 -124
- package/dist/core/nocturnal-trajectory-extractor.d.ts +0 -242
- package/dist/core/nocturnal-trajectory-extractor.js +0 -307
- package/dist/core/nocturnal-trinity.d.ts +0 -311
- package/dist/core/nocturnal-trinity.js +0 -880
- package/dist/core/pain.d.ts +0 -4
- package/dist/core/pain.js +0 -70
- package/dist/core/path-resolver.d.ts +0 -46
- package/dist/core/paths.d.ts +0 -65
- package/dist/core/principle-training-state.d.ts +0 -121
- package/dist/core/principle-training-state.js +0 -321
- package/dist/core/profile.d.ts +0 -62
- package/dist/core/profile.js +0 -210
- package/dist/core/promotion-gate.d.ts +0 -238
- package/dist/core/promotion-gate.js +0 -529
- package/dist/core/risk-calculator.d.ts +0 -22
- package/dist/core/session-tracker.d.ts +0 -99
- package/dist/core/shadow-observation-registry.d.ts +0 -217
- package/dist/core/shadow-observation-registry.js +0 -308
- package/dist/core/system-logger.d.ts +0 -8
- package/dist/core/thinking-models.d.ts +0 -38
- package/dist/core/thinking-models.js +0 -170
- package/dist/core/training-program.d.ts +0 -233
- package/dist/core/training-program.js +0 -433
- package/dist/core/trajectory.d.ts +0 -411
- package/dist/core/trajectory.js +0 -1307
- package/dist/core/workspace-context.d.ts +0 -71
- package/dist/hooks/bash-risk.d.ts +0 -57
- package/dist/hooks/bash-risk.js +0 -137
- package/dist/hooks/edit-verification.d.ts +0 -62
- package/dist/hooks/edit-verification.js +0 -256
- package/dist/hooks/gate-block-helper.d.ts +0 -44
- package/dist/hooks/gate-block-helper.js +0 -119
- package/dist/hooks/gate.d.ts +0 -24
- package/dist/hooks/gate.js +0 -173
- package/dist/hooks/gfi-gate.d.ts +0 -40
- package/dist/hooks/gfi-gate.js +0 -113
- package/dist/hooks/lifecycle.d.ts +0 -5
- package/dist/hooks/lifecycle.js +0 -284
- package/dist/hooks/llm.d.ts +0 -12
- package/dist/hooks/message-sanitize.d.ts +0 -3
- package/dist/hooks/message-sanitize.js +0 -37
- package/dist/hooks/pain.d.ts +0 -5
- package/dist/hooks/pain.js +0 -301
- package/dist/hooks/progressive-trust-gate.d.ts +0 -51
- package/dist/hooks/progressive-trust-gate.js +0 -89
- package/dist/hooks/prompt.d.ts +0 -47
- package/dist/hooks/prompt.js +0 -884
- package/dist/hooks/subagent.d.ts +0 -10
- package/dist/hooks/subagent.js +0 -387
- package/dist/hooks/thinking-checkpoint.d.ts +0 -37
- package/dist/hooks/thinking-checkpoint.js +0 -51
- package/dist/hooks/trajectory-collector.d.ts +0 -32
- package/dist/hooks/trajectory-collector.js +0 -256
- package/dist/http/principles-console-route.d.ts +0 -9
- package/dist/http/principles-console-route.js +0 -567
- package/dist/i18n/commands.d.ts +0 -26
- package/dist/i18n/commands.js +0 -116
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -581
- package/dist/service/central-database.d.ts +0 -104
- package/dist/service/central-database.js +0 -649
- package/dist/service/control-ui-query-service.d.ts +0 -221
- package/dist/service/control-ui-query-service.js +0 -543
- package/dist/service/empathy-observer-manager.d.ts +0 -52
- package/dist/service/empathy-observer-manager.js +0 -229
- package/dist/service/evolution-query-service.d.ts +0 -155
- package/dist/service/evolution-query-service.js +0 -258
- package/dist/service/evolution-worker.d.ts +0 -101
- package/dist/service/evolution-worker.js +0 -974
- package/dist/service/nocturnal-runtime.d.ts +0 -183
- package/dist/service/nocturnal-service.d.ts +0 -163
- package/dist/service/nocturnal-service.js +0 -787
- package/dist/service/nocturnal-target-selector.d.ts +0 -145
- package/dist/service/nocturnal-target-selector.js +0 -315
- package/dist/service/phase3-input-filter.d.ts +0 -73
- package/dist/service/phase3-input-filter.js +0 -172
- package/dist/service/runtime-summary-service.d.ts +0 -122
- package/dist/service/runtime-summary-service.js +0 -485
- package/dist/service/trajectory-service.d.ts +0 -2
- package/dist/service/trajectory-service.js +0 -15
- package/dist/tools/critique-prompt.d.ts +0 -14
- package/dist/tools/deep-reflect.d.ts +0 -39
- package/dist/tools/deep-reflect.js +0 -350
- package/dist/tools/model-index.d.ts +0 -9
- package/dist/types/event-types.d.ts +0 -306
- package/dist/types/event-types.js +0 -106
- package/dist/types/hygiene-types.d.ts +0 -20
- package/dist/types/hygiene-types.js +0 -12
- package/dist/types/runtime-summary.d.ts +0 -47
- package/dist/types/runtime-summary.js +0 -1
- package/dist/types.d.ts +0 -50
- package/dist/types.js +0 -22
- package/dist/utils/file-lock.d.ts +0 -71
- package/dist/utils/file-lock.js +0 -309
- package/dist/utils/glob-match.d.ts +0 -28
- package/dist/utils/hashing.d.ts +0 -9
- package/dist/utils/io.d.ts +0 -6
- package/dist/utils/io.js +0 -106
- package/dist/utils/nlp.d.ts +0 -9
- package/dist/utils/plugin-logger.d.ts +0 -39
- package/dist/utils/subagent-probe.d.ts +0 -34
- package/dist/utils/subagent-probe.js +0 -81
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
import { Type } from '@sinclair/typebox';
|
|
2
|
-
import { randomUUID } from 'node:crypto';
|
|
3
|
-
import * as fs from 'fs';
|
|
4
|
-
import * as path from 'node:path';
|
|
5
|
-
import { EventLogService } from '../core/event-log.js';
|
|
6
|
-
import { buildCritiquePromptV2 } from './critique-prompt.js';
|
|
7
|
-
import { resolvePdPath } from '../core/paths.js';
|
|
8
|
-
import { reflectionLogRetentionDays } from '../types.js';
|
|
9
|
-
/**
|
|
10
|
-
* Write reflection result to reflection-log.md
|
|
11
|
-
* Uses atomic write (temp file + rename) to prevent race conditions
|
|
12
|
-
*/
|
|
13
|
-
function writeToReflectionLog(workspaceDir, context, insights, modelId, depth) {
|
|
14
|
-
const reflectionLogPath = resolvePdPath(workspaceDir, 'REFLECTION_LOG');
|
|
15
|
-
// Ensure memory directory exists (backward-compatible: create if missing)
|
|
16
|
-
// Note: resolvePdPath returns the full path; ensure parent dir exists
|
|
17
|
-
const memoryDir = path.dirname(reflectionLogPath);
|
|
18
|
-
if (!fs.existsSync(memoryDir)) {
|
|
19
|
-
fs.mkdirSync(memoryDir, { recursive: true });
|
|
20
|
-
}
|
|
21
|
-
const timestamp = new Date().toISOString();
|
|
22
|
-
const entry = `
|
|
23
|
-
---
|
|
24
|
-
## Reflection at ${timestamp}
|
|
25
|
-
**Model**: ${modelId || 'auto-select'}
|
|
26
|
-
**Depth**: ${depth || 2}
|
|
27
|
-
|
|
28
|
-
### Context
|
|
29
|
-
${context.substring(0, 500)}${context.length > 500 ? '...' : ''}
|
|
30
|
-
|
|
31
|
-
### Insights
|
|
32
|
-
${insights}
|
|
33
|
-
|
|
34
|
-
`;
|
|
35
|
-
const header = `# Reflection Log\n\n> Auto-generated by Deep Reflection Tool\n> Retention: ${reflectionLogRetentionDays} days\n`;
|
|
36
|
-
// Read existing content
|
|
37
|
-
let existingContent = '';
|
|
38
|
-
if (fs.existsSync(reflectionLogPath)) {
|
|
39
|
-
existingContent = fs.readFileSync(reflectionLogPath, 'utf8');
|
|
40
|
-
}
|
|
41
|
-
const newContent = header + entry + existingContent.replace(header, '');
|
|
42
|
-
// Atomic write: write to temp file first, then rename
|
|
43
|
-
const tempPath = `${reflectionLogPath}.tmp`;
|
|
44
|
-
fs.writeFileSync(tempPath, newContent, 'utf8');
|
|
45
|
-
fs.renameSync(tempPath, reflectionLogPath);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Clean up reflection log entries older than retention period
|
|
49
|
-
*/
|
|
50
|
-
function cleanupReflectionLog(workspaceDir) {
|
|
51
|
-
const reflectionLogPath = resolvePdPath(workspaceDir, 'REFLECTION_LOG');
|
|
52
|
-
if (!fs.existsSync(reflectionLogPath))
|
|
53
|
-
return;
|
|
54
|
-
const content = fs.readFileSync(reflectionLogPath, 'utf8');
|
|
55
|
-
const cutoffDate = new Date();
|
|
56
|
-
cutoffDate.setDate(cutoffDate.getDate() - reflectionLogRetentionDays);
|
|
57
|
-
// Use more precise regex to match ISO timestamp
|
|
58
|
-
// Pattern: ---\n## Reflection at 2024-01-15T10:30:00
|
|
59
|
-
const entryPattern = /---\n## Reflection at (\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})/g;
|
|
60
|
-
const parts = content.split(entryPattern);
|
|
61
|
-
// parts[0] = header, then alternates: timestamp, content, timestamp, content...
|
|
62
|
-
const header = parts[0];
|
|
63
|
-
const validEntries = [];
|
|
64
|
-
for (let i = 1; i < parts.length; i += 2) {
|
|
65
|
-
const timestamp = parts[i];
|
|
66
|
-
const entryContent = parts[i + 1] || '';
|
|
67
|
-
const entryDate = new Date(timestamp);
|
|
68
|
-
if (entryDate >= cutoffDate) {
|
|
69
|
-
validEntries.push(`---\n## Reflection at ${timestamp}${entryContent}`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
if (validEntries.length < (parts.length - 1) / 2) {
|
|
73
|
-
const newContent = header + validEntries.join('');
|
|
74
|
-
// Atomic write
|
|
75
|
-
const tempPath = `${reflectionLogPath}.tmp`;
|
|
76
|
-
fs.writeFileSync(tempPath, newContent, 'utf8');
|
|
77
|
-
fs.renameSync(tempPath, reflectionLogPath);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
const DEFAULT_CONFIG = {
|
|
81
|
-
enabled: true,
|
|
82
|
-
mode: 'auto',
|
|
83
|
-
auto_trigger_conditions: {
|
|
84
|
-
min_tool_calls: 5,
|
|
85
|
-
error_rate_threshold: 0.3,
|
|
86
|
-
high_gfi_threshold: 70
|
|
87
|
-
},
|
|
88
|
-
timeout_ms: 60000
|
|
89
|
-
};
|
|
90
|
-
function safeLog(api, level, message) {
|
|
91
|
-
try {
|
|
92
|
-
if (api?.logger && typeof api.logger[level] === 'function') {
|
|
93
|
-
api.logger[level](message);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch (e) {
|
|
97
|
-
console.error(`[PD:DeepReflect] Logging failed: ${String(e)}`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
function loadConfig(workspaceDir, api) {
|
|
101
|
-
if (!workspaceDir)
|
|
102
|
-
return DEFAULT_CONFIG;
|
|
103
|
-
const configPath = resolvePdPath(workspaceDir, 'PAIN_SETTINGS');
|
|
104
|
-
try {
|
|
105
|
-
if (fs.existsSync(configPath)) {
|
|
106
|
-
const raw = fs.readFileSync(configPath, 'utf-8');
|
|
107
|
-
const settings = JSON.parse(raw);
|
|
108
|
-
return { ...DEFAULT_CONFIG, ...settings.deep_reflection };
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
safeLog(api, 'warn', `[DeepReflect] Failed to load config: ${String(err)}`);
|
|
113
|
-
}
|
|
114
|
-
return DEFAULT_CONFIG;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Helper to read string parameter from rawParams
|
|
118
|
-
* Supports both camelCase and snake_case parameter names
|
|
119
|
-
*/
|
|
120
|
-
function readStringParam(rawParams, key) {
|
|
121
|
-
const value = rawParams[key];
|
|
122
|
-
if (typeof value === 'string')
|
|
123
|
-
return value.trim() || undefined;
|
|
124
|
-
// Try snake_case alias
|
|
125
|
-
const snakeKey = key.replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
126
|
-
const snakeValue = rawParams[snakeKey];
|
|
127
|
-
if (typeof snakeValue === 'string')
|
|
128
|
-
return snakeValue.trim() || undefined;
|
|
129
|
-
return undefined;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Helper to read number parameter from rawParams
|
|
133
|
-
* Supports both camelCase and snake_case parameter names
|
|
134
|
-
*/
|
|
135
|
-
function readNumberParam(rawParams, key) {
|
|
136
|
-
const value = rawParams[key];
|
|
137
|
-
if (typeof value === 'number')
|
|
138
|
-
return value;
|
|
139
|
-
// Try snake_case alias
|
|
140
|
-
const snakeKey = key.replace(/([A-Z])/g, '_$1').toLowerCase();
|
|
141
|
-
const snakeValue = rawParams[snakeKey];
|
|
142
|
-
if (typeof snakeValue === 'number')
|
|
143
|
-
return snakeValue;
|
|
144
|
-
return undefined;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Create Deep Reflect Tool
|
|
148
|
-
*
|
|
149
|
-
* Uses factory pattern to capture `api` in closure, following OpenClaw plugin SDK conventions.
|
|
150
|
-
* The execute signature must be: async (_toolCallId: string, rawParams: Record<string, unknown>)
|
|
151
|
-
*/
|
|
152
|
-
export function createDeepReflectTool(api) {
|
|
153
|
-
return {
|
|
154
|
-
name: 'deep_reflect',
|
|
155
|
-
description: '执行深层次的元认知反思,分析当前任务的潜在风险、逻辑漏洞或架构改进点。',
|
|
156
|
-
parameters: Type.Object({
|
|
157
|
-
context: Type.String({ description: '需要反思的任务上下文、代码片段或当前遇到的困难。' }),
|
|
158
|
-
depth: Type.Optional(Type.Number({ description: '反思深度 (1-3)。1: 快速扫描, 2: 均衡分析, 3: 彻底解构。默认为 2。', minimum: 1, maximum: 3 })),
|
|
159
|
-
model_id: Type.Optional(Type.String({ description: '可选:强制指定使用的思维模型 ID。' }))
|
|
160
|
-
}),
|
|
161
|
-
/**
|
|
162
|
-
* Tool execution logic
|
|
163
|
-
*
|
|
164
|
-
* OpenClaw tool execute signature:
|
|
165
|
-
* - First parameter: _toolCallId (string) - the tool call ID
|
|
166
|
-
* - Second parameter: rawParams (Record<string, unknown>) - the actual parameters
|
|
167
|
-
* - Third parameter (optional): signal (AbortSignal) - for cancellation
|
|
168
|
-
*/
|
|
169
|
-
async execute(_toolCallId, rawParams) {
|
|
170
|
-
const context = readStringParam(rawParams, 'context') || '';
|
|
171
|
-
const depth = readNumberParam(rawParams, 'depth') ?? 2;
|
|
172
|
-
const model_id = readStringParam(rawParams, 'model_id');
|
|
173
|
-
if (!context) {
|
|
174
|
-
return {
|
|
175
|
-
content: [{
|
|
176
|
-
type: 'text',
|
|
177
|
-
text: '❌ 错误: 必须提供反思上下文 (context)。'
|
|
178
|
-
}]
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
// 路径解析优先级:api.config > api.workspaceDir > api.resolvePath
|
|
182
|
-
const effectiveWorkspaceDir = api.config?.workspaceDir
|
|
183
|
-
|| api.workspaceDir
|
|
184
|
-
|| api.resolvePath?.('.');
|
|
185
|
-
if (!effectiveWorkspaceDir) {
|
|
186
|
-
return {
|
|
187
|
-
content: [{
|
|
188
|
-
type: 'text',
|
|
189
|
-
text: '❌ 反思执行失败: Workspace directory is required for deep reflection.。请检查 API 配置或网络连接。'
|
|
190
|
-
}]
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
const config = loadConfig(effectiveWorkspaceDir, api);
|
|
194
|
-
if (config.mode === 'disabled' || !config.enabled) {
|
|
195
|
-
return {
|
|
196
|
-
content: [{
|
|
197
|
-
type: 'text',
|
|
198
|
-
text: '⏭️ Deep Reflection 已禁用。'
|
|
199
|
-
}]
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
if (model_id) {
|
|
203
|
-
safeLog(api, 'warn', `[DeepReflect] The 'model_id' parameter is deprecated. The agent will now auto-select models based on the context index.`);
|
|
204
|
-
}
|
|
205
|
-
const agentId = 'main';
|
|
206
|
-
const sessionKey = `agent:${agentId}:reflection:${randomUUID()}`;
|
|
207
|
-
const sessionId = sessionKey.split(':').pop();
|
|
208
|
-
const stateDir = resolvePdPath(effectiveWorkspaceDir, 'STATE_DIR');
|
|
209
|
-
const eventLog = EventLogService.get(stateDir, api.logger);
|
|
210
|
-
try {
|
|
211
|
-
const extraSystemPrompt = buildCritiquePromptV2({
|
|
212
|
-
context,
|
|
213
|
-
depth,
|
|
214
|
-
model_id,
|
|
215
|
-
api,
|
|
216
|
-
workspaceDir: effectiveWorkspaceDir
|
|
217
|
-
});
|
|
218
|
-
const startTime = Date.now();
|
|
219
|
-
const subagentRuntime = api.runtime.subagent;
|
|
220
|
-
if (!subagentRuntime) {
|
|
221
|
-
return {
|
|
222
|
-
content: [{
|
|
223
|
-
type: 'text',
|
|
224
|
-
text: `❌ Subagent runtime 不可用。\n\n当前运行在 embedded 模式(openclaw agent CLI),该模式不支持深反思功能。\n\n请通过 Gateway 模式运行(openclaw gateway)。`
|
|
225
|
-
}]
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
await subagentRuntime.run({
|
|
229
|
-
sessionKey,
|
|
230
|
-
message: `请对我当前的任务进行深层次反思。\n\n上下文:${context}`,
|
|
231
|
-
extraSystemPrompt,
|
|
232
|
-
deliver: false
|
|
233
|
-
});
|
|
234
|
-
const finalStatus = await subagentRuntime.waitForRun({ runId: sessionKey });
|
|
235
|
-
const duration = Date.now() - startTime;
|
|
236
|
-
if (finalStatus.status === 'timeout') {
|
|
237
|
-
return {
|
|
238
|
-
content: [{
|
|
239
|
-
type: 'text',
|
|
240
|
-
text: '⚠️ 反思任务执行超时。你可以尝试减少上下文长度或增加深度。'
|
|
241
|
-
}]
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
if (finalStatus.status === 'ok') {
|
|
245
|
-
const rawMessages = await subagentRuntime.getSessionMessages({ sessionKey });
|
|
246
|
-
let insights = '';
|
|
247
|
-
if (rawMessages.assistantTexts && Array.isArray(rawMessages.assistantTexts)) {
|
|
248
|
-
insights = rawMessages.assistantTexts.join('\n');
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
const messages = rawMessages.messages || [];
|
|
252
|
-
const lastMessage = messages[messages.length - 1];
|
|
253
|
-
if (typeof lastMessage?.content === 'string') {
|
|
254
|
-
insights = lastMessage.content;
|
|
255
|
-
}
|
|
256
|
-
else if (Array.isArray(lastMessage?.content)) {
|
|
257
|
-
insights = lastMessage.content.filter((c) => c.type === 'text').map((c) => c.text).join('\n');
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
if (insights.includes('REFLECTION_OK')) {
|
|
261
|
-
return {
|
|
262
|
-
content: [{
|
|
263
|
-
type: 'text',
|
|
264
|
-
text: '✅ 反思完成:当前任务逻辑严密,未发现显著问题。'
|
|
265
|
-
}]
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
if (eventLog && sessionId) {
|
|
269
|
-
eventLog.recordDeepReflection(sessionId, {
|
|
270
|
-
modelId: model_id || 'auto-select',
|
|
271
|
-
modelSelectionMode: model_id ? 'manual' : 'auto',
|
|
272
|
-
depth,
|
|
273
|
-
contextPreview: context.substring(0, 200),
|
|
274
|
-
resultPreview: insights.substring(0, 300),
|
|
275
|
-
durationMs: duration,
|
|
276
|
-
passed: true,
|
|
277
|
-
timeout: false
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
// Write to reflection log and cleanup old entries
|
|
281
|
-
try {
|
|
282
|
-
writeToReflectionLog(effectiveWorkspaceDir, context, insights, model_id, depth);
|
|
283
|
-
cleanupReflectionLog(effectiveWorkspaceDir);
|
|
284
|
-
}
|
|
285
|
-
catch (logErr) {
|
|
286
|
-
safeLog(api, 'warn', `[DeepReflect] Failed to write reflection log: ${String(logErr)}`);
|
|
287
|
-
}
|
|
288
|
-
return {
|
|
289
|
-
content: [{
|
|
290
|
-
type: 'text',
|
|
291
|
-
text: `
|
|
292
|
-
# 💎 Deep Reflection Insights
|
|
293
|
-
---
|
|
294
|
-
**Selected Model(s)**: ${model_id || 'auto-select'}
|
|
295
|
-
**Reflection Depth**: ${depth}
|
|
296
|
-
**Analysis Duration**: ${(duration / 1000).toFixed(1)}s
|
|
297
|
-
|
|
298
|
-
${insights}
|
|
299
|
-
|
|
300
|
-
---
|
|
301
|
-
*Generated by Principles Disciple Meta-Cognitive Engine*
|
|
302
|
-
`.trim()
|
|
303
|
-
}]
|
|
304
|
-
};
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
throw new Error(`Subagent status: ${finalStatus.status}`);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
catch (err) {
|
|
311
|
-
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
312
|
-
safeLog(api, 'error', `[DeepReflect] Reflection failed: ${errorMsg}`);
|
|
313
|
-
if (eventLog && sessionId) {
|
|
314
|
-
eventLog.recordDeepReflection(sessionId, {
|
|
315
|
-
modelId: model_id || 'auto-select',
|
|
316
|
-
modelSelectionMode: model_id ? 'manual' : 'auto',
|
|
317
|
-
depth,
|
|
318
|
-
contextPreview: context.substring(0, 200),
|
|
319
|
-
durationMs: 0,
|
|
320
|
-
passed: false,
|
|
321
|
-
timeout: errorMsg.toLowerCase().includes('timeout'),
|
|
322
|
-
error: errorMsg
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
if (errorMsg === 'API throw')
|
|
326
|
-
throw err;
|
|
327
|
-
return {
|
|
328
|
-
content: [{
|
|
329
|
-
type: 'text',
|
|
330
|
-
text: `❌ 反思执行失败: ${errorMsg}。请检查 API 配置或网络连接。`
|
|
331
|
-
}]
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
finally {
|
|
335
|
-
if (api.runtime.subagent)
|
|
336
|
-
await api.runtime.subagent.deleteSession({ sessionKey }).catch(() => { });
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
// Legacy export for backward compatibility with tests that call execute directly
|
|
342
|
-
export const deepReflectTool = {
|
|
343
|
-
name: 'deep_reflect',
|
|
344
|
-
description: '执行深层次的元认知反思,分析当前任务的潜在风险、逻辑漏洞或架构改进点。',
|
|
345
|
-
parameters: Type.Object({
|
|
346
|
-
context: Type.String({ description: '需要反思的任务上下文、代码片段或当前遇到的困难。' }),
|
|
347
|
-
depth: Type.Optional(Type.Number({ description: '反思深度 (1-3)。1: 快速扫描, 2: 均衡分析, 3: 彻底解构。默认为 2。', minimum: 1, maximum: 3 })),
|
|
348
|
-
model_id: Type.Optional(Type.String({ description: '可选:强制指定使用的思维模型 ID。' }))
|
|
349
|
-
}),
|
|
350
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { OpenClawPluginApi } from '../openclaw-sdk.js';
|
|
2
|
-
/**
|
|
3
|
-
* 加载模型索引并返回格式化后的字符串
|
|
4
|
-
*
|
|
5
|
-
* @param workspaceDir 工作区目录
|
|
6
|
-
* @param api OpenClaw 插件 API
|
|
7
|
-
* @returns 格式化后的模型索引内容或默认消息
|
|
8
|
-
*/
|
|
9
|
-
export declare function loadModelIndex(workspaceDir: string, api?: OpenClawPluginApi): string;
|
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Event types for structured logging and daily statistics.
|
|
3
|
-
*/
|
|
4
|
-
export type EventType = 'tool_call' | 'pain_signal' | 'rule_match' | 'rule_promotion' | 'hook_execution' | 'gate_block' | 'gate_bypass' | 'plan_approval' | 'evolution_task' | 'deep_reflection' | 'empathy_rollback' | 'error' | 'warn';
|
|
5
|
-
export type EventCategory = 'success' | 'failure' | 'detected' | 'blocked' | 'bypassed' | 'approved' | 'enqueued' | 'completed' | 'promoted' | 'passed' | 'changed' | 'rolled_back';
|
|
6
|
-
/**
|
|
7
|
-
* Base event structure for JSONL logging.
|
|
8
|
-
*/
|
|
9
|
-
export interface EventLogEntry {
|
|
10
|
-
/** ISO timestamp */
|
|
11
|
-
ts: string;
|
|
12
|
-
/** Date for partitioning (YYYY-MM-DD) */
|
|
13
|
-
date: string;
|
|
14
|
-
/** Event type */
|
|
15
|
-
type: EventType;
|
|
16
|
-
/** Event category */
|
|
17
|
-
category: EventCategory;
|
|
18
|
-
/** Session identifier */
|
|
19
|
-
sessionId?: string;
|
|
20
|
-
/** Workspace directory */
|
|
21
|
-
workspaceDir?: string;
|
|
22
|
-
/** Event-specific data */
|
|
23
|
-
data: Record<string, unknown>;
|
|
24
|
-
}
|
|
25
|
-
export interface ToolCallEventData {
|
|
26
|
-
toolName: string;
|
|
27
|
-
filePath?: string;
|
|
28
|
-
error?: string;
|
|
29
|
-
errorType?: string;
|
|
30
|
-
gfi?: number;
|
|
31
|
-
consecutiveErrors?: number;
|
|
32
|
-
exitCode?: number;
|
|
33
|
-
}
|
|
34
|
-
export interface PainSignalEventData {
|
|
35
|
-
score: number;
|
|
36
|
-
source: string;
|
|
37
|
-
eventId?: string;
|
|
38
|
-
reason?: string;
|
|
39
|
-
isRisky?: boolean;
|
|
40
|
-
origin?: 'assistant_self_report' | 'user_manual' | 'system_infer';
|
|
41
|
-
severity?: 'mild' | 'moderate' | 'severe';
|
|
42
|
-
confidence?: number;
|
|
43
|
-
detection_mode?: 'structured' | 'legacy_tag';
|
|
44
|
-
deduped?: boolean;
|
|
45
|
-
trigger_text_excerpt?: string;
|
|
46
|
-
raw_score?: number;
|
|
47
|
-
calibrated_score?: number;
|
|
48
|
-
}
|
|
49
|
-
export interface RuleMatchEventData {
|
|
50
|
-
ruleId: string;
|
|
51
|
-
layer: 'L1' | 'L2' | 'L3';
|
|
52
|
-
severity: number;
|
|
53
|
-
textPreview: string;
|
|
54
|
-
}
|
|
55
|
-
export interface RulePromotionEventData {
|
|
56
|
-
fingerprint: string;
|
|
57
|
-
ruleId: string;
|
|
58
|
-
phrase: string;
|
|
59
|
-
sampleCount: number;
|
|
60
|
-
avgSimilarity: number;
|
|
61
|
-
}
|
|
62
|
-
export interface HookExecutionEventData {
|
|
63
|
-
hookName: string;
|
|
64
|
-
durationMs?: number;
|
|
65
|
-
error?: string;
|
|
66
|
-
}
|
|
67
|
-
export interface GateBlockEventData {
|
|
68
|
-
toolName: string;
|
|
69
|
-
filePath: string;
|
|
70
|
-
reason: string;
|
|
71
|
-
planStatus?: string;
|
|
72
|
-
/** Source module that triggered the block (for audit trail) */
|
|
73
|
-
blockSource?: string;
|
|
74
|
-
}
|
|
75
|
-
export interface GateBypassEventData {
|
|
76
|
-
toolName: string;
|
|
77
|
-
filePath: string;
|
|
78
|
-
bypassType: 'stage4_architect' | 'whitelisted';
|
|
79
|
-
}
|
|
80
|
-
export interface PlanApprovalEventData {
|
|
81
|
-
toolName: string;
|
|
82
|
-
filePath: string;
|
|
83
|
-
pattern: string;
|
|
84
|
-
planStatus: string;
|
|
85
|
-
}
|
|
86
|
-
export interface EvolutionTaskEventData {
|
|
87
|
-
taskId: string;
|
|
88
|
-
taskType: string;
|
|
89
|
-
reason: string;
|
|
90
|
-
}
|
|
91
|
-
export interface DeepReflectionEventData {
|
|
92
|
-
/** 思维模型 ID (T-01 到 T-09),向后兼容 */
|
|
93
|
-
modelId: string;
|
|
94
|
-
/** 模型选择模式:'manual' = 用户指定 model_id,'auto' = 子智能体自动选择 */
|
|
95
|
-
modelSelectionMode: 'manual' | 'auto';
|
|
96
|
-
/** 反思深度 (1-3) */
|
|
97
|
-
depth: number;
|
|
98
|
-
/** 上下文摘要(前 200 字符) */
|
|
99
|
-
contextPreview: string;
|
|
100
|
-
/** 反思结果摘要 */
|
|
101
|
-
resultPreview?: string;
|
|
102
|
-
/** 执行耗时 (ms) */
|
|
103
|
-
durationMs: number;
|
|
104
|
-
/** 是否通过(未发现显著问题) */
|
|
105
|
-
passed: boolean;
|
|
106
|
-
/** 是否超时 */
|
|
107
|
-
timeout: boolean;
|
|
108
|
-
/** 错误信息 */
|
|
109
|
-
error?: string;
|
|
110
|
-
/** 输出长度 */
|
|
111
|
-
outputLength?: number;
|
|
112
|
-
/** 置信度(从输出中提取) */
|
|
113
|
-
confidence?: 'LOW' | 'MEDIUM' | 'HIGH';
|
|
114
|
-
/** 发现的盲点数量 */
|
|
115
|
-
blindSpotsCount?: number;
|
|
116
|
-
/** 发现的风险数量 */
|
|
117
|
-
risksCount?: number;
|
|
118
|
-
}
|
|
119
|
-
export interface EmpathyRollbackEventData {
|
|
120
|
-
/** Event ID being rolled back */
|
|
121
|
-
eventId: string;
|
|
122
|
-
/** Original penalty score that was applied */
|
|
123
|
-
originalScore: number;
|
|
124
|
-
/** Session ID where the original event occurred */
|
|
125
|
-
originalSessionId?: string;
|
|
126
|
-
/** Reason for rollback (manual, false_positive, etc.) */
|
|
127
|
-
reason: string;
|
|
128
|
-
/** Who initiated the rollback */
|
|
129
|
-
triggeredBy: 'user_command' | 'natural_language' | 'system';
|
|
130
|
-
}
|
|
131
|
-
export interface ToolCallStats {
|
|
132
|
-
total: number;
|
|
133
|
-
success: number;
|
|
134
|
-
failure: number;
|
|
135
|
-
byTool: Record<string, {
|
|
136
|
-
success: number;
|
|
137
|
-
failure: number;
|
|
138
|
-
}>;
|
|
139
|
-
}
|
|
140
|
-
export interface ErrorStats {
|
|
141
|
-
total: number;
|
|
142
|
-
byType: Record<string, number>;
|
|
143
|
-
byTool: Record<string, number>;
|
|
144
|
-
}
|
|
145
|
-
export interface PainStats {
|
|
146
|
-
signalsDetected: number;
|
|
147
|
-
signalsBySource: Record<string, number>;
|
|
148
|
-
rulesMatched: Record<string, number>;
|
|
149
|
-
candidatesPromoted: number;
|
|
150
|
-
avgScore: number;
|
|
151
|
-
maxScore: number;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Empathy Engine event statistics for tracking emotional signals.
|
|
155
|
-
* Used for /pd-status empathy card and effectiveness metrics.
|
|
156
|
-
*/
|
|
157
|
-
export interface EmpathyEventStats {
|
|
158
|
-
/** Total empathy events detected (excluding deduped) */
|
|
159
|
-
totalEvents: number;
|
|
160
|
-
/** Events that were deduped (not counted in totalEvents) */
|
|
161
|
-
dedupedCount: number;
|
|
162
|
-
/** Dedupe hit rate (dedupedCount / (totalEvents + dedupedCount)) */
|
|
163
|
-
dedupeHitRate: number;
|
|
164
|
-
/** Total penalty score applied */
|
|
165
|
-
totalPenaltyScore: number;
|
|
166
|
-
/** Score rolled back via manual rollback */
|
|
167
|
-
rolledBackScore: number;
|
|
168
|
-
/** Number of rollback operations */
|
|
169
|
-
rollbackCount: number;
|
|
170
|
-
/** Events by severity level */
|
|
171
|
-
bySeverity: {
|
|
172
|
-
mild: number;
|
|
173
|
-
moderate: number;
|
|
174
|
-
severe: number;
|
|
175
|
-
};
|
|
176
|
-
/** Score by severity level */
|
|
177
|
-
scoreBySeverity: {
|
|
178
|
-
mild: number;
|
|
179
|
-
moderate: number;
|
|
180
|
-
severe: number;
|
|
181
|
-
};
|
|
182
|
-
/** Events by detection mode */
|
|
183
|
-
byDetectionMode: {
|
|
184
|
-
structured: number;
|
|
185
|
-
legacy_tag: number;
|
|
186
|
-
};
|
|
187
|
-
/** Events by origin */
|
|
188
|
-
byOrigin: {
|
|
189
|
-
assistant_self_report: number;
|
|
190
|
-
user_manual: number;
|
|
191
|
-
system_infer: number;
|
|
192
|
-
};
|
|
193
|
-
/** Confidence distribution */
|
|
194
|
-
confidenceDistribution: {
|
|
195
|
-
high: number;
|
|
196
|
-
medium: number;
|
|
197
|
-
low: number;
|
|
198
|
-
};
|
|
199
|
-
/** Daily trend (last 7 days) */
|
|
200
|
-
dailyTrend: Array<{
|
|
201
|
-
date: string;
|
|
202
|
-
count: number;
|
|
203
|
-
score: number;
|
|
204
|
-
}>;
|
|
205
|
-
}
|
|
206
|
-
export interface GfiStats {
|
|
207
|
-
peak: number;
|
|
208
|
-
samples: number;
|
|
209
|
-
total: number;
|
|
210
|
-
resetCount: number;
|
|
211
|
-
hourlyDistribution: number[];
|
|
212
|
-
}
|
|
213
|
-
export interface EvolutionStats {
|
|
214
|
-
tasksEnqueued: number;
|
|
215
|
-
tasksCompleted: number;
|
|
216
|
-
rulesPromoted: number;
|
|
217
|
-
}
|
|
218
|
-
export interface HookStats {
|
|
219
|
-
byType: Record<string, number>;
|
|
220
|
-
errors: number;
|
|
221
|
-
totalDurationMs: number;
|
|
222
|
-
}
|
|
223
|
-
export interface DeepReflectionStats {
|
|
224
|
-
/** 总调用次数 */
|
|
225
|
-
totalCalls: number;
|
|
226
|
-
/** 通过次数(未发现问题) */
|
|
227
|
-
passedCount: number;
|
|
228
|
-
/** 发现问题的次数 */
|
|
229
|
-
issuesFoundCount: number;
|
|
230
|
-
/** 超时次数 */
|
|
231
|
-
timeoutCount: number;
|
|
232
|
-
/** 错误次数 */
|
|
233
|
-
errorCount: number;
|
|
234
|
-
/** 按模型选择模式统计 */
|
|
235
|
-
bySelectionMode: {
|
|
236
|
-
manual: {
|
|
237
|
-
count: number;
|
|
238
|
-
avgDurationMs: number;
|
|
239
|
-
passedCount: number;
|
|
240
|
-
};
|
|
241
|
-
auto: {
|
|
242
|
-
count: number;
|
|
243
|
-
avgDurationMs: number;
|
|
244
|
-
passedCount: number;
|
|
245
|
-
};
|
|
246
|
-
};
|
|
247
|
-
/** 按模型统计(向后兼容,仅记录手动指定的 model_id) */
|
|
248
|
-
byModel: Record<string, {
|
|
249
|
-
count: number;
|
|
250
|
-
avgDurationMs: number;
|
|
251
|
-
passedCount: number;
|
|
252
|
-
}>;
|
|
253
|
-
/** 按深度统计 */
|
|
254
|
-
byDepth: Record<number, number>;
|
|
255
|
-
/** 总耗时 */
|
|
256
|
-
totalDurationMs: number;
|
|
257
|
-
/** 平均耗时 */
|
|
258
|
-
avgDurationMs: number;
|
|
259
|
-
/** 发现的总盲点数 */
|
|
260
|
-
totalBlindSpots: number;
|
|
261
|
-
/** 发现的总风险数 */
|
|
262
|
-
totalRisks: number;
|
|
263
|
-
/** 置信度分布 */
|
|
264
|
-
confidenceDistribution: {
|
|
265
|
-
LOW: number;
|
|
266
|
-
MEDIUM: number;
|
|
267
|
-
HIGH: number;
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Daily aggregated statistics.
|
|
272
|
-
*/
|
|
273
|
-
export interface DailyStats {
|
|
274
|
-
/** Date (YYYY-MM-DD) */
|
|
275
|
-
date: string;
|
|
276
|
-
/** Timestamp when stats were created */
|
|
277
|
-
createdAt: string;
|
|
278
|
-
/** Timestamp when stats were last updated */
|
|
279
|
-
updatedAt: string;
|
|
280
|
-
/** Tool call statistics */
|
|
281
|
-
tools: {
|
|
282
|
-
total: number;
|
|
283
|
-
success: number;
|
|
284
|
-
failure: number;
|
|
285
|
-
};
|
|
286
|
-
/** Tool call statistics */
|
|
287
|
-
toolCalls: ToolCallStats;
|
|
288
|
-
/** Error statistics */
|
|
289
|
-
errors: ErrorStats;
|
|
290
|
-
/** Pain signal statistics */
|
|
291
|
-
pain: PainStats;
|
|
292
|
-
/** Empathy Engine event statistics */
|
|
293
|
-
empathy: EmpathyEventStats;
|
|
294
|
-
/** GFI statistics */
|
|
295
|
-
gfi: GfiStats;
|
|
296
|
-
/** Evolution statistics */
|
|
297
|
-
evolution: EvolutionStats;
|
|
298
|
-
/** Hook execution statistics */
|
|
299
|
-
hooks: HookStats;
|
|
300
|
-
/** Deep Reflection statistics */
|
|
301
|
-
deepReflection: DeepReflectionStats;
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Creates an empty daily stats object.
|
|
305
|
-
*/
|
|
306
|
-
export declare function createEmptyDailyStats(date: string): DailyStats;
|