@evomap/evolver-core 2.0.0-beta.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/algo/antiDistill.d.ts +35 -0
- package/dist/algo/antiDistill.js +167 -0
- package/dist/algo/bans.d.ts +6 -0
- package/dist/algo/bans.js +33 -0
- package/dist/algo/candidateAssembly.d.ts +65 -0
- package/dist/algo/candidateAssembly.js +196 -0
- package/dist/algo/capabilityCandidates.d.ts +38 -0
- package/dist/algo/capabilityCandidates.js +131 -0
- package/dist/algo/confidence.d.ts +106 -0
- package/dist/algo/confidence.js +196 -0
- package/dist/algo/cycleEngine.d.ts +143 -0
- package/dist/algo/cycleEngine.js +417 -0
- package/dist/algo/cycleFailureClassifier.d.ts +52 -0
- package/dist/algo/cycleFailureClassifier.js +104 -0
- package/dist/algo/epigenetics.d.ts +14 -0
- package/dist/algo/epigenetics.js +41 -0
- package/dist/algo/evolutionEvent.d.ts +23 -0
- package/dist/algo/evolutionEvent.js +24 -0
- package/dist/algo/exploration.d.ts +34 -0
- package/dist/algo/exploration.js +55 -0
- package/dist/algo/geneHealth.d.ts +24 -0
- package/dist/algo/geneHealth.js +16 -0
- package/dist/algo/geneIntake.d.ts +37 -0
- package/dist/algo/geneIntake.js +100 -0
- package/dist/algo/genePromotion.d.ts +48 -0
- package/dist/algo/genePromotion.js +53 -0
- package/dist/algo/geneSelection.d.ts +128 -0
- package/dist/algo/geneSelection.js +222 -0
- package/dist/algo/index.d.ts +18 -0
- package/dist/algo/index.js +18 -0
- package/dist/algo/mutation.d.ts +12 -0
- package/dist/algo/mutation.js +22 -0
- package/dist/algo/orchestrator.d.ts +65 -0
- package/dist/algo/orchestrator.js +63 -0
- package/dist/algo/solidify.d.ts +43 -0
- package/dist/algo/solidify.js +63 -0
- package/dist/algo/strategyPresets.d.ts +32 -0
- package/dist/algo/strategyPresets.js +61 -0
- package/dist/assetstore/index.d.ts +8 -0
- package/dist/assetstore/index.js +8 -0
- package/dist/assetstore/learningHistory.d.ts +25 -0
- package/dist/assetstore/learningHistory.js +38 -0
- package/dist/assetstore/localJsonl.d.ts +34 -0
- package/dist/assetstore/localJsonl.js +182 -0
- package/dist/assetstore/pendingSignals.d.ts +22 -0
- package/dist/assetstore/pendingSignals.js +171 -0
- package/dist/assetstore/provenance.d.ts +39 -0
- package/dist/assetstore/provenance.js +109 -0
- package/dist/assetstore/provider.d.ts +48 -0
- package/dist/assetstore/provider.js +36 -0
- package/dist/assetstore/remoteStub.d.ts +32 -0
- package/dist/assetstore/remoteStub.js +36 -0
- package/dist/assetstore/reviewFilter.d.ts +20 -0
- package/dist/assetstore/reviewFilter.js +44 -0
- package/dist/assetstore/reviewLedger.d.ts +55 -0
- package/dist/assetstore/reviewLedger.js +121 -0
- package/dist/benchmark/antiGeneBenchmark.d.ts +79 -0
- package/dist/benchmark/antiGeneBenchmark.js +241 -0
- package/dist/benchmark/antiGeneRollout.d.ts +80 -0
- package/dist/benchmark/antiGeneRollout.js +256 -0
- package/dist/benchmark/benchmark.d.ts +32 -0
- package/dist/benchmark/benchmark.js +26 -0
- package/dist/benchmark/evolutionThesisSolver.d.ts +25 -0
- package/dist/benchmark/evolutionThesisSolver.js +41 -0
- package/dist/benchmark/index.d.ts +5 -0
- package/dist/benchmark/index.js +5 -0
- package/dist/benchmark/thesis.d.ts +85 -0
- package/dist/benchmark/thesis.js +150 -0
- package/dist/bootstrap/envFingerprint.d.ts +45 -0
- package/dist/bootstrap/envFingerprint.js +72 -0
- package/dist/bootstrap/index.d.ts +2 -0
- package/dist/bootstrap/index.js +2 -0
- package/dist/bootstrap/selfEvolve.d.ts +36 -0
- package/dist/bootstrap/selfEvolve.js +26 -0
- package/dist/cycle/cycleTimeline.d.ts +35 -0
- package/dist/cycle/cycleTimeline.js +74 -0
- package/dist/cycle/index.d.ts +2 -0
- package/dist/cycle/index.js +2 -0
- package/dist/cycle/stateMachine.d.ts +6 -0
- package/dist/cycle/stateMachine.js +25 -0
- package/dist/daemon/cycleContext.d.ts +12 -0
- package/dist/daemon/cycleContext.js +13 -0
- package/dist/daemon/drain.d.ts +11 -0
- package/dist/daemon/drain.js +16 -0
- package/dist/daemon/guards.d.ts +87 -0
- package/dist/daemon/guards.js +142 -0
- package/dist/daemon/idempotency.d.ts +11 -0
- package/dist/daemon/idempotency.js +36 -0
- package/dist/daemon/idleScheduler.d.ts +55 -0
- package/dist/daemon/idleScheduler.js +181 -0
- package/dist/daemon/index.d.ts +8 -0
- package/dist/daemon/index.js +8 -0
- package/dist/daemon/stepRunner.d.ts +12 -0
- package/dist/daemon/stepRunner.js +31 -0
- package/dist/daemon/unhandledRejectionWindow.d.ts +21 -0
- package/dist/daemon/unhandledRejectionWindow.js +52 -0
- package/dist/daemon/watchdog.d.ts +11 -0
- package/dist/daemon/watchdog.js +14 -0
- package/dist/events/eventSchema.d.ts +132 -0
- package/dist/events/eventSchema.js +30 -0
- package/dist/events/eventStore.d.ts +32 -0
- package/dist/events/eventStore.js +137 -0
- package/dist/events/ingest.d.ts +34 -0
- package/dist/events/ingest.js +61 -0
- package/dist/events/paths.d.ts +22 -0
- package/dist/events/paths.js +44 -0
- package/dist/events/projectors.d.ts +9 -0
- package/dist/events/projectors.js +11 -0
- package/dist/events/public.d.ts +14 -0
- package/dist/events/public.js +8 -0
- package/dist/events/replayer.d.ts +26 -0
- package/dist/events/replayer.js +67 -0
- package/dist/events/reports.d.ts +90 -0
- package/dist/events/reports.js +244 -0
- package/dist/events/retention.d.ts +70 -0
- package/dist/events/retention.js +177 -0
- package/dist/events/sink.d.ts +5 -0
- package/dist/events/sink.js +1 -0
- package/dist/exec/autoExec.d.ts +137 -0
- package/dist/exec/autoExec.js +221 -0
- package/dist/exec/autonomousCycle.d.ts +48 -0
- package/dist/exec/autonomousCycle.js +78 -0
- package/dist/exec/claudeBridge.d.ts +112 -0
- package/dist/exec/claudeBridge.js +219 -0
- package/dist/exec/index.d.ts +9 -0
- package/dist/exec/index.js +11 -0
- package/dist/exec/openPrRegistry.d.ts +60 -0
- package/dist/exec/openPrRegistry.js +130 -0
- package/dist/exec/policy/blastRadius.d.ts +31 -0
- package/dist/exec/policy/blastRadius.js +67 -0
- package/dist/exec/policy/constraints.d.ts +26 -0
- package/dist/exec/policy/constraints.js +62 -0
- package/dist/exec/policy/destructive.d.ts +45 -0
- package/dist/exec/policy/destructive.js +108 -0
- package/dist/exec/policy/failureMode.d.ts +33 -0
- package/dist/exec/policy/failureMode.js +49 -0
- package/dist/exec/policy/index.d.ts +24 -0
- package/dist/exec/policy/index.js +30 -0
- package/dist/exec/policy/protectedPaths.d.ts +17 -0
- package/dist/exec/policy/protectedPaths.js +65 -0
- package/dist/exec/policyCheck.d.ts +2 -0
- package/dist/exec/policyCheck.js +7 -0
- package/dist/exec/prompt.d.ts +34 -0
- package/dist/exec/prompt.js +108 -0
- package/dist/exec/proofOfWork.d.ts +9 -0
- package/dist/exec/proofOfWork.js +11 -0
- package/dist/exec/runnerRegistry.d.ts +123 -0
- package/dist/exec/runnerRegistry.js +237 -0
- package/dist/exec/selfPr.d.ts +83 -0
- package/dist/exec/selfPr.js +104 -0
- package/dist/exec/selfPrObfuscation.d.ts +21 -0
- package/dist/exec/selfPrObfuscation.js +85 -0
- package/dist/hooks/hooks.d.ts +117 -0
- package/dist/hooks/hooks.js +89 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hub/assetCallLog.d.ts +43 -0
- package/dist/hub/assetCallLog.js +72 -0
- package/dist/hub/bindings.d.ts +28 -0
- package/dist/hub/bindings.js +90 -0
- package/dist/hub/capability.d.ts +278 -0
- package/dist/hub/capability.js +1 -0
- package/dist/hub/conversationDistiller.d.ts +88 -0
- package/dist/hub/conversationDistiller.js +264 -0
- package/dist/hub/fake.d.ts +45 -0
- package/dist/hub/fake.js +69 -0
- package/dist/hub/hubReview.d.ts +91 -0
- package/dist/hub/hubReview.js +106 -0
- package/dist/hub/index.d.ts +10 -0
- package/dist/hub/index.js +10 -0
- package/dist/hub/ingest.d.ts +15 -0
- package/dist/hub/ingest.js +15 -0
- package/dist/hub/questionGenerator.d.ts +59 -0
- package/dist/hub/questionGenerator.js +406 -0
- package/dist/hub/reuseDecision.d.ts +87 -0
- package/dist/hub/reuseDecision.js +127 -0
- package/dist/hub/sanitize.d.ts +52 -0
- package/dist/hub/sanitize.js +321 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +27 -0
- package/dist/mailbox/catalog.d.ts +17 -0
- package/dist/mailbox/catalog.js +53 -0
- package/dist/mailbox/daemon.d.ts +48 -0
- package/dist/mailbox/daemon.js +61 -0
- package/dist/mailbox/dispatch.d.ts +46 -0
- package/dist/mailbox/dispatch.js +62 -0
- package/dist/mailbox/envelope.d.ts +43 -0
- package/dist/mailbox/envelope.js +52 -0
- package/dist/mailbox/index.d.ts +8 -0
- package/dist/mailbox/index.js +8 -0
- package/dist/mailbox/ipcServer.d.ts +46 -0
- package/dist/mailbox/ipcServer.js +168 -0
- package/dist/mailbox/requestReply.d.ts +40 -0
- package/dist/mailbox/requestReply.js +77 -0
- package/dist/mailbox/store.d.ts +74 -0
- package/dist/mailbox/store.js +308 -0
- package/dist/mailbox/wake.d.ts +45 -0
- package/dist/mailbox/wake.js +60 -0
- package/dist/material/boundary.d.ts +7 -0
- package/dist/material/boundary.js +14 -0
- package/dist/material/consumer.d.ts +21 -0
- package/dist/material/consumer.js +52 -0
- package/dist/material/emit.d.ts +55 -0
- package/dist/material/emit.js +52 -0
- package/dist/material/factory.d.ts +27 -0
- package/dist/material/factory.js +25 -0
- package/dist/material/index.d.ts +8 -0
- package/dist/material/index.js +8 -0
- package/dist/material/materialStore.d.ts +24 -0
- package/dist/material/materialStore.js +76 -0
- package/dist/material/sampling.d.ts +21 -0
- package/dist/material/sampling.js +39 -0
- package/dist/material/sources.d.ts +25 -0
- package/dist/material/sources.js +33 -0
- package/dist/material/watermark.d.ts +21 -0
- package/dist/material/watermark.js +76 -0
- package/dist/observers/cursorRewriteObserver.d.ts +46 -0
- package/dist/observers/cursorRewriteObserver.js +103 -0
- package/dist/observers/distillObserver.d.ts +31 -0
- package/dist/observers/distillObserver.js +93 -0
- package/dist/observers/index.d.ts +5 -0
- package/dist/observers/index.js +5 -0
- package/dist/observers/observerBus.d.ts +44 -0
- package/dist/observers/observerBus.js +73 -0
- package/dist/observers/reflectionObserver.d.ts +31 -0
- package/dist/observers/reflectionObserver.js +124 -0
- package/dist/observers/valueDigestObserver.d.ts +50 -0
- package/dist/observers/valueDigestObserver.js +70 -0
- package/dist/ops/cleanup.d.ts +23 -0
- package/dist/ops/cleanup.js +68 -0
- package/dist/ops/health.d.ts +37 -0
- package/dist/ops/health.js +96 -0
- package/dist/ops/index.d.ts +7 -0
- package/dist/ops/index.js +7 -0
- package/dist/ops/recall.d.ts +65 -0
- package/dist/ops/recall.js +152 -0
- package/dist/ops/reuseOutcomes.d.ts +68 -0
- package/dist/ops/reuseOutcomes.js +126 -0
- package/dist/ops/savingsCore.d.ts +47 -0
- package/dist/ops/savingsCore.js +112 -0
- package/dist/ops/selfUpdate.d.ts +106 -0
- package/dist/ops/selfUpdate.js +294 -0
- package/dist/ops/valueLedger.d.ts +205 -0
- package/dist/ops/valueLedger.js +238 -0
- package/dist/ops/valueOutreach.d.ts +70 -0
- package/dist/ops/valueOutreach.js +244 -0
- package/dist/personality/drift.d.ts +45 -0
- package/dist/personality/drift.js +106 -0
- package/dist/personality/events.d.ts +25 -0
- package/dist/personality/events.js +37 -0
- package/dist/personality/evolveOps.d.ts +20 -0
- package/dist/personality/evolveOps.js +93 -0
- package/dist/personality/index.d.ts +11 -0
- package/dist/personality/index.js +11 -0
- package/dist/personality/mutate.d.ts +21 -0
- package/dist/personality/mutate.js +39 -0
- package/dist/personality/pivot.d.ts +23 -0
- package/dist/personality/pivot.js +22 -0
- package/dist/personality/prompt.d.ts +6 -0
- package/dist/personality/prompt.js +62 -0
- package/dist/personality/riskGate.d.ts +42 -0
- package/dist/personality/riskGate.js +80 -0
- package/dist/personality/schema.d.ts +255 -0
- package/dist/personality/schema.js +119 -0
- package/dist/personality/select.d.ts +46 -0
- package/dist/personality/select.js +71 -0
- package/dist/personality/stats.d.ts +46 -0
- package/dist/personality/stats.js +82 -0
- package/dist/personality/store.d.ts +35 -0
- package/dist/personality/store.js +92 -0
- package/dist/schema/common.d.ts +28 -0
- package/dist/schema/common.js +17 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/index.js +5 -0
- package/dist/schema/material.d.ts +201 -0
- package/dist/schema/material.js +50 -0
- package/dist/schema/problem.d.ts +160 -0
- package/dist/schema/problem.js +45 -0
- package/dist/schema/proofOfWork.d.ts +97 -0
- package/dist/schema/proofOfWork.js +9 -0
- package/dist/schema/signal.d.ts +41 -0
- package/dist/schema/signal.js +19 -0
- package/dist/shadow/index.d.ts +6 -0
- package/dist/shadow/index.js +6 -0
- package/dist/shadow/jsonlSink.d.ts +17 -0
- package/dist/shadow/jsonlSink.js +27 -0
- package/dist/shadow/redact.d.ts +11 -0
- package/dist/shadow/redact.js +18 -0
- package/dist/shadow/shadowHub.d.ts +12 -0
- package/dist/shadow/shadowHub.js +42 -0
- package/dist/shadow/shadowMailbox.d.ts +17 -0
- package/dist/shadow/shadowMailbox.js +25 -0
- package/dist/shadow/shadowStore.d.ts +18 -0
- package/dist/shadow/shadowStore.js +55 -0
- package/dist/shadow/sink.d.ts +37 -0
- package/dist/shadow/sink.js +18 -0
- package/dist/signals/cycleHistoryFromEvents.d.ts +11 -0
- package/dist/signals/cycleHistoryFromEvents.js +96 -0
- package/dist/signals/expand.d.ts +34 -0
- package/dist/signals/expand.js +125 -0
- package/dist/signals/extractor.d.ts +25 -0
- package/dist/signals/extractor.js +57 -0
- package/dist/signals/index.d.ts +6 -0
- package/dist/signals/index.js +6 -0
- package/dist/signals/metaSignals.d.ts +57 -0
- package/dist/signals/metaSignals.js +158 -0
- package/dist/signals/signalGate.d.ts +15 -0
- package/dist/signals/signalGate.js +40 -0
- package/dist/signals/traceSignals.d.ts +44 -0
- package/dist/signals/traceSignals.js +123 -0
- package/dist/signatures/classifier.d.ts +16 -0
- package/dist/signatures/classifier.js +29 -0
- package/dist/signatures/index.d.ts +2 -0
- package/dist/signatures/index.js +2 -0
- package/dist/signatures/signatures.d.ts +22 -0
- package/dist/signatures/signatures.js +42 -0
- package/dist/strategy/experiment.d.ts +48 -0
- package/dist/strategy/experiment.js +63 -0
- package/dist/strategy/index.d.ts +2 -0
- package/dist/strategy/index.js +2 -0
- package/dist/strategy/strategyPoint.d.ts +30 -0
- package/dist/strategy/strategyPoint.js +23 -0
- package/dist/trace/index.d.ts +2 -0
- package/dist/trace/index.js +2 -0
- package/dist/trace/trajectory.d.ts +82 -0
- package/dist/trace/trajectory.js +117 -0
- package/dist/trace/trajectoryExport.d.ts +237 -0
- package/dist/trace/trajectoryExport.js +1818 -0
- package/dist/trigger/budget.d.ts +16 -0
- package/dist/trigger/budget.js +20 -0
- package/dist/trigger/engine.d.ts +12 -0
- package/dist/trigger/engine.js +23 -0
- package/dist/trigger/index.d.ts +6 -0
- package/dist/trigger/index.js +6 -0
- package/dist/trigger/problemBuilder.d.ts +24 -0
- package/dist/trigger/problemBuilder.js +32 -0
- package/dist/trigger/trigger.d.ts +22 -0
- package/dist/trigger/trigger.js +27 -0
- package/dist/trigger/valueModel.d.ts +26 -0
- package/dist/trigger/valueModel.js +25 -0
- package/dist/trigger/wfq.d.ts +13 -0
- package/dist/trigger/wfq.js +25 -0
- package/dist/util/fileLock.d.ts +24 -0
- package/dist/util/fileLock.js +227 -0
- package/dist/util/index.d.ts +2 -0
- package/dist/util/index.js +2 -0
- package/dist/util/version.d.ts +12 -0
- package/dist/util/version.js +51 -0
- package/dist/verify/index.d.ts +4 -0
- package/dist/verify/index.js +4 -0
- package/dist/verify/rollback.d.ts +22 -0
- package/dist/verify/rollback.js +33 -0
- package/dist/verify/sandboxRunner.d.ts +39 -0
- package/dist/verify/sandboxRunner.js +116 -0
- package/dist/verify/sandboxedValidation.d.ts +35 -0
- package/dist/verify/sandboxedValidation.js +56 -0
- package/dist/verify/validation.d.ts +41 -0
- package/dist/verify/validation.js +85 -0
- package/dist/wire/canonicalize.golden.d.ts +23 -0
- package/dist/wire/canonicalize.golden.js +46 -0
- package/dist/wire/geneHints.d.ts +64 -0
- package/dist/wire/geneHints.js +100 -0
- package/dist/wire/index.d.ts +91 -0
- package/dist/wire/index.js +3 -0
- package/dist/wire/schemaGate.d.ts +11 -0
- package/dist/wire/schemaGate.js +49 -0
- package/dist/workflow/dsl.d.ts +54 -0
- package/dist/workflow/dsl.js +15 -0
- package/dist/workflow/engine.d.ts +30 -0
- package/dist/workflow/engine.js +94 -0
- package/dist/workflow/index.d.ts +2 -0
- package/dist/workflow/index.js +2 -0
- package/package.json +29 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { acquireLock, releaseLock } from '../util/fileLock.js';
|
|
4
|
+
import { personalityStatePath } from '../events/paths.js';
|
|
5
|
+
import { DEFAULT_PERSONALITY, normalizePersonalityState, personalityKey, personalityModel, } from './schema.js';
|
|
6
|
+
/** history 上限 (v1 slice(-120) 同值; 防文件无界增长). */
|
|
7
|
+
export const HISTORY_LIMIT = 120;
|
|
8
|
+
/** 全新默认模型 (无持久文件时的种子). */
|
|
9
|
+
export function defaultPersonalityModel(now = Date.now) {
|
|
10
|
+
return personalityModel.parse({
|
|
11
|
+
version: 1,
|
|
12
|
+
current: { ...DEFAULT_PERSONALITY },
|
|
13
|
+
stats: {},
|
|
14
|
+
history: [],
|
|
15
|
+
updatedAt: new Date(now()).toISOString(),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 可进化人格模型的持久化 (v1 loadPersonalityModel / savePersonalityModel 端口).
|
|
20
|
+
* - load: 缺失/空/损坏文件 → 回落默认模型 (绝不抛; 人格是软状态, 读坏不该崩进化循环)
|
|
21
|
+
* - save: tmp+rename 原子替换, 跨进程 O_EXCL 锁串行化 (对齐 EventStore / localJsonl 的写法)
|
|
22
|
+
* current 恒被 normalize 到合法五维, stats/history 恒是合法形状.
|
|
23
|
+
*/
|
|
24
|
+
export class PersonalityStore {
|
|
25
|
+
path;
|
|
26
|
+
lockPath;
|
|
27
|
+
now;
|
|
28
|
+
constructor(opts = {}) {
|
|
29
|
+
this.path = opts.path ?? personalityStatePath();
|
|
30
|
+
this.lockPath = `${this.path}.lock`;
|
|
31
|
+
this.now = opts.now ?? Date.now;
|
|
32
|
+
}
|
|
33
|
+
/** 读模型; 任何 I/O 或校验失败都回落默认 (不抛). */
|
|
34
|
+
load() {
|
|
35
|
+
if (!existsSync(this.path))
|
|
36
|
+
return defaultPersonalityModel(this.now);
|
|
37
|
+
let raw;
|
|
38
|
+
try {
|
|
39
|
+
const text = readFileSync(this.path, 'utf8');
|
|
40
|
+
if (!text.trim())
|
|
41
|
+
return defaultPersonalityModel(this.now);
|
|
42
|
+
raw = JSON.parse(text);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return defaultPersonalityModel(this.now);
|
|
46
|
+
}
|
|
47
|
+
const parsed = personalityModel.safeParse(raw);
|
|
48
|
+
if (parsed.success) {
|
|
49
|
+
// current 再夹一层, 防手改文件塞进越界值绕过 min/max (safeParse 已挡, 双保险).
|
|
50
|
+
return { ...parsed.data, current: normalizePersonalityState(parsed.data.current) };
|
|
51
|
+
}
|
|
52
|
+
// 部分损坏: 尽量抢救 current, 其余回默认.
|
|
53
|
+
const seed = defaultPersonalityModel(this.now);
|
|
54
|
+
const cur = raw?.current;
|
|
55
|
+
return { ...seed, current: normalizePersonalityState(cur ?? DEFAULT_PERSONALITY) };
|
|
56
|
+
}
|
|
57
|
+
/** 原子落盘 (规范化 + history 截断 + 刷 updatedAt). 返回实际写入的模型. */
|
|
58
|
+
save(model) {
|
|
59
|
+
const out = personalityModel.parse({
|
|
60
|
+
version: 1,
|
|
61
|
+
current: normalizePersonalityState(model.current),
|
|
62
|
+
stats: model.stats ?? {},
|
|
63
|
+
history: (model.history ?? []).slice(-HISTORY_LIMIT),
|
|
64
|
+
updatedAt: new Date(this.now()).toISOString(),
|
|
65
|
+
extensions: model.extensions ?? {},
|
|
66
|
+
});
|
|
67
|
+
mkdirSync(dirname(this.path), { recursive: true });
|
|
68
|
+
acquireLock(this.lockPath);
|
|
69
|
+
try {
|
|
70
|
+
const tmp = `${this.path}.tmp`;
|
|
71
|
+
writeFileSync(tmp, `${JSON.stringify(out, null, 2)}\n`, 'utf8');
|
|
72
|
+
renameSync(tmp, this.path); // atomic replace; 崩在中途原文件不动
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
releaseLock(this.lockPath);
|
|
76
|
+
}
|
|
77
|
+
return out;
|
|
78
|
+
}
|
|
79
|
+
/** 读当前人格 (便捷). */
|
|
80
|
+
currentState() {
|
|
81
|
+
return this.load().current;
|
|
82
|
+
}
|
|
83
|
+
/** 桶键 (便捷). */
|
|
84
|
+
currentKey() {
|
|
85
|
+
return personalityKey(this.load().current);
|
|
86
|
+
}
|
|
87
|
+
/** 当前时间的 ISO 串 (走注入时钟) —— 供进化算子给 stats/history/事件打时间戳. */
|
|
88
|
+
nowIso() {
|
|
89
|
+
return new Date(this.now()).toISOString();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export { personalityStatePath };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** evolver-core 内部 domain schema 版本 (与 gep-sdk SCHEMA_VERSION 解耦). */
|
|
3
|
+
export declare const DOMAIN_SCHEMA_VERSION = "1.0.0";
|
|
4
|
+
/** ULID (26 char Crockford base32). */
|
|
5
|
+
export declare const ulid: z.ZodString;
|
|
6
|
+
export declare const sha256Hash: z.ZodString;
|
|
7
|
+
/** 防过早冻结的扩展字段 (军杰 §11). */
|
|
8
|
+
export declare const extensions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
9
|
+
/** 大对象走 artifact 引用. */
|
|
10
|
+
export declare const artifactRef: z.ZodObject<{
|
|
11
|
+
path: z.ZodString;
|
|
12
|
+
sha256: z.ZodString;
|
|
13
|
+
size: z.ZodNumber;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
path: string;
|
|
16
|
+
sha256: string;
|
|
17
|
+
size: number;
|
|
18
|
+
}, {
|
|
19
|
+
path: string;
|
|
20
|
+
sha256: string;
|
|
21
|
+
size: number;
|
|
22
|
+
}>;
|
|
23
|
+
export type ArtifactRef = z.infer<typeof artifactRef>;
|
|
24
|
+
/** runtime 来源 (D11). 'generic-chat' = 任何输出标准 OpenAI/Anthropic messages 的 AI(经 genericChatAdapter 接入). */
|
|
25
|
+
export declare const sourceAgent: z.ZodEnum<["claude-code", "codex", "cursor", "gemini", "kimi", "kiro", "opencode", "generic-chat"]>;
|
|
26
|
+
export type SourceAgent = z.infer<typeof sourceAgent>;
|
|
27
|
+
export declare const blastRadius: z.ZodEnum<["file", "module", "package", "system"]>;
|
|
28
|
+
export type BlastRadius = z.infer<typeof blastRadius>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** evolver-core 内部 domain schema 版本 (与 gep-sdk SCHEMA_VERSION 解耦). */
|
|
3
|
+
export const DOMAIN_SCHEMA_VERSION = '1.0.0';
|
|
4
|
+
/** ULID (26 char Crockford base32). */
|
|
5
|
+
export const ulid = z.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/, 'invalid ULID');
|
|
6
|
+
export const sha256Hash = z.string().regex(/^sha256:[a-f0-9]{64}$/, 'invalid sha256');
|
|
7
|
+
/** 防过早冻结的扩展字段 (军杰 §11). */
|
|
8
|
+
export const extensions = z.record(z.string(), z.unknown()).default({});
|
|
9
|
+
/** 大对象走 artifact 引用. */
|
|
10
|
+
export const artifactRef = z.object({
|
|
11
|
+
path: z.string(),
|
|
12
|
+
sha256: z.string(),
|
|
13
|
+
size: z.number().int().nonnegative(),
|
|
14
|
+
});
|
|
15
|
+
/** runtime 来源 (D11). 'generic-chat' = 任何输出标准 OpenAI/Anthropic messages 的 AI(经 genericChatAdapter 接入). */
|
|
16
|
+
export const sourceAgent = z.enum(['claude-code', 'codex', 'cursor', 'gemini', 'kimi', 'kiro', 'opencode', 'generic-chat']);
|
|
17
|
+
export const blastRadius = z.enum(['file', 'module', 'package', 'system']);
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** 去重 watermark (批注#15): (path,mtime,size)+contentHash 兜底. */
|
|
3
|
+
export declare const watermark: z.ZodObject<{
|
|
4
|
+
path: z.ZodString;
|
|
5
|
+
mtime: z.ZodNumber;
|
|
6
|
+
size: z.ZodNumber;
|
|
7
|
+
contentHash: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
path: string;
|
|
10
|
+
size: number;
|
|
11
|
+
mtime: number;
|
|
12
|
+
contentHash?: string | undefined;
|
|
13
|
+
}, {
|
|
14
|
+
path: string;
|
|
15
|
+
size: number;
|
|
16
|
+
mtime: number;
|
|
17
|
+
contentHash?: string | undefined;
|
|
18
|
+
}>;
|
|
19
|
+
export type Watermark = z.infer<typeof watermark>;
|
|
20
|
+
/** 进化原材料 (环境). 来自 runtime session/tool 日志, 或 agent-无关的 proxy LLM-trace (#95). */
|
|
21
|
+
export declare const material: z.ZodEffects<z.ZodObject<{
|
|
22
|
+
materialId: z.ZodString;
|
|
23
|
+
/** Runtime agent that produced a session/tool source. Absent for agent-agnostic origins (proxy trace), #95. */
|
|
24
|
+
sourceAgent: z.ZodOptional<z.ZodEnum<["claude-code", "codex", "cursor", "gemini", "kimi", "kiro", "opencode", "generic-chat"]>>;
|
|
25
|
+
/** Origin class: a runtime agent session, or the proxy gateway's LLM trace (agent-agnostic), #95.
|
|
26
|
+
* Defaults to runtime_session so pre-#95 records (which only ever held sessions) parse unchanged. */
|
|
27
|
+
sourceKind: z.ZodDefault<z.ZodEnum<["runtime_session", "proxy_trace"]>>;
|
|
28
|
+
sourcePath: z.ZodString;
|
|
29
|
+
kind: z.ZodEnum<["session_log", "tool_event", "llm_trace"]>;
|
|
30
|
+
watermark: z.ZodObject<{
|
|
31
|
+
path: z.ZodString;
|
|
32
|
+
mtime: z.ZodNumber;
|
|
33
|
+
size: z.ZodNumber;
|
|
34
|
+
contentHash: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, "strip", z.ZodTypeAny, {
|
|
36
|
+
path: string;
|
|
37
|
+
size: number;
|
|
38
|
+
mtime: number;
|
|
39
|
+
contentHash?: string | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
path: string;
|
|
42
|
+
size: number;
|
|
43
|
+
mtime: number;
|
|
44
|
+
contentHash?: string | undefined;
|
|
45
|
+
}>;
|
|
46
|
+
capturedAt: z.ZodString;
|
|
47
|
+
consumerGroup: z.ZodString;
|
|
48
|
+
payloadRef: z.ZodOptional<z.ZodObject<{
|
|
49
|
+
path: z.ZodString;
|
|
50
|
+
sha256: z.ZodString;
|
|
51
|
+
size: z.ZodNumber;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
path: string;
|
|
54
|
+
sha256: string;
|
|
55
|
+
size: number;
|
|
56
|
+
}, {
|
|
57
|
+
path: string;
|
|
58
|
+
sha256: string;
|
|
59
|
+
size: number;
|
|
60
|
+
}>>;
|
|
61
|
+
payload: z.ZodOptional<z.ZodUnknown>;
|
|
62
|
+
feedsMaterial: z.ZodDefault<z.ZodBoolean>;
|
|
63
|
+
extensions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
64
|
+
}, "strip", z.ZodTypeAny, {
|
|
65
|
+
materialId: string;
|
|
66
|
+
sourceKind: "runtime_session" | "proxy_trace";
|
|
67
|
+
sourcePath: string;
|
|
68
|
+
kind: "session_log" | "tool_event" | "llm_trace";
|
|
69
|
+
watermark: {
|
|
70
|
+
path: string;
|
|
71
|
+
size: number;
|
|
72
|
+
mtime: number;
|
|
73
|
+
contentHash?: string | undefined;
|
|
74
|
+
};
|
|
75
|
+
capturedAt: string;
|
|
76
|
+
consumerGroup: string;
|
|
77
|
+
feedsMaterial: boolean;
|
|
78
|
+
extensions: Record<string, unknown>;
|
|
79
|
+
sourceAgent?: "claude-code" | "codex" | "cursor" | "gemini" | "kimi" | "kiro" | "opencode" | "generic-chat" | undefined;
|
|
80
|
+
payloadRef?: {
|
|
81
|
+
path: string;
|
|
82
|
+
sha256: string;
|
|
83
|
+
size: number;
|
|
84
|
+
} | undefined;
|
|
85
|
+
payload?: unknown;
|
|
86
|
+
}, {
|
|
87
|
+
materialId: string;
|
|
88
|
+
sourcePath: string;
|
|
89
|
+
kind: "session_log" | "tool_event" | "llm_trace";
|
|
90
|
+
watermark: {
|
|
91
|
+
path: string;
|
|
92
|
+
size: number;
|
|
93
|
+
mtime: number;
|
|
94
|
+
contentHash?: string | undefined;
|
|
95
|
+
};
|
|
96
|
+
capturedAt: string;
|
|
97
|
+
consumerGroup: string;
|
|
98
|
+
sourceAgent?: "claude-code" | "codex" | "cursor" | "gemini" | "kimi" | "kiro" | "opencode" | "generic-chat" | undefined;
|
|
99
|
+
sourceKind?: "runtime_session" | "proxy_trace" | undefined;
|
|
100
|
+
payloadRef?: {
|
|
101
|
+
path: string;
|
|
102
|
+
sha256: string;
|
|
103
|
+
size: number;
|
|
104
|
+
} | undefined;
|
|
105
|
+
payload?: unknown;
|
|
106
|
+
feedsMaterial?: boolean | undefined;
|
|
107
|
+
extensions?: Record<string, unknown> | undefined;
|
|
108
|
+
}>, {
|
|
109
|
+
materialId: string;
|
|
110
|
+
sourceKind: "runtime_session" | "proxy_trace";
|
|
111
|
+
sourcePath: string;
|
|
112
|
+
kind: "session_log" | "tool_event" | "llm_trace";
|
|
113
|
+
watermark: {
|
|
114
|
+
path: string;
|
|
115
|
+
size: number;
|
|
116
|
+
mtime: number;
|
|
117
|
+
contentHash?: string | undefined;
|
|
118
|
+
};
|
|
119
|
+
capturedAt: string;
|
|
120
|
+
consumerGroup: string;
|
|
121
|
+
feedsMaterial: boolean;
|
|
122
|
+
extensions: Record<string, unknown>;
|
|
123
|
+
sourceAgent?: "claude-code" | "codex" | "cursor" | "gemini" | "kimi" | "kiro" | "opencode" | "generic-chat" | undefined;
|
|
124
|
+
payloadRef?: {
|
|
125
|
+
path: string;
|
|
126
|
+
sha256: string;
|
|
127
|
+
size: number;
|
|
128
|
+
} | undefined;
|
|
129
|
+
payload?: unknown;
|
|
130
|
+
}, {
|
|
131
|
+
materialId: string;
|
|
132
|
+
sourcePath: string;
|
|
133
|
+
kind: "session_log" | "tool_event" | "llm_trace";
|
|
134
|
+
watermark: {
|
|
135
|
+
path: string;
|
|
136
|
+
size: number;
|
|
137
|
+
mtime: number;
|
|
138
|
+
contentHash?: string | undefined;
|
|
139
|
+
};
|
|
140
|
+
capturedAt: string;
|
|
141
|
+
consumerGroup: string;
|
|
142
|
+
sourceAgent?: "claude-code" | "codex" | "cursor" | "gemini" | "kimi" | "kiro" | "opencode" | "generic-chat" | undefined;
|
|
143
|
+
sourceKind?: "runtime_session" | "proxy_trace" | undefined;
|
|
144
|
+
payloadRef?: {
|
|
145
|
+
path: string;
|
|
146
|
+
sha256: string;
|
|
147
|
+
size: number;
|
|
148
|
+
} | undefined;
|
|
149
|
+
payload?: unknown;
|
|
150
|
+
feedsMaterial?: boolean | undefined;
|
|
151
|
+
extensions?: Record<string, unknown> | undefined;
|
|
152
|
+
}>;
|
|
153
|
+
export type Material = z.infer<typeof material>;
|
|
154
|
+
/** 增量读取游标 (硬化 A14): 与 Material 解耦. */
|
|
155
|
+
export declare const sourceCursor: z.ZodObject<{
|
|
156
|
+
sourcePath: z.ZodString;
|
|
157
|
+
consumerGroup: z.ZodString;
|
|
158
|
+
byteOffset: z.ZodDefault<z.ZodNumber>;
|
|
159
|
+
lineSeq: z.ZodDefault<z.ZodNumber>;
|
|
160
|
+
lastWatermark: z.ZodOptional<z.ZodObject<{
|
|
161
|
+
path: z.ZodString;
|
|
162
|
+
mtime: z.ZodNumber;
|
|
163
|
+
size: z.ZodNumber;
|
|
164
|
+
contentHash: z.ZodOptional<z.ZodString>;
|
|
165
|
+
}, "strip", z.ZodTypeAny, {
|
|
166
|
+
path: string;
|
|
167
|
+
size: number;
|
|
168
|
+
mtime: number;
|
|
169
|
+
contentHash?: string | undefined;
|
|
170
|
+
}, {
|
|
171
|
+
path: string;
|
|
172
|
+
size: number;
|
|
173
|
+
mtime: number;
|
|
174
|
+
contentHash?: string | undefined;
|
|
175
|
+
}>>;
|
|
176
|
+
}, "strip", z.ZodTypeAny, {
|
|
177
|
+
sourcePath: string;
|
|
178
|
+
consumerGroup: string;
|
|
179
|
+
byteOffset: number;
|
|
180
|
+
lineSeq: number;
|
|
181
|
+
lastWatermark?: {
|
|
182
|
+
path: string;
|
|
183
|
+
size: number;
|
|
184
|
+
mtime: number;
|
|
185
|
+
contentHash?: string | undefined;
|
|
186
|
+
} | undefined;
|
|
187
|
+
}, {
|
|
188
|
+
sourcePath: string;
|
|
189
|
+
consumerGroup: string;
|
|
190
|
+
byteOffset?: number | undefined;
|
|
191
|
+
lineSeq?: number | undefined;
|
|
192
|
+
lastWatermark?: {
|
|
193
|
+
path: string;
|
|
194
|
+
size: number;
|
|
195
|
+
mtime: number;
|
|
196
|
+
contentHash?: string | undefined;
|
|
197
|
+
} | undefined;
|
|
198
|
+
}>;
|
|
199
|
+
export type SourceCursor = z.infer<typeof sourceCursor>;
|
|
200
|
+
/** Material payload inline 上限 (硬化 B): 超走 artifact 引用. */
|
|
201
|
+
export declare const MATERIAL_PAYLOAD_INLINE_MAX_BYTES: number;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ulid, extensions, artifactRef, sourceAgent } from './common.js';
|
|
3
|
+
/** 去重 watermark (批注#15): (path,mtime,size)+contentHash 兜底. */
|
|
4
|
+
export const watermark = z.object({
|
|
5
|
+
path: z.string(),
|
|
6
|
+
mtime: z.number(),
|
|
7
|
+
size: z.number().int().nonnegative(),
|
|
8
|
+
contentHash: z.string().optional(),
|
|
9
|
+
});
|
|
10
|
+
/** 进化原材料 (环境). 来自 runtime session/tool 日志, 或 agent-无关的 proxy LLM-trace (#95). */
|
|
11
|
+
export const material = z.object({
|
|
12
|
+
materialId: ulid,
|
|
13
|
+
/** Runtime agent that produced a session/tool source. Absent for agent-agnostic origins (proxy trace), #95. */
|
|
14
|
+
sourceAgent: sourceAgent.optional(),
|
|
15
|
+
/** Origin class: a runtime agent session, or the proxy gateway's LLM trace (agent-agnostic), #95.
|
|
16
|
+
* Defaults to runtime_session so pre-#95 records (which only ever held sessions) parse unchanged. */
|
|
17
|
+
sourceKind: z.enum(['runtime_session', 'proxy_trace']).default('runtime_session'),
|
|
18
|
+
sourcePath: z.string(),
|
|
19
|
+
kind: z.enum(['session_log', 'tool_event', 'llm_trace']), // 双吃分级 D17; llm_trace = proxy 网关遥测 (#95)
|
|
20
|
+
watermark,
|
|
21
|
+
capturedAt: z.string().datetime(),
|
|
22
|
+
consumerGroup: z.string(),
|
|
23
|
+
payloadRef: artifactRef.optional(),
|
|
24
|
+
payload: z.unknown().optional(), // <=64KB inline; 超走 payloadRef (硬化 B)
|
|
25
|
+
feedsMaterial: z.boolean().default(true),
|
|
26
|
+
extensions,
|
|
27
|
+
}).superRefine((m, ctx) => {
|
|
28
|
+
// Origin self-consistency (#95): a runtime session must name its agent; an agent-agnostic proxy trace must
|
|
29
|
+
// NOT carry one (there is no honest runtime-agent identity to record). Turns the convention into a hard gate.
|
|
30
|
+
if (m.sourceKind === 'runtime_session' && !m.sourceAgent)
|
|
31
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['sourceAgent'], message: 'runtime_session material requires sourceAgent' });
|
|
32
|
+
if (m.sourceKind === 'proxy_trace' && m.sourceAgent)
|
|
33
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['sourceAgent'], message: 'proxy_trace material is agent-agnostic and must not carry sourceAgent' });
|
|
34
|
+
// kind ↔ origin (#100 bugbot): llm_trace is proxy-only; runtime sessions are session_log/tool_event. Without
|
|
35
|
+
// this, a record could be llm_trace yet runtime_session+agent, contradicting the agent-agnostic trace model.
|
|
36
|
+
if (m.sourceKind === 'proxy_trace' && m.kind !== 'llm_trace')
|
|
37
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['kind'], message: 'proxy_trace material must have kind llm_trace' });
|
|
38
|
+
if (m.sourceKind === 'runtime_session' && m.kind === 'llm_trace')
|
|
39
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, path: ['kind'], message: 'llm_trace kind is proxy-only; a runtime_session cannot be llm_trace' });
|
|
40
|
+
});
|
|
41
|
+
/** 增量读取游标 (硬化 A14): 与 Material 解耦. */
|
|
42
|
+
export const sourceCursor = z.object({
|
|
43
|
+
sourcePath: z.string(),
|
|
44
|
+
consumerGroup: z.string(),
|
|
45
|
+
byteOffset: z.number().int().nonnegative().default(0),
|
|
46
|
+
lineSeq: z.number().int().nonnegative().default(0),
|
|
47
|
+
lastWatermark: watermark.optional(),
|
|
48
|
+
});
|
|
49
|
+
/** Material payload inline 上限 (硬化 B): 超走 artifact 引用. */
|
|
50
|
+
export const MATERIAL_PAYLOAD_INLINE_MAX_BYTES = 64 * 1024;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/** value 命名因子, 禁黑盒 (军杰 §5.3). */
|
|
3
|
+
export declare const valueFactors: z.ZodObject<{
|
|
4
|
+
severity: z.ZodDefault<z.ZodNumber>;
|
|
5
|
+
reach: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
strategicFit: z.ZodDefault<z.ZodNumber>;
|
|
7
|
+
novelty: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
costEst: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
severity: number;
|
|
11
|
+
reach: number;
|
|
12
|
+
strategicFit: number;
|
|
13
|
+
novelty: number;
|
|
14
|
+
costEst: number;
|
|
15
|
+
}, {
|
|
16
|
+
severity?: number | undefined;
|
|
17
|
+
reach?: number | undefined;
|
|
18
|
+
strategicFit?: number | undefined;
|
|
19
|
+
novelty?: number | undefined;
|
|
20
|
+
costEst?: number | undefined;
|
|
21
|
+
}>;
|
|
22
|
+
export type ValueFactors = z.infer<typeof valueFactors>;
|
|
23
|
+
export declare const problemPattern: z.ZodObject<{
|
|
24
|
+
id: z.ZodString;
|
|
25
|
+
signature: z.ZodString;
|
|
26
|
+
signatureV: z.ZodDefault<z.ZodNumber>;
|
|
27
|
+
firstSeenAt: z.ZodString;
|
|
28
|
+
lastSeenAt: z.ZodString;
|
|
29
|
+
occurrences: z.ZodDefault<z.ZodNumber>;
|
|
30
|
+
linkedSignals: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
31
|
+
resolvedBy: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
32
|
+
status: z.ZodDefault<z.ZodEnum<["open", "cooling", "resolved", "abandoned"]>>;
|
|
33
|
+
value: z.ZodDefault<z.ZodObject<{
|
|
34
|
+
severity: z.ZodDefault<z.ZodNumber>;
|
|
35
|
+
reach: z.ZodDefault<z.ZodNumber>;
|
|
36
|
+
strategicFit: z.ZodDefault<z.ZodNumber>;
|
|
37
|
+
novelty: z.ZodDefault<z.ZodNumber>;
|
|
38
|
+
costEst: z.ZodDefault<z.ZodNumber>;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
severity: number;
|
|
41
|
+
reach: number;
|
|
42
|
+
strategicFit: number;
|
|
43
|
+
novelty: number;
|
|
44
|
+
costEst: number;
|
|
45
|
+
}, {
|
|
46
|
+
severity?: number | undefined;
|
|
47
|
+
reach?: number | undefined;
|
|
48
|
+
strategicFit?: number | undefined;
|
|
49
|
+
novelty?: number | undefined;
|
|
50
|
+
costEst?: number | undefined;
|
|
51
|
+
}>>;
|
|
52
|
+
consecutiveFailures: z.ZodDefault<z.ZodNumber>;
|
|
53
|
+
cooldownUntil: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
54
|
+
extensions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
55
|
+
}, "strip", z.ZodTypeAny, {
|
|
56
|
+
value: {
|
|
57
|
+
severity: number;
|
|
58
|
+
reach: number;
|
|
59
|
+
strategicFit: number;
|
|
60
|
+
novelty: number;
|
|
61
|
+
costEst: number;
|
|
62
|
+
};
|
|
63
|
+
status: "open" | "cooling" | "resolved" | "abandoned";
|
|
64
|
+
extensions: Record<string, unknown>;
|
|
65
|
+
signatureV: number;
|
|
66
|
+
id: string;
|
|
67
|
+
signature: string;
|
|
68
|
+
firstSeenAt: string;
|
|
69
|
+
lastSeenAt: string;
|
|
70
|
+
occurrences: number;
|
|
71
|
+
linkedSignals: string[];
|
|
72
|
+
resolvedBy: string | null;
|
|
73
|
+
consecutiveFailures: number;
|
|
74
|
+
cooldownUntil: string | null;
|
|
75
|
+
}, {
|
|
76
|
+
id: string;
|
|
77
|
+
signature: string;
|
|
78
|
+
firstSeenAt: string;
|
|
79
|
+
lastSeenAt: string;
|
|
80
|
+
value?: {
|
|
81
|
+
severity?: number | undefined;
|
|
82
|
+
reach?: number | undefined;
|
|
83
|
+
strategicFit?: number | undefined;
|
|
84
|
+
novelty?: number | undefined;
|
|
85
|
+
costEst?: number | undefined;
|
|
86
|
+
} | undefined;
|
|
87
|
+
status?: "open" | "cooling" | "resolved" | "abandoned" | undefined;
|
|
88
|
+
extensions?: Record<string, unknown> | undefined;
|
|
89
|
+
signatureV?: number | undefined;
|
|
90
|
+
occurrences?: number | undefined;
|
|
91
|
+
linkedSignals?: string[] | undefined;
|
|
92
|
+
resolvedBy?: string | null | undefined;
|
|
93
|
+
consecutiveFailures?: number | undefined;
|
|
94
|
+
cooldownUntil?: string | null | undefined;
|
|
95
|
+
}>;
|
|
96
|
+
export type ProblemPattern = z.infer<typeof problemPattern>;
|
|
97
|
+
export declare const problemInstance: z.ZodObject<{
|
|
98
|
+
instanceId: z.ZodString;
|
|
99
|
+
signature: z.ZodString;
|
|
100
|
+
signatureV: z.ZodDefault<z.ZodNumber>;
|
|
101
|
+
occurredAt: z.ZodString;
|
|
102
|
+
linkedSignal: z.ZodOptional<z.ZodString>;
|
|
103
|
+
extensions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
104
|
+
}, "strip", z.ZodTypeAny, {
|
|
105
|
+
extensions: Record<string, unknown>;
|
|
106
|
+
signatureV: number;
|
|
107
|
+
signature: string;
|
|
108
|
+
instanceId: string;
|
|
109
|
+
occurredAt: string;
|
|
110
|
+
linkedSignal?: string | undefined;
|
|
111
|
+
}, {
|
|
112
|
+
signature: string;
|
|
113
|
+
instanceId: string;
|
|
114
|
+
occurredAt: string;
|
|
115
|
+
extensions?: Record<string, unknown> | undefined;
|
|
116
|
+
signatureV?: number | undefined;
|
|
117
|
+
linkedSignal?: string | undefined;
|
|
118
|
+
}>;
|
|
119
|
+
export type ProblemInstance = z.infer<typeof problemInstance>;
|
|
120
|
+
/** 解法边界 = gene 唯一登场处 (军杰 §4.4). */
|
|
121
|
+
export declare const resolutionScope: z.ZodObject<{
|
|
122
|
+
scopeId: z.ZodString;
|
|
123
|
+
targetProblems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
124
|
+
proposedByGene: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
125
|
+
boundary: z.ZodObject<{
|
|
126
|
+
codePaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
127
|
+
dataSurfaces: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
128
|
+
blastRadius: z.ZodDefault<z.ZodEnum<["file", "module", "package", "system"]>>;
|
|
129
|
+
}, "strip", z.ZodTypeAny, {
|
|
130
|
+
codePaths: string[];
|
|
131
|
+
dataSurfaces: string[];
|
|
132
|
+
blastRadius: "file" | "module" | "package" | "system";
|
|
133
|
+
}, {
|
|
134
|
+
codePaths?: string[] | undefined;
|
|
135
|
+
dataSurfaces?: string[] | undefined;
|
|
136
|
+
blastRadius?: "file" | "module" | "package" | "system" | undefined;
|
|
137
|
+
}>;
|
|
138
|
+
extensions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
139
|
+
}, "strip", z.ZodTypeAny, {
|
|
140
|
+
extensions: Record<string, unknown>;
|
|
141
|
+
scopeId: string;
|
|
142
|
+
targetProblems: string[];
|
|
143
|
+
proposedByGene: string | null;
|
|
144
|
+
boundary: {
|
|
145
|
+
codePaths: string[];
|
|
146
|
+
dataSurfaces: string[];
|
|
147
|
+
blastRadius: "file" | "module" | "package" | "system";
|
|
148
|
+
};
|
|
149
|
+
}, {
|
|
150
|
+
scopeId: string;
|
|
151
|
+
boundary: {
|
|
152
|
+
codePaths?: string[] | undefined;
|
|
153
|
+
dataSurfaces?: string[] | undefined;
|
|
154
|
+
blastRadius?: "file" | "module" | "package" | "system" | undefined;
|
|
155
|
+
};
|
|
156
|
+
extensions?: Record<string, unknown> | undefined;
|
|
157
|
+
targetProblems?: string[] | undefined;
|
|
158
|
+
proposedByGene?: string | null | undefined;
|
|
159
|
+
}>;
|
|
160
|
+
export type ResolutionScope = z.infer<typeof resolutionScope>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { extensions, blastRadius } from './common.js';
|
|
3
|
+
/** value 命名因子, 禁黑盒 (军杰 §5.3). */
|
|
4
|
+
export const valueFactors = z.object({
|
|
5
|
+
severity: z.number().default(0),
|
|
6
|
+
reach: z.number().default(0),
|
|
7
|
+
strategicFit: z.number().default(0),
|
|
8
|
+
novelty: z.number().default(0),
|
|
9
|
+
costEst: z.number().default(0),
|
|
10
|
+
});
|
|
11
|
+
export const problemPattern = z.object({
|
|
12
|
+
id: z.string(),
|
|
13
|
+
signature: z.string(),
|
|
14
|
+
signatureV: z.number().int().positive().default(1),
|
|
15
|
+
firstSeenAt: z.string().datetime(),
|
|
16
|
+
lastSeenAt: z.string().datetime(),
|
|
17
|
+
occurrences: z.number().int().nonnegative().default(0),
|
|
18
|
+
linkedSignals: z.array(z.string()).default([]),
|
|
19
|
+
resolvedBy: z.string().nullable().default(null),
|
|
20
|
+
status: z.enum(['open', 'cooling', 'resolved', 'abandoned']).default('open'),
|
|
21
|
+
value: valueFactors.default({}),
|
|
22
|
+
consecutiveFailures: z.number().int().nonnegative().default(0),
|
|
23
|
+
cooldownUntil: z.string().datetime().nullable().default(null),
|
|
24
|
+
extensions,
|
|
25
|
+
});
|
|
26
|
+
export const problemInstance = z.object({
|
|
27
|
+
instanceId: z.string(),
|
|
28
|
+
signature: z.string(),
|
|
29
|
+
signatureV: z.number().int().positive().default(1),
|
|
30
|
+
occurredAt: z.string().datetime(),
|
|
31
|
+
linkedSignal: z.string().optional(),
|
|
32
|
+
extensions,
|
|
33
|
+
});
|
|
34
|
+
/** 解法边界 = gene 唯一登场处 (军杰 §4.4). */
|
|
35
|
+
export const resolutionScope = z.object({
|
|
36
|
+
scopeId: z.string(),
|
|
37
|
+
targetProblems: z.array(z.string()).default([]),
|
|
38
|
+
proposedByGene: z.string().nullable().default(null),
|
|
39
|
+
boundary: z.object({
|
|
40
|
+
codePaths: z.array(z.string()).default([]),
|
|
41
|
+
dataSurfaces: z.array(z.string()).default([]),
|
|
42
|
+
blastRadius: blastRadius.default('module'),
|
|
43
|
+
}),
|
|
44
|
+
extensions,
|
|
45
|
+
});
|