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
|
@@ -1,33 +1,15 @@
|
|
|
1
|
-
|
|
2
1
|
import * as path from 'path';
|
|
3
2
|
import * as os from 'os';
|
|
4
3
|
import * as fs from 'fs';
|
|
5
|
-
import type { OpenClawPluginApi } from '../openclaw-sdk.js';
|
|
6
4
|
import { PathResolutionError } from '../config/index.js';
|
|
7
5
|
import { atomicWriteFileSync } from '../utils/io.js';
|
|
8
|
-
|
|
9
|
-
export interface PathResolverOptions {
|
|
10
|
-
workspaceDir?: string;
|
|
11
|
-
normalizeWorkspace?: boolean;
|
|
12
|
-
logger?: {
|
|
13
|
-
|
|
14
|
-
debug?: (_msg: string) => void;
|
|
15
|
-
info?: (_msg: string) => void;
|
|
16
|
-
warn?: (_msg: string) => void;
|
|
17
|
-
error?: (_msg: string) => void;
|
|
18
|
-
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
|
|
22
6
|
const DEFAULT_WORKSPACE_SUBPATH = '.openclaw/workspace';
|
|
23
|
-
|
|
24
7
|
export const PD_ENV_VARS = {
|
|
25
8
|
WORKSPACE_DIR: 'PD_WORKSPACE_DIR',
|
|
26
9
|
STATE_DIR: 'PD_STATE_DIR',
|
|
27
10
|
DEBUG: 'DEBUG',
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export const PD_ENV_DESCRIPTIONS: Record<keyof typeof PD_ENV_VARS, { desc: string; example: string }> = {
|
|
11
|
+
};
|
|
12
|
+
export const PD_ENV_DESCRIPTIONS = {
|
|
31
13
|
WORKSPACE_DIR: {
|
|
32
14
|
desc: 'Override the default workspace directory',
|
|
33
15
|
example: 'PD_WORKSPACE_DIR=/home/user/my-workspace',
|
|
@@ -41,47 +23,34 @@ export const PD_ENV_DESCRIPTIONS: Record<keyof typeof PD_ENV_VARS, { desc: strin
|
|
|
41
23
|
example: 'DEBUG=true',
|
|
42
24
|
},
|
|
43
25
|
};
|
|
44
|
-
|
|
45
|
-
export function printEnvVarHelp(): void {
|
|
26
|
+
export function printEnvVarHelp() {
|
|
46
27
|
console.log('\n📁 Principles Disciple - Environment Variables\n');
|
|
47
28
|
console.log('You can customize directory paths using environment variables:\n');
|
|
48
|
-
|
|
49
29
|
for (const [key, varName] of Object.entries(PD_ENV_VARS)) {
|
|
50
|
-
const info = PD_ENV_DESCRIPTIONS[key
|
|
30
|
+
const info = PD_ENV_DESCRIPTIONS[key];
|
|
51
31
|
console.log(` ${varName}`);
|
|
52
32
|
console.log(` Description: ${info.desc}`);
|
|
53
33
|
console.log(` Example: ${info.example}`);
|
|
54
34
|
console.log();
|
|
55
35
|
}
|
|
56
|
-
|
|
57
36
|
console.log('💡 Tips:');
|
|
58
37
|
console.log(' - These can be set in your shell profile (~/.bashrc, ~/.zshrc)');
|
|
59
38
|
console.log(' - Or passed when starting OpenClaw gateway');
|
|
60
39
|
console.log(' - Example: PD_WORKSPACE_DIR=/custom/path openclaw-gateway start\n');
|
|
61
40
|
}
|
|
62
|
-
|
|
63
|
-
export interface PDConfig {
|
|
64
|
-
workspace?: string;
|
|
65
|
-
state?: string;
|
|
66
|
-
debug?: boolean;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
41
|
const PD_CONFIG_FILE = 'principles-disciple.json';
|
|
70
42
|
const PD_CONFIG_LOCATIONS = [
|
|
71
43
|
path.join(process.cwd(), PD_CONFIG_FILE),
|
|
72
44
|
path.join(os.homedir(), '.openclaw', PD_CONFIG_FILE),
|
|
73
45
|
path.join(os.homedir(), '.principles', PD_CONFIG_FILE),
|
|
74
46
|
];
|
|
75
|
-
|
|
76
|
-
function isWindowsPath(inputPath: string): boolean {
|
|
47
|
+
function isWindowsPath(inputPath) {
|
|
77
48
|
return /^[A-Za-z]:[\\/]/.test(inputPath) || inputPath.startsWith('\\\\');
|
|
78
49
|
}
|
|
79
|
-
|
|
80
|
-
function isPosixAbsolutePath(inputPath: string): boolean {
|
|
50
|
+
function isPosixAbsolutePath(inputPath) {
|
|
81
51
|
return inputPath.startsWith('/');
|
|
82
52
|
}
|
|
83
|
-
|
|
84
|
-
function getPathApi(inputPath: string): typeof path.posix | typeof path.win32 | typeof path {
|
|
53
|
+
function getPathApi(inputPath) {
|
|
85
54
|
if (isWindowsPath(inputPath)) {
|
|
86
55
|
return path.win32;
|
|
87
56
|
}
|
|
@@ -90,8 +59,7 @@ function getPathApi(inputPath: string): typeof path.posix | typeof path.win32 |
|
|
|
90
59
|
}
|
|
91
60
|
return path;
|
|
92
61
|
}
|
|
93
|
-
|
|
94
|
-
function findConfigFile(): string | null {
|
|
62
|
+
function findConfigFile() {
|
|
95
63
|
for (const loc of PD_CONFIG_LOCATIONS) {
|
|
96
64
|
if (fs.existsSync(loc)) {
|
|
97
65
|
return loc;
|
|
@@ -99,34 +67,30 @@ function findConfigFile(): string | null {
|
|
|
99
67
|
}
|
|
100
68
|
return null;
|
|
101
69
|
}
|
|
102
|
-
|
|
103
|
-
function loadConfigFromFile(): PDConfig | null {
|
|
70
|
+
function loadConfigFromFile() {
|
|
104
71
|
const configPath = findConfigFile();
|
|
105
72
|
if (!configPath) {
|
|
106
73
|
return null;
|
|
107
74
|
}
|
|
108
|
-
|
|
109
75
|
try {
|
|
110
76
|
const content = fs.readFileSync(configPath, 'utf8');
|
|
111
77
|
const config = JSON.parse(content);
|
|
112
78
|
console.log(`[PD:PathResolver] Loaded config from: ${configPath}`);
|
|
113
79
|
return config;
|
|
114
|
-
}
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
115
82
|
console.warn(`[PD:PathResolver] Failed to load config from ${configPath}: ${String(e)}`);
|
|
116
83
|
return null;
|
|
117
84
|
}
|
|
118
85
|
}
|
|
119
|
-
|
|
120
86
|
export class PathResolver {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
static setExtensionRoot(extensionRootPath: string): void {
|
|
87
|
+
static extensionRoot = null;
|
|
88
|
+
workspaceDir = null;
|
|
89
|
+
stateDir = null;
|
|
90
|
+
logger;
|
|
91
|
+
normalizeWorkspace;
|
|
92
|
+
initialized = false;
|
|
93
|
+
static setExtensionRoot(extensionRootPath) {
|
|
130
94
|
if (!extensionRootPath || !extensionRootPath.trim()) {
|
|
131
95
|
return;
|
|
132
96
|
}
|
|
@@ -134,15 +98,12 @@ export class PathResolver {
|
|
|
134
98
|
const pathApi = getPathApi(trimmed);
|
|
135
99
|
PathResolver.extensionRoot = pathApi.normalize(trimmed);
|
|
136
100
|
}
|
|
137
|
-
|
|
138
|
-
static getExtensionRoot(): string | null {
|
|
101
|
+
static getExtensionRoot() {
|
|
139
102
|
return PathResolver.extensionRoot;
|
|
140
103
|
}
|
|
141
|
-
|
|
142
|
-
constructor(options: PathResolverOptions = {}) {
|
|
104
|
+
constructor(options = {}) {
|
|
143
105
|
this.logger = options.logger;
|
|
144
106
|
this.normalizeWorkspace = options.normalizeWorkspace ?? true;
|
|
145
|
-
|
|
146
107
|
if (options.workspaceDir) {
|
|
147
108
|
const original = options.workspaceDir;
|
|
148
109
|
const normalized = this.normalizeWorkspace ? this.normalizePath(original) : original;
|
|
@@ -153,15 +114,12 @@ export class PathResolver {
|
|
|
153
114
|
this.initialized = true;
|
|
154
115
|
}
|
|
155
116
|
}
|
|
156
|
-
|
|
157
|
-
private log(level: 'debug' | 'info' | 'warn' | 'error', msg: string): void {
|
|
117
|
+
log(level, msg) {
|
|
158
118
|
const prefix = '[PD:PathResolver]';
|
|
159
119
|
const fullMsg = `${prefix} ${msg}`;
|
|
160
|
-
|
|
161
120
|
if (process.env.DEBUG === 'true') {
|
|
162
121
|
this.logger?.debug?.(fullMsg);
|
|
163
122
|
}
|
|
164
|
-
|
|
165
123
|
switch (level) {
|
|
166
124
|
case 'debug':
|
|
167
125
|
this.logger?.debug?.(fullMsg);
|
|
@@ -177,40 +135,32 @@ export class PathResolver {
|
|
|
177
135
|
break;
|
|
178
136
|
}
|
|
179
137
|
}
|
|
180
|
-
|
|
181
|
-
private detectWorkspaceDir(): string {
|
|
138
|
+
detectWorkspaceDir() {
|
|
182
139
|
const envWorkspace = process.env.PD_WORKSPACE_DIR;
|
|
183
140
|
if (envWorkspace && envWorkspace.trim()) {
|
|
184
141
|
this.log('info', `Using workspace from PD_WORKSPACE_DIR: ${envWorkspace}`);
|
|
185
142
|
return envWorkspace.trim();
|
|
186
143
|
}
|
|
187
|
-
|
|
188
144
|
const envOpenclaw = process.env.OPENCLAW_WORKSPACE;
|
|
189
145
|
if (envOpenclaw && envOpenclaw.trim()) {
|
|
190
146
|
this.log('info', `Using workspace from OPENCLAW_WORKSPACE: ${envOpenclaw}`);
|
|
191
147
|
return envOpenclaw.trim();
|
|
192
148
|
}
|
|
193
|
-
|
|
194
149
|
const fileConfig = loadConfigFromFile();
|
|
195
150
|
if (fileConfig?.workspace) {
|
|
196
151
|
this.log('info', `Using workspace from config file: ${fileConfig.workspace}`);
|
|
197
152
|
return fileConfig.workspace;
|
|
198
153
|
}
|
|
199
|
-
|
|
200
154
|
const homeDir = os.homedir();
|
|
201
155
|
const defaultWorkspace = path.join(homeDir, DEFAULT_WORKSPACE_SUBPATH);
|
|
202
156
|
this.log('info', `Using default workspace: ${defaultWorkspace}`);
|
|
203
|
-
|
|
204
157
|
return defaultWorkspace;
|
|
205
158
|
}
|
|
206
|
-
|
|
207
|
-
private normalizePath(inputPath: string): string {
|
|
159
|
+
normalizePath(inputPath) {
|
|
208
160
|
const pathApi = getPathApi(inputPath);
|
|
209
161
|
let normalized = pathApi === path ? path.resolve(inputPath) : pathApi.normalize(inputPath);
|
|
210
|
-
|
|
211
162
|
if (this.normalizeWorkspace) {
|
|
212
163
|
const problematicSuffixes = ['/memory', '/docs', '\\memory', '\\docs'];
|
|
213
|
-
|
|
214
164
|
for (const suffix of problematicSuffixes) {
|
|
215
165
|
if (normalized.endsWith(suffix)) {
|
|
216
166
|
const parent = pathApi.dirname(normalized);
|
|
@@ -220,49 +170,38 @@ export class PathResolver {
|
|
|
220
170
|
}
|
|
221
171
|
}
|
|
222
172
|
}
|
|
223
|
-
|
|
224
173
|
return normalized;
|
|
225
174
|
}
|
|
226
|
-
|
|
227
|
-
normalizeWorkspacePath(inputPath: string): string {
|
|
175
|
+
normalizeWorkspacePath(inputPath) {
|
|
228
176
|
return this.normalizePath(inputPath);
|
|
229
177
|
}
|
|
230
|
-
|
|
231
|
-
getWorkspaceDir(): string {
|
|
178
|
+
getWorkspaceDir() {
|
|
232
179
|
if (this.initialized && this.workspaceDir) {
|
|
233
180
|
return this.workspaceDir;
|
|
234
181
|
}
|
|
235
|
-
|
|
236
182
|
let dir = this.detectWorkspaceDir();
|
|
237
|
-
|
|
238
183
|
if (this.normalizeWorkspace) {
|
|
239
184
|
const originalDir = dir;
|
|
240
185
|
dir = this.normalizePath(dir);
|
|
241
|
-
|
|
242
186
|
if (originalDir !== dir) {
|
|
243
187
|
this.log('info', `Workspace path normalized: ${originalDir} -> ${dir}`);
|
|
244
188
|
}
|
|
245
189
|
}
|
|
246
|
-
|
|
247
190
|
this.workspaceDir = dir;
|
|
248
191
|
this.initialized = true;
|
|
249
192
|
this.log('debug', `Final workspace directory: ${this.workspaceDir}`);
|
|
250
|
-
|
|
251
193
|
return this.workspaceDir;
|
|
252
194
|
}
|
|
253
|
-
|
|
254
|
-
getStateDir(): string {
|
|
195
|
+
getStateDir() {
|
|
255
196
|
if (this.stateDir) {
|
|
256
197
|
return this.stateDir;
|
|
257
198
|
}
|
|
258
|
-
|
|
259
199
|
const envStateDir = process.env.PD_STATE_DIR;
|
|
260
200
|
if (envStateDir && envStateDir.trim()) {
|
|
261
201
|
this.stateDir = envStateDir.trim();
|
|
262
202
|
this.log('info', `Using state directory from PD_STATE_DIR: ${this.stateDir}`);
|
|
263
203
|
return this.stateDir;
|
|
264
204
|
}
|
|
265
|
-
|
|
266
205
|
// If workspaceDir was explicitly provided via constructor, use workspace-based state dir
|
|
267
206
|
// This ensures tests and programmatic usage don't get polluted by global config
|
|
268
207
|
if (this.initialized && this.workspaceDir) {
|
|
@@ -271,23 +210,19 @@ export class PathResolver {
|
|
|
271
210
|
this.log('debug', `Using workspace-based state directory: ${this.stateDir}`);
|
|
272
211
|
return this.stateDir;
|
|
273
212
|
}
|
|
274
|
-
|
|
275
213
|
const fileConfig = loadConfigFromFile();
|
|
276
214
|
if (fileConfig?.state) {
|
|
277
215
|
this.stateDir = fileConfig.state;
|
|
278
216
|
this.log('info', `Using state directory from config file: ${this.stateDir}`);
|
|
279
217
|
return this.stateDir;
|
|
280
218
|
}
|
|
281
|
-
|
|
282
219
|
const workspaceDir = this.getWorkspaceDir();
|
|
283
220
|
const pathApi = getPathApi(workspaceDir);
|
|
284
221
|
this.stateDir = pathApi.join(workspaceDir, '.state');
|
|
285
222
|
this.log('debug', `Computed state directory: ${this.stateDir}`);
|
|
286
|
-
|
|
287
223
|
return this.stateDir;
|
|
288
224
|
}
|
|
289
|
-
|
|
290
|
-
resolve(key: string): string {
|
|
225
|
+
resolve(key) {
|
|
291
226
|
const workspace = this.getWorkspaceDir();
|
|
292
227
|
const state = this.getStateDir();
|
|
293
228
|
const workspacePath = getPathApi(workspace);
|
|
@@ -299,8 +234,7 @@ export class PathResolver {
|
|
|
299
234
|
const evolutionWorker = fs.existsSync(extensionSrc)
|
|
300
235
|
? extensionPath.join(extensionSrc, 'service', 'evolution-worker.ts')
|
|
301
236
|
: extensionPath.join(extensionDist, 'service', 'evolution-worker.js');
|
|
302
|
-
|
|
303
|
-
const pathMap: Record<string, string> = {
|
|
237
|
+
const pathMap = {
|
|
304
238
|
'PROFILE': workspacePath.join(workspace, '.principles', 'PROFILE.json'),
|
|
305
239
|
'PRINCIPLES': workspacePath.join(workspace, '.principles', 'PRINCIPLES.md'),
|
|
306
240
|
'THINKING_OS': workspacePath.join(workspace, '.principles', 'THINKING_OS.md'),
|
|
@@ -334,74 +268,55 @@ export class PathResolver {
|
|
|
334
268
|
'PRINCIPLE_BLACKLIST': workspacePath.join(state, 'principle_blacklist.json'),
|
|
335
269
|
'MEMORY': memory,
|
|
336
270
|
};
|
|
337
|
-
|
|
338
271
|
const resolved = pathMap[key];
|
|
339
272
|
if (!resolved) {
|
|
340
273
|
this.log('warn', `Unknown path key: ${key}`);
|
|
341
274
|
throw new PathResolutionError(key);
|
|
342
275
|
}
|
|
343
|
-
|
|
344
276
|
this.log('debug', `Resolved path for '${key}': ${resolved}`);
|
|
345
|
-
|
|
346
277
|
return resolved;
|
|
347
278
|
}
|
|
348
|
-
|
|
349
|
-
ensureStateDir(): void {
|
|
279
|
+
ensureStateDir() {
|
|
350
280
|
const stateDir = this.getStateDir();
|
|
351
|
-
|
|
352
281
|
if (!fs.existsSync(stateDir)) {
|
|
353
282
|
this.log('info', `Creating state directory: ${stateDir}`);
|
|
354
283
|
fs.mkdirSync(stateDir, { recursive: true });
|
|
355
284
|
}
|
|
356
285
|
}
|
|
357
|
-
|
|
358
|
-
static createFromHookContext(ctx: Record<string, unknown>): PathResolver {
|
|
286
|
+
static createFromHookContext(ctx) {
|
|
359
287
|
const resolver = new PathResolver();
|
|
360
|
-
|
|
361
288
|
if (ctx?.workspaceDir) {
|
|
362
289
|
let workspaceDir = String(ctx.workspaceDir);
|
|
363
|
-
|
|
364
290
|
if (resolver.normalizeWorkspace) {
|
|
365
291
|
workspaceDir = resolver.normalizePath(workspaceDir);
|
|
366
292
|
}
|
|
367
|
-
|
|
368
293
|
resolver.workspaceDir = workspaceDir;
|
|
369
294
|
resolver.initialized = true;
|
|
370
295
|
resolver.log('info', `Created from hook context with workspace: ${workspaceDir}`);
|
|
371
296
|
}
|
|
372
|
-
|
|
373
297
|
if (ctx?.stateDir) {
|
|
374
298
|
resolver.stateDir = String(ctx.stateDir);
|
|
375
299
|
}
|
|
376
|
-
|
|
377
300
|
return resolver;
|
|
378
301
|
}
|
|
379
302
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
const defaultConfig: PDConfig = {
|
|
303
|
+
export function createDefaultConfig(targetPath) {
|
|
304
|
+
const defaultConfig = {
|
|
383
305
|
workspace: path.join(os.homedir(), '.openclaw', 'workspace'),
|
|
384
306
|
state: path.join(os.homedir(), '.openclaw', 'workspace', '.state'),
|
|
385
307
|
debug: false,
|
|
386
308
|
};
|
|
387
|
-
|
|
388
309
|
const target = targetPath || path.join(os.homedir(), '.openclaw', PD_CONFIG_FILE);
|
|
389
310
|
const dir = path.dirname(target);
|
|
390
|
-
|
|
391
311
|
if (!fs.existsSync(dir)) {
|
|
392
312
|
fs.mkdirSync(dir, { recursive: true });
|
|
393
313
|
}
|
|
394
|
-
|
|
395
314
|
atomicWriteFileSync(target, JSON.stringify(defaultConfig, null, 2));
|
|
396
|
-
|
|
397
315
|
console.log(`✅ Created default config at: ${target}`);
|
|
398
316
|
console.log(` You can edit this file to customize paths.`);
|
|
399
|
-
|
|
400
317
|
return target;
|
|
401
318
|
}
|
|
402
|
-
|
|
403
319
|
// ── OpenClaw API Workspace Resolution ────────────────────────────
|
|
404
|
-
|
|
405
320
|
/**
|
|
406
321
|
* Resolve workspace directory via OpenClaw's official API.
|
|
407
322
|
*
|
|
@@ -414,35 +329,30 @@ export function createDefaultConfig(targetPath?: string): string {
|
|
|
414
329
|
* @param agentId - Agent ID (defaults to 'main' if not provided)
|
|
415
330
|
* @returns Resolved workspace directory, or `undefined` if all resolution paths fail
|
|
416
331
|
*/
|
|
417
|
-
export function resolveWorkspaceDirFromApi(
|
|
418
|
-
api
|
|
419
|
-
|
|
420
|
-
): string | undefined {
|
|
421
|
-
if (!api) return undefined;
|
|
422
|
-
|
|
332
|
+
export function resolveWorkspaceDirFromApi(api, agentId) {
|
|
333
|
+
if (!api)
|
|
334
|
+
return undefined;
|
|
423
335
|
// 1. Official API: api.runtime.agent.resolveAgentWorkspaceDir
|
|
424
|
-
|
|
425
|
-
const officialAgent = (api.runtime as { agent?: { resolveAgentWorkspaceDir?: (cfg: unknown, id: string) => string } }).agent;
|
|
426
|
-
|
|
336
|
+
const officialAgent = api.runtime.agent;
|
|
427
337
|
if (officialAgent?.resolveAgentWorkspaceDir) {
|
|
428
338
|
try {
|
|
429
339
|
return officialAgent.resolveAgentWorkspaceDir(api.config, agentId ?? 'main');
|
|
430
|
-
}
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
431
342
|
// Fall through to config check
|
|
432
343
|
}
|
|
433
344
|
}
|
|
434
|
-
|
|
435
345
|
// 2. Direct config workspaceDir (for tests and programmatic usage)
|
|
436
|
-
const cfgWorkspaceDir =
|
|
346
|
+
const cfgWorkspaceDir = api.config?.workspaceDir;
|
|
437
347
|
if (cfgWorkspaceDir && cfgWorkspaceDir.trim()) {
|
|
438
348
|
return cfgWorkspaceDir.trim();
|
|
439
349
|
}
|
|
440
|
-
|
|
441
350
|
// 3. Fallback: PathResolver (PD_WORKSPACE_DIR env, config file, default)
|
|
442
351
|
try {
|
|
443
352
|
const pr = new PathResolver();
|
|
444
353
|
return pr.getWorkspaceDir();
|
|
445
|
-
}
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
446
356
|
return undefined;
|
|
447
357
|
}
|
|
448
358
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Principles Disciple Directory Constants
|
|
3
|
+
* Establishing a logical separation between Identity, State, and Memory.
|
|
4
|
+
*/
|
|
5
|
+
export declare const PD_DIRS: {
|
|
6
|
+
IDENTITY: string;
|
|
7
|
+
MODELS: string;
|
|
8
|
+
STATE: string;
|
|
9
|
+
MEMORY: string;
|
|
10
|
+
OKR: string;
|
|
11
|
+
LOGS: string;
|
|
12
|
+
SESSIONS: string;
|
|
13
|
+
PAIN_SAMPLES: string;
|
|
14
|
+
LOCKS: string;
|
|
15
|
+
IMPL_CODE_DIR: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Standard File Path Mappings
|
|
19
|
+
*/
|
|
20
|
+
export declare const PD_FILES: {
|
|
21
|
+
PROFILE: string;
|
|
22
|
+
PRINCIPLES: string;
|
|
23
|
+
THINKING_OS: string;
|
|
24
|
+
DECISION_POLICY: string;
|
|
25
|
+
MODELS_DIR: string;
|
|
26
|
+
STATE_DIR: string;
|
|
27
|
+
EVOLUTION_QUEUE: string;
|
|
28
|
+
EVOLUTION_DIRECTIVE: string;
|
|
29
|
+
WORKBOARD: string;
|
|
30
|
+
AGENT_SCORECARD: string;
|
|
31
|
+
PAIN_FLAG: string;
|
|
32
|
+
SYSTEM_CAPABILITIES: string;
|
|
33
|
+
PAIN_SETTINGS: string;
|
|
34
|
+
PAIN_CANDIDATES: string;
|
|
35
|
+
THINKING_OS_USAGE: string;
|
|
36
|
+
TRAJECTORY_DB: string;
|
|
37
|
+
TRAJECTORY_BLOBS_DIR: string;
|
|
38
|
+
EXPORTS_DIR: string;
|
|
39
|
+
SESSION_DIR: string;
|
|
40
|
+
DICTIONARY: string;
|
|
41
|
+
PRINCIPLE_BLACKLIST: string;
|
|
42
|
+
WORKFLOWS_YAML: string;
|
|
43
|
+
IMPL_CODE_DIR: string;
|
|
44
|
+
MEMORY_MD: string;
|
|
45
|
+
HEARTBEAT: string;
|
|
46
|
+
SYSTEM_LOG: string;
|
|
47
|
+
REFLECTION_LOG: string;
|
|
48
|
+
USER_CONTEXT: string;
|
|
49
|
+
OKR_DIR: string;
|
|
50
|
+
CURRENT_FOCUS: string;
|
|
51
|
+
WEEK_STATE: string;
|
|
52
|
+
THINKING_OS_CANDIDATES: string;
|
|
53
|
+
SEMANTIC_PAIN: string;
|
|
54
|
+
EVOLUTION_STREAM: string;
|
|
55
|
+
EVOLUTION_LOCK: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Resolves a PD file path within a given workspace.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolvePdPath(workspaceDir: string, fileKey: keyof typeof PD_FILES): string;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function isWindowsPath(input: string): boolean {
|
|
2
|
+
const posixJoin = (...parts) => path.posix.join(...parts);
|
|
3
|
+
function isWindowsPath(input) {
|
|
6
4
|
return /^[A-Za-z]:[\\/]/.test(input) || input.startsWith('\\\\');
|
|
7
5
|
}
|
|
8
|
-
|
|
9
|
-
function joinWorkspacePath(workspaceDir: string, relativePath: string): string {
|
|
6
|
+
function joinWorkspacePath(workspaceDir, relativePath) {
|
|
10
7
|
if (isWindowsPath(workspaceDir)) {
|
|
11
8
|
return path.win32.join(workspaceDir, relativePath);
|
|
12
9
|
}
|
|
@@ -15,7 +12,6 @@ function joinWorkspacePath(workspaceDir: string, relativePath: string): string {
|
|
|
15
12
|
}
|
|
16
13
|
return path.join(workspaceDir, relativePath);
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
/**
|
|
20
16
|
* Principles Disciple Directory Constants
|
|
21
17
|
* Establishing a logical separation between Identity, State, and Memory.
|
|
@@ -32,7 +28,6 @@ export const PD_DIRS = {
|
|
|
32
28
|
LOCKS: posixJoin('memory', '.locks'),
|
|
33
29
|
IMPL_CODE_DIR: posixJoin('.state', 'principles', 'implementations'),
|
|
34
30
|
};
|
|
35
|
-
|
|
36
31
|
/**
|
|
37
32
|
* Standard File Path Mappings
|
|
38
33
|
*/
|
|
@@ -42,7 +37,6 @@ export const PD_FILES = {
|
|
|
42
37
|
THINKING_OS: posixJoin(PD_DIRS.IDENTITY, 'THINKING_OS.md'),
|
|
43
38
|
DECISION_POLICY: posixJoin(PD_DIRS.IDENTITY, 'DECISION_POLICY.json'),
|
|
44
39
|
MODELS_DIR: PD_DIRS.MODELS,
|
|
45
|
-
|
|
46
40
|
STATE_DIR: PD_DIRS.STATE,
|
|
47
41
|
EVOLUTION_QUEUE: posixJoin(PD_DIRS.STATE, 'evolution_queue.json'),
|
|
48
42
|
EVOLUTION_DIRECTIVE: posixJoin(PD_DIRS.STATE, 'evolution_directive.json'),
|
|
@@ -61,10 +55,8 @@ export const PD_FILES = {
|
|
|
61
55
|
PRINCIPLE_BLACKLIST: posixJoin(PD_DIRS.STATE, 'principle_blacklist.json'),
|
|
62
56
|
WORKFLOWS_YAML: posixJoin(PD_DIRS.STATE, 'workflows.yaml'),
|
|
63
57
|
IMPL_CODE_DIR: PD_DIRS.IMPL_CODE_DIR,
|
|
64
|
-
|
|
65
58
|
MEMORY_MD: 'MEMORY.md',
|
|
66
59
|
HEARTBEAT: 'HEARTBEAT.md',
|
|
67
|
-
|
|
68
60
|
SYSTEM_LOG: posixJoin(PD_DIRS.LOGS, 'SYSTEM.log'),
|
|
69
61
|
REFLECTION_LOG: posixJoin(PD_DIRS.MEMORY, 'reflection-log.md'),
|
|
70
62
|
USER_CONTEXT: posixJoin(PD_DIRS.MEMORY, 'USER_CONTEXT.md'),
|
|
@@ -76,10 +68,9 @@ export const PD_FILES = {
|
|
|
76
68
|
EVOLUTION_STREAM: posixJoin(PD_DIRS.MEMORY, 'evolution.jsonl'),
|
|
77
69
|
EVOLUTION_LOCK: posixJoin(PD_DIRS.LOCKS, 'evolution'),
|
|
78
70
|
};
|
|
79
|
-
|
|
80
71
|
/**
|
|
81
72
|
* Resolves a PD file path within a given workspace.
|
|
82
73
|
*/
|
|
83
|
-
export function resolvePdPath(workspaceDir
|
|
74
|
+
export function resolvePdPath(workspaceDir, fileKey) {
|
|
84
75
|
return joinWorkspacePath(workspaceDir, PD_FILES[fileKey]);
|
|
85
76
|
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PD Config Loader (Plugin I/O boundary) — PRI-307
|
|
3
|
+
*
|
|
4
|
+
* Reads `.pd/config.yaml`, validates via core, computes effective config.
|
|
5
|
+
* Replaces the old `.pd/feature-flags.yaml` and `.state/workflows.yaml` reading
|
|
6
|
+
* for plugin production paths.
|
|
7
|
+
*
|
|
8
|
+
* ADR-0016: PD owns exactly one user config file.
|
|
9
|
+
* - Missing config → defaults with nextAction
|
|
10
|
+
* - Malformed config → fail loud with errors and nextAction
|
|
11
|
+
* - No secrets in output
|
|
12
|
+
* - Observer disabled → no start / no noisy log cycling
|
|
13
|
+
* - Observer enabled + missing setup → structured needs_setup + nextAction
|
|
14
|
+
*/
|
|
15
|
+
import type { EffectivePdConfig } from '@principles/core/runtime-v2';
|
|
16
|
+
export declare const PD_CONFIG_DIR = ".pd";
|
|
17
|
+
export declare const PD_CONFIG_FILENAME = "config.yaml";
|
|
18
|
+
export type ObserverReadiness = 'disabled' | 'needs_setup' | 'ready' | 'not_ready' | 'config_malformed';
|
|
19
|
+
export interface ObserverConfigResult {
|
|
20
|
+
/** Whether the observer feature is enabled in config */
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
/** Observer readiness state */
|
|
23
|
+
readiness: ObserverReadiness;
|
|
24
|
+
/** Config source: 'defaults' | 'user_config' | 'malformed' */
|
|
25
|
+
source: string;
|
|
26
|
+
/** Reason for current state */
|
|
27
|
+
reason: string;
|
|
28
|
+
/** What the user should do next */
|
|
29
|
+
nextAction: string;
|
|
30
|
+
/** The runtime profile ID for this observer, if configured */
|
|
31
|
+
runtimeProfileId: string | null;
|
|
32
|
+
/** The runtime profile type, if configured */
|
|
33
|
+
runtimeProfileType: string | null;
|
|
34
|
+
/** The apiKeyEnv for the runtime profile, if applicable */
|
|
35
|
+
apiKeyEnv: string | null;
|
|
36
|
+
/** Whether the apiKeyEnv is present in process.env */
|
|
37
|
+
apiKeyPresent: boolean;
|
|
38
|
+
/** Provider name from runtime profile */
|
|
39
|
+
provider: string | null;
|
|
40
|
+
/** Model name from runtime profile */
|
|
41
|
+
model: string | null;
|
|
42
|
+
/** Timeout from runtime profile */
|
|
43
|
+
timeoutMs: number | null;
|
|
44
|
+
/** Base URL from runtime profile */
|
|
45
|
+
baseUrl: string | null;
|
|
46
|
+
/** Config validation errors (only present when readiness=config_malformed) */
|
|
47
|
+
configErrors?: Array<{
|
|
48
|
+
path: string;
|
|
49
|
+
reason: string;
|
|
50
|
+
nextAction: string;
|
|
51
|
+
}>;
|
|
52
|
+
}
|
|
53
|
+
export interface PluginConfigLoadResult {
|
|
54
|
+
ok: boolean;
|
|
55
|
+
effective: EffectivePdConfig;
|
|
56
|
+
source: 'defaults' | 'user_config' | 'malformed';
|
|
57
|
+
configPath: string;
|
|
58
|
+
warnings: string[];
|
|
59
|
+
errors: Array<{
|
|
60
|
+
path: string;
|
|
61
|
+
reason: string;
|
|
62
|
+
nextAction: string;
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
65
|
+
export declare function getPdConfigPath(workspaceDir: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Load and validate `.pd/config.yaml` from the workspace.
|
|
68
|
+
* Never throws on malformed input. Always provides a usable fallback.
|
|
69
|
+
*/
|
|
70
|
+
export declare function loadPdConfigForPlugin(workspaceDir: string): PluginConfigLoadResult;
|
|
71
|
+
/**
|
|
72
|
+
* Get a single feature flag's enabled state from .pd/config.yaml.
|
|
73
|
+
* Replaces the old `loadFeatureFlagFromWorkspace` which read .pd/feature-flags.yaml.
|
|
74
|
+
*/
|
|
75
|
+
export declare function loadFeatureFlagFromConfig(workspaceDir: string, flagId: string, logger?: {
|
|
76
|
+
warn?: (msg: string) => void;
|
|
77
|
+
info?: (msg: string) => void;
|
|
78
|
+
}): {
|
|
79
|
+
enabled: boolean;
|
|
80
|
+
source: string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Resolve observer configuration from .pd/config.yaml.
|
|
84
|
+
*
|
|
85
|
+
* Returns structured state:
|
|
86
|
+
* - config_malformed: config file is invalid — no guessing, fail loud
|
|
87
|
+
* - disabled: observer feature flag is off OR agent.enabled=false → no start, no noisy logs
|
|
88
|
+
* - needs_setup: observer enabled but runtime profile missing, API key not set, or unsupported profile type
|
|
89
|
+
* - ready: observer enabled and fully configured (pi-ai with key present)
|
|
90
|
+
* - not_ready: observer enabled, API key present, but runtime availability unknown
|
|
91
|
+
*/
|
|
92
|
+
export declare function resolveObserverConfig(workspaceDir: string, observerFlagId: string, observerAgentName: string, _logger?: {
|
|
93
|
+
warn?: (msg: string) => void;
|
|
94
|
+
info?: (msg: string) => void;
|
|
95
|
+
debug?: (msg: string) => void;
|
|
96
|
+
}): ObserverConfigResult;
|