principles-disciple 1.8.0 → 1.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ADVANCED_CONFIG_ZH.md +97 -0
- package/AGENT_INSTALL.md +173 -0
- package/AGENT_INSTALL_EN.md +173 -0
- package/INSTALL.md +256 -0
- package/SKILL.md +63 -0
- package/docs/COMMAND_REFERENCE.md +76 -0
- package/docs/COMMAND_REFERENCE_EN.md +79 -0
- package/esbuild.config.js +75 -0
- package/openclaw.plugin.json +6 -1
- package/package.json +13 -15
- package/scripts/build-web.mjs +46 -0
- package/scripts/install-dependencies.cjs +47 -0
- package/scripts/sync-plugin.mjs +802 -0
- package/scripts/verify-build.mjs +109 -0
- package/src/agents/nocturnal-dreamer.md +152 -0
- package/src/agents/nocturnal-philosopher.md +138 -0
- package/src/agents/nocturnal-reflector.md +126 -0
- package/src/agents/nocturnal-scribe.md +164 -0
- package/src/commands/capabilities.ts +85 -0
- package/{dist/commands/context.js → src/commands/context.ts} +78 -38
- package/src/commands/evolution-status.ts +146 -0
- package/src/commands/export.ts +111 -0
- package/src/commands/focus.ts +533 -0
- package/src/commands/nocturnal-review.ts +311 -0
- package/src/commands/nocturnal-rollout.ts +763 -0
- package/src/commands/nocturnal-train.ts +1002 -0
- package/{dist/commands/pain.js → src/commands/pain.ts} +68 -49
- package/src/commands/principle-rollback.ts +27 -0
- package/{dist/commands/rollback.js → src/commands/rollback.ts} +44 -12
- package/src/commands/samples.ts +60 -0
- package/src/commands/strategy.ts +38 -0
- package/{dist/commands/thinking-os.js → src/commands/thinking-os.ts} +59 -36
- package/src/commands/workflow-debug.ts +128 -0
- package/{dist/config/defaults/runtime.js → src/config/defaults/runtime.ts} +12 -5
- package/src/config/errors.ts +163 -0
- package/{dist/config/index.d.ts → src/config/index.ts} +2 -1
- package/src/constants/diagnostician.ts +66 -0
- package/src/constants/tools.ts +62 -0
- package/src/core/adaptive-thresholds.ts +476 -0
- package/{dist/core/config-service.js → src/core/config-service.ts} +7 -4
- package/{dist/core/config.js → src/core/config.ts} +158 -46
- package/src/core/control-ui-db.ts +435 -0
- package/{dist/core/detection-funnel.js → src/core/detection-funnel.ts} +36 -21
- package/{dist/core/detection-service.js → src/core/detection-service.ts} +7 -4
- package/{dist/core/dictionary-service.js → src/core/dictionary-service.ts} +7 -4
- package/{dist/core/dictionary.js → src/core/dictionary.ts} +57 -34
- package/src/core/empathy-keyword-matcher.ts +327 -0
- package/src/core/empathy-types.ts +218 -0
- package/src/core/event-log.ts +544 -0
- package/src/core/evolution-engine.ts +612 -0
- package/src/core/evolution-logger.ts +353 -0
- package/src/core/evolution-migration.ts +77 -0
- package/src/core/evolution-reducer.ts +731 -0
- package/src/core/evolution-types.ts +456 -0
- package/src/core/external-training-contract.ts +527 -0
- package/src/core/focus-history.ts +1458 -0
- package/src/core/hygiene/tracker.ts +117 -0
- package/{dist/core/init.js → src/core/init.ts} +39 -26
- package/src/core/local-worker-routing.ts +617 -0
- package/{dist/core/migration.js → src/core/migration.ts} +18 -11
- package/src/core/model-deployment-registry.ts +722 -0
- package/src/core/model-training-registry.ts +813 -0
- package/src/core/nocturnal-arbiter.ts +706 -0
- package/src/core/nocturnal-candidate-scoring.ts +392 -0
- package/src/core/nocturnal-compliance.ts +1075 -0
- package/src/core/nocturnal-dataset.ts +668 -0
- package/src/core/nocturnal-executability.ts +428 -0
- package/src/core/nocturnal-export.ts +390 -0
- package/{dist/core/nocturnal-paths.js → src/core/nocturnal-paths.ts} +49 -23
- package/src/core/nocturnal-trajectory-extractor.ts +484 -0
- package/src/core/nocturnal-trinity.ts +1384 -0
- package/src/core/pain.ts +122 -0
- package/{dist/core/path-resolver.js → src/core/path-resolver.ts} +157 -36
- package/{dist/core/paths.js → src/core/paths.ts} +13 -4
- package/src/core/principle-training-state.ts +450 -0
- package/src/core/profile.ts +226 -0
- package/src/core/promotion-gate.ts +822 -0
- package/{dist/core/risk-calculator.js → src/core/risk-calculator.ts} +42 -16
- package/{dist/core/session-tracker.js → src/core/session-tracker.ts} +185 -63
- package/src/core/shadow-observation-registry.ts +534 -0
- package/{dist/core/system-logger.js → src/core/system-logger.ts} +9 -5
- package/src/core/thinking-models.ts +217 -0
- package/src/core/training-program.ts +630 -0
- package/src/core/trajectory-types.ts +243 -0
- package/src/core/trajectory.ts +1673 -0
- package/{dist/core/workspace-context.js → src/core/workspace-context.ts} +57 -32
- package/src/hooks/bash-risk.ts +171 -0
- package/src/hooks/edit-verification.ts +295 -0
- package/src/hooks/gate-block-helper.ts +160 -0
- package/src/hooks/gate.ts +210 -0
- package/src/hooks/gfi-gate.ts +177 -0
- package/src/hooks/lifecycle.ts +326 -0
- package/{dist/hooks/llm.js → src/hooks/llm.ts} +166 -139
- package/src/hooks/message-sanitize.ts +45 -0
- package/src/hooks/pain.ts +384 -0
- package/src/hooks/progressive-trust-gate.ts +174 -0
- package/src/hooks/prompt.ts +920 -0
- package/src/hooks/subagent.ts +207 -0
- package/src/hooks/thinking-checkpoint.ts +73 -0
- package/src/hooks/trajectory-collector.ts +290 -0
- package/src/http/principles-console-route.ts +716 -0
- package/src/i18n/commands.ts +117 -0
- package/src/index.ts +694 -0
- package/src/service/central-database.ts +831 -0
- package/src/service/control-ui-query-service.ts +888 -0
- package/src/service/evolution-query-service.ts +405 -0
- package/src/service/evolution-worker.ts +1646 -0
- package/src/service/health-query-service.ts +836 -0
- package/{dist/service/nocturnal-runtime.js → src/service/nocturnal-runtime.ts} +263 -36
- package/src/service/nocturnal-service.ts +1015 -0
- package/src/service/nocturnal-target-selector.ts +532 -0
- package/src/service/phase3-input-filter.ts +237 -0
- package/src/service/runtime-summary-service.ts +757 -0
- package/src/service/subagent-workflow/deep-reflect-workflow-manager.ts +513 -0
- package/src/service/subagent-workflow/empathy-observer-workflow-manager.ts +603 -0
- package/src/service/subagent-workflow/index.ts +51 -0
- package/src/service/subagent-workflow/nocturnal-workflow-manager.ts +856 -0
- package/src/service/subagent-workflow/runtime-direct-driver.ts +166 -0
- package/src/service/subagent-workflow/types.ts +378 -0
- package/src/service/subagent-workflow/workflow-store.ts +328 -0
- package/src/service/trajectory-service.ts +15 -0
- package/{dist/tools/critique-prompt.js → src/tools/critique-prompt.ts} +25 -8
- package/src/tools/deep-reflect.ts +349 -0
- package/{dist/tools/model-index.js → src/tools/model-index.ts} +33 -17
- package/src/types/event-types.ts +453 -0
- package/src/types/hygiene-types.ts +31 -0
- package/src/types/principle-tree-schema.ts +244 -0
- package/src/types/runtime-summary.ts +49 -0
- package/src/types.ts +74 -0
- package/src/utils/file-lock.ts +391 -0
- package/{dist/utils/glob-match.js → src/utils/glob-match.ts} +21 -20
- package/{dist/utils/hashing.js → src/utils/hashing.ts} +6 -4
- package/src/utils/io.ts +110 -0
- package/{dist/utils/nlp.js → src/utils/nlp.ts} +19 -12
- package/{dist/utils/plugin-logger.js → src/utils/plugin-logger.ts} +33 -8
- package/src/utils/subagent-probe.ts +94 -0
- package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +70 -1
- package/templates/pain_settings.json +2 -1
- package/tests/README.md +120 -0
- package/tests/build-artifacts.test.ts +111 -0
- package/tests/commands/evolution-status.test.ts +222 -0
- package/tests/commands/evolver.test.ts +22 -0
- package/tests/commands/export.test.ts +78 -0
- package/tests/commands/nocturnal-review.test.ts +448 -0
- package/tests/commands/nocturnal-train.test.ts +97 -0
- package/tests/commands/pain.test.ts +108 -0
- package/tests/commands/samples.test.ts +65 -0
- package/tests/commands/strategy.test.ts +34 -0
- package/tests/commands/thinking-os.test.ts +88 -0
- package/tests/core/adaptive-thresholds.test.ts +261 -0
- package/tests/core/config-service.test.ts +89 -0
- package/tests/core/config.test.ts +90 -0
- package/tests/core/control-ui-db.test.ts +75 -0
- package/tests/core/core-template-guidance.test.ts +21 -0
- package/tests/core/detection-funnel.test.ts +63 -0
- package/tests/core/detection-service.test.ts +50 -0
- package/tests/core/dictionary-service.test.ts +116 -0
- package/tests/core/dictionary.test.ts +168 -0
- package/tests/core/empathy-keyword-matcher.test.ts +209 -0
- package/tests/core/event-log.test.ts +181 -0
- package/tests/core/evolution-e2e.test.ts +58 -0
- package/tests/core/evolution-engine-gate-integration.test.ts +543 -0
- package/tests/core/evolution-engine.test.ts +562 -0
- package/tests/core/evolution-logger.test.ts +148 -0
- package/tests/core/evolution-migration.test.ts +50 -0
- package/tests/core/evolution-paths.test.ts +21 -0
- package/tests/core/evolution-reducer.detector-metadata.test.ts +602 -0
- package/tests/core/evolution-reducer.test.ts +180 -0
- package/tests/core/evolution-types-loop.test.ts +48 -0
- package/tests/core/evolution-user-stories.e2e.test.ts +249 -0
- package/tests/core/external-training-contract.test.ts +463 -0
- package/tests/core/focus-history.test.ts +682 -0
- package/tests/core/init-flatten.test.ts +69 -0
- package/tests/core/init-refactor.test.ts +87 -0
- package/tests/core/init-v1.3.test.ts +46 -0
- package/tests/core/init.test.ts +190 -0
- package/tests/core/local-worker-routing.test.ts +757 -0
- package/tests/core/migration.test.ts +84 -0
- package/tests/core/model-deployment-registry.test.ts +845 -0
- package/tests/core/model-training-registry.test.ts +889 -0
- package/tests/core/nocturnal-arbiter.test.ts +494 -0
- package/tests/core/nocturnal-candidate-scoring.test.ts +400 -0
- package/tests/core/nocturnal-compliance.test.ts +646 -0
- package/tests/core/nocturnal-dataset.test.ts +892 -0
- package/tests/core/nocturnal-executability.test.ts +357 -0
- package/tests/core/nocturnal-export.test.ts +462 -0
- package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +428 -0
- package/tests/core/nocturnal-trajectory-extractor.test.ts +634 -0
- package/tests/core/nocturnal-trinity.test.ts +953 -0
- package/tests/core/pain.test.ts +33 -0
- package/tests/core/path-resolver.test.ts +57 -0
- package/tests/core/paths-refactor.test.ts +42 -0
- package/tests/core/phase7-rollout-integration.test.ts +477 -0
- package/tests/core/principle-training-state.test.ts +712 -0
- package/tests/core/profile.test.ts +56 -0
- package/tests/core/promotion-gate.test.ts +556 -0
- package/tests/core/risk-calculator.test.ts +168 -0
- package/tests/core/session-tracker.test.ts +191 -0
- package/tests/core/training-program.test.ts +472 -0
- package/tests/core/trajectory.test.ts +265 -0
- package/tests/core/workspace-context-factory.test.ts +18 -0
- package/tests/core/workspace-context.test.ts +134 -0
- package/tests/fixtures/nocturnal-reviewed-subset.json +183 -0
- package/tests/fixtures/production-compatibility.test.ts +147 -0
- package/tests/fixtures/production-mock-generator.ts +282 -0
- package/tests/hooks/bash-risk-integration.test.ts +137 -0
- package/tests/hooks/bash-risk.test.ts +81 -0
- package/tests/hooks/edit-verification.test.ts +678 -0
- package/tests/hooks/gate-edit-verification-p1.test.ts +632 -0
- package/tests/hooks/gate-edit-verification.test.ts +435 -0
- package/tests/hooks/gate-pipeline-integration.test.ts +404 -0
- package/tests/hooks/gate.test.ts +271 -0
- package/tests/hooks/gfi-gate-unit.test.ts +422 -0
- package/tests/hooks/gfi-gate.test.ts +669 -0
- package/tests/hooks/lifecycle.test.ts +248 -0
- package/tests/hooks/llm.test.ts +308 -0
- package/tests/hooks/message-sanitize.test.ts +36 -0
- package/tests/hooks/pain.test.ts +141 -0
- package/tests/hooks/progressive-trust-gate.test.ts +277 -0
- package/tests/hooks/prompt.test.ts +1411 -0
- package/tests/hooks/subagent.test.ts +467 -0
- package/tests/hooks/thinking-gate.test.ts +313 -0
- package/tests/http/principles-console-route.test.ts +140 -0
- package/tests/hygiene-tracker.test.ts +77 -0
- package/tests/index.integration.test.ts +179 -0
- package/tests/index.shadow-routing.integration.test.ts +140 -0
- package/tests/index.test.ts +9 -0
- package/tests/integration/empathy-workflow-integration.test.ts +627 -0
- package/tests/service/control-ui-query-service.test.ts +121 -0
- package/tests/service/empathy-observer-workflow-manager.test.ts +176 -0
- package/tests/service/evolution-worker.test.ts +585 -0
- package/tests/service/nocturnal-runtime.test.ts +470 -0
- package/tests/service/nocturnal-service.test.ts +577 -0
- package/tests/service/nocturnal-target-selector.test.ts +615 -0
- package/tests/service/nocturnal-workflow-manager.test.ts +439 -0
- package/tests/service/phase3-input-filter.test.ts +289 -0
- package/tests/service/runtime-summary-service.test.ts +919 -0
- package/tests/task-compliance.test.ts +166 -0
- package/tests/test-utils.ts +48 -0
- package/tests/tools/critique-prompt.test.ts +260 -0
- package/tests/tools/deep-reflect.test.ts +232 -0
- package/tests/tools/model-index.test.ts +246 -0
- package/tests/ui/app.test.tsx +114 -0
- package/tests/utils/file-lock.test.ts +407 -0
- package/tests/utils/hashing.test.ts +32 -0
- package/tests/utils/io.test.ts +39 -0
- package/tests/utils/nlp.test.ts +53 -0
- package/tests/utils/plugin-logger.test.ts +156 -0
- package/tsconfig.json +16 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/ui/src/App.tsx +45 -0
- package/ui/src/api.ts +216 -0
- package/ui/src/charts.tsx +586 -0
- package/ui/src/components/ErrorState.tsx +6 -0
- package/ui/src/components/Loading.tsx +13 -0
- package/ui/src/components/ProtectedRoute.tsx +12 -0
- package/ui/src/components/Shell.tsx +91 -0
- package/ui/src/components/WorkspaceConfig.tsx +146 -0
- package/ui/src/components/index.ts +5 -0
- package/ui/src/context/auth.tsx +80 -0
- package/ui/src/context/theme.tsx +66 -0
- package/ui/src/hooks/useAutoRefresh.ts +39 -0
- package/ui/src/i18n/ui.ts +363 -0
- package/ui/src/main.tsx +16 -0
- package/ui/src/pages/EvolutionPage.tsx +352 -0
- package/ui/src/pages/FeedbackPage.tsx +140 -0
- package/ui/src/pages/GateMonitorPage.tsx +136 -0
- package/ui/src/pages/LoginPage.tsx +88 -0
- package/ui/src/pages/OverviewPage.tsx +238 -0
- package/ui/src/pages/SamplesPage.tsx +174 -0
- package/ui/src/pages/ThinkingModelsPage.tsx +127 -0
- package/ui/src/styles.css +1661 -0
- package/ui/src/types.ts +368 -0
- package/ui/src/utils/format.ts +15 -0
- package/vitest.config.ts +23 -0
- package/dist/commands/capabilities.d.ts +0 -3
- package/dist/commands/capabilities.js +0 -73
- package/dist/commands/context.d.ts +0 -5
- package/dist/commands/evolution-status.d.ts +0 -4
- package/dist/commands/evolution-status.js +0 -117
- package/dist/commands/evolver.d.ts +0 -9
- package/dist/commands/evolver.js +0 -26
- package/dist/commands/export.d.ts +0 -2
- package/dist/commands/export.js +0 -98
- package/dist/commands/focus.d.ts +0 -14
- package/dist/commands/focus.js +0 -457
- package/dist/commands/nocturnal-review.d.ts +0 -24
- package/dist/commands/nocturnal-review.js +0 -265
- package/dist/commands/nocturnal-rollout.d.ts +0 -27
- package/dist/commands/nocturnal-rollout.js +0 -671
- package/dist/commands/nocturnal-train.d.ts +0 -25
- package/dist/commands/nocturnal-train.js +0 -919
- package/dist/commands/pain.d.ts +0 -5
- package/dist/commands/principle-rollback.d.ts +0 -4
- package/dist/commands/principle-rollback.js +0 -22
- package/dist/commands/rollback.d.ts +0 -19
- package/dist/commands/samples.d.ts +0 -2
- package/dist/commands/samples.js +0 -55
- package/dist/commands/strategy.d.ts +0 -3
- package/dist/commands/strategy.js +0 -29
- package/dist/commands/thinking-os.d.ts +0 -2
- package/dist/config/defaults/runtime.d.ts +0 -40
- package/dist/config/errors.d.ts +0 -84
- package/dist/config/errors.js +0 -94
- package/dist/config/index.js +0 -7
- package/dist/constants/diagnostician.d.ts +0 -12
- package/dist/constants/diagnostician.js +0 -56
- package/dist/constants/tools.d.ts +0 -17
- package/dist/constants/tools.js +0 -54
- package/dist/core/adaptive-thresholds.d.ts +0 -186
- package/dist/core/adaptive-thresholds.js +0 -300
- package/dist/core/config-service.d.ts +0 -15
- package/dist/core/config.d.ts +0 -127
- package/dist/core/control-ui-db.d.ts +0 -95
- package/dist/core/control-ui-db.js +0 -292
- package/dist/core/detection-funnel.d.ts +0 -33
- package/dist/core/detection-service.d.ts +0 -15
- package/dist/core/dictionary-service.d.ts +0 -15
- package/dist/core/dictionary.d.ts +0 -38
- package/dist/core/event-log.d.ts +0 -82
- package/dist/core/event-log.js +0 -463
- package/dist/core/evolution-engine.d.ts +0 -118
- package/dist/core/evolution-engine.js +0 -464
- package/dist/core/evolution-logger.d.ts +0 -137
- package/dist/core/evolution-logger.js +0 -256
- package/dist/core/evolution-migration.d.ts +0 -5
- package/dist/core/evolution-migration.js +0 -65
- package/dist/core/evolution-reducer.d.ts +0 -98
- package/dist/core/evolution-reducer.js +0 -465
- package/dist/core/evolution-types.d.ts +0 -287
- package/dist/core/evolution-types.js +0 -78
- package/dist/core/external-training-contract.d.ts +0 -276
- package/dist/core/external-training-contract.js +0 -269
- package/dist/core/focus-history.d.ts +0 -210
- package/dist/core/focus-history.js +0 -1185
- package/dist/core/hygiene/tracker.d.ts +0 -22
- package/dist/core/hygiene/tracker.js +0 -106
- package/dist/core/init.d.ts +0 -12
- package/dist/core/local-worker-routing.d.ts +0 -175
- package/dist/core/local-worker-routing.js +0 -525
- package/dist/core/migration.d.ts +0 -6
- package/dist/core/model-deployment-registry.d.ts +0 -218
- package/dist/core/model-deployment-registry.js +0 -503
- package/dist/core/model-training-registry.d.ts +0 -295
- package/dist/core/model-training-registry.js +0 -475
- package/dist/core/nocturnal-arbiter.d.ts +0 -159
- package/dist/core/nocturnal-arbiter.js +0 -534
- package/dist/core/nocturnal-candidate-scoring.d.ts +0 -137
- package/dist/core/nocturnal-candidate-scoring.js +0 -266
- package/dist/core/nocturnal-compliance.d.ts +0 -175
- package/dist/core/nocturnal-compliance.js +0 -824
- package/dist/core/nocturnal-dataset.d.ts +0 -224
- package/dist/core/nocturnal-dataset.js +0 -443
- package/dist/core/nocturnal-executability.d.ts +0 -85
- package/dist/core/nocturnal-executability.js +0 -331
- package/dist/core/nocturnal-export.d.ts +0 -124
- package/dist/core/nocturnal-export.js +0 -275
- package/dist/core/nocturnal-paths.d.ts +0 -124
- package/dist/core/nocturnal-trajectory-extractor.d.ts +0 -242
- package/dist/core/nocturnal-trajectory-extractor.js +0 -307
- package/dist/core/nocturnal-trinity.d.ts +0 -311
- package/dist/core/nocturnal-trinity.js +0 -880
- package/dist/core/pain.d.ts +0 -4
- package/dist/core/pain.js +0 -70
- package/dist/core/path-resolver.d.ts +0 -46
- package/dist/core/paths.d.ts +0 -65
- package/dist/core/principle-training-state.d.ts +0 -121
- package/dist/core/principle-training-state.js +0 -321
- package/dist/core/profile.d.ts +0 -62
- package/dist/core/profile.js +0 -210
- package/dist/core/promotion-gate.d.ts +0 -238
- package/dist/core/promotion-gate.js +0 -529
- package/dist/core/risk-calculator.d.ts +0 -22
- package/dist/core/session-tracker.d.ts +0 -99
- package/dist/core/shadow-observation-registry.d.ts +0 -217
- package/dist/core/shadow-observation-registry.js +0 -308
- package/dist/core/system-logger.d.ts +0 -8
- package/dist/core/thinking-models.d.ts +0 -38
- package/dist/core/thinking-models.js +0 -170
- package/dist/core/training-program.d.ts +0 -233
- package/dist/core/training-program.js +0 -433
- package/dist/core/trajectory.d.ts +0 -411
- package/dist/core/trajectory.js +0 -1307
- package/dist/core/workspace-context.d.ts +0 -71
- package/dist/hooks/bash-risk.d.ts +0 -57
- package/dist/hooks/bash-risk.js +0 -137
- package/dist/hooks/edit-verification.d.ts +0 -62
- package/dist/hooks/edit-verification.js +0 -256
- package/dist/hooks/gate-block-helper.d.ts +0 -44
- package/dist/hooks/gate-block-helper.js +0 -119
- package/dist/hooks/gate.d.ts +0 -24
- package/dist/hooks/gate.js +0 -173
- package/dist/hooks/gfi-gate.d.ts +0 -40
- package/dist/hooks/gfi-gate.js +0 -113
- package/dist/hooks/lifecycle.d.ts +0 -5
- package/dist/hooks/lifecycle.js +0 -284
- package/dist/hooks/llm.d.ts +0 -12
- package/dist/hooks/message-sanitize.d.ts +0 -3
- package/dist/hooks/message-sanitize.js +0 -37
- package/dist/hooks/pain.d.ts +0 -5
- package/dist/hooks/pain.js +0 -301
- package/dist/hooks/progressive-trust-gate.d.ts +0 -51
- package/dist/hooks/progressive-trust-gate.js +0 -89
- package/dist/hooks/prompt.d.ts +0 -47
- package/dist/hooks/prompt.js +0 -884
- package/dist/hooks/subagent.d.ts +0 -10
- package/dist/hooks/subagent.js +0 -387
- package/dist/hooks/thinking-checkpoint.d.ts +0 -37
- package/dist/hooks/thinking-checkpoint.js +0 -51
- package/dist/hooks/trajectory-collector.d.ts +0 -32
- package/dist/hooks/trajectory-collector.js +0 -256
- package/dist/http/principles-console-route.d.ts +0 -9
- package/dist/http/principles-console-route.js +0 -567
- package/dist/i18n/commands.d.ts +0 -26
- package/dist/i18n/commands.js +0 -116
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -581
- package/dist/service/central-database.d.ts +0 -104
- package/dist/service/central-database.js +0 -649
- package/dist/service/control-ui-query-service.d.ts +0 -221
- package/dist/service/control-ui-query-service.js +0 -543
- package/dist/service/empathy-observer-manager.d.ts +0 -52
- package/dist/service/empathy-observer-manager.js +0 -229
- package/dist/service/evolution-query-service.d.ts +0 -155
- package/dist/service/evolution-query-service.js +0 -258
- package/dist/service/evolution-worker.d.ts +0 -101
- package/dist/service/evolution-worker.js +0 -974
- package/dist/service/nocturnal-runtime.d.ts +0 -183
- package/dist/service/nocturnal-service.d.ts +0 -163
- package/dist/service/nocturnal-service.js +0 -787
- package/dist/service/nocturnal-target-selector.d.ts +0 -145
- package/dist/service/nocturnal-target-selector.js +0 -315
- package/dist/service/phase3-input-filter.d.ts +0 -73
- package/dist/service/phase3-input-filter.js +0 -172
- package/dist/service/runtime-summary-service.d.ts +0 -122
- package/dist/service/runtime-summary-service.js +0 -485
- package/dist/service/trajectory-service.d.ts +0 -2
- package/dist/service/trajectory-service.js +0 -15
- package/dist/tools/critique-prompt.d.ts +0 -14
- package/dist/tools/deep-reflect.d.ts +0 -39
- package/dist/tools/deep-reflect.js +0 -350
- package/dist/tools/model-index.d.ts +0 -9
- package/dist/types/event-types.d.ts +0 -306
- package/dist/types/event-types.js +0 -106
- package/dist/types/hygiene-types.d.ts +0 -20
- package/dist/types/hygiene-types.js +0 -12
- package/dist/types/runtime-summary.d.ts +0 -47
- package/dist/types/runtime-summary.js +0 -1
- package/dist/types.d.ts +0 -50
- package/dist/types.js +0 -22
- package/dist/utils/file-lock.d.ts +0 -71
- package/dist/utils/file-lock.js +0 -309
- package/dist/utils/glob-match.d.ts +0 -28
- package/dist/utils/hashing.d.ts +0 -9
- package/dist/utils/io.d.ts +0 -6
- package/dist/utils/io.js +0 -106
- package/dist/utils/nlp.d.ts +0 -9
- package/dist/utils/plugin-logger.d.ts +0 -39
- package/dist/utils/subagent-probe.d.ts +0 -34
- package/dist/utils/subagent-probe.js +0 -81
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
SubagentRunResult,
|
|
3
|
+
SubagentWaitResult,
|
|
4
|
+
SubagentGetSessionMessagesResult,
|
|
5
|
+
PluginLogger,
|
|
6
|
+
} from '../../openclaw-sdk.js';
|
|
7
|
+
|
|
8
|
+
export interface TransportDriver {
|
|
9
|
+
run(params: RunParams): Promise<RunResult>;
|
|
10
|
+
wait(params: WaitParams): Promise<WaitResult>;
|
|
11
|
+
getResult(params: GetResultParams): Promise<GetResultResult>;
|
|
12
|
+
cleanup(params: CleanupParams): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface RunParams {
|
|
16
|
+
sessionKey: string;
|
|
17
|
+
message: string;
|
|
18
|
+
lane?: string;
|
|
19
|
+
deliver?: boolean;
|
|
20
|
+
idempotencyKey?: string;
|
|
21
|
+
expectsCompletionMessage?: boolean;
|
|
22
|
+
extraSystemPrompt?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface RunResult {
|
|
26
|
+
runId: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface WaitParams {
|
|
30
|
+
runId: string;
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface WaitResult {
|
|
35
|
+
status: 'ok' | 'error' | 'timeout';
|
|
36
|
+
error?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface GetResultParams {
|
|
40
|
+
sessionKey: string;
|
|
41
|
+
limit?: number;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface GetResultResult {
|
|
45
|
+
messages: unknown[];
|
|
46
|
+
assistantTexts?: string[];
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface CleanupParams {
|
|
50
|
+
sessionKey: string;
|
|
51
|
+
deleteTranscript?: boolean;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
type PluginRuntimeSubagent = {
|
|
55
|
+
run: (params: {
|
|
56
|
+
sessionKey: string;
|
|
57
|
+
message: string;
|
|
58
|
+
lane?: string;
|
|
59
|
+
deliver?: boolean;
|
|
60
|
+
idempotencyKey?: string;
|
|
61
|
+
expectsCompletionMessage?: boolean;
|
|
62
|
+
extraSystemPrompt?: string;
|
|
63
|
+
}) => Promise<SubagentRunResult>;
|
|
64
|
+
waitForRun: (params: {
|
|
65
|
+
runId: string;
|
|
66
|
+
timeoutMs?: number;
|
|
67
|
+
}) => Promise<SubagentWaitResult>;
|
|
68
|
+
getSessionMessages: (params: {
|
|
69
|
+
sessionKey: string;
|
|
70
|
+
limit?: number;
|
|
71
|
+
}) => Promise<SubagentGetSessionMessagesResult>;
|
|
72
|
+
deleteSession: (params: {
|
|
73
|
+
sessionKey: string;
|
|
74
|
+
deleteTranscript?: boolean;
|
|
75
|
+
}) => Promise<void>;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export class RuntimeDirectDriver implements TransportDriver {
|
|
79
|
+
private readonly subagent: PluginRuntimeSubagent;
|
|
80
|
+
private readonly logger: PluginLogger;
|
|
81
|
+
|
|
82
|
+
constructor(options: { subagent: PluginRuntimeSubagent; logger: PluginLogger }) {
|
|
83
|
+
this.subagent = options.subagent;
|
|
84
|
+
this.logger = options.logger;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Expose subagent for availability checking (used by workflow manager for surface degrade) */
|
|
88
|
+
getSubagent(): PluginRuntimeSubagent {
|
|
89
|
+
return this.subagent;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async run(params: RunParams): Promise<RunResult> {
|
|
93
|
+
// DEFENSIVE: Gateway AgentParamsSchema requires idempotencyKey as NonEmptyString (required).
|
|
94
|
+
// server-plugins.ts uses conditional spread: ...(v && { v }), so falsy = omitted = validation failure.
|
|
95
|
+
// Always guarantee a non-empty value even if caller forgets.
|
|
96
|
+
const idempotencyKey = params.idempotencyKey || `pd:${params.sessionKey}:${Date.now()}`;
|
|
97
|
+
|
|
98
|
+
this.logger.info(`[PD:RuntimeDirectDriver] Spawning subagent: sessionKey=${params.sessionKey}, idemKey=${idempotencyKey.substring(0, 40)}`);
|
|
99
|
+
|
|
100
|
+
try {
|
|
101
|
+
const result = await this.subagent.run({
|
|
102
|
+
sessionKey: params.sessionKey,
|
|
103
|
+
message: params.message,
|
|
104
|
+
lane: params.lane ?? 'subagent',
|
|
105
|
+
deliver: params.deliver ?? false,
|
|
106
|
+
idempotencyKey,
|
|
107
|
+
expectsCompletionMessage: params.expectsCompletionMessage ?? true,
|
|
108
|
+
extraSystemPrompt: params.extraSystemPrompt,
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
this.logger.info(`[PD:RuntimeDirectDriver] Spawn succeeded: runId=${result.runId}`);
|
|
112
|
+
return { runId: result.runId };
|
|
113
|
+
} catch (error) {
|
|
114
|
+
this.logger.error(`[PD:RuntimeDirectDriver] Spawn failed: ${String(error)}`);
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async wait(params: WaitParams): Promise<WaitResult> {
|
|
120
|
+
this.logger.info(`[PD:RuntimeDirectDriver] Waiting for run: runId=${params.runId}, timeout=${params.timeoutMs}ms`);
|
|
121
|
+
|
|
122
|
+
try {
|
|
123
|
+
const result = await this.subagent.waitForRun({
|
|
124
|
+
runId: params.runId,
|
|
125
|
+
timeoutMs: params.timeoutMs,
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
this.logger.info(`[PD:RuntimeDirectDriver] Wait completed: status=${result.status}`);
|
|
129
|
+
return result;
|
|
130
|
+
} catch (error) {
|
|
131
|
+
this.logger.error(`[PD:RuntimeDirectDriver] Wait failed: ${String(error)}`);
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
async getResult(params: GetResultParams): Promise<GetResultResult> {
|
|
137
|
+
this.logger.info(`[PD:RuntimeDirectDriver] Getting messages: sessionKey=${params.sessionKey}`);
|
|
138
|
+
|
|
139
|
+
try {
|
|
140
|
+
const result = await this.subagent.getSessionMessages({
|
|
141
|
+
sessionKey: params.sessionKey,
|
|
142
|
+
limit: params.limit ?? 20,
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
return result;
|
|
146
|
+
} catch (error) {
|
|
147
|
+
this.logger.error(`[PD:RuntimeDirectDriver] GetResult failed: ${String(error)}`);
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async cleanup(params: CleanupParams): Promise<void> {
|
|
153
|
+
this.logger.info(`[PD:RuntimeDirectDriver] Cleaning up session: sessionKey=${params.sessionKey}`);
|
|
154
|
+
|
|
155
|
+
try {
|
|
156
|
+
await this.subagent.deleteSession({
|
|
157
|
+
sessionKey: params.sessionKey,
|
|
158
|
+
deleteTranscript: params.deleteTranscript,
|
|
159
|
+
});
|
|
160
|
+
this.logger.info(`[PD:RuntimeDirectDriver] Cleanup succeeded`);
|
|
161
|
+
} catch (error) {
|
|
162
|
+
this.logger.error(`[PD:RuntimeDirectDriver] Cleanup failed: ${String(error)}`);
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,378 @@
|
|
|
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
|
+
|
|
12
|
+
import type {
|
|
13
|
+
NocturnalArtifact,
|
|
14
|
+
} from '../../core/nocturnal-arbiter.js';
|
|
15
|
+
import type {
|
|
16
|
+
BoundedAction,
|
|
17
|
+
} from '../../core/nocturnal-executability.js';
|
|
18
|
+
import type {
|
|
19
|
+
NocturnalSessionSnapshot,
|
|
20
|
+
} from '../../core/nocturnal-trajectory-extractor.js';
|
|
21
|
+
import type {
|
|
22
|
+
NocturnalRunDiagnostics,
|
|
23
|
+
} from '../nocturnal-service.js';
|
|
24
|
+
import type {
|
|
25
|
+
TrinityResult,
|
|
26
|
+
} from '../../core/nocturnal-trinity.js';
|
|
27
|
+
|
|
28
|
+
// ── Workflow Transport ────────────────────────────────────────────────────────
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* First-phase helper transport.
|
|
32
|
+
* This helper currently models only plugin-owned runtime_direct workflows.
|
|
33
|
+
*/
|
|
34
|
+
export type WorkflowTransport = 'runtime_direct';
|
|
35
|
+
|
|
36
|
+
// ── Workflow State Machine ───────────────────────────────────────────────────
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* States in the workflow state machine.
|
|
40
|
+
*
|
|
41
|
+
* State transitions:
|
|
42
|
+
*
|
|
43
|
+
* PENDING ──→ ACTIVE ──→ WAIT_RESULT ──→ FINALIZING ──→ COMPLETED
|
|
44
|
+
* │ │ │
|
|
45
|
+
* │ ├──────────────────────────────┤
|
|
46
|
+
* │ │ (on timeout/error) │
|
|
47
|
+
* │ ▼ ▼
|
|
48
|
+
* │ TERMINAL_ERROR ◄─────────────────┘
|
|
49
|
+
* │ │
|
|
50
|
+
* │ │ (cleanup_pending if deleteSession fails)
|
|
51
|
+
* │ ▼
|
|
52
|
+
* └──────── CLEANUP_PENDING
|
|
53
|
+
*
|
|
54
|
+
* States marked with (*) are terminal states.
|
|
55
|
+
*/
|
|
56
|
+
export type WorkflowState =
|
|
57
|
+
| 'pending' // Workflow created, not yet started
|
|
58
|
+
| 'active' // Subagent spawned, running
|
|
59
|
+
| 'wait_result' // Waiting for result (runtime_direct path)
|
|
60
|
+
| 'finalizing' // Reading and parsing result
|
|
61
|
+
| 'completed' // Successfully finalized and cleaned up (*)
|
|
62
|
+
| 'terminal_error' // Finalized with error (*)
|
|
63
|
+
| 'cleanup_pending' // Cleanup failed, pending retry (*)
|
|
64
|
+
| 'expired'; // TTL expired, cleaned up (*)
|
|
65
|
+
|
|
66
|
+
// ── Workflow Metadata ────────────────────────────────────────────────────────
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Metadata stored with each workflow for auditing and debugging.
|
|
70
|
+
*/
|
|
71
|
+
export interface WorkflowMetadata {
|
|
72
|
+
parentSessionId: string;
|
|
73
|
+
workspaceDir?: string;
|
|
74
|
+
taskInput: unknown;
|
|
75
|
+
startedAt: number;
|
|
76
|
+
/** Human-readable workflow type for debugging */
|
|
77
|
+
workflowType: string;
|
|
78
|
+
/** Extra custom metadata specific to workflow type */
|
|
79
|
+
[key: string]: unknown;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ── Workflow Context Types ────────────────────────────────────────────────────
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Context passed to parseResult() when reading subagent output.
|
|
86
|
+
*/
|
|
87
|
+
export interface WorkflowResultContext {
|
|
88
|
+
/** Raw messages from getSessionMessages() */
|
|
89
|
+
messages: unknown[];
|
|
90
|
+
/** Convenience: pre-extracted assistant texts */
|
|
91
|
+
assistantTexts?: string[];
|
|
92
|
+
/** The workflow run metadata */
|
|
93
|
+
metadata: WorkflowMetadata;
|
|
94
|
+
/** The subagent run result status (only for runtime_direct) */
|
|
95
|
+
waitStatus?: 'ok' | 'error' | 'timeout';
|
|
96
|
+
/** Error message if waitStatus is 'error' */
|
|
97
|
+
waitError?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Context passed to persistResult() after successful parsing.
|
|
102
|
+
*/
|
|
103
|
+
export interface WorkflowPersistContext<TResult> {
|
|
104
|
+
/** Parsed result from parseResult() */
|
|
105
|
+
result: TResult;
|
|
106
|
+
/** The workflow run metadata */
|
|
107
|
+
metadata: WorkflowMetadata;
|
|
108
|
+
/** Workspace context directory */
|
|
109
|
+
workspaceDir: string;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ── Workflow Spec ─────────────────────────────────────────────────────────────
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Result of calling startWorkflow().
|
|
116
|
+
* Returned to caller so they can track the workflow.
|
|
117
|
+
*/
|
|
118
|
+
export interface WorkflowHandle {
|
|
119
|
+
/** Unique workflow ID */
|
|
120
|
+
workflowId: string;
|
|
121
|
+
/** Child session key for the subagent */
|
|
122
|
+
childSessionKey: string;
|
|
123
|
+
/** Run ID (only for runtime_direct transport) */
|
|
124
|
+
runId?: string;
|
|
125
|
+
/** The workflow state at creation */
|
|
126
|
+
state: WorkflowState;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Specification for a subagent workflow.
|
|
131
|
+
* Each workflow type (empathy observer, deep-reflect) implements this spec.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```ts
|
|
135
|
+
* const empathySpec: SubagentWorkflowSpec<EmpathyResult> = {
|
|
136
|
+
* workflowType: 'empathy-observer',
|
|
137
|
+
* transport: 'runtime_direct',
|
|
138
|
+
* timeoutMs: 30_000,
|
|
139
|
+
* ttlMs: 5 * 60 * 1000,
|
|
140
|
+
* shouldDeleteSessionAfterFinalize: true,
|
|
141
|
+
* parseResult: async (ctx) => parseEmpathyResult(ctx),
|
|
142
|
+
* persistResult: async (ctx) => { /* persist to trajectory *\/ },
|
|
143
|
+
* shouldFinalizeOnWaitStatus: (status) => status === 'ok',
|
|
144
|
+
* };
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export interface SubagentWorkflowSpec<TResult> {
|
|
148
|
+
/** Unique identifier for this workflow type */
|
|
149
|
+
workflowType: string;
|
|
150
|
+
/** Which transport mechanism to use */
|
|
151
|
+
transport: WorkflowTransport;
|
|
152
|
+
/** Build the prompt / input payload for the child subagent */
|
|
153
|
+
buildPrompt: (taskInput: unknown, metadata: WorkflowMetadata) => string;
|
|
154
|
+
/** Max time to wait for subagent completion */
|
|
155
|
+
timeoutMs: number;
|
|
156
|
+
/** Time-to-live for orphan cleanup (e.g., 5 minutes) */
|
|
157
|
+
ttlMs: number;
|
|
158
|
+
/** Whether to delete session after successful finalize */
|
|
159
|
+
shouldDeleteSessionAfterFinalize: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Parse subagent output into structured result.
|
|
162
|
+
* Return null if parsing fails or result is invalid.
|
|
163
|
+
*/
|
|
164
|
+
parseResult: (ctx: WorkflowResultContext) => Promise<TResult | null>;
|
|
165
|
+
/**
|
|
166
|
+
* Persist the parsed result to storage (trajectory, pain signal, etc.)
|
|
167
|
+
*/
|
|
168
|
+
persistResult: (ctx: WorkflowPersistContext<TResult>) => Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Determine if workflow should finalize given wait status.
|
|
171
|
+
* For runtime_direct: typically finalize only on 'ok', skip on 'timeout'/'error'.
|
|
172
|
+
*/
|
|
173
|
+
shouldFinalizeOnWaitStatus: (status: 'ok' | 'error' | 'timeout') => boolean;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// ── Empathy Observer Specific Types ──────────────────────────────────────────
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Payload returned by empathy observer subagent.
|
|
180
|
+
*/
|
|
181
|
+
export type EmpathyObserverPayload = {
|
|
182
|
+
damageDetected?: boolean;
|
|
183
|
+
severity?: 'mild' | 'moderate' | 'severe' | string;
|
|
184
|
+
confidence?: number;
|
|
185
|
+
reason?: string;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Empathy observer workflow result.
|
|
190
|
+
*/
|
|
191
|
+
export interface EmpathyResult {
|
|
192
|
+
damageDetected: boolean;
|
|
193
|
+
severity: 'mild' | 'moderate' | 'severe';
|
|
194
|
+
confidence: number;
|
|
195
|
+
reason: string;
|
|
196
|
+
/** Derived pain score based on severity */
|
|
197
|
+
painScore: number;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Deep-reflect workflow result.
|
|
202
|
+
*/
|
|
203
|
+
export interface DeepReflectResult {
|
|
204
|
+
insights: string;
|
|
205
|
+
context: string;
|
|
206
|
+
depth: number;
|
|
207
|
+
modelId: string;
|
|
208
|
+
passed: boolean;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Empathy observer workflow specification.
|
|
213
|
+
* This is the concrete spec for PR2 migration.
|
|
214
|
+
*/
|
|
215
|
+
export interface EmpathyObserverWorkflowSpec extends SubagentWorkflowSpec<EmpathyResult> {
|
|
216
|
+
workflowType: 'empathy-observer';
|
|
217
|
+
transport: 'runtime_direct';
|
|
218
|
+
timeoutMs: 30_000;
|
|
219
|
+
ttlMs: 300_000; // 5 minutes
|
|
220
|
+
shouldDeleteSessionAfterFinalize: true;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// ── Workflow Manager Interface ─────────────────────────────────────────────────
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* The main workflow manager interface.
|
|
227
|
+
* This is what the helper exposes to business modules.
|
|
228
|
+
*/
|
|
229
|
+
export interface WorkflowManager {
|
|
230
|
+
/**
|
|
231
|
+
* Start a new workflow.
|
|
232
|
+
* Creates workflow state, spawns subagent, and returns handle.
|
|
233
|
+
*/
|
|
234
|
+
startWorkflow: <TResult>(
|
|
235
|
+
spec: SubagentWorkflowSpec<TResult>,
|
|
236
|
+
options: {
|
|
237
|
+
parentSessionId: string;
|
|
238
|
+
workspaceDir?: string;
|
|
239
|
+
taskInput: unknown;
|
|
240
|
+
metadata?: Record<string, unknown>;
|
|
241
|
+
}
|
|
242
|
+
) => Promise<WorkflowHandle>;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Notify workflow of wait result (runtime_direct path).
|
|
246
|
+
* Called by the wait polling logic after waitForRun completes.
|
|
247
|
+
*/
|
|
248
|
+
notifyWaitResult: (
|
|
249
|
+
workflowId: string,
|
|
250
|
+
status: 'ok' | 'error' | 'timeout',
|
|
251
|
+
error?: string
|
|
252
|
+
) => Promise<void>;
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Optional fallback observation path.
|
|
256
|
+
* This is not the primary completion contract for runtime_direct workflows.
|
|
257
|
+
* Use it only for recovery / compatibility if a lifecycle event is observed later.
|
|
258
|
+
*/
|
|
259
|
+
notifyLifecycleEvent: (
|
|
260
|
+
workflowId: string,
|
|
261
|
+
event: 'subagent_spawned' | 'subagent_ended',
|
|
262
|
+
data?: {
|
|
263
|
+
outcome?: 'ok' | 'error' | 'timeout' | 'killed' | 'reset' | 'deleted';
|
|
264
|
+
error?: string;
|
|
265
|
+
}
|
|
266
|
+
) => Promise<void>;
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Finalize a workflow exactly once (idempotent).
|
|
270
|
+
* Reads result, parses, persists, and cleans up.
|
|
271
|
+
*/
|
|
272
|
+
finalizeOnce: (workflowId: string) => Promise<void>;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Sweep expired workflows (orphan cleanup).
|
|
276
|
+
* Should be called periodically by the evolution worker.
|
|
277
|
+
*/
|
|
278
|
+
sweepExpiredWorkflows: (maxAgeMs?: number) => Promise<number>;
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Return a compact workflow-centric debug view for operators.
|
|
282
|
+
*/
|
|
283
|
+
getWorkflowDebugSummary: (workflowId: string, eventLimit?: number) => Promise<WorkflowDebugSummary | null>;
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Release resources (DB connections, timers).
|
|
287
|
+
*/
|
|
288
|
+
dispose: () => void;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// ── Workflow Store (for SQLite persistence) ──────────────────────────────────
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Database row for subagent_workflows table.
|
|
295
|
+
*/
|
|
296
|
+
export interface WorkflowRow {
|
|
297
|
+
workflow_id: string;
|
|
298
|
+
workflow_type: string;
|
|
299
|
+
transport: WorkflowTransport;
|
|
300
|
+
parent_session_id: string;
|
|
301
|
+
child_session_key: string;
|
|
302
|
+
run_id: string | null;
|
|
303
|
+
state: WorkflowState;
|
|
304
|
+
cleanup_state: 'none' | 'pending' | 'failed' | 'completed';
|
|
305
|
+
created_at: number;
|
|
306
|
+
updated_at: number;
|
|
307
|
+
last_observed_at?: number | null;
|
|
308
|
+
metadata_json: string;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Database row for subagent_workflow_events table.
|
|
313
|
+
*/
|
|
314
|
+
export interface WorkflowEventRow {
|
|
315
|
+
workflow_id: string;
|
|
316
|
+
event_type: string;
|
|
317
|
+
from_state: WorkflowState | null;
|
|
318
|
+
to_state: WorkflowState;
|
|
319
|
+
reason: string;
|
|
320
|
+
payload_json: string;
|
|
321
|
+
created_at: number;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export interface WorkflowDebugSummary {
|
|
325
|
+
workflowId: string;
|
|
326
|
+
workflowType: string;
|
|
327
|
+
transport: WorkflowTransport;
|
|
328
|
+
parentSessionId: string;
|
|
329
|
+
childSessionKey: string;
|
|
330
|
+
runId: string | null;
|
|
331
|
+
state: WorkflowState;
|
|
332
|
+
cleanupState: 'none' | 'pending' | 'failed' | 'completed';
|
|
333
|
+
lastObservedAt: number | null;
|
|
334
|
+
metadata: WorkflowMetadata;
|
|
335
|
+
recentEvents: Array<{
|
|
336
|
+
eventType: string;
|
|
337
|
+
fromState: WorkflowState | null;
|
|
338
|
+
toState: WorkflowState;
|
|
339
|
+
reason: string;
|
|
340
|
+
createdAt: number;
|
|
341
|
+
payload: Record<string, unknown>;
|
|
342
|
+
}>;
|
|
343
|
+
// NOC-16: Trinity stage states
|
|
344
|
+
trinityStageStates?: Array<{
|
|
345
|
+
stage: 'dreamer' | 'philosopher' | 'scribe';
|
|
346
|
+
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
347
|
+
reason?: string;
|
|
348
|
+
completedAt?: number;
|
|
349
|
+
}>;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// ── Convenience Re-exports ────────────────────────────────────────────────────
|
|
353
|
+
|
|
354
|
+
export type {
|
|
355
|
+
SubagentRunResult,
|
|
356
|
+
SubagentWaitResult,
|
|
357
|
+
SubagentGetSessionMessagesResult,
|
|
358
|
+
} from '../../openclaw-sdk.js';
|
|
359
|
+
|
|
360
|
+
export type { PluginLogger } from '../../openclaw-sdk.js';
|
|
361
|
+
|
|
362
|
+
// ── Nocturnal Workflow Types ───────────────────────────────────────────────────
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Nocturnal workflow result type.
|
|
366
|
+
* Mirrors NocturnalRunResult from nocturnal-service.ts (per D-02).
|
|
367
|
+
*/
|
|
368
|
+
export type NocturnalResult = {
|
|
369
|
+
success: boolean;
|
|
370
|
+
artifact?: NocturnalArtifact & { boundedAction?: BoundedAction };
|
|
371
|
+
skipReason?: string;
|
|
372
|
+
noTargetSelected: boolean;
|
|
373
|
+
validationFailed: boolean;
|
|
374
|
+
validationFailures: string[];
|
|
375
|
+
snapshot?: NocturnalSessionSnapshot;
|
|
376
|
+
diagnostics: NocturnalRunDiagnostics;
|
|
377
|
+
trinityTelemetry?: TrinityResult['telemetry'];
|
|
378
|
+
};
|