principles-disciple 1.71.0 → 1.73.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/openclaw.plugin.json +10 -5
- package/package.json +17 -19
- package/scripts/acceptance-test.mjs +16 -73
- package/scripts/sync-plugin.mjs +382 -77
- package/src/commands/archive-impl.ts +2 -1
- package/src/commands/capabilities.ts +2 -2
- package/src/commands/context.ts +2 -2
- package/src/commands/disable-impl.ts +2 -1
- package/src/commands/evolution-status.ts +16 -16
- package/src/commands/export.ts +12 -67
- package/src/commands/pain.ts +91 -1
- package/src/commands/principle-rollback.ts +2 -1
- package/src/commands/promote-impl.ts +7 -43
- package/src/commands/rollback-impl.ts +2 -1
- package/src/commands/rollback.ts +2 -1
- package/src/commands/samples.ts +2 -1
- package/src/commands/thinking-os.ts +2 -1
- package/src/config/errors.ts +18 -2
- package/src/constants/diagnostician.ts +2 -2
- package/src/constants/tools.ts +2 -1
- package/src/core/__tests__/focus-history.test.ts +210 -0
- package/src/core/config.ts +1 -1
- package/src/core/confirm-first-gate.ts +255 -0
- package/src/core/correction-cue-learner.ts +2 -136
- package/src/core/correction-types.ts +16 -88
- package/src/core/dictionary.ts +19 -20
- package/src/core/empathy-keyword-matcher.ts +17 -289
- package/src/core/empathy-types.ts +18 -229
- package/src/core/event-log.ts +38 -132
- package/src/core/evolution-reducer.ts +21 -2
- package/src/core/evolution-types.ts +76 -464
- package/src/core/file-store.ts +80 -0
- package/src/core/focus-history.ts +228 -955
- package/src/core/local-worker-routing.ts +34 -314
- package/src/core/merge-gate-audit.ts +0 -195
- package/src/core/pain-diagnostic-gate.ts +154 -0
- package/src/core/pain-signal.ts +21 -138
- package/src/core/pain.ts +15 -88
- package/src/core/pd-task-reconciler.ts +26 -115
- package/src/core/pd-task-service.ts +9 -9
- package/src/core/pd-task-types.ts +23 -127
- package/src/core/principle-compiler/__tests__/compiler-replay-gate.test.ts +174 -0
- package/src/core/principle-compiler/code-validator.ts +15 -42
- package/src/core/principle-compiler/compiler.ts +100 -15
- package/src/core/principle-compiler/index.ts +5 -2
- package/src/core/principle-compiler/template-generator.ts +4 -104
- package/src/core/principle-injection.ts +10 -202
- package/src/core/principle-internalization/filesystem-lifecycle-datasource.ts +42 -0
- package/src/core/principle-internalization/lifecycle-read-model.ts +39 -242
- package/src/core/principle-internalization/principle-lifecycle-service.ts +12 -10
- package/src/core/principle-tree-ledger-adapter.ts +145 -0
- package/src/core/principle-tree-ledger.ts +8 -6
- package/src/core/reflection/reflection-context.ts +14 -109
- package/src/core/replay-engine.ts +8 -500
- package/src/core/rule-host-helpers.ts +5 -35
- package/src/core/rule-host-types.ts +10 -82
- package/src/core/rule-host.ts +6 -63
- package/src/core/runtime-v2-prompt-activation-reader.ts +231 -0
- package/src/core/session-tracker.ts +87 -101
- package/src/core/shadow-observation-registry.ts +19 -48
- package/src/core/trajectory.ts +3 -1
- package/src/core/workflow-funnel-loader.ts +62 -68
- package/src/core/workspace-context.ts +46 -0
- package/src/core/workspace-dir-service.ts +1 -1
- package/src/core/workspace-dir-validation.ts +18 -9
- package/src/hooks/AGENTS.md +1 -1
- package/src/hooks/gate-block-helper.ts +46 -44
- package/src/hooks/gate.ts +207 -7
- package/src/hooks/lifecycle.ts +30 -32
- package/src/hooks/llm.ts +60 -32
- package/src/hooks/pain.ts +297 -103
- package/src/hooks/prompt.ts +469 -339
- package/src/hooks/subagent.ts +2 -29
- package/src/i18n/commands.ts +2 -10
- package/src/index.ts +95 -85
- package/src/openclaw-sdk.ts +311 -0
- package/src/service/central-database.ts +8 -4
- package/src/service/evolution-queue-migration.ts +2 -1
- package/src/service/evolution-worker.ts +163 -1786
- package/src/service/internalization-trigger-adapter.ts +302 -0
- package/src/service/keyword-optimization-service.ts +4 -4
- package/src/service/monitoring-query-service.ts +1 -215
- package/src/service/queue-io.ts +60 -331
- package/src/service/runtime-summary-service.ts +115 -18
- package/src/service/subagent-workflow/index.ts +0 -41
- package/src/service/subagent-workflow/types.ts +9 -120
- package/src/service/subagent-workflow/workflow-store.ts +2 -119
- package/src/service/workflow-watchdog.ts +0 -43
- package/src/types/event-payload.ts +16 -74
- package/src/types/event-types.ts +39 -547
- package/src/types/hygiene-types.ts +7 -30
- package/src/types/principle-tree-schema.ts +20 -222
- package/src/types/queue.ts +15 -70
- package/src/types/runtime-summary.ts +5 -49
- package/src/utils/io.ts +10 -0
- package/src/utils/retry.ts +1 -1
- package/src/utils/shadow-fingerprint.ts +2 -2
- package/src/utils/workspace-resolver.ts +50 -0
- package/templates/langs/en/core/AGENTS.md +2 -2
- package/templates/langs/en/core/BOOT.md +1 -1
- package/templates/langs/en/core/HEARTBEAT.md +2 -2
- package/templates/langs/en/skills/ai-sprint-orchestration/references/agent-registry.json +1 -72
- package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +6 -6
- package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +6 -6
- package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +2 -12
- package/templates/langs/en/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +2 -12
- package/templates/langs/en/skills/ai-sprint-orchestration/runtime/.gitignore +2 -2
- package/templates/langs/en/skills/ai-sprint-orchestration/scripts/run.mjs +51 -15
- package/templates/langs/en/skills/evolve-task/SKILL.md +1 -1
- package/templates/langs/en/skills/pd-cli-operator/SKILL.md +67 -0
- package/templates/langs/en/skills/pd-diagnostician/SKILL.md +1 -1
- package/templates/langs/en/skills/pd-mentor/SKILL.md +1 -1
- package/templates/langs/en/skills/pd-pain-signal/SKILL.md +17 -39
- package/templates/langs/en/skills/pd-runtime-v2/SKILL.md +61 -0
- package/templates/langs/zh/core/AGENTS.md +2 -2
- package/templates/langs/zh/core/BOOT.md +1 -1
- package/templates/langs/zh/core/HEARTBEAT.md +2 -2
- package/templates/langs/zh/skills/ai-sprint-orchestration/references/agent-registry.json +1 -72
- package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/bugfix-complex-template.json +6 -6
- package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/feature-complex-template.json +6 -6
- package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/nocturnal-trinity-quality-enhancement.json +8 -8
- package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal-verify.json +2 -12
- package/templates/langs/zh/skills/ai-sprint-orchestration/references/specs/workflow-validation-minimal.json +2 -12
- package/templates/langs/zh/skills/ai-sprint-orchestration/runtime/.gitignore +2 -2
- package/templates/langs/zh/skills/ai-sprint-orchestration/scripts/run.mjs +51 -15
- package/templates/langs/zh/skills/ai-sprint-orchestration/test/run.test.mjs +21 -5
- package/templates/langs/zh/skills/evolve-task/SKILL.md +2 -2
- package/templates/langs/zh/skills/pd-cli-operator/SKILL.md +67 -0
- package/templates/langs/zh/skills/pd-diagnostician/SKILL.md +1 -1
- package/templates/langs/zh/skills/pd-mentor/SKILL.md +1 -1
- package/templates/langs/zh/skills/pd-pain-signal/SKILL.md +17 -38
- package/templates/langs/zh/skills/pd-runtime-v2/SKILL.md +61 -0
- package/tests/build-artifacts.test.ts +1 -3
- package/tests/commands/evolution-status.test.ts +0 -118
- package/tests/core/bootstrap-rules.test.ts +1 -1
- package/tests/core/config.test.ts +1 -1
- package/tests/core/event-log.test.ts +35 -0
- package/tests/core/evolution-engine.test.ts +610 -0
- package/tests/core/file-store.test.ts +102 -0
- package/tests/core/focus-history.test.ts +203 -11
- package/tests/core/merge-gate-audit.test.ts +2 -169
- package/tests/core/model-deployment-registry.test.ts +7 -1
- package/tests/core/model-training-registry.test.ts +19 -0
- package/tests/core/observability.test.ts +0 -1
- package/tests/core/pain-diagnostic-gate.test.ts +498 -0
- package/tests/core/pain.test.ts +0 -1
- package/tests/core/principle-internalization/deprecated-readiness.test.ts +2 -2
- package/tests/core/principle-internalization/lifecycle-metrics.test.ts +2 -2
- package/tests/core/principle-internalization/{internalization-routing-policy.test.ts → lifecycle-routing-policy.test.ts} +6 -6
- package/tests/core/principle-internalization/lineage-source-retired.test.ts +56 -0
- package/tests/core/principle-internalization/principle-lifecycle-service.test.ts +1 -23
- package/tests/core/principle-tree-ledger-adapter.test.ts +253 -0
- package/tests/core/reflection-context.test.ts +0 -14
- package/tests/core/replay-engine.test.ts +127 -215
- package/tests/core/rule-host-helpers.test.ts +2 -2
- package/tests/core/rule-implementation-runtime.test.ts +0 -27
- package/tests/core/workflow-funnel-loader.test.ts +162 -0
- package/tests/core/workspace-dir-validation.test.ts +8 -1
- package/tests/core-anti-growth.test.ts +192 -0
- package/tests/hook-workspace-nextaction-contract.test.ts +42 -0
- package/tests/hooks/confirm-first-gate.test.ts +333 -0
- package/tests/hooks/gate-auto-correct-shadow.test.ts +310 -0
- package/tests/hooks/gate-auto-correct.test.ts +665 -0
- package/tests/hooks/gate-rule-host-pipeline.test.ts +2 -1
- package/tests/hooks/pain.test.ts +269 -12
- package/tests/hooks/prompt-characterization.test.ts +500 -0
- package/tests/hooks/prompt-size-guard.test.ts +329 -0
- package/tests/hooks/runtime-v2-prompt-activation.test.ts +869 -0
- package/tests/index.test.ts +94 -1
- package/tests/integration/auto-entry-gate.test.ts +248 -0
- package/tests/integration/internalization-trigger-guard.test.ts +69 -0
- package/tests/integration/m8-legacy-paths.test.ts +63 -0
- package/tests/integration/runtime-v2-pain-guard.test.ts +125 -0
- package/tests/plugin-config-resolution-cutover.test.ts +359 -0
- package/tests/runtime-v2-discovery-guard.test.ts +154 -0
- package/tests/service/central-database.test.ts +457 -0
- package/tests/service/evolution-worker.correction-observer.test.ts +173 -0
- package/tests/service/evolution-worker.timeout.test.ts +11 -129
- package/tests/service/internalization-trigger-adapter.test.ts +251 -0
- package/tests/service/monitoring-query-service.test.ts +1 -47
- package/tests/service/queue-io.test.ts +1 -62
- package/tests/service/runtime-summary-service.test.ts +184 -3
- package/tests/service/workflow-watchdog.test.ts +0 -91
- package/tests/utils/file-lock.test.ts +5 -3
- package/tests/utils/session-key.test.ts +52 -0
- package/tests/utils/subagent-probe.test.ts +48 -1
- package/vitest.config.ts +4 -11
- package/.planning/codebase/ARCHITECTURE.md +0 -157
- package/.planning/codebase/CONCERNS.md +0 -145
- package/.planning/codebase/CONVENTIONS.md +0 -148
- package/.planning/codebase/INTEGRATIONS.md +0 -81
- package/.planning/codebase/STACK.md +0 -87
- package/.planning/codebase/STRUCTURE.md +0 -193
- package/.planning/codebase/TESTING.md +0 -243
- package/.planning/phases/01-basic-visualization/01-GAP-CLOSURE-VERIFICATION.md +0 -113
- package/docs/COMMAND_REFERENCE.md +0 -76
- package/docs/COMMAND_REFERENCE_EN.md +0 -79
- package/scripts/build-web.mjs +0 -46
- package/scripts/diagnose-nocturnal.mjs +0 -537
- package/scripts/seed-nocturnal-scenarios.mjs +0 -384
- package/src/commands/nocturnal-review.ts +0 -322
- package/src/commands/nocturnal-rollout.ts +0 -790
- package/src/commands/nocturnal-train.ts +0 -986
- package/src/commands/pd-reflect.ts +0 -88
- package/src/core/adaptive-thresholds.ts +0 -478
- package/src/core/diagnostician-task-store.ts +0 -192
- package/src/core/nocturnal-arbiter.ts +0 -715
- package/src/core/nocturnal-artifact-lineage.ts +0 -116
- package/src/core/nocturnal-artificer.ts +0 -257
- package/src/core/nocturnal-candidate-scoring.ts +0 -530
- package/src/core/nocturnal-compliance.ts +0 -1146
- package/src/core/nocturnal-dataset.ts +0 -763
- package/src/core/nocturnal-executability.ts +0 -428
- package/src/core/nocturnal-export.ts +0 -499
- package/src/core/nocturnal-paths.ts +0 -240
- package/src/core/nocturnal-reasoning-deriver.ts +0 -343
- package/src/core/nocturnal-rule-implementation-validator.ts +0 -246
- package/src/core/nocturnal-snapshot-contract.ts +0 -99
- package/src/core/nocturnal-trajectory-extractor.ts +0 -512
- package/src/core/nocturnal-trinity-types.ts +0 -218
- package/src/core/nocturnal-trinity.ts +0 -2680
- package/src/core/principle-internalization/deprecated-readiness.ts +0 -93
- package/src/core/principle-internalization/internalization-routing-policy.ts +0 -208
- package/src/core/principle-internalization/lifecycle-metrics.ts +0 -152
- package/src/http/principles-console-route.ts +0 -709
- package/src/service/central-health-service.ts +0 -49
- package/src/service/central-overview-service.ts +0 -138
- package/src/service/control-ui-query-service.ts +0 -900
- package/src/service/cooldown-strategy.ts +0 -97
- package/src/service/evolution-pain-context.ts +0 -79
- package/src/service/evolution-query-service.ts +0 -407
- package/src/service/health-query-service.ts +0 -1038
- package/src/service/nocturnal-config.ts +0 -214
- package/src/service/nocturnal-runtime.ts +0 -734
- package/src/service/nocturnal-service.ts +0 -1605
- package/src/service/nocturnal-target-selector.ts +0 -545
- package/src/service/sleep-cycle.ts +0 -157
- package/src/service/startup-reconciler.ts +0 -112
- package/src/service/subagent-workflow/correction-observer-types.ts +0 -82
- package/src/service/subagent-workflow/correction-observer-workflow-manager.ts +0 -250
- package/src/service/subagent-workflow/deep-reflect-workflow-manager.ts +0 -1
- package/src/service/subagent-workflow/dynamic-timeout.ts +0 -30
- package/src/service/subagent-workflow/empathy-observer-workflow-manager.ts +0 -268
- package/src/service/subagent-workflow/nocturnal-workflow-manager.ts +0 -795
- package/src/service/subagent-workflow/runtime-direct-driver.ts +0 -268
- package/src/service/subagent-workflow/workflow-manager-base.ts +0 -580
- package/src/tools/write-pain-flag.ts +0 -215
- package/tests/commands/nocturnal-review.test.ts +0 -448
- package/tests/commands/nocturnal-train.test.ts +0 -97
- package/tests/commands/pd-reflect.test.ts +0 -49
- package/tests/core/adaptive-thresholds.test.ts +0 -261
- package/tests/core/nocturnal-arbiter.test.ts +0 -559
- package/tests/core/nocturnal-artifact-lineage.test.ts +0 -53
- package/tests/core/nocturnal-artificer.test.ts +0 -241
- package/tests/core/nocturnal-candidate-scoring.test.ts +0 -532
- package/tests/core/nocturnal-compliance-p-principles.test.ts +0 -133
- package/tests/core/nocturnal-compliance.test.ts +0 -646
- package/tests/core/nocturnal-dataset.test.ts +0 -892
- package/tests/core/nocturnal-e2e.test.ts +0 -234
- package/tests/core/nocturnal-executability.test.ts +0 -357
- package/tests/core/nocturnal-export.test.ts +0 -517
- package/tests/core/nocturnal-reasoning-deriver.test.ts +0 -372
- package/tests/core/nocturnal-reviewed-subset-comparison.test.ts +0 -428
- package/tests/core/nocturnal-rule-implementation-validator.test.ts +0 -127
- package/tests/core/nocturnal-snapshot-contract.test.ts +0 -121
- package/tests/core/nocturnal-trajectory-extractor.test.ts +0 -634
- package/tests/core/nocturnal-trinity.test.ts +0 -2053
- package/tests/core/pain-auto-repair.test.ts +0 -96
- package/tests/core/pain-integration.test.ts +0 -510
- package/tests/fixtures/nocturnal-reviewed-subset.json +0 -183
- package/tests/http/principles-console-route.test.ts +0 -162
- package/tests/integration/chaos-resilience.test.ts +0 -348
- package/tests/integration/empathy-workflow-integration.test.ts +0 -626
- package/tests/integration/pain-diagnostician-loop.e2e.test.ts +0 -380
- package/tests/service/control-ui-query-service.test.ts +0 -121
- package/tests/service/cooldown-strategy.test.ts +0 -164
- package/tests/service/data-endpoints-regression.test.ts +0 -834
- package/tests/service/empathy-observer-workflow-manager.test.ts +0 -175
- package/tests/service/evolution-worker.nocturnal.test.ts +0 -601
- package/tests/service/nocturnal-runtime-hardening.test.ts +0 -118
- package/tests/service/nocturnal-runtime.test.ts +0 -473
- package/tests/service/nocturnal-service-code-candidate.test.ts +0 -330
- package/tests/service/nocturnal-target-selector.test.ts +0 -615
- package/tests/service/startup-reconciler.test.ts +0 -148
- package/tests/tools/write-pain-flag.test.ts +0 -358
- package/ui/src/App.tsx +0 -45
- package/ui/src/api.ts +0 -220
- package/ui/src/charts.tsx +0 -955
- package/ui/src/components/ErrorState.tsx +0 -6
- package/ui/src/components/Loading.tsx +0 -13
- package/ui/src/components/ProtectedRoute.tsx +0 -12
- package/ui/src/components/Shell.tsx +0 -91
- package/ui/src/components/WorkspaceConfig.tsx +0 -178
- package/ui/src/components/index.ts +0 -5
- package/ui/src/context/auth.tsx +0 -80
- package/ui/src/context/theme.tsx +0 -66
- package/ui/src/hooks/useAutoRefresh.ts +0 -39
- package/ui/src/i18n/ui.ts +0 -473
- package/ui/src/main.tsx +0 -16
- package/ui/src/pages/EvolutionPage.tsx +0 -333
- package/ui/src/pages/FeedbackPage.tsx +0 -138
- package/ui/src/pages/GateMonitorPage.tsx +0 -136
- package/ui/src/pages/LoginPage.tsx +0 -89
- package/ui/src/pages/OverviewPage.tsx +0 -599
- package/ui/src/pages/SamplesPage.tsx +0 -174
- package/ui/src/pages/ThinkingModelsPage.tsx +0 -702
- package/ui/src/styles.css +0 -2020
- package/ui/src/types.ts +0 -384
- package/ui/src/utils/format.ts +0 -15
|
@@ -22,233 +22,31 @@
|
|
|
22
22
|
* - Track principle value ranking (pain prevented, adherence rate)
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
-
import type {
|
|
25
|
+
import type { Principle as CorePrinciple } from '@principles/core/runtime-v2';
|
|
26
26
|
import type { PrincipleDetectorSpec } from '../core/evolution-types.js';
|
|
27
27
|
|
|
28
|
+
// Re-exported from core (PRI-51) for plugin consumers
|
|
29
|
+
export type {
|
|
30
|
+
PrinciplePriority,
|
|
31
|
+
PrincipleScope,
|
|
32
|
+
PrincipleEvaluability,
|
|
33
|
+
RuleStatus,
|
|
34
|
+
RuleType,
|
|
35
|
+
ImplementationLifecycleState,
|
|
36
|
+
ImplementationType,
|
|
37
|
+
Rule,
|
|
38
|
+
Implementation,
|
|
39
|
+
PrincipleDependency,
|
|
40
|
+
PrincipleValueMetrics,
|
|
41
|
+
PrincipleEventType,
|
|
42
|
+
PrincipleLifecycleEvent,
|
|
43
|
+
PrincipleTreeStore,
|
|
44
|
+
} from '@principles/core/runtime-v2';
|
|
45
|
+
|
|
28
46
|
// =========================================================================
|
|
29
47
|
// 1. PRINCIPLE (Tree Root) — Highly abstract, cross-scenario, value-driven
|
|
30
48
|
// =========================================================================
|
|
31
49
|
|
|
32
|
-
export
|
|
33
|
-
|
|
34
|
-
export type PrincipleScope = 'general' | 'domain';
|
|
35
|
-
|
|
36
|
-
export type PrincipleEvaluability =
|
|
37
|
-
| 'manual_only' // Cannot be automatically evaluated
|
|
38
|
-
| 'deterministic' // Clear yes/no evaluation criteria
|
|
39
|
-
| 'weak_heuristic'; // Fuzzy evaluation with confidence score
|
|
40
|
-
|
|
41
|
-
export interface Principle {
|
|
42
|
-
// Identity
|
|
43
|
-
id: string; // e.g., "P_060"
|
|
44
|
-
version: number; // Incremented on each update
|
|
45
|
-
|
|
46
|
-
// Core content
|
|
47
|
-
text: string; // One-line abstract principle statement
|
|
48
|
-
coreAxiomId?: string; // Associated core axiom (e.g., "T-01")
|
|
49
|
-
triggerPattern: string; // Regex/keywords for auto-matching pain signals
|
|
50
|
-
action: string; // What to do when triggered
|
|
51
|
-
|
|
52
|
-
// Status and lifecycle
|
|
53
|
-
status: PrincipleStatus;
|
|
54
|
-
priority: PrinciplePriority;
|
|
55
|
-
scope: PrincipleScope;
|
|
56
|
-
domain?: string; // Required when scope === 'domain', e.g., "file_operations"
|
|
57
|
-
evaluability: PrincipleEvaluability;
|
|
58
|
-
|
|
59
|
-
// Value metrics (auto-calculated)
|
|
60
|
-
valueScore: number; // pain_prevented_count × avg_pain_severity
|
|
61
|
-
adherenceRate: number; // 0-100, percentage of times followed
|
|
62
|
-
painPreventedCount: number; // Number of pain signals prevented by this principle
|
|
63
|
-
lastPainPreventedAt?: string; // ISO timestamp of most recent prevention
|
|
64
|
-
|
|
65
|
-
// Relationships
|
|
66
|
-
derivedFromPainIds: string[]; // Source pain signal IDs
|
|
67
|
-
ruleIds: string[]; // Associated rule IDs (trunk connections)
|
|
68
|
-
conflictsWithPrincipleIds: string[]; // Conflicting principles
|
|
69
|
-
supersedesPrincipleId?: string; // If this replaces a deprecated principle
|
|
70
|
-
|
|
71
|
-
// Metadata
|
|
72
|
-
createdAt: string; // ISO timestamp
|
|
73
|
-
updatedAt: string; // ISO timestamp
|
|
74
|
-
deprecatedAt?: string; // Set when status changes to 'deprecated'
|
|
75
|
-
deprecatedReason?: string; // Why it was deprecated (e.g., "solidified into hook at src/hooks/file-safety.ts")
|
|
76
|
-
|
|
77
|
-
// Detector metadata (for auto-training eligibility)
|
|
50
|
+
export interface Principle extends CorePrinciple {
|
|
78
51
|
detectorMetadata?: PrincipleDetectorSpec;
|
|
79
|
-
|
|
80
|
-
// Compilation retry tracking (for runtime auto-trigger)
|
|
81
|
-
// undefined = not yet attempted or succeeded; 0 = queued; n >= 1 = retry attempt n
|
|
82
|
-
compilationRetryCount?: number;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// =========================================================================
|
|
86
|
-
// 2. RULE (Tree Trunk) — Verifiable, actionable, principle-specific
|
|
87
|
-
// =========================================================================
|
|
88
|
-
|
|
89
|
-
export type RuleStatus =
|
|
90
|
-
| 'proposed' // Suggested but not implemented
|
|
91
|
-
| 'implemented' // Code/skill exists but not fully tested
|
|
92
|
-
| 'enforced' // Actively enforced with monitoring
|
|
93
|
-
| 'retired'; // No longer needed (principle deprecated)
|
|
94
|
-
|
|
95
|
-
export type RuleType =
|
|
96
|
-
| 'hook' // Code hook (before/after tool call)
|
|
97
|
-
| 'gate' // Pre-execution gate (block/warn)
|
|
98
|
-
| 'skill' // LLM skill/instruction
|
|
99
|
-
| 'lora' // Fine-tuned model weight
|
|
100
|
-
| 'test' // Automated test case
|
|
101
|
-
| 'prompt' // System prompt injection;
|
|
102
|
-
|
|
103
|
-
export interface Rule {
|
|
104
|
-
// Identity
|
|
105
|
-
id: string; // e.g., "R_060_01"
|
|
106
|
-
version: number;
|
|
107
|
-
|
|
108
|
-
// Core content
|
|
109
|
-
name: string; // Short descriptive name
|
|
110
|
-
description: string; // What this rule does
|
|
111
|
-
type: RuleType;
|
|
112
|
-
|
|
113
|
-
// Trigger and enforcement
|
|
114
|
-
triggerCondition: string; // When this rule activates (regex, tool name, context)
|
|
115
|
-
enforcement: 'block' | 'warn' | 'log'; // What happens when violated
|
|
116
|
-
action: string; // Concrete action to take
|
|
117
|
-
|
|
118
|
-
// Association
|
|
119
|
-
principleId: string; // Parent principle ID
|
|
120
|
-
parentRuleId?: string; // If this is a sub-rule
|
|
121
|
-
|
|
122
|
-
// Status and metrics
|
|
123
|
-
status: RuleStatus;
|
|
124
|
-
coverageRate: number; // 0-100, how often this rule catches violations
|
|
125
|
-
falsePositiveRate: number; // 0-100, how often this rule fires incorrectly
|
|
126
|
-
|
|
127
|
-
// Implementation reference
|
|
128
|
-
implementationPath?: string; // File path, skill name, or LoRA model path
|
|
129
|
-
testPath?: string; // Test file path
|
|
130
|
-
|
|
131
|
-
// Metadata
|
|
132
|
-
createdAt: string;
|
|
133
|
-
updatedAt: string;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// =========================================================================
|
|
137
|
-
// 3. IMPLEMENTATION (Tree Leaf) — Concrete, executable
|
|
138
|
-
// =========================================================================
|
|
139
|
-
|
|
140
|
-
export type ImplementationLifecycleState =
|
|
141
|
-
| 'candidate' // Newly created, awaiting replay evaluation
|
|
142
|
-
| 'active' // Currently active for this rule
|
|
143
|
-
| 'disabled' // Manually disabled (e.g., regression)
|
|
144
|
-
| 'archived'; // Permanently archived
|
|
145
|
-
|
|
146
|
-
export type ImplementationType = 'code' | 'skill' | 'lora' | 'test' | 'prompt';
|
|
147
|
-
|
|
148
|
-
export interface Implementation {
|
|
149
|
-
// Identity
|
|
150
|
-
id: string; // e.g., "IMPL_060_01_hook"
|
|
151
|
-
ruleId: string; // Parent rule ID
|
|
152
|
-
|
|
153
|
-
// Type and location
|
|
154
|
-
type: ImplementationType;
|
|
155
|
-
path: string; // File path, skill ID, or model path
|
|
156
|
-
version: string; // Code commit hash, skill version, or LoRA version
|
|
157
|
-
|
|
158
|
-
// Coverage
|
|
159
|
-
coversCondition: string; // What condition this implementation covers
|
|
160
|
-
coveragePercentage: number; // 0-100, how much of the rule this covers
|
|
161
|
-
|
|
162
|
-
// Lifecycle state
|
|
163
|
-
lifecycleState: ImplementationLifecycleState;
|
|
164
|
-
|
|
165
|
-
// Rollback support: tracks which implementation was active before this one
|
|
166
|
-
previousActive?: string; // Implementation ID that was active before promotion
|
|
167
|
-
|
|
168
|
-
// Disable metadata
|
|
169
|
-
disabledAt?: string; // ISO timestamp of disable
|
|
170
|
-
disabledBy?: string; // Who disabled (session/user)
|
|
171
|
-
disabledReason?: string; // Human-readable reason
|
|
172
|
-
|
|
173
|
-
// Archive metadata
|
|
174
|
-
archivedAt?: string; // ISO timestamp of archive
|
|
175
|
-
|
|
176
|
-
// Metadata
|
|
177
|
-
createdAt: string;
|
|
178
|
-
updatedAt: string;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// =========================================================================
|
|
182
|
-
// 4. PRINCIPLE-RELATIONSHIP GRAPH
|
|
183
|
-
// =========================================================================
|
|
184
|
-
|
|
185
|
-
export interface PrincipleDependency {
|
|
186
|
-
principleId: string;
|
|
187
|
-
dependsOn: string[]; // Principle IDs this depends on
|
|
188
|
-
conflictedWith: string[]; // Principle IDs this conflicts with
|
|
189
|
-
supersedes: string[]; // Principle IDs this replaces
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// =========================================================================
|
|
193
|
-
// 5. VALUE METRICS (Auto-calculated)
|
|
194
|
-
// =========================================================================
|
|
195
|
-
|
|
196
|
-
export interface PrincipleValueMetrics {
|
|
197
|
-
principleId: string;
|
|
198
|
-
|
|
199
|
-
// Pain prevention
|
|
200
|
-
painPreventedCount: number; // Total pain signals prevented
|
|
201
|
-
avgPainSeverityPrevented: number; // Average severity of prevented pain
|
|
202
|
-
lastPainPreventedAt?: string;
|
|
203
|
-
|
|
204
|
-
// Adherence tracking
|
|
205
|
-
totalOpportunities: number; // Times the principle could have applied
|
|
206
|
-
adheredCount: number; // Times the principle was followed
|
|
207
|
-
violatedCount: number; // Times the principle was violated
|
|
208
|
-
|
|
209
|
-
// Cost-benefit
|
|
210
|
-
implementationCost: number; // Dev hours to implement
|
|
211
|
-
benefitScore: number; // pain_prevented × severity × adherence_rate
|
|
212
|
-
|
|
213
|
-
// Timestamps
|
|
214
|
-
calculatedAt: string;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// =========================================================================
|
|
218
|
-
// 6. LIFECYCLE EVENTS (Event stream format for evolution.jsonl)
|
|
219
|
-
// =========================================================================
|
|
220
|
-
|
|
221
|
-
export type PrincipleEventType =
|
|
222
|
-
| 'principle_created'
|
|
223
|
-
| 'principle_updated'
|
|
224
|
-
| 'principle_promoted'
|
|
225
|
-
| 'principle_deprecated'
|
|
226
|
-
| 'rule_created'
|
|
227
|
-
| 'rule_enforced'
|
|
228
|
-
| 'rule_retired'
|
|
229
|
-
| 'implementation_added'
|
|
230
|
-
| 'value_metrics_updated';
|
|
231
|
-
|
|
232
|
-
export interface PrincipleLifecycleEvent {
|
|
233
|
-
ts: string; // ISO timestamp
|
|
234
|
-
type: PrincipleEventType;
|
|
235
|
-
data: {
|
|
236
|
-
principleId?: string;
|
|
237
|
-
ruleId?: string;
|
|
238
|
-
implementationId?: string;
|
|
239
|
-
reason: string;
|
|
240
|
-
metrics?: Partial<PrincipleValueMetrics>;
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// =========================================================================
|
|
245
|
-
// 8. STORE SCHEMA (principle_training_state.json extension)
|
|
246
|
-
// =========================================================================
|
|
247
|
-
|
|
248
|
-
export interface PrincipleTreeStore {
|
|
249
|
-
principles: Record<string, Principle>;
|
|
250
|
-
rules: Record<string, Rule>;
|
|
251
|
-
implementations: Record<string, Implementation>;
|
|
252
|
-
metrics: Record<string, PrincipleValueMetrics>;
|
|
253
|
-
lastUpdated: string;
|
|
254
52
|
}
|
package/src/types/queue.ts
CHANGED
|
@@ -1,70 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Workflow identifier — not interchangeable with plain string.
|
|
19
|
-
*/
|
|
20
|
-
export type WorkflowId = Brand<string, 'WorkflowId'>;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Session key — not interchangeable with plain string.
|
|
24
|
-
*/
|
|
25
|
-
export type SessionKey = Brand<string, 'SessionKey'>;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Constructor for QueueItemId.
|
|
29
|
-
* @param id - raw string ID from queue operations
|
|
30
|
-
*/
|
|
31
|
-
export function toQueueItemId(id: string): QueueItemId {
|
|
32
|
-
return id as QueueItemId;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Constructor for WorkflowId.
|
|
37
|
-
* @param id - raw string ID from workflow operations
|
|
38
|
-
*/
|
|
39
|
-
export function toWorkflowId(id: string): WorkflowId {
|
|
40
|
-
return id as WorkflowId;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Constructor for SessionKey.
|
|
45
|
-
* @param key - raw string key from session operations
|
|
46
|
-
*/
|
|
47
|
-
export function toSessionKey(key: string): SessionKey {
|
|
48
|
-
return key as SessionKey;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Type predicate: true if value is a QueueItemId.
|
|
53
|
-
*/
|
|
54
|
-
export function isQueueItemId(value: unknown): value is QueueItemId {
|
|
55
|
-
return typeof value === 'string';
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Type predicate: true if value is a WorkflowId.
|
|
60
|
-
*/
|
|
61
|
-
export function isWorkflowId(value: unknown): value is WorkflowId {
|
|
62
|
-
return typeof value === 'string';
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Type predicate: true if value is a SessionKey.
|
|
67
|
-
*/
|
|
68
|
-
export function isSessionKey(value: unknown): value is SessionKey {
|
|
69
|
-
return typeof value === 'string';
|
|
70
|
-
}
|
|
1
|
+
export type {
|
|
2
|
+
Brand,
|
|
3
|
+
QueueItemId,
|
|
4
|
+
WorkflowId,
|
|
5
|
+
SessionKey,
|
|
6
|
+
} from '@principles/core/runtime-v2';
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
toQueueItemId,
|
|
10
|
+
toWorkflowId,
|
|
11
|
+
toSessionKey,
|
|
12
|
+
isQueueItemId,
|
|
13
|
+
isWorkflowId,
|
|
14
|
+
isSessionKey,
|
|
15
|
+
} from '@principles/core/runtime-v2';
|
|
@@ -1,49 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export interface RuntimeTruth {
|
|
7
|
-
queueState: {
|
|
8
|
-
total: number;
|
|
9
|
-
pending: number;
|
|
10
|
-
inProgress: number;
|
|
11
|
-
completed: number;
|
|
12
|
-
lastUpdated: string;
|
|
13
|
-
};
|
|
14
|
-
activeSessions: string[];
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Analytics truth represents historical data and aggregated metrics.
|
|
19
|
-
* Used for insights, trends, and supporting evidence (where explicitly allowed).
|
|
20
|
-
* NOT used for control decisions or Phase 3 eligibility.
|
|
21
|
-
* Sources: trajectory.db, daily-stats.json, control-ui DB
|
|
22
|
-
*/
|
|
23
|
-
export interface AnalyticsTruth {
|
|
24
|
-
trajectoryData: {
|
|
25
|
-
totalTasks: number;
|
|
26
|
-
successRate: number;
|
|
27
|
-
timeoutRate: number;
|
|
28
|
-
lastUpdated: string;
|
|
29
|
-
};
|
|
30
|
-
dailyStats: {
|
|
31
|
-
toolCalls: number;
|
|
32
|
-
painSignals: number;
|
|
33
|
-
evolutionTasks: number;
|
|
34
|
-
lastUpdated: string;
|
|
35
|
-
};
|
|
36
|
-
trends: {
|
|
37
|
-
sevenDay: TrendMetrics;
|
|
38
|
-
thirtyDay: TrendMetrics;
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Trend metrics for analytics aggregation.
|
|
44
|
-
*/
|
|
45
|
-
export interface TrendMetrics {
|
|
46
|
-
successRateChange: number;
|
|
47
|
-
toolCallVolumeChange: number;
|
|
48
|
-
painSignalRateChange: number;
|
|
49
|
-
}
|
|
1
|
+
export type {
|
|
2
|
+
RuntimeTruth,
|
|
3
|
+
AnalyticsTruth,
|
|
4
|
+
TrendMetrics,
|
|
5
|
+
} from '@principles/core/runtime-v2';
|
package/src/utils/io.ts
CHANGED
|
@@ -168,3 +168,13 @@ export function planStatus(projectDir: string): string {
|
|
|
168
168
|
}
|
|
169
169
|
return '';
|
|
170
170
|
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Normalize command arguments from PluginCommandContext.args.
|
|
174
|
+
* Handles string | string[] | undefined union by joining arrays with spaces.
|
|
175
|
+
*/
|
|
176
|
+
export function normalizeCommandArgs(args: string | string[] | undefined): string {
|
|
177
|
+
if (args === undefined || args === null) return '';
|
|
178
|
+
if (Array.isArray(args)) return args.join(' ');
|
|
179
|
+
return args;
|
|
180
|
+
}
|
package/src/utils/retry.ts
CHANGED
|
@@ -307,7 +307,7 @@ export async function retryNetworkRequest<T>(
|
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
// =========================================================================
|
|
310
|
-
// Dynamic Timeout Support
|
|
310
|
+
// Dynamic Timeout Support
|
|
311
311
|
// =========================================================================
|
|
312
312
|
|
|
313
313
|
/** Minimum samples needed before trusting learned timeout values */
|
|
@@ -35,8 +35,8 @@ export function computeRuntimeShadowTaskFingerprint(
|
|
|
35
35
|
label: event.label ?? '',
|
|
36
36
|
mode: event.mode,
|
|
37
37
|
threadRequested: event.threadRequested,
|
|
38
|
-
requesterChannel: event.requester?.channel ?? '',
|
|
39
|
-
requesterThreadId: event.requester?.threadId ?? '',
|
|
38
|
+
requesterChannel: (event.requester as { channel?: string })?.channel ?? '',
|
|
39
|
+
requesterThreadId: (event.requester as { threadId?: string })?.threadId ?? '',
|
|
40
40
|
};
|
|
41
41
|
return crypto.createHash('sha256').update(JSON.stringify(payload)).digest('hex').slice(0, RUNTIME_SHADOW_FINGERPRINT_HEX_LENGTH);
|
|
42
42
|
}
|
|
@@ -8,6 +8,7 @@ import type { OpenClawPluginApi, PluginCommandContext } from '../openclaw-sdk.js
|
|
|
8
8
|
import { validateWorkspaceDir, type WorkspaceResolutionContext } from '../core/workspace-dir-validation.js';
|
|
9
9
|
import { resolveWorkspaceDir } from '../core/workspace-dir-service.js';
|
|
10
10
|
import { resolveWorkspaceDirFromApi } from '../core/path-resolver.js';
|
|
11
|
+
import * as path from 'path';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Resolve workspace directory for command execution.
|
|
@@ -93,3 +94,52 @@ export function resolveToolHookWorkspaceDirSafe(
|
|
|
93
94
|
): string | undefined {
|
|
94
95
|
return resolveWorkspaceDir(api, ctx, { source });
|
|
95
96
|
}
|
|
97
|
+
|
|
98
|
+
export class WorkspaceResolutionError extends Error {
|
|
99
|
+
readonly reason: string;
|
|
100
|
+
readonly nextAction: string;
|
|
101
|
+
|
|
102
|
+
constructor(message: string, reason: string, nextAction: string) {
|
|
103
|
+
super(message);
|
|
104
|
+
this.name = 'WorkspaceResolutionError';
|
|
105
|
+
this.reason = reason;
|
|
106
|
+
this.nextAction = nextAction;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
toJSON() {
|
|
110
|
+
return {
|
|
111
|
+
ok: false as const,
|
|
112
|
+
reason: this.reason,
|
|
113
|
+
message: this.message,
|
|
114
|
+
nextAction: this.nextAction,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function resolveWorkspaceDirForRuntimeV2(
|
|
120
|
+
ctx: { workspaceDir?: string },
|
|
121
|
+
api: OpenClawPluginApi | undefined,
|
|
122
|
+
source: string,
|
|
123
|
+
): string {
|
|
124
|
+
const explicit = ctx.workspaceDir;
|
|
125
|
+
if (!explicit || !explicit.trim()) {
|
|
126
|
+
throw new WorkspaceResolutionError(
|
|
127
|
+
`No explicit workspace directory for Runtime V2 entrypoint (${source}). ` +
|
|
128
|
+
'Provide workspaceDir in context. Runtime V2 does not use legacy discovery fallback.',
|
|
129
|
+
'workspace_dir_missing',
|
|
130
|
+
'Ensure the OpenClaw hook context includes workspaceDir, or set PD_WORKSPACE_DIR environment variable.',
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const normalized = path.resolve(explicit.trim());
|
|
135
|
+
const validation = validateWorkspaceDir(normalized);
|
|
136
|
+
if (validation) {
|
|
137
|
+
throw new WorkspaceResolutionError(
|
|
138
|
+
`workspaceDir validation failed for ${source}: ${validation}`,
|
|
139
|
+
'workspace_dir_invalid',
|
|
140
|
+
'Provide a valid workspaceDir that is not the home directory, root, or empty.',
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return normalized;
|
|
145
|
+
}
|
|
@@ -18,7 +18,7 @@ Make decisions based on relative paths in the **Project Battlefield**:
|
|
|
18
18
|
|
|
19
19
|
- **Strategic Focus**: `./memory/STRATEGY.md`
|
|
20
20
|
- **Physical Plan**: `./PLAN.md`
|
|
21
|
-
- **Pain Signal**:
|
|
21
|
+
- **Pain Signal**: Runtime V2 `PainSignalBridge` (`pd pain record` for manual trigger; `.state/.pain_flag` is legacy compatibility only)
|
|
22
22
|
- **System Capabilities**: `./.state/SYSTEM_CAPABILITIES.json`
|
|
23
23
|
|
|
24
24
|
---
|
|
@@ -72,7 +72,7 @@ When you receive a heartbeat poll, don't just reply `HEARTBEAT_OK` every time. U
|
|
|
72
72
|
|
|
73
73
|
### What to Check (rotate through these):
|
|
74
74
|
|
|
75
|
-
- **Pain & Evolution**: Check
|
|
75
|
+
- **Pain & Evolution**: Check Runtime V2 diagnostics (`pd pain record`, candidates, ledger) and `EVOLUTION_QUEUE.json`; `.pain_flag` is legacy compatibility only
|
|
76
76
|
- **Strategic Alignment**: Compare against `CURRENT_FOCUS.md`
|
|
77
77
|
- **Environment Health**: Tool chain status, project root cleanliness
|
|
78
78
|
|
|
@@ -16,7 +16,7 @@ Short, explicit instructions for what OpenClaw should do on startup. If the task
|
|
|
16
16
|
2. **Confirm workspace**: Check current working directory is correct
|
|
17
17
|
3. **Read identity files**: `SOUL.md`, `USER.md`, `IDENTITY.md`
|
|
18
18
|
4. **Check memory state**: Read today's and yesterday's `memory/YYYY-MM-DD.md`
|
|
19
|
-
5. **Check pain
|
|
19
|
+
5. **Check Runtime V2 pain diagnostics**: use `pd candidate list` / ledger state; `.state/.pain_flag` is legacy compatibility only
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -8,7 +8,7 @@ On each heartbeat, run these core checks. **Don't just reply `HEARTBEAT_OK` ever
|
|
|
8
8
|
|
|
9
9
|
## 🩹 Pain & Evolution Check
|
|
10
10
|
|
|
11
|
-
- [ ]
|
|
11
|
+
- [ ] **Runtime V2 pain** — Check `pd candidate list` / ledger if a recent `pd pain record` or tool failure occurred. `.state/.pain_flag` is legacy compatibility only.
|
|
12
12
|
- [ ] **`.state/evolution_queue.json`** — Any pending evolution tasks?
|
|
13
13
|
- [ ] **`memory/logs/SYSTEM.log`** — Any unresolved high-priority issues?
|
|
14
14
|
|
|
@@ -71,4 +71,4 @@ On each heartbeat, run these core checks. **Don't just reply `HEARTBEAT_OK` ever
|
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
-
*If no issues and no action needed, reply `HEARTBEAT_OK` to save tokens.*
|
|
74
|
+
*If no issues and no action needed, reply `HEARTBEAT_OK` to save tokens.*
|
|
@@ -4,77 +4,6 @@
|
|
|
4
4
|
"lastUpdated": "2026-04-04",
|
|
5
5
|
|
|
6
6
|
"agents": {
|
|
7
|
-
"iflow": {
|
|
8
|
-
"command": "iflow --experimental-acp",
|
|
9
|
-
"description": "iFlow CLI with ACP support (智谱 Code Plan / MiniMax Code Plan 付费套餐更稳定,但以下模型全部免费)",
|
|
10
|
-
"version": "0.5.18",
|
|
11
|
-
"models": {
|
|
12
|
-
"glm-4.7": {
|
|
13
|
-
"description": "GLM-4.7 — official recommended model, fast",
|
|
14
|
-
"pricing": "free",
|
|
15
|
-
"recommendedTimeoutSeconds": 1200,
|
|
16
|
-
"features": ["recommended", "fast"],
|
|
17
|
-
"notes": "官方推荐模型,速度快"
|
|
18
|
-
},
|
|
19
|
-
"glm-5": {
|
|
20
|
-
"description": "GLM-5 — 744B parameters, long-context",
|
|
21
|
-
"pricing": "free",
|
|
22
|
-
"recommendedTimeoutSeconds": 1800,
|
|
23
|
-
"features": ["slow", "needs-extra-time"],
|
|
24
|
-
"notes": "744B 参数,运行明显较慢。Review 任务超时必须 ≥ 1800s"
|
|
25
|
-
},
|
|
26
|
-
"qwen3-coder-plus": {
|
|
27
|
-
"description": "Qwen3-Coder-Plus — efficient coding model",
|
|
28
|
-
"pricing": "free",
|
|
29
|
-
"recommendedTimeoutSeconds": 1200,
|
|
30
|
-
"features": ["fast", "coding-optimized"],
|
|
31
|
-
"notes": "通义编码模型"
|
|
32
|
-
},
|
|
33
|
-
"deepseek-v3.2": {
|
|
34
|
-
"description": "DeepSeek V3.2",
|
|
35
|
-
"pricing": "free",
|
|
36
|
-
"recommendedTimeoutSeconds": 1200,
|
|
37
|
-
"features": ["fast"],
|
|
38
|
-
"notes": ""
|
|
39
|
-
},
|
|
40
|
-
"minimax-m2.5": {
|
|
41
|
-
"description": "MiniMax M2.5",
|
|
42
|
-
"pricing": "free",
|
|
43
|
-
"recommendedTimeoutSeconds": 1200,
|
|
44
|
-
"features": ["fast"],
|
|
45
|
-
"notes": ""
|
|
46
|
-
},
|
|
47
|
-
"kimi-k2-thinking": {
|
|
48
|
-
"description": "Kimi K2 Thinking",
|
|
49
|
-
"pricing": "free",
|
|
50
|
-
"recommendedTimeoutSeconds": 1800,
|
|
51
|
-
"features": ["reasoning"],
|
|
52
|
-
"notes": "推理型模型"
|
|
53
|
-
},
|
|
54
|
-
"kimi-k2.5": {
|
|
55
|
-
"description": "Kimi K2.5",
|
|
56
|
-
"pricing": "free",
|
|
57
|
-
"recommendedTimeoutSeconds": 1200,
|
|
58
|
-
"features": ["fast"],
|
|
59
|
-
"notes": ""
|
|
60
|
-
},
|
|
61
|
-
"kimi-k2-0905": {
|
|
62
|
-
"description": "Kimi K2 0905",
|
|
63
|
-
"pricing": "free",
|
|
64
|
-
"recommendedTimeoutSeconds": 1200,
|
|
65
|
-
"features": ["fast"],
|
|
66
|
-
"notes": ""
|
|
67
|
-
},
|
|
68
|
-
"iflow-rome-30ba3b": {
|
|
69
|
-
"description": "iFlow ROME 30BA3B",
|
|
70
|
-
"pricing": "free",
|
|
71
|
-
"recommendedTimeoutSeconds": 1200,
|
|
72
|
-
"features": ["preview"],
|
|
73
|
-
"notes": "预览版本"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
|
|
78
7
|
"opencode": {
|
|
79
8
|
"command": "npx -y opencode-ai acp",
|
|
80
9
|
"description": "OpenCode ACP adapter",
|
|
@@ -209,6 +138,6 @@
|
|
|
209
138
|
"codex": "codex-acp 在当前环境无法使用,不登记。",
|
|
210
139
|
"kilocode": "kilocode ACP 是 server 模式(监听端口),不是 headless prompt-response,不兼容 acpx,不登记。",
|
|
211
140
|
"qodercli": "qodercli 没有 --acp 标志,不登记。",
|
|
212
|
-
"model_discovery": "opencode 可通过 'opencode models' 自动列出模型。其他 agent(
|
|
141
|
+
"model_discovery": "opencode 可通过 'opencode models' 自动列出模型。其他 agent(gemini, qwen)没有 CLI 列表命令,需手动维护。"
|
|
213
142
|
}
|
|
214
143
|
}
|
|
@@ -33,19 +33,19 @@
|
|
|
33
33
|
"stageTimeoutMinutes": 15,
|
|
34
34
|
"stages": ["investigate", "implement-pass-1", "verify"],
|
|
35
35
|
"producer": {
|
|
36
|
-
"agent": "
|
|
37
|
-
"model": "
|
|
36
|
+
"agent": "opencode",
|
|
37
|
+
"model": "minimax-cn-coding-plan/MiniMax-M2.7",
|
|
38
38
|
"timeoutSeconds": 180
|
|
39
39
|
},
|
|
40
40
|
"reviewerA": {
|
|
41
|
-
"agent": "
|
|
42
|
-
"model": "
|
|
41
|
+
"agent": "opencode",
|
|
42
|
+
"model": "minimax-cn-coding-plan/MiniMax-M2.7",
|
|
43
43
|
"timeoutSeconds": 120,
|
|
44
44
|
"focus": "Validate root cause, behavioral change, and code correctness."
|
|
45
45
|
},
|
|
46
46
|
"reviewerB": {
|
|
47
|
-
"agent": "
|
|
48
|
-
"model": "
|
|
47
|
+
"agent": "opencode",
|
|
48
|
+
"model": "minimax-cn-coding-plan/MiniMax-M2.7",
|
|
49
49
|
"timeoutSeconds": 120,
|
|
50
50
|
"focus": "Validate scope control, verification quality, and regression risk."
|
|
51
51
|
},
|
|
@@ -33,19 +33,19 @@
|
|
|
33
33
|
"stageTimeoutMinutes": 20,
|
|
34
34
|
"stages": ["investigate", "implement-pass-1", "verify"],
|
|
35
35
|
"producer": {
|
|
36
|
-
"agent": "
|
|
37
|
-
"model": "
|
|
36
|
+
"agent": "opencode",
|
|
37
|
+
"model": "minimax-cn-coding-plan/MiniMax-M2.7",
|
|
38
38
|
"timeoutSeconds": 240
|
|
39
39
|
},
|
|
40
40
|
"reviewerA": {
|
|
41
|
-
"agent": "
|
|
42
|
-
"model": "
|
|
41
|
+
"agent": "opencode",
|
|
42
|
+
"model": "minimax-cn-coding-plan/MiniMax-M2.7",
|
|
43
43
|
"timeoutSeconds": 120,
|
|
44
44
|
"focus": "Validate feature behavior, acceptance criteria coverage, and architecture fit."
|
|
45
45
|
},
|
|
46
46
|
"reviewerB": {
|
|
47
|
-
"agent": "
|
|
48
|
-
"model": "
|
|
47
|
+
"agent": "opencode",
|
|
48
|
+
"model": "minimax-cn-coding-plan/MiniMax-M2.7",
|
|
49
49
|
"timeoutSeconds": 120,
|
|
50
50
|
"focus": "Validate implementation scope, verification evidence, and regression risk."
|
|
51
51
|
},
|