principles-disciple 1.126.0 → 1.128.0
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/dist/commands/archive-impl.d.ts +18 -0
- package/dist/commands/archive-impl.js +105 -0
- package/dist/commands/capabilities.d.ts +3 -0
- package/dist/commands/capabilities.js +76 -0
- package/dist/commands/context.d.ts +5 -0
- package/{src/commands/context.ts → dist/commands/context.js} +34 -83
- package/dist/commands/disable-impl.d.ts +22 -0
- package/dist/commands/disable-impl.js +118 -0
- package/dist/commands/evolution-status.d.ts +4 -0
- package/dist/commands/evolution-status.js +187 -0
- package/dist/commands/export.d.ts +2 -0
- package/dist/commands/export.js +53 -0
- package/dist/commands/focus.d.ts +14 -0
- package/dist/commands/focus.js +443 -0
- package/dist/commands/pain.d.ts +6 -0
- package/{src/commands/pain.ts → dist/commands/pain.js} +137 -188
- package/dist/commands/principle-rollback.d.ts +4 -0
- package/dist/commands/principle-rollback.js +26 -0
- package/dist/commands/promote-impl.d.ts +22 -0
- package/dist/commands/promote-impl.js +194 -0
- package/dist/commands/rollback-impl.d.ts +32 -0
- package/dist/commands/rollback-impl.js +180 -0
- package/dist/commands/rollback.d.ts +19 -0
- package/{src/commands/rollback.ts → dist/commands/rollback.js} +10 -53
- package/dist/commands/samples.d.ts +2 -0
- package/dist/commands/samples.js +58 -0
- package/dist/commands/strategy.d.ts +2 -0
- package/dist/commands/strategy.js +16 -0
- package/dist/commands/thinking-os.d.ts +2 -0
- package/{src/commands/thinking-os.ts → dist/commands/thinking-os.js} +35 -58
- package/dist/commands/workflow-debug.d.ts +6 -0
- package/{src/commands/workflow-debug.ts → dist/commands/workflow-debug.js} +13 -33
- package/dist/config/defaults/runtime.d.ts +58 -0
- package/{src/config/defaults/runtime.ts → dist/config/defaults/runtime.js} +4 -41
- package/dist/config/errors.d.ts +86 -0
- package/dist/config/errors.js +107 -0
- package/{src/config/index.ts → dist/config/index.d.ts} +1 -2
- package/dist/config/index.js +7 -0
- package/dist/constants/diagnostician.d.ts +12 -0
- package/{src/constants/diagnostician.ts → dist/constants/diagnostician.js} +0 -1
- package/dist/constants/tools.d.ts +17 -0
- package/dist/constants/tools.js +53 -0
- package/dist/core/__tests__/focus-history.test.d.ts +1 -0
- package/dist/core/__tests__/focus-history.test.js +160 -0
- package/dist/core/bootstrap-rules.d.ts +50 -0
- package/dist/core/bootstrap-rules.js +187 -0
- package/dist/core/code-implementation-storage.d.ts +71 -0
- package/dist/core/code-implementation-storage.js +139 -0
- package/dist/core/config-health.d.ts +27 -0
- package/dist/core/config-health.js +60 -0
- package/dist/core/config-service.d.ts +15 -0
- package/{src/core/config-service.ts → dist/core/config-service.js} +4 -7
- package/dist/core/config.d.ts +111 -0
- package/{src/core/config.ts → dist/core/config.js} +46 -146
- package/dist/core/control-ui-db.d.ts +106 -0
- package/dist/core/control-ui-db.js +309 -0
- package/dist/core/correction-cue-learner.d.ts +33 -0
- package/dist/core/correction-cue-learner.js +184 -0
- package/dist/core/correction-types.d.ts +3 -0
- package/dist/core/correction-types.js +1 -0
- package/dist/core/detection-funnel.d.ts +33 -0
- package/{src/core/detection-funnel.ts → dist/core/detection-funnel.js} +17 -37
- package/dist/core/detection-service.d.ts +15 -0
- package/{src/core/detection-service.ts → dist/core/detection-service.js} +4 -7
- package/dist/core/dictionary-service.d.ts +15 -0
- package/{src/core/dictionary-service.ts → dist/core/dictionary-service.js} +4 -7
- package/dist/core/dictionary.d.ts +38 -0
- package/{src/core/dictionary.ts → dist/core/dictionary.js} +33 -59
- package/dist/core/empathy-keyword-matcher.d.ts +5 -0
- package/dist/core/empathy-keyword-matcher.js +40 -0
- package/dist/core/empathy-types.d.ts +2 -0
- package/dist/core/empathy-types.js +1 -0
- package/dist/core/event-log.d.ts +90 -0
- package/dist/core/event-log.js +702 -0
- package/dist/core/evolution-engine.d.ts +119 -0
- package/dist/core/evolution-engine.js +460 -0
- package/dist/core/evolution-logger.d.ts +137 -0
- package/dist/core/evolution-logger.js +261 -0
- package/dist/core/evolution-migration.d.ts +5 -0
- package/dist/core/evolution-migration.js +65 -0
- package/dist/core/evolution-reducer.d.ts +124 -0
- package/dist/core/evolution-reducer.js +730 -0
- package/dist/core/evolution-types.d.ts +50 -0
- package/dist/core/evolution-types.js +11 -0
- package/dist/core/external-training-contract.d.ts +276 -0
- package/dist/core/external-training-contract.js +269 -0
- package/dist/core/file-store.d.ts +41 -0
- package/dist/core/file-store.js +46 -0
- package/dist/core/focus-history.d.ts +50 -0
- package/dist/core/focus-history.js +574 -0
- package/dist/core/hygiene/tracker.d.ts +22 -0
- package/dist/core/hygiene/tracker.js +110 -0
- package/dist/core/init.d.ts +30 -0
- package/{src/core/init.ts → dist/core/init.js} +87 -118
- package/dist/core/local-worker-routing.d.ts +124 -0
- package/dist/core/local-worker-routing.js +216 -0
- package/dist/core/migration.d.ts +6 -0
- package/{src/core/migration.ts → dist/core/migration.js} +10 -18
- package/dist/core/model-deployment-registry.d.ts +218 -0
- package/dist/core/model-deployment-registry.js +502 -0
- package/dist/core/model-training-registry.d.ts +295 -0
- package/dist/core/model-training-registry.js +474 -0
- package/dist/core/observability.d.ts +40 -0
- package/dist/core/observability.js +164 -0
- package/dist/core/pain-diagnostic-gate.d.ts +36 -0
- package/dist/core/pain-diagnostic-gate.js +105 -0
- package/dist/core/pain.d.ts +87 -0
- package/dist/core/pain.js +223 -0
- package/dist/core/path-resolver.d.ts +60 -0
- package/{src/core/path-resolver.ts → dist/core/path-resolver.js} +41 -131
- package/dist/core/paths.d.ts +60 -0
- package/{src/core/paths.ts → dist/core/paths.js} +4 -13
- package/dist/core/pd-config-loader.d.ts +96 -0
- package/dist/core/pd-config-loader.js +307 -0
- package/dist/core/pd-task-reconciler.d.ts +89 -0
- package/dist/core/pd-task-reconciler.js +262 -0
- package/dist/core/pd-task-service.d.ts +2 -0
- package/dist/core/pd-task-service.js +32 -0
- package/dist/core/pd-task-store.d.ts +5 -0
- package/dist/core/pd-task-store.js +62 -0
- package/dist/core/pd-task-types.d.ts +8 -0
- package/dist/core/pd-task-types.js +2 -0
- package/dist/core/principle-compiler/__tests__/compiler-replay-gate.test.d.ts +1 -0
- package/dist/core/principle-compiler/__tests__/compiler-replay-gate.test.js +132 -0
- package/dist/core/principle-compiler/code-validator.d.ts +14 -0
- package/dist/core/principle-compiler/code-validator.js +86 -0
- package/dist/core/principle-compiler/compiler.d.ts +45 -0
- package/dist/core/principle-compiler/compiler.js +287 -0
- package/{src/core/principle-compiler/index.ts → dist/core/principle-compiler/index.d.ts} +0 -1
- package/dist/core/principle-compiler/index.js +10 -0
- package/dist/core/principle-compiler/ledger-registrar.d.ts +28 -0
- package/dist/core/principle-compiler/ledger-registrar.js +95 -0
- package/{src/core/principle-compiler/template-generator.ts → dist/core/principle-compiler/template-generator.d.ts} +0 -1
- package/dist/core/principle-compiler/template-generator.js +7 -0
- package/{src/core/principle-injection.ts → dist/core/principle-injection.d.ts} +1 -7
- package/dist/core/principle-injection.js +10 -0
- package/dist/core/principle-internalization/filesystem-lifecycle-datasource.d.ts +15 -0
- package/dist/core/principle-internalization/filesystem-lifecycle-datasource.js +34 -0
- package/dist/core/principle-internalization/lifecycle-read-model.d.ts +17 -0
- package/{src/core/principle-internalization/lifecycle-read-model.ts → dist/core/principle-internalization/lifecycle-read-model.js} +2 -21
- package/dist/core/principle-internalization/lifecycle-refresh.d.ts +2 -0
- package/dist/core/principle-internalization/lifecycle-refresh.js +4 -0
- package/dist/core/principle-internalization/principle-lifecycle-service.d.ts +28 -0
- package/dist/core/principle-internalization/principle-lifecycle-service.js +89 -0
- package/dist/core/principle-training-state.d.ts +47 -0
- package/dist/core/principle-training-state.js +113 -0
- package/dist/core/principle-tree-ledger-adapter.d.ts +32 -0
- package/dist/core/principle-tree-ledger-adapter.js +125 -0
- package/dist/core/principle-tree-ledger.d.ts +82 -0
- package/dist/core/principle-tree-ledger.js +527 -0
- package/dist/core/profile.d.ts +62 -0
- package/dist/core/profile.js +211 -0
- package/dist/core/promotion-gate.d.ts +243 -0
- package/dist/core/promotion-gate.js +554 -0
- package/dist/core/reflection/reflection-context.d.ts +31 -0
- package/dist/core/reflection/reflection-context.js +91 -0
- package/dist/core/replay-engine.d.ts +12 -0
- package/dist/core/replay-engine.js +82 -0
- package/dist/core/risk-calculator.d.ts +22 -0
- package/{src/core/risk-calculator.ts → dist/core/risk-calculator.js} +19 -49
- package/{src/core/rule-host-helpers.ts → dist/core/rule-host-helpers.d.ts} +0 -1
- package/dist/core/rule-host-helpers.js +7 -0
- package/{src/core/rule-host-types.ts → dist/core/rule-host-types.d.ts} +1 -8
- package/dist/core/rule-host-types.js +7 -0
- package/dist/core/rule-host.d.ts +86 -0
- package/dist/core/rule-host.js +311 -0
- package/dist/core/rule-implementation-runtime.d.ts +18 -0
- package/dist/core/rule-implementation-runtime.js +112 -0
- package/dist/core/runtime-v2-prompt-activation-reader.d.ts +22 -0
- package/dist/core/runtime-v2-prompt-activation-reader.js +99 -0
- package/{src/core/schema/db-types.ts → dist/core/schema/db-types.d.ts} +4 -9
- package/dist/core/schema/db-types.js +5 -0
- package/{src/core/schema/index.ts → dist/core/schema/index.d.ts} +1 -10
- package/dist/core/schema/index.js +15 -0
- package/dist/core/schema/migration-runner.d.ts +53 -0
- package/dist/core/schema/migration-runner.js +170 -0
- package/dist/core/schema/migrations/001-init-trajectory.d.ts +6 -0
- package/{src/core/schema/migrations/001-init-trajectory.ts → dist/core/schema/migrations/001-init-trajectory.js} +38 -56
- package/dist/core/schema/migrations/002-init-central.d.ts +5 -0
- package/{src/core/schema/migrations/002-init-central.ts → dist/core/schema/migrations/002-init-central.js} +27 -41
- package/dist/core/schema/migrations/003-init-workflow.d.ts +5 -0
- package/{src/core/schema/migrations/003-init-workflow.ts → dist/core/schema/migrations/003-init-workflow.js} +16 -21
- package/dist/core/schema/migrations/004-add-thinking-and-gfi.d.ts +8 -0
- package/{src/core/schema/migrations/004-add-thinking-and-gfi.ts → dist/core/schema/migrations/004-add-thinking-and-gfi.js} +19 -27
- package/{src/core/schema/migrations/index.ts → dist/core/schema/migrations/index.d.ts} +1 -16
- package/dist/core/schema/migrations/index.js +27 -0
- package/dist/core/schema/schema-definitions.d.ts +46 -0
- package/{src/core/schema/schema-definitions.ts → dist/core/schema/schema-definitions.js} +242 -291
- package/dist/core/session-tracker.d.ts +119 -0
- package/{src/core/session-tracker.ts → dist/core/session-tracker.js} +96 -239
- package/dist/core/shadow-observation-registry.d.ts +217 -0
- package/dist/core/shadow-observation-registry.js +280 -0
- package/dist/core/surface-guard.d.ts +31 -0
- package/dist/core/surface-guard.js +131 -0
- package/dist/core/system-logger.d.ts +8 -0
- package/{src/core/system-logger.ts → dist/core/system-logger.js} +20 -34
- package/dist/core/thinking-models.d.ts +70 -0
- package/dist/core/thinking-models.js +300 -0
- package/dist/core/thinking-os-parser.d.ts +35 -0
- package/dist/core/thinking-os-parser.js +123 -0
- package/dist/core/trajectory-types.d.ts +220 -0
- package/dist/core/trajectory-types.js +8 -0
- package/dist/core/trajectory.d.ts +242 -0
- package/dist/core/trajectory.js +1500 -0
- package/dist/core/workflow-funnel-loader.d.ts +72 -0
- package/dist/core/workflow-funnel-loader.js +135 -0
- package/dist/core/workspace-context.d.ts +111 -0
- package/{src/core/workspace-context.ts → dist/core/workspace-context.js} +50 -105
- package/dist/core/workspace-dir-validation.d.ts +11 -0
- package/dist/core/workspace-dir-validation.js +37 -0
- package/dist/core/workspace-guidance-migrator.d.ts +12 -0
- package/{src/core/workspace-guidance-migrator.ts → dist/core/workspace-guidance-migrator.js} +21 -59
- package/dist/hooks/after-tool-call-helpers.d.ts +89 -0
- package/dist/hooks/after-tool-call-helpers.js +475 -0
- package/dist/hooks/after-tool-call-types.d.ts +86 -0
- package/dist/hooks/after-tool-call-types.js +13 -0
- package/dist/hooks/gate-block-helper.d.ts +44 -0
- package/dist/hooks/gate-block-helper.js +209 -0
- package/dist/hooks/gate.d.ts +16 -0
- package/dist/hooks/gate.js +381 -0
- package/dist/hooks/lifecycle.d.ts +5 -0
- package/dist/hooks/lifecycle.js +287 -0
- package/dist/hooks/llm.d.ts +13 -0
- package/{src/hooks/llm.ts → dist/hooks/llm.js} +63 -117
- package/dist/hooks/message-sanitize.d.ts +24 -0
- package/dist/hooks/message-sanitize.js +77 -0
- package/dist/hooks/pain.d.ts +33 -0
- package/dist/hooks/pain.js +294 -0
- package/dist/hooks/prompt.d.ts +52 -0
- package/dist/hooks/prompt.js +930 -0
- package/dist/hooks/raw-observation-adapter.d.ts +57 -0
- package/dist/hooks/raw-observation-adapter.js +170 -0
- package/dist/hooks/raw-observation-types.d.ts +62 -0
- package/dist/hooks/raw-observation-types.js +15 -0
- package/dist/hooks/subagent.d.ts +9 -0
- package/{src/hooks/subagent.ts → dist/hooks/subagent.js} +20 -60
- package/dist/hooks/trajectory-collector.d.ts +25 -0
- package/dist/hooks/trajectory-collector.js +225 -0
- package/dist/hooks/trajectory-evidence.d.ts +11 -0
- package/dist/hooks/trajectory-evidence.js +88 -0
- package/dist/hooks/triage-adapter.d.ts +58 -0
- package/{src/hooks/triage-adapter.ts → dist/hooks/triage-adapter.js} +36 -68
- package/dist/hooks/trigger-cooldown-tracker.d.ts +30 -0
- package/dist/hooks/trigger-cooldown-tracker.js +55 -0
- package/dist/i18n/commands.d.ts +26 -0
- package/dist/i18n/commands.js +96 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +829 -0
- package/dist/openclaw-sdk.d.ts +293 -0
- package/dist/openclaw-sdk.js +4 -0
- package/dist/service/central-database.d.ts +138 -0
- package/dist/service/central-database.js +731 -0
- package/dist/service/central-sync-service.d.ts +8 -0
- package/dist/service/central-sync-service.js +71 -0
- package/dist/service/correction-observer-service.d.ts +19 -0
- package/{src/service/correction-observer-service.ts → dist/service/correction-observer-service.js} +36 -76
- package/dist/service/evolution-dedup.d.ts +27 -0
- package/{src/service/evolution-dedup.ts → dist/service/evolution-dedup.js} +11 -31
- package/{src/service/evolution-queue-migration.ts → dist/service/evolution-queue-migration.d.ts} +15 -62
- package/dist/service/evolution-queue-migration.js +53 -0
- package/dist/service/evolution-worker.d.ts +103 -0
- package/{src/service/evolution-worker.ts → dist/service/evolution-worker.js} +169 -331
- package/dist/service/internalization-auto-consumer-service.d.ts +8 -0
- package/dist/service/internalization-auto-consumer-service.js +322 -0
- package/dist/service/keyword-optimization-service.d.ts +44 -0
- package/dist/service/keyword-optimization-service.js +137 -0
- package/dist/service/phase3-input-filter.d.ts +73 -0
- package/dist/service/phase3-input-filter.js +172 -0
- package/dist/service/queue-io.d.ts +30 -0
- package/dist/service/queue-io.js +79 -0
- package/{src/service/queue-migration.ts → dist/service/queue-migration.d.ts} +6 -45
- package/dist/service/queue-migration.js +56 -0
- package/dist/service/runtime-summary-service.d.ts +158 -0
- package/dist/service/runtime-summary-service.js +636 -0
- package/dist/service/subagent-workflow/subagent-error-utils.d.ts +8 -0
- package/{src/service/subagent-workflow/subagent-error-utils.ts → dist/service/subagent-workflow/subagent-error-utils.js} +3 -6
- package/{src/service/subagent-workflow/types.ts → dist/service/subagent-workflow/types.d.ts} +17 -80
- package/dist/service/subagent-workflow/types.js +11 -0
- package/dist/service/subagent-workflow/workflow-store.d.ts +30 -0
- package/{src/service/subagent-workflow/workflow-store.ts → dist/service/subagent-workflow/workflow-store.js} +43 -108
- package/dist/service/trajectory-service.d.ts +2 -0
- package/dist/service/trajectory-service.js +16 -0
- package/dist/service/workflow-watchdog.d.ts +23 -0
- package/dist/service/workflow-watchdog.js +103 -0
- package/dist/types/event-types.d.ts +2 -0
- package/dist/types/event-types.js +1 -0
- package/dist/types/hygiene-types.d.ts +2 -0
- package/dist/types/hygiene-types.js +1 -0
- package/{src/types/principle-tree-schema.ts → dist/types/principle-tree-schema.d.ts} +2 -25
- package/dist/types/principle-tree-schema.js +24 -0
- package/dist/types/queue.d.ts +2 -0
- package/dist/types/queue.js +1 -0
- package/dist/types/runtime-summary.d.ts +1 -0
- package/dist/types/runtime-summary.js +1 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.js +16 -0
- package/dist/utils/file-lock.d.ts +68 -0
- package/dist/utils/file-lock.js +310 -0
- package/dist/utils/hashing.d.ts +9 -0
- package/{src/utils/hashing.ts → dist/utils/hashing.js} +4 -6
- package/dist/utils/io.d.ts +11 -0
- package/dist/utils/io.js +174 -0
- package/dist/utils/node-vm-polyfill.d.ts +9 -0
- package/{src/utils/node-vm-polyfill.ts → dist/utils/node-vm-polyfill.js} +0 -2
- package/dist/utils/retry.d.ts +210 -0
- package/dist/utils/retry.js +375 -0
- package/dist/utils/session-key.d.ts +10 -0
- package/{src/utils/session-key.ts → dist/utils/session-key.js} +5 -4
- package/dist/utils/shadow-fingerprint.d.ts +16 -0
- package/dist/utils/shadow-fingerprint.js +34 -0
- package/dist/utils/workspace-resolver.d.ts +82 -0
- package/dist/utils/workspace-resolver.js +288 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +8 -2
- package/templates/workspace/.principles/DECISION_POLICY.json +44 -0
- package/templates/workspace/.principles/PRINCIPLES.md +20 -0
- package/templates/workspace/.principles/PROFILE.json +54 -0
- package/templates/workspace/.principles/PROFILE.schema.json +56 -0
- package/templates/workspace/.principles/THINKING_OS.md +65 -0
- package/templates/workspace/.principles/THINKING_OS_ARCHIVE.md +7 -0
- package/templates/workspace/.principles/THINKING_OS_CANDIDATES.md +9 -0
- package/templates/workspace/.principles/models/_INDEX.md +27 -0
- package/templates/workspace/.principles/models/first_principles.md +62 -0
- package/templates/workspace/.principles/models/marketing_4p.md +52 -0
- package/templates/workspace/.principles/models/porter_five.md +63 -0
- package/templates/workspace/.principles/models/swot.md +60 -0
- package/templates/workspace/.principles/models/user_story_map.md +63 -0
- package/templates/workspace/.state/WORKBOARD.json +4 -0
- package/.dependency-cruiser.json +0 -19
- package/ADVANCED_CONFIG_ZH.md +0 -93
- package/AGENT_INSTALL.md +0 -173
- package/AGENT_INSTALL_EN.md +0 -173
- package/CHANGELOG.md +0 -26
- package/INSTALL.md +0 -254
- package/SKILL.md +0 -63
- package/esbuild.config.js +0 -104
- package/src/commands/archive-impl.ts +0 -147
- package/src/commands/capabilities.ts +0 -89
- package/src/commands/disable-impl.ts +0 -159
- package/src/commands/evolution-status.ts +0 -247
- package/src/commands/export.ts +0 -59
- package/src/commands/focus.ts +0 -523
- package/src/commands/principle-rollback.ts +0 -32
- package/src/commands/promote-impl.ts +0 -254
- package/src/commands/rollback-impl.ts +0 -246
- package/src/commands/samples.ts +0 -65
- package/src/commands/strategy.ts +0 -21
- package/src/config/errors.ts +0 -180
- package/src/constants/tools.ts +0 -62
- package/src/core/AGENTS.md +0 -34
- package/src/core/__tests__/focus-history.test.ts +0 -210
- package/src/core/bootstrap-rules.ts +0 -216
- package/src/core/code-implementation-storage.ts +0 -213
- package/src/core/config-health.ts +0 -72
- package/src/core/control-ui-db.ts +0 -454
- package/src/core/correction-cue-learner.ts +0 -239
- package/src/core/correction-types.ts +0 -16
- package/src/core/empathy-keyword-matcher.ts +0 -64
- package/src/core/empathy-types.ts +0 -18
- package/src/core/event-log.ts +0 -787
- package/src/core/evolution-engine.ts +0 -613
- package/src/core/evolution-logger.ts +0 -357
- package/src/core/evolution-migration.ts +0 -77
- package/src/core/evolution-reducer.ts +0 -891
- package/src/core/evolution-types.ts +0 -110
- package/src/core/external-training-contract.ts +0 -530
- package/src/core/file-store.ts +0 -80
- package/src/core/focus-history.ts +0 -763
- package/src/core/hygiene/tracker.ts +0 -122
- package/src/core/local-worker-routing.ts +0 -337
- package/src/core/model-deployment-registry.ts +0 -724
- package/src/core/model-training-registry.ts +0 -815
- package/src/core/observability.ts +0 -242
- package/src/core/pain-diagnostic-gate.ts +0 -169
- package/src/core/pain.ts +0 -309
- package/src/core/pd-config-loader.ts +0 -400
- package/src/core/pd-task-reconciler.ts +0 -380
- package/src/core/pd-task-service.ts +0 -43
- package/src/core/pd-task-store.ts +0 -78
- package/src/core/pd-task-types.ts +0 -24
- package/src/core/principle-compiler/__tests__/compiler-replay-gate.test.ts +0 -174
- package/src/core/principle-compiler/code-validator.ts +0 -93
- package/src/core/principle-compiler/compiler.ts +0 -327
- package/src/core/principle-compiler/ledger-registrar.ts +0 -116
- package/src/core/principle-internalization/filesystem-lifecycle-datasource.ts +0 -42
- package/src/core/principle-internalization/lifecycle-refresh.ts +0 -11
- package/src/core/principle-internalization/principle-lifecycle-service.ts +0 -170
- package/src/core/principle-training-state.ts +0 -177
- package/src/core/principle-tree-ledger-adapter.ts +0 -145
- package/src/core/principle-tree-ledger.ts +0 -725
- package/src/core/profile.ts +0 -228
- package/src/core/promotion-gate.ts +0 -854
- package/src/core/reflection/reflection-context.ts +0 -133
- package/src/core/replay-engine.ts +0 -106
- package/src/core/rule-host.ts +0 -386
- package/src/core/rule-implementation-runtime.ts +0 -145
- package/src/core/runtime-v2-prompt-activation-reader.ts +0 -114
- package/src/core/schema/migration-runner.ts +0 -207
- package/src/core/shadow-observation-registry.ts +0 -508
- package/src/core/surface-guard.ts +0 -188
- package/src/core/thinking-models.ts +0 -377
- package/src/core/thinking-os-parser.ts +0 -165
- package/src/core/trajectory-types.ts +0 -247
- package/src/core/trajectory.ts +0 -1831
- package/src/core/workflow-funnel-loader.ts +0 -195
- package/src/core/workspace-dir-validation.ts +0 -52
- package/src/hooks/AGENTS.md +0 -31
- package/src/hooks/after-tool-call-helpers.ts +0 -601
- package/src/hooks/after-tool-call-types.ts +0 -99
- package/src/hooks/gate-block-helper.ts +0 -265
- package/src/hooks/gate.ts +0 -394
- package/src/hooks/lifecycle.ts +0 -334
- package/src/hooks/message-sanitize.ts +0 -102
- package/src/hooks/pain.ts +0 -358
- package/src/hooks/prompt.ts +0 -1102
- package/src/hooks/raw-observation-adapter.ts +0 -215
- package/src/hooks/raw-observation-types.ts +0 -77
- package/src/hooks/trajectory-collector.ts +0 -253
- package/src/hooks/trajectory-evidence.ts +0 -97
- package/src/hooks/trigger-cooldown-tracker.ts +0 -82
- package/src/i18n/commands.ts +0 -101
- package/src/index.ts +0 -939
- package/src/openclaw-sdk.ts +0 -312
- package/src/service/central-database.ts +0 -936
- package/src/service/central-sync-service.ts +0 -85
- package/src/service/internalization-auto-consumer-service.ts +0 -397
- package/src/service/keyword-optimization-service.ts +0 -169
- package/src/service/phase3-input-filter.ts +0 -237
- package/src/service/queue-io.ts +0 -108
- package/src/service/runtime-summary-service.ts +0 -990
- package/src/service/trajectory-service.ts +0 -16
- package/src/service/workflow-watchdog.ts +0 -125
- package/src/types/event-types.ts +0 -39
- package/src/types/hygiene-types.ts +0 -8
- package/src/types/queue.ts +0 -15
- package/src/types/runtime-summary.ts +0 -5
- package/src/types.ts +0 -53
- package/src/utils/file-lock.ts +0 -394
- package/src/utils/io.ts +0 -176
- package/src/utils/retry.ts +0 -573
- package/src/utils/shadow-fingerprint.ts +0 -42
- package/src/utils/workspace-resolver.ts +0 -393
- package/tests/README.md +0 -120
- package/tests/build-artifacts.test.ts +0 -55
- package/tests/commands/evolution-status.test.ts +0 -511
- package/tests/commands/export.test.ts +0 -78
- package/tests/commands/pain.test.ts +0 -287
- package/tests/commands/samples.test.ts +0 -65
- package/tests/commands/strategy.test.ts +0 -19
- package/tests/commands/thinking-os.test.ts +0 -88
- package/tests/core/bootstrap-rules.test.ts +0 -596
- package/tests/core/code-implementation-storage.test.ts +0 -300
- package/tests/core/code-validator.test.ts +0 -197
- package/tests/core/config-service.test.ts +0 -89
- package/tests/core/config.test.ts +0 -90
- package/tests/core/control-ui-db.test.ts +0 -75
- package/tests/core/core-principle-registry-drift.test.ts +0 -39
- package/tests/core/core-template-guidance.test.ts +0 -21
- package/tests/core/correction-cue-learner.test.ts +0 -345
- package/tests/core/detection-service.test.ts +0 -50
- package/tests/core/dictionary-service.test.ts +0 -116
- package/tests/core/dictionary.test.ts +0 -171
- package/tests/core/empathy-keyword-matcher.test.ts +0 -209
- package/tests/core/event-log.test.ts +0 -484
- package/tests/core/evolution-engine.test.ts +0 -610
- package/tests/core/evolution-logger.test.ts +0 -148
- package/tests/core/evolution-migration.test.ts +0 -374
- package/tests/core/evolution-paths.test.ts +0 -21
- package/tests/core/evolution-reducer.compilation-retry.test.ts +0 -189
- package/tests/core/evolution-reducer.detector-metadata.test.ts +0 -602
- package/tests/core/evolution-types-loop.test.ts +0 -48
- package/tests/core/external-training-contract.test.ts +0 -463
- package/tests/core/file-store.test.ts +0 -102
- package/tests/core/focus-history.test.ts +0 -874
- package/tests/core/init-flatten.test.ts +0 -69
- package/tests/core/init-refactor.test.ts +0 -87
- package/tests/core/init-v1.3.test.ts +0 -46
- package/tests/core/init.test.ts +0 -190
- package/tests/core/ledger-registrar.test.ts +0 -235
- package/tests/core/migration.test.ts +0 -84
- package/tests/core/model-deployment-registry.test.ts +0 -858
- package/tests/core/model-training-registry.test.ts +0 -908
- package/tests/core/observability.test.ts +0 -382
- package/tests/core/pain-diagnostic-gate.test.ts +0 -614
- package/tests/core/pain-score.property.test.ts +0 -19
- package/tests/core/pain.test.ts +0 -132
- package/tests/core/path-resolver.test.ts +0 -57
- package/tests/core/paths-refactor.test.ts +0 -20
- package/tests/core/pd-config-loader.test.ts +0 -407
- package/tests/core/pd-task-store.test.ts +0 -126
- package/tests/core/phase7-rollout-integration.test.ts +0 -477
- package/tests/core/principle-compiler.test.ts +0 -350
- package/tests/core/principle-injection.test.ts +0 -223
- package/tests/core/principle-internalization/deprecated-readiness.test.ts +0 -193
- package/tests/core/principle-internalization/lifecycle-metrics.test.ts +0 -350
- package/tests/core/principle-internalization/lifecycle-routing-policy.test.ts +0 -212
- package/tests/core/principle-internalization/lineage-source-retired.test.ts +0 -56
- package/tests/core/principle-internalization/principle-lifecycle-service.test.ts +0 -189
- package/tests/core/principle-training-state.test.ts +0 -939
- package/tests/core/principle-tree-ledger-adapter.test.ts +0 -253
- package/tests/core/principle-tree-ledger.test.ts +0 -423
- package/tests/core/profile.test.ts +0 -56
- package/tests/core/promotion-gate.test.ts +0 -561
- package/tests/core/queue-purge.test.ts +0 -337
- package/tests/core/reflection-context.test.ts +0 -342
- package/tests/core/regression-v1-9-1.test.ts +0 -266
- package/tests/core/replay-engine.test.ts +0 -165
- package/tests/core/risk-calculator.test.ts +0 -168
- package/tests/core/rule-host-adversarial-output.test.ts +0 -242
- package/tests/core/rule-host-autocorrect-vm.test.ts +0 -163
- package/tests/core/rule-host-helpers.test.ts +0 -120
- package/tests/core/rule-host-resource-bounds.test.ts +0 -231
- package/tests/core/rule-host-sqlite-source.test.ts +0 -720
- package/tests/core/rule-host-unhealthy-visibility.test.ts +0 -261
- package/tests/core/rule-host-validation.test.ts +0 -315
- package/tests/core/rule-implementation-runtime.test.ts +0 -49
- package/tests/core/session-tracker.test.ts +0 -191
- package/tests/core/surface-guard.test.ts +0 -338
- package/tests/core/template-generator.test.ts +0 -101
- package/tests/core/trajectory.test.ts +0 -427
- package/tests/core/workflow-funnel-loader.test.ts +0 -1028
- package/tests/core/workspace-context-factory.test.ts +0 -18
- package/tests/core/workspace-context.test.ts +0 -187
- package/tests/core/workspace-guidance-migrator.test.ts +0 -248
- package/tests/core-anti-growth.test.ts +0 -182
- package/tests/evolution-worker-quarantine.test.ts +0 -400
- package/tests/evolution-worker-slimming.test.ts +0 -380
- package/tests/fixtures/legacy-queue-v1.json +0 -74
- package/tests/fixtures/production-compatibility.test.ts +0 -147
- package/tests/fixtures/production-mock-generator.ts +0 -282
- package/tests/globalSetup.ts +0 -38
- package/tests/hook-workspace-nextaction-contract.test.ts +0 -50
- package/tests/hooks/confirm-first-removal.test.ts +0 -188
- package/tests/hooks/gate-auto-correct-shadow.test.ts +0 -309
- package/tests/hooks/gate-auto-correct.test.ts +0 -664
- package/tests/hooks/gate-block-helper-profile.test.ts +0 -186
- package/tests/hooks/gate-no-path-write-tool.test.ts +0 -171
- package/tests/hooks/gate-rule-host-pipeline.test.ts +0 -230
- package/tests/hooks/gate-rule-host-real-pipeline.test.ts +0 -190
- package/tests/hooks/lifecycle.test.ts +0 -248
- package/tests/hooks/message-sanitize.test.ts +0 -244
- package/tests/hooks/pain-emission-characterization.test.ts +0 -420
- package/tests/hooks/pain.test.ts +0 -795
- package/tests/hooks/prompt-characterization.test.ts +0 -476
- package/tests/hooks/prompt-diet.test.ts +0 -335
- package/tests/hooks/prompt-size-guard.test.ts +0 -319
- package/tests/hooks/raw-observation-adapter.test.ts +0 -312
- package/tests/hooks/runtime-v2-prompt-activation.test.ts +0 -895
- package/tests/hooks/single-gate-pain-admission.test.ts +0 -258
- package/tests/hooks/subagent.test.ts +0 -469
- package/tests/hooks/trajectory-collector.test.ts +0 -269
- package/tests/hooks/trajectory-evidence.test.ts +0 -280
- package/tests/hooks/triage-adapter.test.ts +0 -331
- package/tests/hygiene-tracker.test.ts +0 -77
- package/tests/index.test.ts +0 -142
- package/tests/integration/auto-entry-gate.test.ts +0 -256
- package/tests/integration/gate-real-io.e2e.test.ts +0 -248
- package/tests/integration/m8-legacy-paths.test.ts +0 -63
- package/tests/integration/mvp-surface-registry-guard.test.ts +0 -536
- package/tests/integration/pain-id-chain-e2e.test.ts +0 -313
- package/tests/integration/principle-compiler-e2e.test.ts +0 -403
- package/tests/integration/principle-lifecycle.e2e.test.ts +0 -198
- package/tests/integration/runtime-v2-pain-guard.test.ts +0 -125
- package/tests/integration/trajectory-lifecycle.e2e.test.ts +0 -523
- package/tests/internalization-auto-consumer-gate.test.ts +0 -158
- package/tests/internalization-auto-consumer-service.test.ts +0 -219
- package/tests/plugin-config-resolution-cutover.test.ts +0 -359
- package/tests/queue/async-lock.test.ts +0 -200
- package/tests/runtime-v2-discovery-guard.test.ts +0 -153
- package/tests/scripts/validate-live-path.test.ts +0 -286
- package/tests/service/central-database.test.ts +0 -457
- package/tests/service/correction-observer-service.test.ts +0 -505
- package/tests/service/evolution-worker.compilation-backfill.test.ts +0 -203
- package/tests/service/evolution-worker.correction-observer.test.ts +0 -50
- package/tests/service/evolution-worker.queue.test.ts +0 -296
- package/tests/service/evolution-worker.timeout.test.ts +0 -233
- package/tests/service/keyword-optimization-service.test.ts +0 -121
- package/tests/service/phase3-input-filter.test.ts +0 -289
- package/tests/service/queue-io.test.ts +0 -168
- package/tests/service/queue-migration.test.ts +0 -147
- package/tests/service/runtime-summary-service.test.ts +0 -1100
- package/tests/service/workflow-watchdog.test.ts +0 -281
- package/tests/task-compliance.test.ts +0 -166
- package/tests/test-utils.ts +0 -48
- package/tests/utils/file-lock.test.ts +0 -409
- package/tests/utils/hashing.test.ts +0 -32
- package/tests/utils/hook-workspace-resolver.test.ts +0 -524
- package/tests/utils/io.test.ts +0 -39
- package/tests/utils/retry.test.ts +0 -327
- package/tests/utils/session-key.test.ts +0 -52
- package/tsconfig.json +0 -16
- package/vitest.config.ts +0 -61
- package/vitest.unit.config.ts +0 -12
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Implementation Asset Storage
|
|
3
|
+
* ================================
|
|
4
|
+
*
|
|
5
|
+
* Manages versioned code implementation assets: manifests, entry files,
|
|
6
|
+
* and metadata pointers for Implementation(type=code) records.
|
|
7
|
+
*
|
|
8
|
+
* DESIGN CONSTRAINTS (per D-09 through D-12):
|
|
9
|
+
* - Manifest is loading metadata, NOT the source of truth for lifecycle state (D-11)
|
|
10
|
+
* - The Principle Tree ledger remains canonical for lifecycle and relationships (D-11)
|
|
11
|
+
* - Asset root follows the PD stateDir convention:
|
|
12
|
+
* {stateDir}/principles/implementations/{implId}/
|
|
13
|
+
* - All writes use withLock for atomicity (matching ledger pattern)
|
|
14
|
+
* - This module does NOT implement replay execution, evaluation report generation,
|
|
15
|
+
* or promotion logic (D-12)
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Manifest shape for a code implementation's filesystem assets.
|
|
19
|
+
* Subordinate to the ledger per D-11: does NOT store lifecycleState.
|
|
20
|
+
*/
|
|
21
|
+
export interface CodeImplementationManifest {
|
|
22
|
+
/** Asset version (distinct from Implementation.version in the ledger) */
|
|
23
|
+
version: string;
|
|
24
|
+
/** Relative filename of the entry point (e.g., 'entry.js') */
|
|
25
|
+
entryFile: string;
|
|
26
|
+
/** ISO timestamp of initial creation */
|
|
27
|
+
createdAt: string;
|
|
28
|
+
/** ISO timestamp of last manifest update */
|
|
29
|
+
updatedAt: string;
|
|
30
|
+
/** Fingerprints of samples this implementation was tested against */
|
|
31
|
+
replaySampleRefs: string[];
|
|
32
|
+
/** Relative path to most recent eval report, or null */
|
|
33
|
+
lastEvalReportRef: string | null;
|
|
34
|
+
/** Provenance carried with the generated candidate assets */
|
|
35
|
+
lineage?: CodeImplementationLineageMetadata;
|
|
36
|
+
}
|
|
37
|
+
export interface CodeImplementationLineageMetadata {
|
|
38
|
+
principleId: string;
|
|
39
|
+
ruleId: string;
|
|
40
|
+
sourceSnapshotRef: string;
|
|
41
|
+
sourcePainIds: string[];
|
|
42
|
+
sourceGateBlockIds: string[];
|
|
43
|
+
sourceSessionId: string;
|
|
44
|
+
artificerArtifactId: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the absolute path for an implementation's asset root.
|
|
48
|
+
* Convention: {stateDir}/principles/implementations/{implId}/
|
|
49
|
+
*/
|
|
50
|
+
export declare function getImplementationAssetRoot(stateDir: string, implId: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Write manifest atomically using withLock.
|
|
53
|
+
*/
|
|
54
|
+
export declare function writeManifest(stateDir: string, implId: string, manifest: CodeImplementationManifest): void;
|
|
55
|
+
export declare function writeEntrySource(stateDir: string, implId: string, sourceCode: string, entryFile?: string): void;
|
|
56
|
+
export declare function deleteImplementationAssetDir(stateDir: string, implId: string): void;
|
|
57
|
+
/**
|
|
58
|
+
* Create the full asset directory structure for a new implementation.
|
|
59
|
+
*
|
|
60
|
+
* Creates:
|
|
61
|
+
* {implId}/ - asset root
|
|
62
|
+
* {implId}/entry.js - placeholder entry point (only if not already present)
|
|
63
|
+
* {implId}/manifest.json - asset manifest with version and timestamps
|
|
64
|
+
* {implId}/replays/ - empty directory for future replay reports
|
|
65
|
+
*
|
|
66
|
+
* Idempotent: calling again with the same implId will NOT overwrite an existing entry.js.
|
|
67
|
+
*/
|
|
68
|
+
export declare function createImplementationAssetDir(stateDir: string, implId: string, version: string, options?: {
|
|
69
|
+
entrySource?: string;
|
|
70
|
+
lineage?: CodeImplementationLineageMetadata;
|
|
71
|
+
}): CodeImplementationManifest;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code Implementation Asset Storage
|
|
3
|
+
* ================================
|
|
4
|
+
*
|
|
5
|
+
* Manages versioned code implementation assets: manifests, entry files,
|
|
6
|
+
* and metadata pointers for Implementation(type=code) records.
|
|
7
|
+
*
|
|
8
|
+
* DESIGN CONSTRAINTS (per D-09 through D-12):
|
|
9
|
+
* - Manifest is loading metadata, NOT the source of truth for lifecycle state (D-11)
|
|
10
|
+
* - The Principle Tree ledger remains canonical for lifecycle and relationships (D-11)
|
|
11
|
+
* - Asset root follows the PD stateDir convention:
|
|
12
|
+
* {stateDir}/principles/implementations/{implId}/
|
|
13
|
+
* - All writes use withLock for atomicity (matching ledger pattern)
|
|
14
|
+
* - This module does NOT implement replay execution, evaluation report generation,
|
|
15
|
+
* or promotion logic (D-12)
|
|
16
|
+
*/
|
|
17
|
+
import * as fs from 'fs';
|
|
18
|
+
import * as path from 'path';
|
|
19
|
+
import { withLock } from '../utils/file-lock.js';
|
|
20
|
+
import { atomicWriteFileSync } from '../utils/io.js';
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Constants
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
const MANIFEST_FILENAME = 'manifest.json';
|
|
25
|
+
const ENTRY_FILENAME = 'entry.js';
|
|
26
|
+
const REPLAYS_DIRNAME = 'replays';
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Path validation
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
/**
|
|
31
|
+
* Validate that an implId contains no path separators.
|
|
32
|
+
* implId comes from ledger record IDs (controlled namespace), but we
|
|
33
|
+
* validate to prevent path traversal (T-12-08).
|
|
34
|
+
*/
|
|
35
|
+
function validateImplId(implId) {
|
|
36
|
+
if (implId.includes('/') || implId.includes('\\') || implId.includes('..')) {
|
|
37
|
+
throw new Error(`Invalid implementation ID: "${implId}" contains path separators`);
|
|
38
|
+
}
|
|
39
|
+
if (!implId) {
|
|
40
|
+
throw new Error('Implementation ID must not be empty');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Helpers
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
function ensureDir(dir) {
|
|
47
|
+
if (!fs.existsSync(dir)) {
|
|
48
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Public API
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
/**
|
|
55
|
+
* Get the absolute path for an implementation's asset root.
|
|
56
|
+
* Convention: {stateDir}/principles/implementations/{implId}/
|
|
57
|
+
*/
|
|
58
|
+
export function getImplementationAssetRoot(stateDir, implId) {
|
|
59
|
+
validateImplId(implId);
|
|
60
|
+
return path.join(stateDir, 'principles', 'implementations', implId);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Write manifest atomically using withLock.
|
|
64
|
+
*/
|
|
65
|
+
export function writeManifest(stateDir, implId, manifest) {
|
|
66
|
+
validateImplId(implId);
|
|
67
|
+
const assetRoot = getImplementationAssetRoot(stateDir, implId);
|
|
68
|
+
const manifestPath = path.join(assetRoot, MANIFEST_FILENAME);
|
|
69
|
+
ensureDir(assetRoot);
|
|
70
|
+
withLock(manifestPath, () => {
|
|
71
|
+
atomicWriteFileSync(manifestPath, JSON.stringify(manifest, null, 2));
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export function writeEntrySource(stateDir, implId, sourceCode, entryFile = ENTRY_FILENAME) {
|
|
75
|
+
validateImplId(implId);
|
|
76
|
+
const assetRoot = getImplementationAssetRoot(stateDir, implId);
|
|
77
|
+
const entryPath = path.join(assetRoot, entryFile);
|
|
78
|
+
ensureDir(assetRoot);
|
|
79
|
+
withLock(entryPath, () => {
|
|
80
|
+
atomicWriteFileSync(entryPath, sourceCode);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export function deleteImplementationAssetDir(stateDir, implId) {
|
|
84
|
+
validateImplId(implId);
|
|
85
|
+
const assetRoot = getImplementationAssetRoot(stateDir, implId);
|
|
86
|
+
if (!fs.existsSync(assetRoot)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
withLock(assetRoot, () => {
|
|
90
|
+
fs.rmSync(assetRoot, { recursive: true, force: true });
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Create the full asset directory structure for a new implementation.
|
|
95
|
+
*
|
|
96
|
+
* Creates:
|
|
97
|
+
* {implId}/ - asset root
|
|
98
|
+
* {implId}/entry.js - placeholder entry point (only if not already present)
|
|
99
|
+
* {implId}/manifest.json - asset manifest with version and timestamps
|
|
100
|
+
* {implId}/replays/ - empty directory for future replay reports
|
|
101
|
+
*
|
|
102
|
+
* Idempotent: calling again with the same implId will NOT overwrite an existing entry.js.
|
|
103
|
+
*/
|
|
104
|
+
export function createImplementationAssetDir(stateDir, implId, version, options = {}) {
|
|
105
|
+
validateImplId(implId);
|
|
106
|
+
const assetRoot = getImplementationAssetRoot(stateDir, implId);
|
|
107
|
+
const replaysDir = path.join(assetRoot, REPLAYS_DIRNAME);
|
|
108
|
+
const entryPath = path.join(assetRoot, ENTRY_FILENAME);
|
|
109
|
+
const entrySource = options.entrySource ??
|
|
110
|
+
[
|
|
111
|
+
'// Code implementation entry point',
|
|
112
|
+
'// Exports: meta (RuleHostMeta), evaluate (input: RuleHostInput) => RuleHostResult',
|
|
113
|
+
'// This file will be replaced by nocturnal candidate generation (Phase 14)',
|
|
114
|
+
'export const meta = { name: "placeholder", version: "0.0.1", ruleId: "", coversCondition: "" };',
|
|
115
|
+
'export function evaluate(input) { return { decision: "allow", matched: false, reason: "placeholder" }; }',
|
|
116
|
+
].join('\n');
|
|
117
|
+
withLock(assetRoot, () => {
|
|
118
|
+
ensureDir(assetRoot);
|
|
119
|
+
ensureDir(replaysDir);
|
|
120
|
+
if (!fs.existsSync(entryPath)) {
|
|
121
|
+
atomicWriteFileSync(entryPath, entrySource);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
if (fs.existsSync(entryPath) && options.entrySource) {
|
|
125
|
+
writeEntrySource(stateDir, implId, options.entrySource);
|
|
126
|
+
}
|
|
127
|
+
const now = new Date().toISOString();
|
|
128
|
+
const manifest = {
|
|
129
|
+
version,
|
|
130
|
+
entryFile: ENTRY_FILENAME,
|
|
131
|
+
createdAt: now,
|
|
132
|
+
updatedAt: now,
|
|
133
|
+
replaySampleRefs: [],
|
|
134
|
+
lastEvalReportRef: null,
|
|
135
|
+
...(options.lineage ? { lineage: options.lineage } : {}),
|
|
136
|
+
};
|
|
137
|
+
writeManifest(stateDir, implId, manifest);
|
|
138
|
+
return manifest;
|
|
139
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation Access Health Check (PRI-343 / PRI-346)
|
|
3
|
+
*
|
|
4
|
+
* Pure function for checking whether OpenClaw plugin config has
|
|
5
|
+
* allowConversationAccess set to true. When missing, llm_output and
|
|
6
|
+
* trajectory hooks are silently blocked by OpenClaw, causing evidence
|
|
7
|
+
* to always be empty (PRI-338 root cause).
|
|
8
|
+
*
|
|
9
|
+
* Extracted from index.ts to avoid circular imports when trajectory-collector.ts
|
|
10
|
+
* needs to check conversation access state (PRI-346).
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* PRI-348: Extract the full plugin entry (including hooks) from the global OpenClaw config.
|
|
14
|
+
* Unlike api.pluginConfig (which is only the entry.config sub-object), this returns
|
|
15
|
+
* the entire entry including hooks, config, enabled, etc.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getPluginEntry(config: unknown, pluginId: string): unknown;
|
|
18
|
+
export interface ConversationAccessCheckResult {
|
|
19
|
+
authorized: boolean;
|
|
20
|
+
reason?: string;
|
|
21
|
+
nextAction?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* PRI-343: Pure function — checks if pluginConfig has hooks.allowConversationAccess === true.
|
|
25
|
+
* Returns a structured result with reason and nextAction when not authorized (ERR-002).
|
|
26
|
+
*/
|
|
27
|
+
export declare function checkConversationAccessConfig(pluginConfig: unknown): ConversationAccessCheckResult;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation Access Health Check (PRI-343 / PRI-346)
|
|
3
|
+
*
|
|
4
|
+
* Pure function for checking whether OpenClaw plugin config has
|
|
5
|
+
* allowConversationAccess set to true. When missing, llm_output and
|
|
6
|
+
* trajectory hooks are silently blocked by OpenClaw, causing evidence
|
|
7
|
+
* to always be empty (PRI-338 root cause).
|
|
8
|
+
*
|
|
9
|
+
* Extracted from index.ts to avoid circular imports when trajectory-collector.ts
|
|
10
|
+
* needs to check conversation access state (PRI-346).
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* PRI-348: Extract the full plugin entry (including hooks) from the global OpenClaw config.
|
|
14
|
+
* Unlike api.pluginConfig (which is only the entry.config sub-object), this returns
|
|
15
|
+
* the entire entry including hooks, config, enabled, etc.
|
|
16
|
+
*/
|
|
17
|
+
export function getPluginEntry(config, pluginId) {
|
|
18
|
+
if (!config || typeof config !== 'object' || Array.isArray(config))
|
|
19
|
+
return undefined;
|
|
20
|
+
const plugins = config.plugins;
|
|
21
|
+
if (!plugins || typeof plugins !== 'object' || Array.isArray(plugins))
|
|
22
|
+
return undefined;
|
|
23
|
+
const entries = plugins.entries;
|
|
24
|
+
if (!entries || typeof entries !== 'object' || Array.isArray(entries))
|
|
25
|
+
return undefined;
|
|
26
|
+
return entries[pluginId];
|
|
27
|
+
}
|
|
28
|
+
/** Keep in sync with @principles/core CONVERSATION_ACCESS_CONFIG_KEY */
|
|
29
|
+
const CONVERSATION_ACCESS_CONFIG_KEY = 'allowConversationAccess';
|
|
30
|
+
const CONVERSATION_ACCESS_FIX_COMMAND = 'openclaw config set plugins.entries.principles-disciple.hooks.allowConversationAccess true --strict-json';
|
|
31
|
+
/**
|
|
32
|
+
* PRI-343: Pure function — checks if pluginConfig has hooks.allowConversationAccess === true.
|
|
33
|
+
* Returns a structured result with reason and nextAction when not authorized (ERR-002).
|
|
34
|
+
*/
|
|
35
|
+
export function checkConversationAccessConfig(pluginConfig) {
|
|
36
|
+
if (pluginConfig === null || pluginConfig === undefined || typeof pluginConfig !== 'object' || Array.isArray(pluginConfig)) {
|
|
37
|
+
return {
|
|
38
|
+
authorized: false,
|
|
39
|
+
reason: 'pluginConfig is missing or invalid — conversation hooks cannot be registered',
|
|
40
|
+
nextAction: CONVERSATION_ACCESS_FIX_COMMAND,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const config = pluginConfig;
|
|
44
|
+
if (typeof config.hooks !== 'object' || config.hooks === null || Array.isArray(config.hooks)) {
|
|
45
|
+
return {
|
|
46
|
+
authorized: false,
|
|
47
|
+
reason: 'allowConversationAccess is not set to true',
|
|
48
|
+
nextAction: CONVERSATION_ACCESS_FIX_COMMAND,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const hooks = config.hooks;
|
|
52
|
+
if (hooks[CONVERSATION_ACCESS_CONFIG_KEY] !== true) {
|
|
53
|
+
return {
|
|
54
|
+
authorized: false,
|
|
55
|
+
reason: 'allowConversationAccess is not set to true',
|
|
56
|
+
nextAction: CONVERSATION_ACCESS_FIX_COMMAND,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return { authorized: true };
|
|
60
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PainConfig } from './config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Singleton service to manage the Pain Configuration.
|
|
4
|
+
*/
|
|
5
|
+
export declare const ConfigService: {
|
|
6
|
+
/**
|
|
7
|
+
* Gets or initializes the Pain Configuration instance.
|
|
8
|
+
* @param stateDir The directory where the settings JSON is stored.
|
|
9
|
+
*/
|
|
10
|
+
get(stateDir: string): PainConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Resets the singleton instance (primarily for testing).
|
|
13
|
+
*/
|
|
14
|
+
reset(): void;
|
|
15
|
+
};
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { PainConfig } from './config.js';
|
|
2
|
-
|
|
3
|
-
let
|
|
4
|
-
let lastStateDir: string | null = null;
|
|
5
|
-
|
|
2
|
+
let config = null;
|
|
3
|
+
let lastStateDir = null;
|
|
6
4
|
/**
|
|
7
5
|
* Singleton service to manage the Pain Configuration.
|
|
8
6
|
*/
|
|
@@ -11,7 +9,7 @@ export const ConfigService = {
|
|
|
11
9
|
* Gets or initializes the Pain Configuration instance.
|
|
12
10
|
* @param stateDir The directory where the settings JSON is stored.
|
|
13
11
|
*/
|
|
14
|
-
get(stateDir
|
|
12
|
+
get(stateDir) {
|
|
15
13
|
if (!config || lastStateDir !== stateDir) {
|
|
16
14
|
config = new PainConfig(stateDir);
|
|
17
15
|
config.load();
|
|
@@ -19,11 +17,10 @@ export const ConfigService = {
|
|
|
19
17
|
}
|
|
20
18
|
return config;
|
|
21
19
|
},
|
|
22
|
-
|
|
23
20
|
/**
|
|
24
21
|
* Resets the singleton instance (primarily for testing).
|
|
25
22
|
*/
|
|
26
|
-
reset()
|
|
23
|
+
reset() {
|
|
27
24
|
config = null;
|
|
28
25
|
}
|
|
29
26
|
};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
export interface GfiGateSettings {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
thresholds: {
|
|
4
|
+
low_risk_block: number;
|
|
5
|
+
high_risk_block: number;
|
|
6
|
+
large_change_block: number;
|
|
7
|
+
};
|
|
8
|
+
large_change_lines: number;
|
|
9
|
+
ep_tier_multipliers: {
|
|
10
|
+
'1': number;
|
|
11
|
+
'2': number;
|
|
12
|
+
'3': number;
|
|
13
|
+
'4': number;
|
|
14
|
+
'5': number;
|
|
15
|
+
};
|
|
16
|
+
bash_safe_patterns: string[];
|
|
17
|
+
bash_dangerous_patterns: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface DiagnosticianSettings {
|
|
20
|
+
context: {
|
|
21
|
+
time_window_minutes: number;
|
|
22
|
+
max_message_length: number;
|
|
23
|
+
max_summary_length: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface PainSettings {
|
|
27
|
+
language: 'en' | 'zh';
|
|
28
|
+
trajectory?: {
|
|
29
|
+
blob_inline_threshold_bytes?: number;
|
|
30
|
+
busy_timeout_ms?: number;
|
|
31
|
+
orphan_blob_grace_days?: number;
|
|
32
|
+
};
|
|
33
|
+
diagnostician?: DiagnosticianSettings;
|
|
34
|
+
thresholds: {
|
|
35
|
+
pain_trigger: number;
|
|
36
|
+
cognitive_paralysis_input: number;
|
|
37
|
+
stuck_loops_trigger: number;
|
|
38
|
+
semantic_min_score: number;
|
|
39
|
+
promotion_count_threshold: number;
|
|
40
|
+
promotion_similarity_threshold: number;
|
|
41
|
+
};
|
|
42
|
+
scores: {
|
|
43
|
+
paralysis: number;
|
|
44
|
+
default_confusion: number;
|
|
45
|
+
default_loop: number;
|
|
46
|
+
tool_failure_friction: number;
|
|
47
|
+
exit_code_penalty: number;
|
|
48
|
+
spiral_penalty: number;
|
|
49
|
+
missing_test_command_penalty: number;
|
|
50
|
+
subagent_error_penalty: number;
|
|
51
|
+
subagent_timeout_penalty: number;
|
|
52
|
+
};
|
|
53
|
+
severity_thresholds: {
|
|
54
|
+
high: number;
|
|
55
|
+
medium: number;
|
|
56
|
+
low: number;
|
|
57
|
+
};
|
|
58
|
+
intervals: {
|
|
59
|
+
worker_poll_ms: number;
|
|
60
|
+
initial_delay_ms: number;
|
|
61
|
+
task_timeout_ms: number;
|
|
62
|
+
};
|
|
63
|
+
empathy_engine?: {
|
|
64
|
+
enabled?: boolean;
|
|
65
|
+
dedupe_window_ms?: number;
|
|
66
|
+
penalties?: {
|
|
67
|
+
mild?: number;
|
|
68
|
+
moderate?: number;
|
|
69
|
+
severe?: number;
|
|
70
|
+
};
|
|
71
|
+
rate_limit?: {
|
|
72
|
+
max_per_turn?: number;
|
|
73
|
+
max_per_hour?: number;
|
|
74
|
+
};
|
|
75
|
+
model_calibration?: Record<string, number>;
|
|
76
|
+
};
|
|
77
|
+
gfi_gate?: GfiGateSettings;
|
|
78
|
+
compression?: {
|
|
79
|
+
/** 触发自动压缩的行数阈值 */
|
|
80
|
+
line_threshold?: number;
|
|
81
|
+
/** 触发自动压缩的字节阈值 */
|
|
82
|
+
size_threshold_kb?: number;
|
|
83
|
+
/** 自动压缩间隔(小时) */
|
|
84
|
+
interval_hours?: number;
|
|
85
|
+
/** 保留的已完成任务数 */
|
|
86
|
+
keep_completed_tasks?: number;
|
|
87
|
+
/** Working Memory 最大条数 */
|
|
88
|
+
max_working_memory_artifacts?: number;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export declare const DEFAULT_SETTINGS: PainSettings;
|
|
92
|
+
export declare class PainConfig {
|
|
93
|
+
private settings;
|
|
94
|
+
private readonly filePath;
|
|
95
|
+
constructor(stateDir: string);
|
|
96
|
+
load(): void;
|
|
97
|
+
save(): void;
|
|
98
|
+
private deepMerge;
|
|
99
|
+
/**
|
|
100
|
+
* Basic validation for critical settings
|
|
101
|
+
*/
|
|
102
|
+
private validate;
|
|
103
|
+
/**
|
|
104
|
+
* Gets a value using dot notation (e.g. 'thresholds.pain_trigger')
|
|
105
|
+
*/
|
|
106
|
+
get(keyPath: string): any;
|
|
107
|
+
/**
|
|
108
|
+
* Returns all settings as a plain object.
|
|
109
|
+
*/
|
|
110
|
+
getAll(): PainSettings;
|
|
111
|
+
}
|