principles-disciple 1.126.0 → 1.128.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/archive-impl.d.ts +18 -0
- package/dist/commands/archive-impl.js +105 -0
- package/dist/commands/capabilities.d.ts +3 -0
- package/dist/commands/capabilities.js +76 -0
- package/dist/commands/context.d.ts +5 -0
- package/{src/commands/context.ts → dist/commands/context.js} +34 -83
- package/dist/commands/disable-impl.d.ts +22 -0
- package/dist/commands/disable-impl.js +118 -0
- package/dist/commands/evolution-status.d.ts +4 -0
- package/dist/commands/evolution-status.js +187 -0
- package/dist/commands/export.d.ts +2 -0
- package/dist/commands/export.js +53 -0
- package/dist/commands/focus.d.ts +14 -0
- package/dist/commands/focus.js +443 -0
- package/dist/commands/pain.d.ts +6 -0
- package/{src/commands/pain.ts → dist/commands/pain.js} +137 -188
- package/dist/commands/principle-rollback.d.ts +4 -0
- package/dist/commands/principle-rollback.js +26 -0
- package/dist/commands/promote-impl.d.ts +22 -0
- package/dist/commands/promote-impl.js +194 -0
- package/dist/commands/rollback-impl.d.ts +32 -0
- package/dist/commands/rollback-impl.js +180 -0
- package/dist/commands/rollback.d.ts +19 -0
- package/{src/commands/rollback.ts → dist/commands/rollback.js} +10 -53
- package/dist/commands/samples.d.ts +2 -0
- package/dist/commands/samples.js +58 -0
- package/dist/commands/strategy.d.ts +2 -0
- package/dist/commands/strategy.js +16 -0
- package/dist/commands/thinking-os.d.ts +2 -0
- package/{src/commands/thinking-os.ts → dist/commands/thinking-os.js} +35 -58
- package/dist/commands/workflow-debug.d.ts +6 -0
- package/{src/commands/workflow-debug.ts → dist/commands/workflow-debug.js} +13 -33
- package/dist/config/defaults/runtime.d.ts +58 -0
- package/{src/config/defaults/runtime.ts → dist/config/defaults/runtime.js} +4 -41
- package/dist/config/errors.d.ts +86 -0
- package/dist/config/errors.js +107 -0
- package/{src/config/index.ts → dist/config/index.d.ts} +1 -2
- package/dist/config/index.js +7 -0
- package/dist/constants/diagnostician.d.ts +12 -0
- package/{src/constants/diagnostician.ts → dist/constants/diagnostician.js} +0 -1
- package/dist/constants/tools.d.ts +17 -0
- package/dist/constants/tools.js +53 -0
- package/dist/core/__tests__/focus-history.test.d.ts +1 -0
- package/dist/core/__tests__/focus-history.test.js +160 -0
- package/dist/core/bootstrap-rules.d.ts +50 -0
- package/dist/core/bootstrap-rules.js +187 -0
- package/dist/core/code-implementation-storage.d.ts +71 -0
- package/dist/core/code-implementation-storage.js +139 -0
- package/dist/core/config-health.d.ts +27 -0
- package/dist/core/config-health.js +60 -0
- package/dist/core/config-service.d.ts +15 -0
- package/{src/core/config-service.ts → dist/core/config-service.js} +4 -7
- package/dist/core/config.d.ts +111 -0
- package/{src/core/config.ts → dist/core/config.js} +46 -146
- package/dist/core/control-ui-db.d.ts +106 -0
- package/dist/core/control-ui-db.js +309 -0
- package/dist/core/correction-cue-learner.d.ts +33 -0
- package/dist/core/correction-cue-learner.js +184 -0
- package/dist/core/correction-types.d.ts +3 -0
- package/dist/core/correction-types.js +1 -0
- package/dist/core/detection-funnel.d.ts +33 -0
- package/{src/core/detection-funnel.ts → dist/core/detection-funnel.js} +17 -37
- package/dist/core/detection-service.d.ts +15 -0
- package/{src/core/detection-service.ts → dist/core/detection-service.js} +4 -7
- package/dist/core/dictionary-service.d.ts +15 -0
- package/{src/core/dictionary-service.ts → dist/core/dictionary-service.js} +4 -7
- package/dist/core/dictionary.d.ts +38 -0
- package/{src/core/dictionary.ts → dist/core/dictionary.js} +33 -59
- package/dist/core/empathy-keyword-matcher.d.ts +5 -0
- package/dist/core/empathy-keyword-matcher.js +40 -0
- package/dist/core/empathy-types.d.ts +2 -0
- package/dist/core/empathy-types.js +1 -0
- package/dist/core/event-log.d.ts +90 -0
- package/dist/core/event-log.js +702 -0
- package/dist/core/evolution-engine.d.ts +119 -0
- package/dist/core/evolution-engine.js +460 -0
- package/dist/core/evolution-logger.d.ts +137 -0
- package/dist/core/evolution-logger.js +261 -0
- package/dist/core/evolution-migration.d.ts +5 -0
- package/dist/core/evolution-migration.js +65 -0
- package/dist/core/evolution-reducer.d.ts +124 -0
- package/dist/core/evolution-reducer.js +730 -0
- package/dist/core/evolution-types.d.ts +50 -0
- package/dist/core/evolution-types.js +11 -0
- package/dist/core/external-training-contract.d.ts +276 -0
- package/dist/core/external-training-contract.js +269 -0
- package/dist/core/file-store.d.ts +41 -0
- package/dist/core/file-store.js +46 -0
- package/dist/core/focus-history.d.ts +50 -0
- package/dist/core/focus-history.js +574 -0
- package/dist/core/hygiene/tracker.d.ts +22 -0
- package/dist/core/hygiene/tracker.js +110 -0
- package/dist/core/init.d.ts +30 -0
- package/{src/core/init.ts → dist/core/init.js} +87 -118
- package/dist/core/local-worker-routing.d.ts +124 -0
- package/dist/core/local-worker-routing.js +216 -0
- package/dist/core/migration.d.ts +6 -0
- package/{src/core/migration.ts → dist/core/migration.js} +10 -18
- package/dist/core/model-deployment-registry.d.ts +218 -0
- package/dist/core/model-deployment-registry.js +502 -0
- package/dist/core/model-training-registry.d.ts +295 -0
- package/dist/core/model-training-registry.js +474 -0
- package/dist/core/observability.d.ts +40 -0
- package/dist/core/observability.js +164 -0
- package/dist/core/pain-diagnostic-gate.d.ts +36 -0
- package/dist/core/pain-diagnostic-gate.js +105 -0
- package/dist/core/pain.d.ts +87 -0
- package/dist/core/pain.js +223 -0
- package/dist/core/path-resolver.d.ts +60 -0
- package/{src/core/path-resolver.ts → dist/core/path-resolver.js} +41 -131
- package/dist/core/paths.d.ts +60 -0
- package/{src/core/paths.ts → dist/core/paths.js} +4 -13
- package/dist/core/pd-config-loader.d.ts +96 -0
- package/dist/core/pd-config-loader.js +307 -0
- package/dist/core/pd-task-reconciler.d.ts +89 -0
- package/dist/core/pd-task-reconciler.js +262 -0
- package/dist/core/pd-task-service.d.ts +2 -0
- package/dist/core/pd-task-service.js +32 -0
- package/dist/core/pd-task-store.d.ts +5 -0
- package/dist/core/pd-task-store.js +62 -0
- package/dist/core/pd-task-types.d.ts +8 -0
- package/dist/core/pd-task-types.js +2 -0
- package/dist/core/principle-compiler/__tests__/compiler-replay-gate.test.d.ts +1 -0
- package/dist/core/principle-compiler/__tests__/compiler-replay-gate.test.js +132 -0
- package/dist/core/principle-compiler/code-validator.d.ts +14 -0
- package/dist/core/principle-compiler/code-validator.js +86 -0
- package/dist/core/principle-compiler/compiler.d.ts +45 -0
- package/dist/core/principle-compiler/compiler.js +287 -0
- package/{src/core/principle-compiler/index.ts → dist/core/principle-compiler/index.d.ts} +0 -1
- package/dist/core/principle-compiler/index.js +10 -0
- package/dist/core/principle-compiler/ledger-registrar.d.ts +28 -0
- package/dist/core/principle-compiler/ledger-registrar.js +95 -0
- package/{src/core/principle-compiler/template-generator.ts → dist/core/principle-compiler/template-generator.d.ts} +0 -1
- package/dist/core/principle-compiler/template-generator.js +7 -0
- package/{src/core/principle-injection.ts → dist/core/principle-injection.d.ts} +1 -7
- package/dist/core/principle-injection.js +10 -0
- package/dist/core/principle-internalization/filesystem-lifecycle-datasource.d.ts +15 -0
- package/dist/core/principle-internalization/filesystem-lifecycle-datasource.js +34 -0
- package/dist/core/principle-internalization/lifecycle-read-model.d.ts +17 -0
- package/{src/core/principle-internalization/lifecycle-read-model.ts → dist/core/principle-internalization/lifecycle-read-model.js} +2 -21
- package/dist/core/principle-internalization/lifecycle-refresh.d.ts +2 -0
- package/dist/core/principle-internalization/lifecycle-refresh.js +4 -0
- package/dist/core/principle-internalization/principle-lifecycle-service.d.ts +28 -0
- package/dist/core/principle-internalization/principle-lifecycle-service.js +89 -0
- package/dist/core/principle-training-state.d.ts +47 -0
- package/dist/core/principle-training-state.js +113 -0
- package/dist/core/principle-tree-ledger-adapter.d.ts +32 -0
- package/dist/core/principle-tree-ledger-adapter.js +125 -0
- package/dist/core/principle-tree-ledger.d.ts +82 -0
- package/dist/core/principle-tree-ledger.js +527 -0
- package/dist/core/profile.d.ts +62 -0
- package/dist/core/profile.js +211 -0
- package/dist/core/promotion-gate.d.ts +243 -0
- package/dist/core/promotion-gate.js +554 -0
- package/dist/core/reflection/reflection-context.d.ts +31 -0
- package/dist/core/reflection/reflection-context.js +91 -0
- package/dist/core/replay-engine.d.ts +12 -0
- package/dist/core/replay-engine.js +82 -0
- package/dist/core/risk-calculator.d.ts +22 -0
- package/{src/core/risk-calculator.ts → dist/core/risk-calculator.js} +19 -49
- package/{src/core/rule-host-helpers.ts → dist/core/rule-host-helpers.d.ts} +0 -1
- package/dist/core/rule-host-helpers.js +7 -0
- package/{src/core/rule-host-types.ts → dist/core/rule-host-types.d.ts} +1 -8
- package/dist/core/rule-host-types.js +7 -0
- package/dist/core/rule-host.d.ts +86 -0
- package/dist/core/rule-host.js +311 -0
- package/dist/core/rule-implementation-runtime.d.ts +18 -0
- package/dist/core/rule-implementation-runtime.js +112 -0
- package/dist/core/runtime-v2-prompt-activation-reader.d.ts +22 -0
- package/dist/core/runtime-v2-prompt-activation-reader.js +99 -0
- package/{src/core/schema/db-types.ts → dist/core/schema/db-types.d.ts} +4 -9
- package/dist/core/schema/db-types.js +5 -0
- package/{src/core/schema/index.ts → dist/core/schema/index.d.ts} +1 -10
- package/dist/core/schema/index.js +15 -0
- package/dist/core/schema/migration-runner.d.ts +53 -0
- package/dist/core/schema/migration-runner.js +170 -0
- package/dist/core/schema/migrations/001-init-trajectory.d.ts +6 -0
- package/{src/core/schema/migrations/001-init-trajectory.ts → dist/core/schema/migrations/001-init-trajectory.js} +38 -56
- package/dist/core/schema/migrations/002-init-central.d.ts +5 -0
- package/{src/core/schema/migrations/002-init-central.ts → dist/core/schema/migrations/002-init-central.js} +27 -41
- package/dist/core/schema/migrations/003-init-workflow.d.ts +5 -0
- package/{src/core/schema/migrations/003-init-workflow.ts → dist/core/schema/migrations/003-init-workflow.js} +16 -21
- package/dist/core/schema/migrations/004-add-thinking-and-gfi.d.ts +8 -0
- package/{src/core/schema/migrations/004-add-thinking-and-gfi.ts → dist/core/schema/migrations/004-add-thinking-and-gfi.js} +19 -27
- package/{src/core/schema/migrations/index.ts → dist/core/schema/migrations/index.d.ts} +1 -16
- package/dist/core/schema/migrations/index.js +27 -0
- package/dist/core/schema/schema-definitions.d.ts +46 -0
- package/{src/core/schema/schema-definitions.ts → dist/core/schema/schema-definitions.js} +242 -291
- package/dist/core/session-tracker.d.ts +119 -0
- package/{src/core/session-tracker.ts → dist/core/session-tracker.js} +96 -239
- package/dist/core/shadow-observation-registry.d.ts +217 -0
- package/dist/core/shadow-observation-registry.js +280 -0
- package/dist/core/surface-guard.d.ts +31 -0
- package/dist/core/surface-guard.js +131 -0
- package/dist/core/system-logger.d.ts +8 -0
- package/{src/core/system-logger.ts → dist/core/system-logger.js} +20 -34
- package/dist/core/thinking-models.d.ts +70 -0
- package/dist/core/thinking-models.js +300 -0
- package/dist/core/thinking-os-parser.d.ts +35 -0
- package/dist/core/thinking-os-parser.js +123 -0
- package/dist/core/trajectory-types.d.ts +220 -0
- package/dist/core/trajectory-types.js +8 -0
- package/dist/core/trajectory.d.ts +242 -0
- package/dist/core/trajectory.js +1500 -0
- package/dist/core/workflow-funnel-loader.d.ts +72 -0
- package/dist/core/workflow-funnel-loader.js +135 -0
- package/dist/core/workspace-context.d.ts +111 -0
- package/{src/core/workspace-context.ts → dist/core/workspace-context.js} +50 -105
- package/dist/core/workspace-dir-validation.d.ts +11 -0
- package/dist/core/workspace-dir-validation.js +37 -0
- package/dist/core/workspace-guidance-migrator.d.ts +12 -0
- package/{src/core/workspace-guidance-migrator.ts → dist/core/workspace-guidance-migrator.js} +21 -59
- package/dist/hooks/after-tool-call-helpers.d.ts +89 -0
- package/dist/hooks/after-tool-call-helpers.js +475 -0
- package/dist/hooks/after-tool-call-types.d.ts +86 -0
- package/dist/hooks/after-tool-call-types.js +13 -0
- package/dist/hooks/gate-block-helper.d.ts +44 -0
- package/dist/hooks/gate-block-helper.js +209 -0
- package/dist/hooks/gate.d.ts +16 -0
- package/dist/hooks/gate.js +381 -0
- package/dist/hooks/lifecycle.d.ts +5 -0
- package/dist/hooks/lifecycle.js +287 -0
- package/dist/hooks/llm.d.ts +13 -0
- package/{src/hooks/llm.ts → dist/hooks/llm.js} +63 -117
- package/dist/hooks/message-sanitize.d.ts +24 -0
- package/dist/hooks/message-sanitize.js +77 -0
- package/dist/hooks/pain.d.ts +33 -0
- package/dist/hooks/pain.js +294 -0
- package/dist/hooks/prompt.d.ts +52 -0
- package/dist/hooks/prompt.js +930 -0
- package/dist/hooks/raw-observation-adapter.d.ts +57 -0
- package/dist/hooks/raw-observation-adapter.js +170 -0
- package/dist/hooks/raw-observation-types.d.ts +62 -0
- package/dist/hooks/raw-observation-types.js +15 -0
- package/dist/hooks/subagent.d.ts +9 -0
- package/{src/hooks/subagent.ts → dist/hooks/subagent.js} +20 -60
- package/dist/hooks/trajectory-collector.d.ts +25 -0
- package/dist/hooks/trajectory-collector.js +225 -0
- package/dist/hooks/trajectory-evidence.d.ts +11 -0
- package/dist/hooks/trajectory-evidence.js +88 -0
- package/dist/hooks/triage-adapter.d.ts +58 -0
- package/{src/hooks/triage-adapter.ts → dist/hooks/triage-adapter.js} +36 -68
- package/dist/hooks/trigger-cooldown-tracker.d.ts +30 -0
- package/dist/hooks/trigger-cooldown-tracker.js +55 -0
- package/dist/i18n/commands.d.ts +26 -0
- package/dist/i18n/commands.js +96 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +829 -0
- package/dist/openclaw-sdk.d.ts +293 -0
- package/dist/openclaw-sdk.js +4 -0
- package/dist/service/central-database.d.ts +138 -0
- package/dist/service/central-database.js +731 -0
- package/dist/service/central-sync-service.d.ts +8 -0
- package/dist/service/central-sync-service.js +71 -0
- package/dist/service/correction-observer-service.d.ts +19 -0
- package/{src/service/correction-observer-service.ts → dist/service/correction-observer-service.js} +36 -76
- package/dist/service/evolution-dedup.d.ts +27 -0
- package/{src/service/evolution-dedup.ts → dist/service/evolution-dedup.js} +11 -31
- package/{src/service/evolution-queue-migration.ts → dist/service/evolution-queue-migration.d.ts} +15 -62
- package/dist/service/evolution-queue-migration.js +53 -0
- package/dist/service/evolution-worker.d.ts +103 -0
- package/{src/service/evolution-worker.ts → dist/service/evolution-worker.js} +169 -331
- package/dist/service/internalization-auto-consumer-service.d.ts +8 -0
- package/dist/service/internalization-auto-consumer-service.js +322 -0
- package/dist/service/keyword-optimization-service.d.ts +44 -0
- package/dist/service/keyword-optimization-service.js +137 -0
- package/dist/service/phase3-input-filter.d.ts +73 -0
- package/dist/service/phase3-input-filter.js +172 -0
- package/dist/service/queue-io.d.ts +30 -0
- package/dist/service/queue-io.js +79 -0
- package/{src/service/queue-migration.ts → dist/service/queue-migration.d.ts} +6 -45
- package/dist/service/queue-migration.js +56 -0
- package/dist/service/runtime-summary-service.d.ts +158 -0
- package/dist/service/runtime-summary-service.js +636 -0
- package/dist/service/subagent-workflow/subagent-error-utils.d.ts +8 -0
- package/{src/service/subagent-workflow/subagent-error-utils.ts → dist/service/subagent-workflow/subagent-error-utils.js} +3 -6
- package/{src/service/subagent-workflow/types.ts → dist/service/subagent-workflow/types.d.ts} +17 -80
- package/dist/service/subagent-workflow/types.js +11 -0
- package/dist/service/subagent-workflow/workflow-store.d.ts +30 -0
- package/{src/service/subagent-workflow/workflow-store.ts → dist/service/subagent-workflow/workflow-store.js} +43 -108
- package/dist/service/trajectory-service.d.ts +2 -0
- package/dist/service/trajectory-service.js +16 -0
- package/dist/service/workflow-watchdog.d.ts +23 -0
- package/dist/service/workflow-watchdog.js +103 -0
- package/dist/types/event-types.d.ts +2 -0
- package/dist/types/event-types.js +1 -0
- package/dist/types/hygiene-types.d.ts +2 -0
- package/dist/types/hygiene-types.js +1 -0
- package/{src/types/principle-tree-schema.ts → dist/types/principle-tree-schema.d.ts} +2 -25
- package/dist/types/principle-tree-schema.js +24 -0
- package/dist/types/queue.d.ts +2 -0
- package/dist/types/queue.js +1 -0
- package/dist/types/runtime-summary.d.ts +1 -0
- package/dist/types/runtime-summary.js +1 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.js +16 -0
- package/dist/utils/file-lock.d.ts +68 -0
- package/dist/utils/file-lock.js +310 -0
- package/dist/utils/hashing.d.ts +9 -0
- package/{src/utils/hashing.ts → dist/utils/hashing.js} +4 -6
- package/dist/utils/io.d.ts +11 -0
- package/dist/utils/io.js +174 -0
- package/dist/utils/node-vm-polyfill.d.ts +9 -0
- package/{src/utils/node-vm-polyfill.ts → dist/utils/node-vm-polyfill.js} +0 -2
- package/dist/utils/retry.d.ts +210 -0
- package/dist/utils/retry.js +375 -0
- package/dist/utils/session-key.d.ts +10 -0
- package/{src/utils/session-key.ts → dist/utils/session-key.js} +5 -4
- package/dist/utils/shadow-fingerprint.d.ts +16 -0
- package/dist/utils/shadow-fingerprint.js +34 -0
- package/dist/utils/workspace-resolver.d.ts +82 -0
- package/dist/utils/workspace-resolver.js +288 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +8 -2
- package/templates/workspace/.principles/DECISION_POLICY.json +44 -0
- package/templates/workspace/.principles/PRINCIPLES.md +20 -0
- package/templates/workspace/.principles/PROFILE.json +54 -0
- package/templates/workspace/.principles/PROFILE.schema.json +56 -0
- package/templates/workspace/.principles/THINKING_OS.md +65 -0
- package/templates/workspace/.principles/THINKING_OS_ARCHIVE.md +7 -0
- package/templates/workspace/.principles/THINKING_OS_CANDIDATES.md +9 -0
- package/templates/workspace/.principles/models/_INDEX.md +27 -0
- package/templates/workspace/.principles/models/first_principles.md +62 -0
- package/templates/workspace/.principles/models/marketing_4p.md +52 -0
- package/templates/workspace/.principles/models/porter_five.md +63 -0
- package/templates/workspace/.principles/models/swot.md +60 -0
- package/templates/workspace/.principles/models/user_story_map.md +63 -0
- package/templates/workspace/.state/WORKBOARD.json +4 -0
- package/.dependency-cruiser.json +0 -19
- package/ADVANCED_CONFIG_ZH.md +0 -93
- package/AGENT_INSTALL.md +0 -173
- package/AGENT_INSTALL_EN.md +0 -173
- package/CHANGELOG.md +0 -26
- package/INSTALL.md +0 -254
- package/SKILL.md +0 -63
- package/esbuild.config.js +0 -104
- package/src/commands/archive-impl.ts +0 -147
- package/src/commands/capabilities.ts +0 -89
- package/src/commands/disable-impl.ts +0 -159
- package/src/commands/evolution-status.ts +0 -247
- package/src/commands/export.ts +0 -59
- package/src/commands/focus.ts +0 -523
- package/src/commands/principle-rollback.ts +0 -32
- package/src/commands/promote-impl.ts +0 -254
- package/src/commands/rollback-impl.ts +0 -246
- package/src/commands/samples.ts +0 -65
- package/src/commands/strategy.ts +0 -21
- package/src/config/errors.ts +0 -180
- package/src/constants/tools.ts +0 -62
- package/src/core/AGENTS.md +0 -34
- package/src/core/__tests__/focus-history.test.ts +0 -210
- package/src/core/bootstrap-rules.ts +0 -216
- package/src/core/code-implementation-storage.ts +0 -213
- package/src/core/config-health.ts +0 -72
- package/src/core/control-ui-db.ts +0 -454
- package/src/core/correction-cue-learner.ts +0 -239
- package/src/core/correction-types.ts +0 -16
- package/src/core/empathy-keyword-matcher.ts +0 -64
- package/src/core/empathy-types.ts +0 -18
- package/src/core/event-log.ts +0 -787
- package/src/core/evolution-engine.ts +0 -613
- package/src/core/evolution-logger.ts +0 -357
- package/src/core/evolution-migration.ts +0 -77
- package/src/core/evolution-reducer.ts +0 -891
- package/src/core/evolution-types.ts +0 -110
- package/src/core/external-training-contract.ts +0 -530
- package/src/core/file-store.ts +0 -80
- package/src/core/focus-history.ts +0 -763
- package/src/core/hygiene/tracker.ts +0 -122
- package/src/core/local-worker-routing.ts +0 -337
- package/src/core/model-deployment-registry.ts +0 -724
- package/src/core/model-training-registry.ts +0 -815
- package/src/core/observability.ts +0 -242
- package/src/core/pain-diagnostic-gate.ts +0 -169
- package/src/core/pain.ts +0 -309
- package/src/core/pd-config-loader.ts +0 -400
- package/src/core/pd-task-reconciler.ts +0 -380
- package/src/core/pd-task-service.ts +0 -43
- package/src/core/pd-task-store.ts +0 -78
- package/src/core/pd-task-types.ts +0 -24
- package/src/core/principle-compiler/__tests__/compiler-replay-gate.test.ts +0 -174
- package/src/core/principle-compiler/code-validator.ts +0 -93
- package/src/core/principle-compiler/compiler.ts +0 -327
- package/src/core/principle-compiler/ledger-registrar.ts +0 -116
- package/src/core/principle-internalization/filesystem-lifecycle-datasource.ts +0 -42
- package/src/core/principle-internalization/lifecycle-refresh.ts +0 -11
- package/src/core/principle-internalization/principle-lifecycle-service.ts +0 -170
- package/src/core/principle-training-state.ts +0 -177
- package/src/core/principle-tree-ledger-adapter.ts +0 -145
- package/src/core/principle-tree-ledger.ts +0 -725
- package/src/core/profile.ts +0 -228
- package/src/core/promotion-gate.ts +0 -854
- package/src/core/reflection/reflection-context.ts +0 -133
- package/src/core/replay-engine.ts +0 -106
- package/src/core/rule-host.ts +0 -386
- package/src/core/rule-implementation-runtime.ts +0 -145
- package/src/core/runtime-v2-prompt-activation-reader.ts +0 -114
- package/src/core/schema/migration-runner.ts +0 -207
- package/src/core/shadow-observation-registry.ts +0 -508
- package/src/core/surface-guard.ts +0 -188
- package/src/core/thinking-models.ts +0 -377
- package/src/core/thinking-os-parser.ts +0 -165
- package/src/core/trajectory-types.ts +0 -247
- package/src/core/trajectory.ts +0 -1831
- package/src/core/workflow-funnel-loader.ts +0 -195
- package/src/core/workspace-dir-validation.ts +0 -52
- package/src/hooks/AGENTS.md +0 -31
- package/src/hooks/after-tool-call-helpers.ts +0 -601
- package/src/hooks/after-tool-call-types.ts +0 -99
- package/src/hooks/gate-block-helper.ts +0 -265
- package/src/hooks/gate.ts +0 -394
- package/src/hooks/lifecycle.ts +0 -334
- package/src/hooks/message-sanitize.ts +0 -102
- package/src/hooks/pain.ts +0 -358
- package/src/hooks/prompt.ts +0 -1102
- package/src/hooks/raw-observation-adapter.ts +0 -215
- package/src/hooks/raw-observation-types.ts +0 -77
- package/src/hooks/trajectory-collector.ts +0 -253
- package/src/hooks/trajectory-evidence.ts +0 -97
- package/src/hooks/trigger-cooldown-tracker.ts +0 -82
- package/src/i18n/commands.ts +0 -101
- package/src/index.ts +0 -939
- package/src/openclaw-sdk.ts +0 -312
- package/src/service/central-database.ts +0 -936
- package/src/service/central-sync-service.ts +0 -85
- package/src/service/internalization-auto-consumer-service.ts +0 -397
- package/src/service/keyword-optimization-service.ts +0 -169
- package/src/service/phase3-input-filter.ts +0 -237
- package/src/service/queue-io.ts +0 -108
- package/src/service/runtime-summary-service.ts +0 -990
- package/src/service/trajectory-service.ts +0 -16
- package/src/service/workflow-watchdog.ts +0 -125
- package/src/types/event-types.ts +0 -39
- package/src/types/hygiene-types.ts +0 -8
- package/src/types/queue.ts +0 -15
- package/src/types/runtime-summary.ts +0 -5
- package/src/types.ts +0 -53
- package/src/utils/file-lock.ts +0 -394
- package/src/utils/io.ts +0 -176
- package/src/utils/retry.ts +0 -573
- package/src/utils/shadow-fingerprint.ts +0 -42
- package/src/utils/workspace-resolver.ts +0 -393
- package/tests/README.md +0 -120
- package/tests/build-artifacts.test.ts +0 -55
- package/tests/commands/evolution-status.test.ts +0 -511
- package/tests/commands/export.test.ts +0 -78
- package/tests/commands/pain.test.ts +0 -287
- package/tests/commands/samples.test.ts +0 -65
- package/tests/commands/strategy.test.ts +0 -19
- package/tests/commands/thinking-os.test.ts +0 -88
- package/tests/core/bootstrap-rules.test.ts +0 -596
- package/tests/core/code-implementation-storage.test.ts +0 -300
- package/tests/core/code-validator.test.ts +0 -197
- package/tests/core/config-service.test.ts +0 -89
- package/tests/core/config.test.ts +0 -90
- package/tests/core/control-ui-db.test.ts +0 -75
- package/tests/core/core-principle-registry-drift.test.ts +0 -39
- package/tests/core/core-template-guidance.test.ts +0 -21
- package/tests/core/correction-cue-learner.test.ts +0 -345
- package/tests/core/detection-service.test.ts +0 -50
- package/tests/core/dictionary-service.test.ts +0 -116
- package/tests/core/dictionary.test.ts +0 -171
- package/tests/core/empathy-keyword-matcher.test.ts +0 -209
- package/tests/core/event-log.test.ts +0 -484
- package/tests/core/evolution-engine.test.ts +0 -610
- package/tests/core/evolution-logger.test.ts +0 -148
- package/tests/core/evolution-migration.test.ts +0 -374
- package/tests/core/evolution-paths.test.ts +0 -21
- package/tests/core/evolution-reducer.compilation-retry.test.ts +0 -189
- package/tests/core/evolution-reducer.detector-metadata.test.ts +0 -602
- package/tests/core/evolution-types-loop.test.ts +0 -48
- package/tests/core/external-training-contract.test.ts +0 -463
- package/tests/core/file-store.test.ts +0 -102
- package/tests/core/focus-history.test.ts +0 -874
- package/tests/core/init-flatten.test.ts +0 -69
- package/tests/core/init-refactor.test.ts +0 -87
- package/tests/core/init-v1.3.test.ts +0 -46
- package/tests/core/init.test.ts +0 -190
- package/tests/core/ledger-registrar.test.ts +0 -235
- package/tests/core/migration.test.ts +0 -84
- package/tests/core/model-deployment-registry.test.ts +0 -858
- package/tests/core/model-training-registry.test.ts +0 -908
- package/tests/core/observability.test.ts +0 -382
- package/tests/core/pain-diagnostic-gate.test.ts +0 -614
- package/tests/core/pain-score.property.test.ts +0 -19
- package/tests/core/pain.test.ts +0 -132
- package/tests/core/path-resolver.test.ts +0 -57
- package/tests/core/paths-refactor.test.ts +0 -20
- package/tests/core/pd-config-loader.test.ts +0 -407
- package/tests/core/pd-task-store.test.ts +0 -126
- package/tests/core/phase7-rollout-integration.test.ts +0 -477
- package/tests/core/principle-compiler.test.ts +0 -350
- package/tests/core/principle-injection.test.ts +0 -223
- package/tests/core/principle-internalization/deprecated-readiness.test.ts +0 -193
- package/tests/core/principle-internalization/lifecycle-metrics.test.ts +0 -350
- package/tests/core/principle-internalization/lifecycle-routing-policy.test.ts +0 -212
- package/tests/core/principle-internalization/lineage-source-retired.test.ts +0 -56
- package/tests/core/principle-internalization/principle-lifecycle-service.test.ts +0 -189
- package/tests/core/principle-training-state.test.ts +0 -939
- package/tests/core/principle-tree-ledger-adapter.test.ts +0 -253
- package/tests/core/principle-tree-ledger.test.ts +0 -423
- package/tests/core/profile.test.ts +0 -56
- package/tests/core/promotion-gate.test.ts +0 -561
- package/tests/core/queue-purge.test.ts +0 -337
- package/tests/core/reflection-context.test.ts +0 -342
- package/tests/core/regression-v1-9-1.test.ts +0 -266
- package/tests/core/replay-engine.test.ts +0 -165
- package/tests/core/risk-calculator.test.ts +0 -168
- package/tests/core/rule-host-adversarial-output.test.ts +0 -242
- package/tests/core/rule-host-autocorrect-vm.test.ts +0 -163
- package/tests/core/rule-host-helpers.test.ts +0 -120
- package/tests/core/rule-host-resource-bounds.test.ts +0 -231
- package/tests/core/rule-host-sqlite-source.test.ts +0 -720
- package/tests/core/rule-host-unhealthy-visibility.test.ts +0 -261
- package/tests/core/rule-host-validation.test.ts +0 -315
- package/tests/core/rule-implementation-runtime.test.ts +0 -49
- package/tests/core/session-tracker.test.ts +0 -191
- package/tests/core/surface-guard.test.ts +0 -338
- package/tests/core/template-generator.test.ts +0 -101
- package/tests/core/trajectory.test.ts +0 -427
- package/tests/core/workflow-funnel-loader.test.ts +0 -1028
- package/tests/core/workspace-context-factory.test.ts +0 -18
- package/tests/core/workspace-context.test.ts +0 -187
- package/tests/core/workspace-guidance-migrator.test.ts +0 -248
- package/tests/core-anti-growth.test.ts +0 -182
- package/tests/evolution-worker-quarantine.test.ts +0 -400
- package/tests/evolution-worker-slimming.test.ts +0 -380
- package/tests/fixtures/legacy-queue-v1.json +0 -74
- package/tests/fixtures/production-compatibility.test.ts +0 -147
- package/tests/fixtures/production-mock-generator.ts +0 -282
- package/tests/globalSetup.ts +0 -38
- package/tests/hook-workspace-nextaction-contract.test.ts +0 -50
- package/tests/hooks/confirm-first-removal.test.ts +0 -188
- package/tests/hooks/gate-auto-correct-shadow.test.ts +0 -309
- package/tests/hooks/gate-auto-correct.test.ts +0 -664
- package/tests/hooks/gate-block-helper-profile.test.ts +0 -186
- package/tests/hooks/gate-no-path-write-tool.test.ts +0 -171
- package/tests/hooks/gate-rule-host-pipeline.test.ts +0 -230
- package/tests/hooks/gate-rule-host-real-pipeline.test.ts +0 -190
- package/tests/hooks/lifecycle.test.ts +0 -248
- package/tests/hooks/message-sanitize.test.ts +0 -244
- package/tests/hooks/pain-emission-characterization.test.ts +0 -420
- package/tests/hooks/pain.test.ts +0 -795
- package/tests/hooks/prompt-characterization.test.ts +0 -476
- package/tests/hooks/prompt-diet.test.ts +0 -335
- package/tests/hooks/prompt-size-guard.test.ts +0 -319
- package/tests/hooks/raw-observation-adapter.test.ts +0 -312
- package/tests/hooks/runtime-v2-prompt-activation.test.ts +0 -895
- package/tests/hooks/single-gate-pain-admission.test.ts +0 -258
- package/tests/hooks/subagent.test.ts +0 -469
- package/tests/hooks/trajectory-collector.test.ts +0 -269
- package/tests/hooks/trajectory-evidence.test.ts +0 -280
- package/tests/hooks/triage-adapter.test.ts +0 -331
- package/tests/hygiene-tracker.test.ts +0 -77
- package/tests/index.test.ts +0 -142
- package/tests/integration/auto-entry-gate.test.ts +0 -256
- package/tests/integration/gate-real-io.e2e.test.ts +0 -248
- package/tests/integration/m8-legacy-paths.test.ts +0 -63
- package/tests/integration/mvp-surface-registry-guard.test.ts +0 -536
- package/tests/integration/pain-id-chain-e2e.test.ts +0 -313
- package/tests/integration/principle-compiler-e2e.test.ts +0 -403
- package/tests/integration/principle-lifecycle.e2e.test.ts +0 -198
- package/tests/integration/runtime-v2-pain-guard.test.ts +0 -125
- package/tests/integration/trajectory-lifecycle.e2e.test.ts +0 -523
- package/tests/internalization-auto-consumer-gate.test.ts +0 -158
- package/tests/internalization-auto-consumer-service.test.ts +0 -219
- package/tests/plugin-config-resolution-cutover.test.ts +0 -359
- package/tests/queue/async-lock.test.ts +0 -200
- package/tests/runtime-v2-discovery-guard.test.ts +0 -153
- package/tests/scripts/validate-live-path.test.ts +0 -286
- package/tests/service/central-database.test.ts +0 -457
- package/tests/service/correction-observer-service.test.ts +0 -505
- package/tests/service/evolution-worker.compilation-backfill.test.ts +0 -203
- package/tests/service/evolution-worker.correction-observer.test.ts +0 -50
- package/tests/service/evolution-worker.queue.test.ts +0 -296
- package/tests/service/evolution-worker.timeout.test.ts +0 -233
- package/tests/service/keyword-optimization-service.test.ts +0 -121
- package/tests/service/phase3-input-filter.test.ts +0 -289
- package/tests/service/queue-io.test.ts +0 -168
- package/tests/service/queue-migration.test.ts +0 -147
- package/tests/service/runtime-summary-service.test.ts +0 -1100
- package/tests/service/workflow-watchdog.test.ts +0 -281
- package/tests/task-compliance.test.ts +0 -166
- package/tests/test-utils.ts +0 -48
- package/tests/utils/file-lock.test.ts +0 -409
- package/tests/utils/hashing.test.ts +0 -32
- package/tests/utils/hook-workspace-resolver.test.ts +0 -524
- package/tests/utils/io.test.ts +0 -39
- package/tests/utils/retry.test.ts +0 -327
- package/tests/utils/session-key.test.ts +0 -52
- package/tsconfig.json +0 -16
- package/vitest.config.ts +0 -61
- package/vitest.unit.config.ts +0 -12
package/{src/service/subagent-workflow/types.ts → dist/service/subagent-workflow/types.d.ts}
RENAMED
|
@@ -8,22 +8,16 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @module subagent-workflow/types
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
// ── Workflow Transport ────────────────────────────────────────────────────────
|
|
13
|
-
|
|
14
11
|
/**
|
|
15
12
|
* First-phase helper transport.
|
|
16
13
|
* This helper currently models only plugin-owned runtime_direct workflows.
|
|
17
14
|
*/
|
|
18
15
|
export type WorkflowTransport = 'runtime_direct';
|
|
19
|
-
|
|
20
|
-
// ── Workflow State Machine ───────────────────────────────────────────────────
|
|
21
|
-
|
|
22
16
|
/**
|
|
23
17
|
* States in the workflow state machine.
|
|
24
|
-
*
|
|
18
|
+
*
|
|
25
19
|
* State transitions:
|
|
26
|
-
*
|
|
20
|
+
*
|
|
27
21
|
* PENDING ──→ ACTIVE ──→ WAIT_RESULT ──→ FINALIZING ──→ COMPLETED
|
|
28
22
|
* │ │ │
|
|
29
23
|
* │ ├──────────────────────────────┤
|
|
@@ -34,21 +28,10 @@ export type WorkflowTransport = 'runtime_direct';
|
|
|
34
28
|
* │ │ (cleanup_pending if deleteSession fails)
|
|
35
29
|
* │ ▼
|
|
36
30
|
* └──────── CLEANUP_PENDING
|
|
37
|
-
*
|
|
31
|
+
*
|
|
38
32
|
* States marked with (*) are terminal states.
|
|
39
33
|
*/
|
|
40
|
-
export type WorkflowState =
|
|
41
|
-
| 'pending'
|
|
42
|
-
| 'active'
|
|
43
|
-
| 'wait_result'
|
|
44
|
-
| 'finalizing'
|
|
45
|
-
| 'completed'
|
|
46
|
-
| 'terminal_error'
|
|
47
|
-
| 'cleanup_pending'
|
|
48
|
-
| 'expired';
|
|
49
|
-
|
|
50
|
-
// ── Workflow Metadata ────────────────────────────────────────────────────────
|
|
51
|
-
|
|
34
|
+
export type WorkflowState = 'pending' | 'active' | 'wait_result' | 'finalizing' | 'completed' | 'terminal_error' | 'cleanup_pending' | 'expired';
|
|
52
35
|
/**
|
|
53
36
|
* Metadata stored with each workflow for auditing and debugging.
|
|
54
37
|
*/
|
|
@@ -62,9 +45,6 @@ export interface WorkflowMetadata {
|
|
|
62
45
|
/** Extra custom metadata specific to workflow type */
|
|
63
46
|
[key: string]: unknown;
|
|
64
47
|
}
|
|
65
|
-
|
|
66
|
-
// ── Workflow Context Types ────────────────────────────────────────────────────
|
|
67
|
-
|
|
68
48
|
/**
|
|
69
49
|
* Context passed to parseResult() when reading subagent output.
|
|
70
50
|
*/
|
|
@@ -80,7 +60,6 @@ export interface WorkflowResultContext {
|
|
|
80
60
|
/** Error message if waitStatus is 'error' */
|
|
81
61
|
waitError?: string;
|
|
82
62
|
}
|
|
83
|
-
|
|
84
63
|
/**
|
|
85
64
|
* Context passed to persistResult() after successful parsing.
|
|
86
65
|
*/
|
|
@@ -92,9 +71,6 @@ export interface WorkflowPersistContext<TResult> {
|
|
|
92
71
|
/** Workspace context directory */
|
|
93
72
|
workspaceDir: string;
|
|
94
73
|
}
|
|
95
|
-
|
|
96
|
-
// ── Workflow Spec ─────────────────────────────────────────────────────────────
|
|
97
|
-
|
|
98
74
|
/**
|
|
99
75
|
* Result of calling startWorkflow().
|
|
100
76
|
* Returned to caller so they can track the workflow.
|
|
@@ -109,11 +85,10 @@ export interface WorkflowHandle {
|
|
|
109
85
|
/** The workflow state at creation */
|
|
110
86
|
state: WorkflowState;
|
|
111
87
|
}
|
|
112
|
-
|
|
113
88
|
/**
|
|
114
89
|
* Specification for a subagent workflow.
|
|
115
90
|
* Each workflow type (empathy observer, deep-reflect) implements this spec.
|
|
116
|
-
*
|
|
91
|
+
*
|
|
117
92
|
* @example
|
|
118
93
|
* ```ts
|
|
119
94
|
* const empathySpec: SubagentWorkflowSpec<EmpathyResult> = {
|
|
@@ -156,9 +131,6 @@ export interface SubagentWorkflowSpec<TResult> {
|
|
|
156
131
|
*/
|
|
157
132
|
shouldFinalizeOnWaitStatus: (status: 'ok' | 'error' | 'timeout') => boolean;
|
|
158
133
|
}
|
|
159
|
-
|
|
160
|
-
// ── Empathy Observer Specific Types ──────────────────────────────────────────
|
|
161
|
-
|
|
162
134
|
/**
|
|
163
135
|
* Payload returned by empathy observer subagent.
|
|
164
136
|
*/
|
|
@@ -168,7 +140,6 @@ export type EmpathyObserverPayload = {
|
|
|
168
140
|
confidence?: number;
|
|
169
141
|
reason?: string;
|
|
170
142
|
};
|
|
171
|
-
|
|
172
143
|
/**
|
|
173
144
|
* Empathy observer workflow result.
|
|
174
145
|
*/
|
|
@@ -180,7 +151,6 @@ export interface EmpathyResult {
|
|
|
180
151
|
/** Derived pain score based on severity */
|
|
181
152
|
painScore: number;
|
|
182
153
|
}
|
|
183
|
-
|
|
184
154
|
/**
|
|
185
155
|
* Empathy observer workflow specification.
|
|
186
156
|
* This is the concrete spec for PR2 migration.
|
|
@@ -192,9 +162,6 @@ export interface EmpathyObserverWorkflowSpec extends SubagentWorkflowSpec<Empath
|
|
|
192
162
|
ttlMs: 300_000;
|
|
193
163
|
shouldDeleteSessionAfterFinalize: true;
|
|
194
164
|
}
|
|
195
|
-
|
|
196
|
-
// ── Workflow Manager Interface ─────────────────────────────────────────────────
|
|
197
|
-
|
|
198
165
|
/**
|
|
199
166
|
* The main workflow manager interface.
|
|
200
167
|
* This is what the helper exposes to business modules.
|
|
@@ -204,65 +171,45 @@ export interface WorkflowManager {
|
|
|
204
171
|
* Start a new workflow.
|
|
205
172
|
* Creates workflow state, spawns subagent, and returns handle.
|
|
206
173
|
*/
|
|
207
|
-
startWorkflow: <TResult>(
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
metadata?: Record<string, unknown>;
|
|
214
|
-
}
|
|
215
|
-
) => Promise<WorkflowHandle>;
|
|
216
|
-
|
|
174
|
+
startWorkflow: <TResult>(spec: SubagentWorkflowSpec<TResult>, options: {
|
|
175
|
+
parentSessionId: string;
|
|
176
|
+
workspaceDir?: string;
|
|
177
|
+
taskInput: unknown;
|
|
178
|
+
metadata?: Record<string, unknown>;
|
|
179
|
+
}) => Promise<WorkflowHandle>;
|
|
217
180
|
/**
|
|
218
181
|
* Notify workflow of wait result (runtime_direct path).
|
|
219
182
|
* Called by the wait polling logic after waitForRun completes.
|
|
220
183
|
*/
|
|
221
|
-
notifyWaitResult: (
|
|
222
|
-
workflowId: string,
|
|
223
|
-
status: 'ok' | 'error' | 'timeout',
|
|
224
|
-
error?: string
|
|
225
|
-
) => Promise<void>;
|
|
226
|
-
|
|
184
|
+
notifyWaitResult: (workflowId: string, status: 'ok' | 'error' | 'timeout', error?: string) => Promise<void>;
|
|
227
185
|
/**
|
|
228
186
|
* Optional fallback observation path.
|
|
229
187
|
* This is not the primary completion contract for runtime_direct workflows.
|
|
230
188
|
* Use it only for recovery / compatibility if a lifecycle event is observed later.
|
|
231
189
|
*/
|
|
232
|
-
notifyLifecycleEvent: (
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
outcome?: 'ok' | 'error' | 'timeout' | 'killed' | 'reset' | 'deleted';
|
|
237
|
-
error?: string;
|
|
238
|
-
}
|
|
239
|
-
) => Promise<void>;
|
|
240
|
-
|
|
190
|
+
notifyLifecycleEvent: (workflowId: string, event: 'subagent_spawned' | 'subagent_ended', data?: {
|
|
191
|
+
outcome?: 'ok' | 'error' | 'timeout' | 'killed' | 'reset' | 'deleted';
|
|
192
|
+
error?: string;
|
|
193
|
+
}) => Promise<void>;
|
|
241
194
|
/**
|
|
242
195
|
* Finalize a workflow exactly once (idempotent).
|
|
243
196
|
* Reads result, parses, persists, and cleans up.
|
|
244
197
|
*/
|
|
245
198
|
finalizeOnce: (workflowId: string) => Promise<void>;
|
|
246
|
-
|
|
247
199
|
/**
|
|
248
200
|
* Sweep expired workflows (orphan cleanup).
|
|
249
201
|
* Should be called periodically by the evolution worker.
|
|
250
202
|
*/
|
|
251
203
|
sweepExpiredWorkflows: (maxAgeMs?: number) => Promise<number>;
|
|
252
|
-
|
|
253
204
|
/**
|
|
254
205
|
* Return a compact workflow-centric debug view for operators.
|
|
255
206
|
*/
|
|
256
207
|
getWorkflowDebugSummary: (workflowId: string, eventLimit?: number) => Promise<WorkflowDebugSummary | null>;
|
|
257
|
-
|
|
258
208
|
/**
|
|
259
209
|
* Release resources (DB connections, timers).
|
|
260
210
|
*/
|
|
261
211
|
dispose: () => void;
|
|
262
212
|
}
|
|
263
|
-
|
|
264
|
-
// ── Workflow Store (for SQLite persistence) ──────────────────────────────────
|
|
265
|
-
|
|
266
213
|
/**
|
|
267
214
|
* Database row for subagent_workflows table.
|
|
268
215
|
*/
|
|
@@ -281,7 +228,6 @@ export interface WorkflowRow {
|
|
|
281
228
|
duration_ms: number | null;
|
|
282
229
|
metadata_json: string;
|
|
283
230
|
}
|
|
284
|
-
|
|
285
231
|
/**
|
|
286
232
|
* Database row for subagent_workflow_events table.
|
|
287
233
|
*/
|
|
@@ -294,7 +240,6 @@ export interface WorkflowEventRow {
|
|
|
294
240
|
payload_json: string;
|
|
295
241
|
created_at: number;
|
|
296
242
|
}
|
|
297
|
-
|
|
298
243
|
export interface WorkflowDebugSummary {
|
|
299
244
|
workflowId: string;
|
|
300
245
|
workflowType: string;
|
|
@@ -315,13 +260,5 @@ export interface WorkflowDebugSummary {
|
|
|
315
260
|
payload: Record<string, unknown>;
|
|
316
261
|
}[];
|
|
317
262
|
}
|
|
318
|
-
|
|
319
|
-
// ── Convenience Re-exports ────────────────────────────────────────────────────
|
|
320
|
-
|
|
321
|
-
export type {
|
|
322
|
-
SubagentRunResult,
|
|
323
|
-
SubagentWaitResult,
|
|
324
|
-
SubagentGetSessionMessagesResult,
|
|
325
|
-
} from '../../openclaw-sdk.js';
|
|
326
|
-
|
|
263
|
+
export type { SubagentRunResult, SubagentWaitResult, SubagentGetSessionMessagesResult, } from '../../openclaw-sdk.js';
|
|
327
264
|
export type { PluginLogger } from '../../openclaw-sdk.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent Workflow Helper - Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* This file defines the TypeScript interfaces for the workflow helper system
|
|
5
|
+
* that manages subagent lifecycle (empathy observer, deep-reflect, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Design reference: docs/design/2026-03-31-subagent-workflow-helper-design.md
|
|
8
|
+
*
|
|
9
|
+
* @module subagent-workflow/types
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { WorkflowRow, WorkflowEventRow, WorkflowState } from './types.js';
|
|
2
|
+
export interface WorkflowStoreOptions {
|
|
3
|
+
workspaceDir: string;
|
|
4
|
+
busyTimeoutMs?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class WorkflowStore {
|
|
7
|
+
private readonly workspaceDir;
|
|
8
|
+
private readonly dbPath;
|
|
9
|
+
private readonly db;
|
|
10
|
+
constructor(opts: WorkflowStoreOptions);
|
|
11
|
+
dispose(): void;
|
|
12
|
+
private initSchema;
|
|
13
|
+
private runMigrations;
|
|
14
|
+
createWorkflow(row: Omit<WorkflowRow, 'cleanup_state'>): void;
|
|
15
|
+
updateWorkflowState(workflowId: string, state: WorkflowState, reason?: string): void;
|
|
16
|
+
updateWorkflowRunId(workflowId: string, runId: string): void;
|
|
17
|
+
updateCleanupState(workflowId: string, cleanupState: 'none' | 'pending' | 'failed' | 'completed'): void;
|
|
18
|
+
touchWorkflow(workflowId: string): void;
|
|
19
|
+
getWorkflow(workflowId: string): WorkflowRow | null;
|
|
20
|
+
getWorkflowByChildSession(childSessionKey: string): WorkflowRow | null;
|
|
21
|
+
getWorkflowByParentSession(parentSessionId: string, workflowType?: string): WorkflowRow | null;
|
|
22
|
+
getActiveWorkflows(workflowType?: string): WorkflowRow[];
|
|
23
|
+
getExpiredWorkflows(maxAgeMs: number): WorkflowRow[];
|
|
24
|
+
listWorkflows(state?: string): WorkflowRow[];
|
|
25
|
+
recordEvent(workflowId: string, eventType: string, fromState: WorkflowState | null, toState: WorkflowState, reason: string, payload: Record<string, unknown>): void;
|
|
26
|
+
getEvents(workflowId: string): WorkflowEventRow[];
|
|
27
|
+
deleteWorkflow(workflowId: string): void;
|
|
28
|
+
recordDuration(workflowId: string, durationMs: number): void;
|
|
29
|
+
getCompletionDurations(workflowType: string, limit?: number): number[];
|
|
30
|
+
}
|
|
@@ -1,30 +1,17 @@
|
|
|
1
|
-
|
|
2
1
|
import Database from 'better-sqlite3';
|
|
3
2
|
import * as fs from 'fs';
|
|
4
3
|
import * as path from 'path';
|
|
5
|
-
import type { WorkflowRow, WorkflowEventRow, WorkflowState } from './types.js';
|
|
6
|
-
|
|
7
4
|
const SCHEMA_VERSION = 2;
|
|
8
|
-
|
|
9
5
|
const DEFAULT_BUSY_TIMEOUT_MS = 5000;
|
|
10
|
-
|
|
11
|
-
export interface WorkflowStoreOptions {
|
|
12
|
-
workspaceDir: string;
|
|
13
|
-
busyTimeoutMs?: number;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
6
|
export class WorkflowStore {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
constructor(opts: WorkflowStoreOptions) {
|
|
7
|
+
workspaceDir;
|
|
8
|
+
dbPath;
|
|
9
|
+
db;
|
|
10
|
+
constructor(opts) {
|
|
22
11
|
this.workspaceDir = path.resolve(opts.workspaceDir);
|
|
23
12
|
const stateDir = path.join(this.workspaceDir, '.state');
|
|
24
13
|
this.dbPath = path.join(stateDir, 'subagent_workflows.db');
|
|
25
|
-
|
|
26
14
|
fs.mkdirSync(stateDir, { recursive: true });
|
|
27
|
-
|
|
28
15
|
this.db = new Database(this.dbPath);
|
|
29
16
|
this.db.pragma('journal_mode = WAL');
|
|
30
17
|
this.db.pragma('foreign_keys = ON');
|
|
@@ -32,12 +19,10 @@ export class WorkflowStore {
|
|
|
32
19
|
this.db.pragma(`busy_timeout = ${Math.max(0, opts.busyTimeoutMs ?? DEFAULT_BUSY_TIMEOUT_MS)}`);
|
|
33
20
|
this.initSchema();
|
|
34
21
|
}
|
|
35
|
-
|
|
36
|
-
dispose(): void {
|
|
22
|
+
dispose() {
|
|
37
23
|
this.db.close();
|
|
38
24
|
}
|
|
39
|
-
|
|
40
|
-
private initSchema(): void {
|
|
25
|
+
initSchema() {
|
|
41
26
|
this.db.exec(`
|
|
42
27
|
CREATE TABLE IF NOT EXISTS schema_version (
|
|
43
28
|
version INTEGER NOT NULL
|
|
@@ -77,123 +62,95 @@ export class WorkflowStore {
|
|
|
77
62
|
|
|
78
63
|
CREATE INDEX IF NOT EXISTS idx_events_workflow ON subagent_workflow_events(workflow_id);
|
|
79
64
|
`);
|
|
80
|
-
|
|
81
|
-
const row = this.db.prepare('SELECT version FROM schema_version LIMIT 1').get() as { version?: number } | undefined;
|
|
65
|
+
const row = this.db.prepare('SELECT version FROM schema_version LIMIT 1').get();
|
|
82
66
|
const currentVersion = row?.version ?? 0;
|
|
83
67
|
if (currentVersion === 0) {
|
|
84
68
|
this.db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(SCHEMA_VERSION);
|
|
85
|
-
}
|
|
69
|
+
}
|
|
70
|
+
else if (currentVersion < SCHEMA_VERSION) {
|
|
86
71
|
this.runMigrations(currentVersion, SCHEMA_VERSION);
|
|
87
72
|
this.db.prepare('UPDATE schema_version SET version = ?').run(SCHEMA_VERSION);
|
|
88
73
|
}
|
|
89
74
|
}
|
|
90
|
-
|
|
91
|
-
private runMigrations(fromVersion: number, toVersion: number): void {
|
|
75
|
+
runMigrations(fromVersion, toVersion) {
|
|
92
76
|
if (fromVersion < 2 && toVersion >= 2) {
|
|
93
77
|
try {
|
|
94
78
|
this.db.exec('ALTER TABLE subagent_workflows ADD COLUMN duration_ms INTEGER');
|
|
95
79
|
console.info(`[PD:WorkflowStore] Schema migration v${fromVersion} → v${toVersion}: added duration_ms column`);
|
|
96
|
-
}
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
97
82
|
void 0;
|
|
98
83
|
}
|
|
99
84
|
}
|
|
100
85
|
}
|
|
101
|
-
|
|
102
|
-
createWorkflow(row: Omit<WorkflowRow, 'cleanup_state'>): void {
|
|
86
|
+
createWorkflow(row) {
|
|
103
87
|
this.db.prepare(`
|
|
104
88
|
INSERT INTO subagent_workflows (
|
|
105
89
|
workflow_id, workflow_type, transport, parent_session_id, child_session_key,
|
|
106
90
|
run_id, state, cleanup_state, created_at, updated_at, last_observed_at, metadata_json
|
|
107
91
|
) VALUES (?, ?, ?, ?, ?, ?, ?, 'none', ?, ?, NULL, ?)
|
|
108
|
-
`).run(
|
|
109
|
-
row.workflow_id,
|
|
110
|
-
row.workflow_type,
|
|
111
|
-
row.transport,
|
|
112
|
-
row.parent_session_id,
|
|
113
|
-
row.child_session_key,
|
|
114
|
-
row.run_id,
|
|
115
|
-
row.state,
|
|
116
|
-
row.created_at,
|
|
117
|
-
row.updated_at,
|
|
118
|
-
row.metadata_json
|
|
119
|
-
);
|
|
92
|
+
`).run(row.workflow_id, row.workflow_type, row.transport, row.parent_session_id, row.child_session_key, row.run_id, row.state, row.created_at, row.updated_at, row.metadata_json);
|
|
120
93
|
}
|
|
121
|
-
|
|
122
|
-
updateWorkflowState(workflowId: string, state: WorkflowState, reason?: string): void {
|
|
94
|
+
updateWorkflowState(workflowId, state, reason) {
|
|
123
95
|
const now = Date.now();
|
|
124
96
|
const current = this.getWorkflow(workflowId);
|
|
125
|
-
if (!current)
|
|
126
|
-
|
|
97
|
+
if (!current)
|
|
98
|
+
return;
|
|
127
99
|
this.db.prepare(`
|
|
128
100
|
UPDATE subagent_workflows SET state = ?, updated_at = ?, last_observed_at = ? WHERE workflow_id = ?
|
|
129
101
|
`).run(state, now, now, workflowId);
|
|
130
|
-
|
|
131
102
|
if (reason) {
|
|
132
103
|
this.recordEvent(workflowId, 'state_change', current.state, state, reason, {});
|
|
133
104
|
}
|
|
134
105
|
}
|
|
135
|
-
|
|
136
|
-
updateWorkflowRunId(workflowId: string, runId: string): void {
|
|
106
|
+
updateWorkflowRunId(workflowId, runId) {
|
|
137
107
|
const now = Date.now();
|
|
138
108
|
this.db.prepare(`
|
|
139
109
|
UPDATE subagent_workflows SET run_id = ?, updated_at = ? WHERE workflow_id = ?
|
|
140
110
|
`).run(runId, now, workflowId);
|
|
141
111
|
}
|
|
142
|
-
|
|
143
|
-
updateCleanupState(workflowId: string, cleanupState: 'none' | 'pending' | 'failed' | 'completed'): void {
|
|
112
|
+
updateCleanupState(workflowId, cleanupState) {
|
|
144
113
|
const now = Date.now();
|
|
145
114
|
this.db.prepare(`
|
|
146
115
|
UPDATE subagent_workflows SET cleanup_state = ?, updated_at = ? WHERE workflow_id = ?
|
|
147
116
|
`).run(cleanupState, now, workflowId);
|
|
148
117
|
}
|
|
149
|
-
|
|
150
|
-
touchWorkflow(workflowId: string): void {
|
|
118
|
+
touchWorkflow(workflowId) {
|
|
151
119
|
const now = Date.now();
|
|
152
120
|
this.db.prepare(`
|
|
153
121
|
UPDATE subagent_workflows SET last_observed_at = ?, updated_at = ? WHERE workflow_id = ?
|
|
154
122
|
`).run(now, now, workflowId);
|
|
155
123
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const row = this.db.prepare('SELECT * FROM subagent_workflows WHERE workflow_id = ?').get(workflowId) as WorkflowRow | undefined;
|
|
124
|
+
getWorkflow(workflowId) {
|
|
125
|
+
const row = this.db.prepare('SELECT * FROM subagent_workflows WHERE workflow_id = ?').get(workflowId);
|
|
159
126
|
return row ?? null;
|
|
160
127
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const row = this.db.prepare('SELECT * FROM subagent_workflows WHERE child_session_key = ?').get(childSessionKey) as WorkflowRow | undefined;
|
|
128
|
+
getWorkflowByChildSession(childSessionKey) {
|
|
129
|
+
const row = this.db.prepare('SELECT * FROM subagent_workflows WHERE child_session_key = ?').get(childSessionKey);
|
|
164
130
|
return row ?? null;
|
|
165
131
|
}
|
|
166
|
-
|
|
167
|
-
getWorkflowByParentSession(parentSessionId: string, workflowType?: string): WorkflowRow | null {
|
|
132
|
+
getWorkflowByParentSession(parentSessionId, workflowType) {
|
|
168
133
|
let sql = 'SELECT * FROM subagent_workflows WHERE parent_session_id = ?';
|
|
169
|
-
const params
|
|
170
|
-
|
|
134
|
+
const params = [parentSessionId];
|
|
171
135
|
if (workflowType) {
|
|
172
136
|
sql += ' AND workflow_type = ?';
|
|
173
137
|
params.push(workflowType);
|
|
174
138
|
}
|
|
175
|
-
|
|
176
139
|
sql += ' ORDER BY created_at DESC LIMIT 1';
|
|
177
|
-
|
|
178
|
-
const row = this.db.prepare(sql).get(...params) as WorkflowRow | undefined;
|
|
140
|
+
const row = this.db.prepare(sql).get(...params);
|
|
179
141
|
return row ?? null;
|
|
180
142
|
}
|
|
181
|
-
|
|
182
|
-
getActiveWorkflows(workflowType?: string): WorkflowRow[] {
|
|
143
|
+
getActiveWorkflows(workflowType) {
|
|
183
144
|
let sql = "SELECT * FROM subagent_workflows WHERE state NOT IN ('completed', 'terminal_error', 'expired')";
|
|
184
|
-
const params
|
|
185
|
-
|
|
145
|
+
const params = [];
|
|
186
146
|
if (workflowType) {
|
|
187
147
|
sql += ' AND workflow_type = ?';
|
|
188
148
|
params.push(workflowType);
|
|
189
149
|
}
|
|
190
|
-
|
|
191
150
|
sql += ' ORDER BY created_at ASC';
|
|
192
|
-
|
|
193
|
-
return this.db.prepare(sql).all(...params) as WorkflowRow[];
|
|
151
|
+
return this.db.prepare(sql).all(...params);
|
|
194
152
|
}
|
|
195
|
-
|
|
196
|
-
getExpiredWorkflows(maxAgeMs: number): WorkflowRow[] {
|
|
153
|
+
getExpiredWorkflows(maxAgeMs) {
|
|
197
154
|
const cutoff = Date.now() - maxAgeMs;
|
|
198
155
|
return this.db.prepare(`
|
|
199
156
|
SELECT * FROM subagent_workflows
|
|
@@ -201,64 +158,43 @@ export class WorkflowStore {
|
|
|
201
158
|
AND last_observed_at < ?
|
|
202
159
|
AND state NOT IN ('completed', 'terminal_error', 'expired')
|
|
203
160
|
ORDER BY last_observed_at ASC
|
|
204
|
-
`).all(cutoff)
|
|
161
|
+
`).all(cutoff);
|
|
205
162
|
}
|
|
206
|
-
|
|
207
|
-
listWorkflows(state?: string): WorkflowRow[] {
|
|
163
|
+
listWorkflows(state) {
|
|
208
164
|
if (state) {
|
|
209
165
|
return this.db.prepare(`
|
|
210
166
|
SELECT * FROM subagent_workflows
|
|
211
167
|
WHERE state = ?
|
|
212
168
|
ORDER BY created_at DESC
|
|
213
|
-
`).all(state)
|
|
169
|
+
`).all(state);
|
|
214
170
|
}
|
|
215
171
|
return this.db.prepare(`
|
|
216
172
|
SELECT * FROM subagent_workflows
|
|
217
173
|
ORDER BY created_at DESC
|
|
218
|
-
`).all()
|
|
174
|
+
`).all();
|
|
219
175
|
}
|
|
220
|
-
|
|
221
|
-
recordEvent(
|
|
222
|
-
workflowId: string,
|
|
223
|
-
eventType: string,
|
|
224
|
-
fromState: WorkflowState | null,
|
|
225
|
-
toState: WorkflowState,
|
|
226
|
-
reason: string,
|
|
227
|
-
payload: Record<string, unknown>
|
|
228
|
-
): void {
|
|
176
|
+
recordEvent(workflowId, eventType, fromState, toState, reason, payload) {
|
|
229
177
|
const now = Date.now();
|
|
230
178
|
this.db.prepare(`
|
|
231
179
|
INSERT INTO subagent_workflow_events (
|
|
232
180
|
workflow_id, event_type, from_state, to_state, reason, payload_json, created_at
|
|
233
181
|
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
234
|
-
`).run(
|
|
235
|
-
workflowId,
|
|
236
|
-
eventType,
|
|
237
|
-
fromState,
|
|
238
|
-
toState,
|
|
239
|
-
reason,
|
|
240
|
-
JSON.stringify(payload),
|
|
241
|
-
now
|
|
242
|
-
);
|
|
182
|
+
`).run(workflowId, eventType, fromState, toState, reason, JSON.stringify(payload), now);
|
|
243
183
|
}
|
|
244
|
-
|
|
245
|
-
getEvents(workflowId: string): WorkflowEventRow[] {
|
|
184
|
+
getEvents(workflowId) {
|
|
246
185
|
return this.db.prepare(`
|
|
247
186
|
SELECT * FROM subagent_workflow_events WHERE workflow_id = ? ORDER BY created_at ASC
|
|
248
|
-
`).all(workflowId)
|
|
187
|
+
`).all(workflowId);
|
|
249
188
|
}
|
|
250
|
-
|
|
251
|
-
deleteWorkflow(workflowId: string): void {
|
|
189
|
+
deleteWorkflow(workflowId) {
|
|
252
190
|
this.db.prepare('DELETE FROM subagent_workflows WHERE workflow_id = ?').run(workflowId);
|
|
253
191
|
}
|
|
254
|
-
|
|
255
|
-
recordDuration(workflowId: string, durationMs: number): void {
|
|
192
|
+
recordDuration(workflowId, durationMs) {
|
|
256
193
|
this.db.prepare(`
|
|
257
194
|
UPDATE subagent_workflows SET duration_ms = ?, updated_at = ? WHERE workflow_id = ?
|
|
258
195
|
`).run(durationMs, Date.now(), workflowId);
|
|
259
196
|
}
|
|
260
|
-
|
|
261
|
-
getCompletionDurations(workflowType: string, limit = 50): number[] {
|
|
197
|
+
getCompletionDurations(workflowType, limit = 50) {
|
|
262
198
|
const rows = this.db.prepare(`
|
|
263
199
|
SELECT duration_ms FROM subagent_workflows
|
|
264
200
|
WHERE workflow_type = ?
|
|
@@ -267,8 +203,7 @@ export class WorkflowStore {
|
|
|
267
203
|
AND duration_ms > 0
|
|
268
204
|
ORDER BY created_at DESC
|
|
269
205
|
LIMIT ?
|
|
270
|
-
`).all(workflowType, limit)
|
|
271
|
-
|
|
206
|
+
`).all(workflowType, limit);
|
|
272
207
|
return rows.map(r => r.duration_ms);
|
|
273
208
|
}
|
|
274
209
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TrajectoryRegistry } from '../core/trajectory.js';
|
|
2
|
+
import { WorkspaceContext } from '../core/workspace-context.js';
|
|
3
|
+
export const TrajectoryService = {
|
|
4
|
+
id: 'principles-disciple-trajectory',
|
|
5
|
+
start(ctx) {
|
|
6
|
+
if (!ctx.workspaceDir)
|
|
7
|
+
return;
|
|
8
|
+
// Trigger lazy initialization of trajectory registry
|
|
9
|
+
void WorkspaceContext.fromHookContext(ctx).trajectory;
|
|
10
|
+
},
|
|
11
|
+
stop(ctx) {
|
|
12
|
+
if (!ctx.workspaceDir)
|
|
13
|
+
return;
|
|
14
|
+
TrajectoryRegistry.dispose(ctx.workspaceDir);
|
|
15
|
+
},
|
|
16
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Watchdog - Extracted from evolution-worker.ts (lines 79-223)
|
|
3
|
+
*
|
|
4
|
+
* Detects stale/orphaned workflows, invalid results, and cleanup failures.
|
|
5
|
+
* Runs every heartbeat cycle, catching bugs like:
|
|
6
|
+
* #185 — orphaned active workflows
|
|
7
|
+
* #181 — structurally invalid results (all zeros)
|
|
8
|
+
* #180/#183 — expired workflows not swept
|
|
9
|
+
* #182 — unhandled rejections leaving workflows in limbo
|
|
10
|
+
*
|
|
11
|
+
* BUG-01: isExpectedSubagentError guard prevents marking daemon-mode stale
|
|
12
|
+
* workflows as terminal_error (line 122)
|
|
13
|
+
* BUG-02: Gateway fallback cleans up child sessions via agentSession when
|
|
14
|
+
* subagentRuntime unavailable (lines 148-156)
|
|
15
|
+
*/
|
|
16
|
+
import type { WorkspaceContext } from '../core/workspace-context.js';
|
|
17
|
+
import type { OpenClawPluginApi, PluginLogger } from '../openclaw-sdk.js';
|
|
18
|
+
export interface WatchdogResult {
|
|
19
|
+
anomalies: number;
|
|
20
|
+
details: string[];
|
|
21
|
+
scanError?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function runWorkflowWatchdog(wctx: WorkspaceContext, api: OpenClawPluginApi | null, logger?: PluginLogger): Promise<WatchdogResult>;
|