principles-disciple 1.127.0 → 1.129.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 -96
- 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,82 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { getImplementationAssetRoot } from './code-implementation-storage.js';
|
|
4
|
+
import { loadLedger } from './principle-tree-ledger.js';
|
|
5
|
+
export class ReplayEngine {
|
|
6
|
+
workspaceDir;
|
|
7
|
+
stateDir;
|
|
8
|
+
constructor(workspaceDir, stateDir) {
|
|
9
|
+
this.workspaceDir = workspaceDir;
|
|
10
|
+
this.stateDir = stateDir;
|
|
11
|
+
}
|
|
12
|
+
listReports(implementationId) {
|
|
13
|
+
const reportDir = path.join(getImplementationAssetRoot(this.stateDir, implementationId), 'replays');
|
|
14
|
+
if (!fs.existsSync(reportDir))
|
|
15
|
+
return [];
|
|
16
|
+
try {
|
|
17
|
+
const files = fs.readdirSync(reportDir).filter((file) => file.endsWith('.json'));
|
|
18
|
+
return files
|
|
19
|
+
.sort()
|
|
20
|
+
.reverse()
|
|
21
|
+
.map((file) => {
|
|
22
|
+
const content = fs.readFileSync(path.join(reportDir, file), 'utf-8');
|
|
23
|
+
return JSON.parse(content);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
console.warn(`[ReplayEngine] Failed to read reports in ${reportDir}: ${err instanceof Error ? err.message : String(err)}`);
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
getLatestReport(implementationId) {
|
|
32
|
+
const reports = this.listReports(implementationId);
|
|
33
|
+
return reports.length > 0 ? reports[0] : null;
|
|
34
|
+
}
|
|
35
|
+
hasPassingReport(implementationId) {
|
|
36
|
+
return this.listReports(implementationId).some((report) => report.overallDecision === 'pass');
|
|
37
|
+
}
|
|
38
|
+
_getImplementationById(implementationId) {
|
|
39
|
+
const ledger = loadLedger(this.stateDir);
|
|
40
|
+
return ledger.tree.implementations[implementationId] ?? null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function formatReplayReport(report) {
|
|
44
|
+
const decisionEmoji = report.overallDecision === 'pass'
|
|
45
|
+
? 'PASS'
|
|
46
|
+
: report.overallDecision === 'fail'
|
|
47
|
+
? 'FAIL'
|
|
48
|
+
: 'NEEDS-REVIEW';
|
|
49
|
+
let output = '';
|
|
50
|
+
output += '\nReplay Evaluation Report\n';
|
|
51
|
+
output += `${'='.repeat(50)}\n`;
|
|
52
|
+
output += `Implementation: ${report.implementationId}\n`;
|
|
53
|
+
output += `Generated At: ${report.generatedAt}\n`;
|
|
54
|
+
output += `Overall Decision: [${decisionEmoji}]\n\n`;
|
|
55
|
+
output += `Evidence Status: ${report.evidenceSummary.evidenceStatus} (samples=${report.evidenceSummary.totalSamples})\n\n`;
|
|
56
|
+
const formatSection = (label, summary) => {
|
|
57
|
+
const rate = summary.total > 0
|
|
58
|
+
? ((summary.passed / summary.total) * 100).toFixed(1)
|
|
59
|
+
: 'N/A';
|
|
60
|
+
let section = ` ${label}:\n`;
|
|
61
|
+
section += ` Total: ${summary.total} | Passed: ${summary.passed} | Failed: ${summary.failed}\n`;
|
|
62
|
+
section += ` Pass Rate: ${rate}%\n`;
|
|
63
|
+
if (summary.failed > 0) {
|
|
64
|
+
section += ' Failures:\n';
|
|
65
|
+
for (const detail of summary.details.filter((item) => !item.passed)) {
|
|
66
|
+
section += ` - ${detail.sampleFingerprint}: ${detail.reason ?? detail.decision}\n`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return section;
|
|
70
|
+
};
|
|
71
|
+
output += formatSection('Pain-Negative Samples', report.replayResults.painNegative);
|
|
72
|
+
output += formatSection('Success-Positive Samples', report.replayResults.successPositive);
|
|
73
|
+
output += formatSection('Principle-Anchor Samples', report.replayResults.principleAnchor);
|
|
74
|
+
if (report.blockers.length > 0) {
|
|
75
|
+
output += '\nBlockers:\n';
|
|
76
|
+
for (const blocker of report.blockers) {
|
|
77
|
+
output += ` - ${blocker}\n`;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
output += `${'='.repeat(50)}\n`;
|
|
81
|
+
return output;
|
|
82
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
2
|
+
export interface FileModification {
|
|
3
|
+
toolName: string;
|
|
4
|
+
params: Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
export declare function estimateLineChanges(modification: FileModification): number;
|
|
7
|
+
export declare function assessRiskLevel(filePath: string, modification: FileModification, riskPaths: string[]): RiskLevel;
|
|
8
|
+
/**
|
|
9
|
+
* Get the total line count of a target file.
|
|
10
|
+
* @param absoluteFilePath - Absolute path to the file
|
|
11
|
+
* @returns File line count, or null if file doesn't exist or can't be read
|
|
12
|
+
*/
|
|
13
|
+
export declare function getTargetFileLineCount(absoluteFilePath: string): number | null;
|
|
14
|
+
/**
|
|
15
|
+
* Calculate the effective line limit based on percentage of target file.
|
|
16
|
+
* @param targetLineCount - Total lines in target file
|
|
17
|
+
* @param percentage - Allowed percentage (0-100)
|
|
18
|
+
* @param minLines - Absolute minimum threshold
|
|
19
|
+
* @param maxLines - Optional upper bound to prevent misconfiguration
|
|
20
|
+
* @returns Maximum allowed lines (at least minLines, at most maxLines if provided)
|
|
21
|
+
*/
|
|
22
|
+
export declare function calculatePercentageThreshold(targetLineCount: number, percentage: number, minLines: number, maxLines?: number): number;
|
|
@@ -1,84 +1,65 @@
|
|
|
1
|
-
|
|
2
1
|
/* global NodeJS */
|
|
3
2
|
import * as fs from 'fs';
|
|
4
3
|
import { isRisky } from '../utils/io.js';
|
|
5
|
-
|
|
6
|
-
export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
|
|
7
|
-
|
|
8
|
-
export interface FileModification {
|
|
9
|
-
toolName: string;
|
|
10
|
-
params: Record<string, unknown>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export function estimateLineChanges(modification: FileModification): number {
|
|
4
|
+
export function estimateLineChanges(modification) {
|
|
15
5
|
const { toolName, params } = modification;
|
|
16
|
-
|
|
17
6
|
if (toolName === 'write_file' || toolName === 'write') {
|
|
18
|
-
const content =
|
|
7
|
+
const content = params.content || '';
|
|
19
8
|
return content.split('\n').length;
|
|
20
9
|
}
|
|
21
|
-
|
|
22
10
|
if (toolName === 'replace' || toolName === 'edit') {
|
|
23
|
-
const newContent =
|
|
11
|
+
const newContent = params.new_string || params.newText || '';
|
|
24
12
|
return newContent.split('\n').length;
|
|
25
13
|
}
|
|
26
|
-
|
|
27
14
|
if (toolName === 'apply_patch' || toolName === 'patch') {
|
|
28
|
-
const patch =
|
|
15
|
+
const patch = params.patch || '';
|
|
29
16
|
// Rough estimate for patch files
|
|
30
|
-
return patch.split('\n').filter((l
|
|
17
|
+
return patch.split('\n').filter((l) => l.startsWith('+') || l.startsWith('-')).length;
|
|
31
18
|
}
|
|
32
|
-
|
|
33
19
|
if (toolName === 'delete_file') {
|
|
34
20
|
// Deleting a file is considered a significant change, but we don't know the size.
|
|
35
21
|
// We'll treat it as a medium-to-large size change.
|
|
36
22
|
return 50;
|
|
37
23
|
}
|
|
38
|
-
|
|
39
24
|
return 0;
|
|
40
25
|
}
|
|
41
|
-
|
|
42
|
-
export function assessRiskLevel(
|
|
43
|
-
filePath: string,
|
|
44
|
-
modification: FileModification,
|
|
45
|
-
riskPaths: string[]
|
|
46
|
-
): RiskLevel {
|
|
26
|
+
export function assessRiskLevel(filePath, modification, riskPaths) {
|
|
47
27
|
const isRiskPath = isRisky(filePath, riskPaths);
|
|
48
28
|
const estimatedLines = estimateLineChanges(modification);
|
|
49
|
-
|
|
50
29
|
if (isRiskPath) {
|
|
51
|
-
if (estimatedLines > 100)
|
|
30
|
+
if (estimatedLines > 100)
|
|
31
|
+
return 'CRITICAL';
|
|
52
32
|
return 'HIGH';
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (estimatedLines >
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
if (estimatedLines > 100)
|
|
36
|
+
return 'HIGH';
|
|
37
|
+
if (estimatedLines > 10)
|
|
38
|
+
return 'MEDIUM';
|
|
56
39
|
return 'LOW';
|
|
57
40
|
}
|
|
58
41
|
}
|
|
59
|
-
|
|
60
42
|
/**
|
|
61
43
|
* Get the total line count of a target file.
|
|
62
44
|
* @param absoluteFilePath - Absolute path to the file
|
|
63
45
|
* @returns File line count, or null if file doesn't exist or can't be read
|
|
64
46
|
*/
|
|
65
|
-
export function getTargetFileLineCount(absoluteFilePath
|
|
47
|
+
export function getTargetFileLineCount(absoluteFilePath) {
|
|
66
48
|
try {
|
|
67
49
|
if (!fs.existsSync(absoluteFilePath)) {
|
|
68
50
|
return null; // File genuinely doesn't exist
|
|
69
51
|
}
|
|
70
|
-
|
|
71
52
|
const stats = fs.statSync(absoluteFilePath);
|
|
72
53
|
if (!stats.isFile()) {
|
|
73
54
|
return null; // Not a regular file (directory, device, etc.)
|
|
74
55
|
}
|
|
75
|
-
|
|
76
56
|
const content = fs.readFileSync(absoluteFilePath, 'utf-8');
|
|
77
57
|
return content.split('\n').length;
|
|
78
|
-
}
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
79
60
|
// Log error before falling back to null - this is intentional for security gates
|
|
80
61
|
const error = e instanceof Error ? e : new Error(String(e));
|
|
81
|
-
const errorCode =
|
|
62
|
+
const errorCode = e.code;
|
|
82
63
|
console.error(`[PD:RISK_CALC] Failed to read file for line count: ${absoluteFilePath}`, {
|
|
83
64
|
code: errorCode,
|
|
84
65
|
message: error.message,
|
|
@@ -86,7 +67,6 @@ export function getTargetFileLineCount(absoluteFilePath: string): number | null
|
|
|
86
67
|
return null;
|
|
87
68
|
}
|
|
88
69
|
}
|
|
89
|
-
|
|
90
70
|
/**
|
|
91
71
|
* Calculate the effective line limit based on percentage of target file.
|
|
92
72
|
* @param targetLineCount - Total lines in target file
|
|
@@ -95,24 +75,14 @@ export function getTargetFileLineCount(absoluteFilePath: string): number | null
|
|
|
95
75
|
* @param maxLines - Optional upper bound to prevent misconfiguration
|
|
96
76
|
* @returns Maximum allowed lines (at least minLines, at most maxLines if provided)
|
|
97
77
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
export function calculatePercentageThreshold(
|
|
101
|
-
targetLineCount: number,
|
|
102
|
-
percentage: number,
|
|
103
|
-
minLines: number,
|
|
104
|
-
maxLines?: number
|
|
105
|
-
): number {
|
|
78
|
+
export function calculatePercentageThreshold(targetLineCount, percentage, minLines, maxLines) {
|
|
106
79
|
// Clamp percentage to valid range [0, 100]
|
|
107
80
|
const clampedPercentage = Math.max(0, Math.min(100, percentage));
|
|
108
|
-
|
|
109
81
|
const calculated = Math.round(targetLineCount * (clampedPercentage / 100));
|
|
110
82
|
let effectiveLimit = Math.max(calculated, minLines);
|
|
111
|
-
|
|
112
83
|
// Apply optional upper bound
|
|
113
84
|
if (maxLines !== undefined && maxLines > 0) {
|
|
114
85
|
effectiveLimit = Math.min(effectiveLimit, maxLines);
|
|
115
86
|
}
|
|
116
|
-
|
|
117
87
|
return effectiveLimit;
|
|
118
88
|
}
|
|
@@ -4,11 +4,4 @@
|
|
|
4
4
|
* Canonical definitions moved to:
|
|
5
5
|
* packages/principles-core/src/runtime-v2/internalization/rule-host-contracts.ts
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
export type {
|
|
9
|
-
RuleHostInput,
|
|
10
|
-
RuleHostDecision,
|
|
11
|
-
RuleHostMeta,
|
|
12
|
-
RuleHostResult,
|
|
13
|
-
LoadedImplementation,
|
|
14
|
-
} from '@principles/core/runtime-v2';
|
|
7
|
+
export type { RuleHostInput, RuleHostDecision, RuleHostMeta, RuleHostResult, LoadedImplementation, } from '@principles/core/runtime-v2';
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rule Host — Constrained execution layer for active code implementations
|
|
3
|
+
*
|
|
4
|
+
* PURPOSE: Load active code implementations from the SQLite activations table
|
|
5
|
+
* (code_tool_hook channel), execute them in a constrained node:vm context,
|
|
6
|
+
* and merge their decisions.
|
|
7
|
+
*
|
|
8
|
+
* ARCHITECTURE (PRI-436):
|
|
9
|
+
* - SQLite is the SOLE production source of active RuleCode
|
|
10
|
+
* - No filesystem ledger or implementation asset reads occur during evaluation
|
|
11
|
+
* - Constructor takes stateDir for API compatibility (no longer used for impl loading)
|
|
12
|
+
* - workspaceDir enables reading code_tool_hook activations from SQLite
|
|
13
|
+
* - evaluate(input) loads active code implementations and runs them
|
|
14
|
+
* - Each implementation executes in an isolated vm context with minimal helpers
|
|
15
|
+
* - Decision merge: block short-circuits, requireApproval collects, allow is implicit
|
|
16
|
+
*
|
|
17
|
+
* SECURITY CONSTRAINTS (T-12-01, T-12-04):
|
|
18
|
+
* - Candidate code loads through a dedicated vm context, not the host realm
|
|
19
|
+
* - No importModuleDynamically callback
|
|
20
|
+
* - Helpers are a frozen object — implementations cannot modify the helper surface
|
|
21
|
+
*
|
|
22
|
+
* CONSERVATIVE DEGRADATION (T-12-02, D-08):
|
|
23
|
+
* - On ANY host error (load failure, eval error, vm error): return undefined
|
|
24
|
+
* - Never throw, never bypass downstream gates (Progressive Gate, Edit Verification)
|
|
25
|
+
*/
|
|
26
|
+
import type { RuleHostInput, RuleHostResult } from '@principles/core/runtime-v2';
|
|
27
|
+
import type { RuleHostLogger } from '@principles/core/runtime-v2';
|
|
28
|
+
export type { RuleHostLogger } from '@principles/core/runtime-v2';
|
|
29
|
+
export interface RuleHostOptions {
|
|
30
|
+
/** Workspace directory for SQLite access. Required for RuleHost to load active code_tool_hook activations. */
|
|
31
|
+
workspaceDir?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare class RuleHost {
|
|
34
|
+
private readonly stateDir;
|
|
35
|
+
private readonly logger;
|
|
36
|
+
private readonly workspaceDir;
|
|
37
|
+
private readonly implementationSources;
|
|
38
|
+
constructor(stateDir: string, logger?: RuleHostLogger, options?: RuleHostOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Evaluate the input against all active code implementations.
|
|
41
|
+
*
|
|
42
|
+
* Returns:
|
|
43
|
+
* - undefined when no active code implementations exist (no opinion)
|
|
44
|
+
* - undefined when all implementations return allow or matched=false
|
|
45
|
+
* - { decision: 'block', ... } when any implementation returns block (short-circuits)
|
|
46
|
+
* - { decision: 'requireApproval', ... } when any implementation returns requireApproval
|
|
47
|
+
*/
|
|
48
|
+
evaluate(input: RuleHostInput): RuleHostResult | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Load active code implementations from the SQLite activations table.
|
|
51
|
+
*
|
|
52
|
+
* PRI-436: SQLite is the SOLE production source. The filesystem ledger
|
|
53
|
+
* (principle-tree-ledger) and implementation asset paths have been deleted.
|
|
54
|
+
* No fallback, no dual-source, no deprecated adapter.
|
|
55
|
+
*
|
|
56
|
+
* Source: activations table (code_tool_hook channel, deactivated_at IS NULL)
|
|
57
|
+
* → JOIN pi_artifacts for content_json → extract implementationCode → compile
|
|
58
|
+
*/
|
|
59
|
+
private _loadActiveCodeImplementations;
|
|
60
|
+
/**
|
|
61
|
+
* Load active code implementations from the activations table (code_tool_hook channel).
|
|
62
|
+
*
|
|
63
|
+
* For each activation record:
|
|
64
|
+
* 1. Query the pi_artifacts table for the artifact content
|
|
65
|
+
* 2. Parse content_json to extract implementationCode (treated as unknown, EP-01)
|
|
66
|
+
* 3. Compile via loadRuleImplementationModule (isolated vm context)
|
|
67
|
+
*
|
|
68
|
+
* PRI-436 invariant: at most one active activation per rule (target_ref).
|
|
69
|
+
* Duplicate active activations for the same target_ref are ALL skipped
|
|
70
|
+
* (zero executions) and emit structured unhealthy evidence via logger.warn
|
|
71
|
+
* (Runtime Contract Rule 9: graceful degradation includes a reason).
|
|
72
|
+
*
|
|
73
|
+
* All data from SQLite is treated as unknown and validated before use.
|
|
74
|
+
*/
|
|
75
|
+
private _loadFromActivationsTable;
|
|
76
|
+
/**
|
|
77
|
+
* PRI-437: Record an unhealthy activation state to EventLog.
|
|
78
|
+
*
|
|
79
|
+
* This makes compile/load failures visible to CLI (pd runtime health) and
|
|
80
|
+
* Console API — NOT just a logger.warn that's silently skipped.
|
|
81
|
+
*
|
|
82
|
+
* ERR-002: degradation includes a reason and nextAction (not silent).
|
|
83
|
+
* Failures in EventLog recording are caught and logged (never throw).
|
|
84
|
+
*/
|
|
85
|
+
private _recordUnhealthy;
|
|
86
|
+
}
|