claude-soul-server 0.1.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/engine/context-assembler.d.ts +3 -0
- package/dist/engine/context-assembler.js +161 -0
- package/dist/engine/context-assembler.js.map +1 -0
- package/dist/engine/exemplar-selector.d.ts +6 -0
- package/dist/engine/exemplar-selector.js +21 -0
- package/dist/engine/exemplar-selector.js.map +1 -0
- package/dist/engine/framework-engine.d.ts +61 -0
- package/dist/engine/framework-engine.js +351 -0
- package/dist/engine/framework-engine.js.map +1 -0
- package/dist/engine/framework-renderer.d.ts +17 -0
- package/dist/engine/framework-renderer.js +161 -0
- package/dist/engine/framework-renderer.js.map +1 -0
- package/dist/engine/framework-seeds.d.ts +2 -0
- package/dist/engine/framework-seeds.js +265 -0
- package/dist/engine/framework-seeds.js.map +1 -0
- package/dist/engine/lesson-store.d.ts +8 -0
- package/dist/engine/lesson-store.js +40 -0
- package/dist/engine/lesson-store.js.map +1 -0
- package/dist/engine/meta-optimizer.d.ts +37 -0
- package/dist/engine/meta-optimizer.js +140 -0
- package/dist/engine/meta-optimizer.js.map +1 -0
- package/dist/engine/prompt-builder.d.ts +31 -0
- package/dist/engine/prompt-builder.js +385 -0
- package/dist/engine/prompt-builder.js.map +1 -0
- package/dist/engine/reflection-runner.d.ts +18 -0
- package/dist/engine/reflection-runner.js +313 -0
- package/dist/engine/reflection-runner.js.map +1 -0
- package/dist/engine/shadow-transform.d.ts +1 -0
- package/dist/engine/shadow-transform.js +41 -0
- package/dist/engine/shadow-transform.js.map +1 -0
- package/dist/engine/signal-extractor.d.ts +14 -0
- package/dist/engine/signal-extractor.js +204 -0
- package/dist/engine/signal-extractor.js.map +1 -0
- package/dist/engine/signal-store.d.ts +5 -0
- package/dist/engine/signal-store.js +56 -0
- package/dist/engine/signal-store.js.map +1 -0
- package/dist/engine/snapshot-manager.d.ts +3 -0
- package/dist/engine/snapshot-manager.js +52 -0
- package/dist/engine/snapshot-manager.js.map +1 -0
- package/dist/engine/state-engine.d.ts +34 -0
- package/dist/engine/state-engine.js +127 -0
- package/dist/engine/state-engine.js.map +1 -0
- package/dist/engine/tension-detector.d.ts +10 -0
- package/dist/engine/tension-detector.js +77 -0
- package/dist/engine/tension-detector.js.map +1 -0
- package/dist/engine/token-budget.d.ts +12 -0
- package/dist/engine/token-budget.js +44 -0
- package/dist/engine/token-budget.js.map +1 -0
- package/dist/hooks/on-stop.d.ts +11 -0
- package/dist/hooks/on-stop.js +153 -0
- package/dist/hooks/on-stop.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +171 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/soul-activate.d.ts +1 -0
- package/dist/tools/soul-activate.js +149 -0
- package/dist/tools/soul-activate.js.map +1 -0
- package/dist/tools/soul-context.d.ts +1 -0
- package/dist/tools/soul-context.js +31 -0
- package/dist/tools/soul-context.js.map +1 -0
- package/dist/tools/soul-evaluate.d.ts +8 -0
- package/dist/tools/soul-evaluate.js +97 -0
- package/dist/tools/soul-evaluate.js.map +1 -0
- package/dist/tools/soul-framework.d.ts +1 -0
- package/dist/tools/soul-framework.js +66 -0
- package/dist/tools/soul-framework.js.map +1 -0
- package/dist/tools/soul-read.d.ts +1 -0
- package/dist/tools/soul-read.js +24 -0
- package/dist/tools/soul-read.js.map +1 -0
- package/dist/tools/soul-reflect.d.ts +1 -0
- package/dist/tools/soul-reflect.js +82 -0
- package/dist/tools/soul-reflect.js.map +1 -0
- package/dist/tools/soul-signal.d.ts +8 -0
- package/dist/tools/soul-signal.js +119 -0
- package/dist/tools/soul-signal.js.map +1 -0
- package/dist/tools/soul-status.d.ts +1 -0
- package/dist/tools/soul-status.js +130 -0
- package/dist/tools/soul-status.js.map +1 -0
- package/dist/tools/soul-write.d.ts +1 -0
- package/dist/tools/soul-write.js +26 -0
- package/dist/tools/soul-write.js.map +1 -0
- package/dist/types/config-types.d.ts +45 -0
- package/dist/types/config-types.js +21 -0
- package/dist/types/config-types.js.map +1 -0
- package/dist/types/learning-types.d.ts +166 -0
- package/dist/types/learning-types.js +2 -0
- package/dist/types/learning-types.js.map +1 -0
- package/dist/util/files.d.ts +20 -0
- package/dist/util/files.js +54 -0
- package/dist/util/files.js.map +1 -0
- package/dist/util/llm.d.ts +6 -0
- package/dist/util/llm.js +76 -0
- package/dist/util/llm.js.map +1 -0
- package/dist/util/tokens.d.ts +1 -0
- package/dist/util/tokens.js +4 -0
- package/dist/util/tokens.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { FrameworkEngine } from "./framework-engine.js";
|
|
2
|
+
import { renderFrameworksToMarkdown } from "./framework-renderer.js";
|
|
3
|
+
import { buildQuickReflectionPrompt, buildDeepReflectionPrompt, buildMetaReflectionPrompt } from "./prompt-builder.js";
|
|
4
|
+
import { createSnapshot } from "./snapshot-manager.js";
|
|
5
|
+
import { readSignals, clearSignals } from "./signal-store.js";
|
|
6
|
+
import { detectTensions } from "./tension-detector.js";
|
|
7
|
+
import { updateMetaAfterReflection, loadMeta, getPhaseGuidance } from "./meta-optimizer.js";
|
|
8
|
+
import { readFileSafe, soulFilePath, loadConfig, TENSIONS_PATH, LESSONS_PATH, EXEMPLARS_PATH, } from "../util/files.js";
|
|
9
|
+
import { readJsonSafe, writeJsonAtomic } from "../util/files.js";
|
|
10
|
+
import fs from "node:fs/promises";
|
|
11
|
+
import { callClaude, parseLlmJson as parseReflectionJson } from "../util/llm.js";
|
|
12
|
+
/** Apply tension updates from a parsed reflection response. Returns count of updates. */
|
|
13
|
+
async function applyTensionUpdates(updates, tensionState) {
|
|
14
|
+
if (updates.length === 0)
|
|
15
|
+
return 0;
|
|
16
|
+
for (const tu of updates) {
|
|
17
|
+
const existing = tensionState.tensions.find((t) => (t.frameworkA === tu.frameworkA && t.frameworkB === tu.frameworkB) ||
|
|
18
|
+
(t.frameworkA === tu.frameworkB && t.frameworkB === tu.frameworkA));
|
|
19
|
+
if (existing) {
|
|
20
|
+
existing.status = tu.status;
|
|
21
|
+
if (tu.preferredContext && tu.preferred) {
|
|
22
|
+
existing.preferredInContext[tu.preferredContext] = {
|
|
23
|
+
preferred: tu.preferred,
|
|
24
|
+
confirmedCount: (existing.preferredInContext[tu.preferredContext]?.confirmedCount ?? 0) + 1,
|
|
25
|
+
evidence: [
|
|
26
|
+
...(existing.preferredInContext[tu.preferredContext]?.evidence ?? []),
|
|
27
|
+
tu.evidence,
|
|
28
|
+
].slice(-5),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
tensionState.tensions.push({
|
|
34
|
+
id: `ten-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
|
|
35
|
+
frameworkA: tu.frameworkA,
|
|
36
|
+
frameworkB: tu.frameworkB,
|
|
37
|
+
description: `${tu.frameworkA} vs ${tu.frameworkB}`,
|
|
38
|
+
preferredInContext: tu.preferredContext && tu.preferred
|
|
39
|
+
? {
|
|
40
|
+
[tu.preferredContext]: {
|
|
41
|
+
preferred: tu.preferred,
|
|
42
|
+
confirmedCount: 1,
|
|
43
|
+
evidence: [tu.evidence],
|
|
44
|
+
},
|
|
45
|
+
}
|
|
46
|
+
: {},
|
|
47
|
+
status: tu.status ?? "detected",
|
|
48
|
+
detectedAt: Date.now(),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
await writeJsonAtomic(TENSIONS_PATH, tensionState);
|
|
53
|
+
return updates.length;
|
|
54
|
+
}
|
|
55
|
+
/** Apply framework evolutions (refine/retire). Returns {updated, retired} counts. */
|
|
56
|
+
async function applyFrameworkEvolutions(evolutions, engine) {
|
|
57
|
+
let updated = 0;
|
|
58
|
+
let retired = 0;
|
|
59
|
+
for (const evo of evolutions) {
|
|
60
|
+
if (evo.action === "retire") {
|
|
61
|
+
await engine.retireFramework(evo.frameworkId, evo.detail);
|
|
62
|
+
retired++;
|
|
63
|
+
}
|
|
64
|
+
else if (evo.action === "refine") {
|
|
65
|
+
const changes = {};
|
|
66
|
+
if (evo.detail)
|
|
67
|
+
changes.description = evo.detail;
|
|
68
|
+
if (evo.status) {
|
|
69
|
+
const validStatuses = ["active", "questioning", "retired"];
|
|
70
|
+
const newStatus = validStatuses.find((s) => s === evo.status);
|
|
71
|
+
if (newStatus)
|
|
72
|
+
changes.status = newStatus;
|
|
73
|
+
}
|
|
74
|
+
await engine.evolveFramework(evo.frameworkId, changes);
|
|
75
|
+
updated++;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return { updated, retired };
|
|
79
|
+
}
|
|
80
|
+
/** Add newly discovered frameworks. Returns count. */
|
|
81
|
+
async function applyNewFrameworks(frameworks, engine, maxConfidence) {
|
|
82
|
+
for (const nf of frameworks) {
|
|
83
|
+
await engine.addDiscoveredFramework({
|
|
84
|
+
...nf,
|
|
85
|
+
confidence: Math.min(nf.confidence, maxConfidence),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return frameworks.length;
|
|
89
|
+
}
|
|
90
|
+
/** Finalize a reflection: re-render FRAMEWORKS.md, bump meta counters, write log. */
|
|
91
|
+
async function finalizeReflection(engine, tier, result, extraLogLines) {
|
|
92
|
+
const updatedStore = await engine.loadStore();
|
|
93
|
+
const frameworksMd = renderFrameworksToMarkdown(updatedStore);
|
|
94
|
+
await fs.writeFile(soulFilePath("FRAMEWORKS.md"), frameworksMd, "utf-8");
|
|
95
|
+
updatedStore.meta.reflectionCount++;
|
|
96
|
+
updatedStore.meta.lastReflectionAt = Date.now();
|
|
97
|
+
await engine.saveStore(updatedStore);
|
|
98
|
+
await updateMetaAfterReflection(updatedStore);
|
|
99
|
+
// Log
|
|
100
|
+
const date = new Date().toISOString().slice(0, 10);
|
|
101
|
+
const logPath = `${soulFilePath("..").replace("/files", "/reflections")}/${date}.md`;
|
|
102
|
+
const logEntry = [
|
|
103
|
+
`\n## ${tier.toUpperCase()} Reflection — ${new Date().toISOString()}`,
|
|
104
|
+
result.signalsProcessed > 0 ? `- Signals processed: ${result.signalsProcessed}` : "",
|
|
105
|
+
`- Frameworks updated: ${result.frameworksUpdated}`,
|
|
106
|
+
result.newFrameworks > 0 ? `- New frameworks: ${result.newFrameworks}` : "",
|
|
107
|
+
result.retired > 0 ? `- Retired: ${result.retired}` : "",
|
|
108
|
+
result.lessonsGenerated > 0 ? `- Lessons: ${result.lessonsGenerated}` : "",
|
|
109
|
+
result.exemplarsStored > 0 ? `- Exemplars: ${result.exemplarsStored}` : "",
|
|
110
|
+
result.tensionsUpdated > 0 ? `- Tensions: ${result.tensionsUpdated}` : "",
|
|
111
|
+
...(extraLogLines ?? []),
|
|
112
|
+
result.insight ? `- Insight: ${result.insight}` : "",
|
|
113
|
+
"",
|
|
114
|
+
]
|
|
115
|
+
.filter(Boolean)
|
|
116
|
+
.join("\n");
|
|
117
|
+
await fs.appendFile(logPath, logEntry, "utf-8").catch(() => { });
|
|
118
|
+
}
|
|
119
|
+
export async function runReflection(tier) {
|
|
120
|
+
const config = await loadConfig();
|
|
121
|
+
const frameworkEngine = new FrameworkEngine();
|
|
122
|
+
const store = await frameworkEngine.initialize();
|
|
123
|
+
const signals = await readSignals();
|
|
124
|
+
if (signals.length === 0) {
|
|
125
|
+
return {
|
|
126
|
+
tier,
|
|
127
|
+
frameworksUpdated: 0,
|
|
128
|
+
newFrameworks: 0,
|
|
129
|
+
retired: 0,
|
|
130
|
+
lessonsGenerated: 0,
|
|
131
|
+
exemplarsStored: 0,
|
|
132
|
+
tensionsUpdated: 0,
|
|
133
|
+
signalsProcessed: 0,
|
|
134
|
+
snapshot: "",
|
|
135
|
+
insight: null,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const snapshot = await createSnapshot();
|
|
139
|
+
// Build prompt
|
|
140
|
+
let prompt;
|
|
141
|
+
if (tier === "quick") {
|
|
142
|
+
prompt = buildQuickReflectionPrompt({ signals, frameworks: store.frameworks });
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const shadow = await readFileSafe(soulFilePath("SHADOW.md"));
|
|
146
|
+
const growth = await readFileSafe(soulFilePath("GROWTH.md"));
|
|
147
|
+
const tensionState = await readJsonSafe(TENSIONS_PATH, { tensions: [] });
|
|
148
|
+
const meta = await loadMeta();
|
|
149
|
+
prompt = buildDeepReflectionPrompt({
|
|
150
|
+
signals,
|
|
151
|
+
frameworks: store.frameworks,
|
|
152
|
+
tensions: tensionState.tensions,
|
|
153
|
+
shadow,
|
|
154
|
+
growth,
|
|
155
|
+
phaseGuidance: getPhaseGuidance(meta),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const model = tier === "quick" ? config.reflection.quickModel : config.reflection.deepModel;
|
|
159
|
+
const responseText = await callClaude(prompt, model);
|
|
160
|
+
const parsed = parseReflectionJson(responseText);
|
|
161
|
+
if (!parsed)
|
|
162
|
+
throw new Error("Failed to parse reflection response as JSON");
|
|
163
|
+
const result = {
|
|
164
|
+
tier,
|
|
165
|
+
frameworksUpdated: 0,
|
|
166
|
+
newFrameworks: 0,
|
|
167
|
+
retired: 0,
|
|
168
|
+
lessonsGenerated: 0,
|
|
169
|
+
exemplarsStored: 0,
|
|
170
|
+
tensionsUpdated: 0,
|
|
171
|
+
signalsProcessed: signals.length,
|
|
172
|
+
snapshot,
|
|
173
|
+
insight: null,
|
|
174
|
+
};
|
|
175
|
+
// Apply framework tests
|
|
176
|
+
const frameworkTests = parsed.frameworkTests ?? [];
|
|
177
|
+
for (const test of frameworkTests) {
|
|
178
|
+
if (test.result === "irrelevant")
|
|
179
|
+
continue;
|
|
180
|
+
if (test.result === "confirmed" || test.result === "contradicted") {
|
|
181
|
+
const contextType = test.contextType === "external" ? "external"
|
|
182
|
+
: test.contextType === "self-referential" ? "self-referential"
|
|
183
|
+
: "unknown";
|
|
184
|
+
await frameworkEngine.recordEvidence(test.frameworkId, {
|
|
185
|
+
timestamp: Date.now(),
|
|
186
|
+
type: test.result,
|
|
187
|
+
context: test.evidence,
|
|
188
|
+
contextType,
|
|
189
|
+
});
|
|
190
|
+
result.frameworksUpdated++;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Apply shared mutations
|
|
194
|
+
result.newFrameworks = await applyNewFrameworks(parsed.newFrameworks ?? [], frameworkEngine, 0.4);
|
|
195
|
+
const evoResult = await applyFrameworkEvolutions(parsed.frameworkEvolutions ?? [], frameworkEngine);
|
|
196
|
+
result.frameworksUpdated += evoResult.updated;
|
|
197
|
+
result.retired = evoResult.retired;
|
|
198
|
+
// Deep reflection: apply lessons, exemplars, tensions
|
|
199
|
+
if (tier === "deep") {
|
|
200
|
+
const lessons = parsed.lessons ?? [];
|
|
201
|
+
if (lessons.length > 0) {
|
|
202
|
+
const existingLessons = await readJsonSafe(LESSONS_PATH, []);
|
|
203
|
+
const newLessons = lessons.map((l) => ({
|
|
204
|
+
id: `les-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
|
|
205
|
+
lesson: l.lesson, context: l.context, confidence: l.confidence,
|
|
206
|
+
evidence: [l.evidence], createdAt: Date.now(),
|
|
207
|
+
}));
|
|
208
|
+
await writeJsonAtomic(LESSONS_PATH, [...existingLessons, ...newLessons].slice(-config.lessons.maxCount));
|
|
209
|
+
result.lessonsGenerated = newLessons.length;
|
|
210
|
+
}
|
|
211
|
+
const exemplarCandidates = parsed.exemplarCandidates ?? [];
|
|
212
|
+
if (exemplarCandidates.length > 0) {
|
|
213
|
+
const existingExemplars = await readJsonSafe(EXEMPLARS_PATH, []);
|
|
214
|
+
const activeNames = store.frameworks.filter((f) => f.status === "active").map((f) => f.name);
|
|
215
|
+
const newExemplars = exemplarCandidates.map((e) => ({
|
|
216
|
+
id: `ex-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
|
|
217
|
+
context: e.context.slice(0, 200), responseExcerpt: e.responseExcerpt.slice(0, 500),
|
|
218
|
+
frameworksActive: activeNames.slice(0, 5), domain: "general",
|
|
219
|
+
signals: e.signals, createdAt: Date.now(),
|
|
220
|
+
}));
|
|
221
|
+
await writeJsonAtomic(EXEMPLARS_PATH, [...existingExemplars, ...newExemplars].slice(-config.exemplars.maxCount));
|
|
222
|
+
result.exemplarsStored = newExemplars.length;
|
|
223
|
+
}
|
|
224
|
+
const tensionState = await readJsonSafe(TENSIONS_PATH, { tensions: [] });
|
|
225
|
+
result.tensionsUpdated = await applyTensionUpdates(parsed.tensionUpdates ?? [], tensionState);
|
|
226
|
+
// Auto-detect tensions
|
|
227
|
+
const updatedStore = await frameworkEngine.loadStore();
|
|
228
|
+
const newTensions = await detectTensions(updatedStore.frameworks);
|
|
229
|
+
result.tensionsUpdated += newTensions.length;
|
|
230
|
+
}
|
|
231
|
+
// Store insight
|
|
232
|
+
result.insight = parsed.emergentInsight ?? parsed.soulEvolution ?? null;
|
|
233
|
+
const meta = await loadMeta();
|
|
234
|
+
if (meta.phase !== "apprentice") {
|
|
235
|
+
result.insight = `[Phase: ${meta.phase}] ${result.insight ?? ""}`.trim();
|
|
236
|
+
}
|
|
237
|
+
await finalizeReflection(frameworkEngine, tier, result);
|
|
238
|
+
await clearSignals();
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Run a meta-reflection — audits framework state coherence, confidence calibration,
|
|
243
|
+
* redundancy, and self-referential evidence. Does not consume signals.
|
|
244
|
+
*/
|
|
245
|
+
export async function runMetaReflection() {
|
|
246
|
+
const config = await loadConfig();
|
|
247
|
+
const frameworkEngine = new FrameworkEngine();
|
|
248
|
+
const store = await frameworkEngine.initialize();
|
|
249
|
+
const snapshot = await createSnapshot();
|
|
250
|
+
const growth = await readFileSafe(soulFilePath("GROWTH.md"));
|
|
251
|
+
const tensionState = await readJsonSafe(TENSIONS_PATH, { tensions: [] });
|
|
252
|
+
const meta = await loadMeta();
|
|
253
|
+
const prompt = buildMetaReflectionPrompt({
|
|
254
|
+
frameworks: store.frameworks,
|
|
255
|
+
tensions: tensionState.tensions,
|
|
256
|
+
growth,
|
|
257
|
+
recentReflectionCount: meta.reflectionCount,
|
|
258
|
+
});
|
|
259
|
+
const responseText = await callClaude(prompt, config.reflection.deepModel);
|
|
260
|
+
const parsed = parseReflectionJson(responseText);
|
|
261
|
+
if (!parsed)
|
|
262
|
+
throw new Error("Failed to parse meta-reflection response as JSON");
|
|
263
|
+
const result = {
|
|
264
|
+
tier: "meta",
|
|
265
|
+
frameworksUpdated: 0,
|
|
266
|
+
newFrameworks: 0,
|
|
267
|
+
retired: 0,
|
|
268
|
+
lessonsGenerated: 0,
|
|
269
|
+
exemplarsStored: 0,
|
|
270
|
+
tensionsUpdated: 0,
|
|
271
|
+
signalsProcessed: 0,
|
|
272
|
+
snapshot,
|
|
273
|
+
insight: null,
|
|
274
|
+
};
|
|
275
|
+
// Apply tier adjustments (meta-specific: updates evidence tiers based on audit)
|
|
276
|
+
const adjustments = parsed.tierAdjustments ?? [];
|
|
277
|
+
let tierChanges = 0;
|
|
278
|
+
for (const adj of adjustments) {
|
|
279
|
+
const fw = store.frameworks.find((f) => f.id === adj.frameworkId);
|
|
280
|
+
if (!fw)
|
|
281
|
+
continue;
|
|
282
|
+
const validTiers = ["hypothesis", "observed", "validated"];
|
|
283
|
+
const newTier = validTiers.find((t) => t === adj.recommendedTier);
|
|
284
|
+
if (newTier && newTier !== fw.evidenceTier) {
|
|
285
|
+
fw.evidenceTier = newTier;
|
|
286
|
+
fw.version++;
|
|
287
|
+
tierChanges++;
|
|
288
|
+
result.frameworksUpdated++;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
// After tier adjustments, recalculate statuses (promotion/demotion)
|
|
292
|
+
if (tierChanges > 0) {
|
|
293
|
+
frameworkEngine.recalculateAllStatuses(store);
|
|
294
|
+
await frameworkEngine.saveStore(store);
|
|
295
|
+
}
|
|
296
|
+
// Apply shared mutations
|
|
297
|
+
const evoResult = await applyFrameworkEvolutions(parsed.frameworkEvolutions ?? [], frameworkEngine);
|
|
298
|
+
result.frameworksUpdated += evoResult.updated;
|
|
299
|
+
result.retired = evoResult.retired;
|
|
300
|
+
result.newFrameworks = await applyNewFrameworks(parsed.newFrameworks ?? [], frameworkEngine, 0.3);
|
|
301
|
+
result.tensionsUpdated = await applyTensionUpdates(parsed.tensionUpdates ?? [], tensionState);
|
|
302
|
+
result.insight = parsed.emergentInsight ?? null;
|
|
303
|
+
// Meta-specific log lines
|
|
304
|
+
const selfRefFlags = parsed.selfReferentialFlags ?? [];
|
|
305
|
+
const redundancyFlags = parsed.redundancyFlags ?? [];
|
|
306
|
+
await finalizeReflection(frameworkEngine, "meta", result, [
|
|
307
|
+
`- Confidence adjustments: ${adjustments.length}`,
|
|
308
|
+
`- Self-referential flags: ${selfRefFlags.length}`,
|
|
309
|
+
`- Redundancy flags: ${redundancyFlags.length}`,
|
|
310
|
+
]);
|
|
311
|
+
return result;
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=reflection-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection-runner.js","sourceRoot":"","sources":["../../src/engine/reflection-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAyBjF,yFAAyF;AACzF,KAAK,UAAU,mBAAmB,CAChC,OAA8B,EAC9B,YAA0B;IAE1B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEnC,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,CAAC;YAClE,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,CAAC,CACrE,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,MAAgC,CAAC;YACtD,IAAI,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBACxC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG;oBACjD,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,cAAc,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC;oBAC3F,QAAQ,EAAE;wBACR,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;wBACrE,EAAE,CAAC,QAAQ;qBACZ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACzB,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBACjE,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,OAAO,EAAE,CAAC,UAAU,EAAE;gBACnD,kBAAkB,EAAE,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC,SAAS;oBACrD,CAAC,CAAC;wBACE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE;4BACrB,SAAS,EAAE,EAAE,CAAC,SAAS;4BACvB,cAAc,EAAE,CAAC;4BACjB,QAAQ,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;yBACxB;qBACF;oBACH,CAAC,CAAC,EAAE;gBACN,MAAM,EAAG,EAAE,CAAC,MAA6D,IAAI,UAAU;gBACvF,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,eAAe,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,qFAAqF;AACrF,KAAK,UAAU,wBAAwB,CACrC,UAAsC,EACtC,MAAuB;IAEvB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1D,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,OAAO,GAA2D,EAAE,CAAC;YAC3E,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;YACjD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAU,CAAC;gBACpE,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC9D,IAAI,SAAS;oBAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAC5C,CAAC;YACD,MAAM,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,sDAAsD;AACtD,KAAK,UAAU,kBAAkB,CAC/B,UAAgC,EAChC,MAAuB,EACvB,aAAqB;IAErB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,MAAM,CAAC,sBAAsB,CAAC;YAClC,GAAG,EAAE;YACL,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,qFAAqF;AACrF,KAAK,UAAU,kBAAkB,CAC/B,MAAuB,EACvB,IAAY,EACZ,MAAwB,EACxB,aAAwB;IAExB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAEzE,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;IACpC,YAAY,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChD,MAAM,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,yBAAyB,CAAC,YAAY,CAAC,CAAC;IAE9C,MAAM;IACN,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,IAAI,KAAK,CAAC;IACrF,MAAM,QAAQ,GAAG;QACf,QAAQ,IAAI,CAAC,WAAW,EAAE,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;QACrE,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE;QACpF,yBAAyB,MAAM,CAAC,iBAAiB,EAAE;QACnD,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;QAC3E,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;QACxD,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE;QAC1E,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE;QAC1E,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE;QACzE,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;QACpD,EAAE;KACH;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAClE,CAAC;AAgBD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAsB;IAEtB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IAEpC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,IAAI;YACJ,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;YACV,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,CAAC;YAClB,eAAe,EAAE,CAAC;YAClB,gBAAgB,EAAE,CAAC;YACnB,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;IAExC,eAAe;IACf,IAAI,MAAc,CAAC;IACnB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,GAAG,0BAA0B,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,MAAM,YAAY,CAAe,aAAa,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,yBAAyB,CAAC;YACjC,OAAO;YACP,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,MAAM;YACN,MAAM;YACN,aAAa,EAAE,gBAAgB,CAAC,IAAI,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;IAC5F,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAqB;QAC/B,IAAI;QACJ,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;QACV,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,OAAO,CAAC,MAAM;QAChC,QAAQ;QACR,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,wBAAwB;IACxB,MAAM,cAAc,GAAI,MAAM,CAAC,cAK5B,IAAI,EAAE,CAAC;IAEV,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY;YAAE,SAAS;QAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAClE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU;gBAC9D,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,kBAAkB,CAAC,CAAC,CAAC,kBAAkB;oBAC9D,CAAC,CAAC,SAAkB,CAAC;YACvB,MAAM,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,IAAI,CAAC,MAAsC;gBACjD,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,CAAC,aAAa,GAAG,MAAM,kBAAkB,CAC5C,MAAM,CAAC,aAAsC,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,CAC3E,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC7C,MAAM,CAAC,mBAAkD,IAAI,EAAE,EAAE,eAAe,CAClF,CAAC;IACF,MAAM,CAAC,iBAAiB,IAAI,SAAS,CAAC,OAAO,CAAC;IAC9C,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAEnC,sDAAsD;IACtD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAI,MAAM,CAAC,OAErB,IAAI,EAAE,CAAC;QAEV,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,eAAe,GAAG,MAAM,YAAY,CAAW,YAAY,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,UAAU,GAAa,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBACjE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU;gBAC9D,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aAC9C,CAAC,CAAC,CAAC;YACJ,MAAM,eAAe,CAAC,YAAY,EAAE,CAAC,GAAG,eAAe,EAAE,GAAG,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzG,MAAM,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC;QAC9C,CAAC;QAED,MAAM,kBAAkB,GAAI,MAAM,CAAC,kBAEhC,IAAI,EAAE,CAAC;QAEV,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAa,cAAc,EAAE,EAAE,CAAC,CAAC;YAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7F,MAAM,YAAY,GAAe,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9D,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAChE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAClF,gBAAgB,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS;gBAC5D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aAC1C,CAAC,CAAC,CAAC;YACJ,MAAM,eAAe,CAAC,cAAc,EAAE,CAAC,GAAG,iBAAiB,EAAE,GAAG,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjH,MAAM,CAAC,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC;QAC/C,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,YAAY,CAAe,aAAa,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,eAAe,GAAG,MAAM,mBAAmB,CAC/C,MAAM,CAAC,cAAwC,IAAI,EAAE,EAAE,YAAY,CACrE,CAAC;QAEF,uBAAuB;QACvB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,CAAC;QACvD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,IAAI,WAAW,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED,gBAAgB;IAChB,MAAM,CAAC,OAAO,GAAI,MAAM,CAAC,eAA0B,IAAK,MAAM,CAAC,aAAwB,IAAI,IAAI,CAAC;IAChG,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,GAAG,WAAW,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,kBAAkB,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,YAAY,EAAE,CAAC;IAErB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;IAExC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,YAAY,CAAe,aAAa,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAE9B,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,YAAY,CAAC,QAAQ;QAC/B,MAAM;QACN,qBAAqB,EAAE,IAAI,CAAC,eAAe;KAC5C,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAEjF,MAAM,MAAM,GAAqB;QAC/B,IAAI,EAAE,MAAM;QACZ,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;QACV,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,CAAC;QACnB,QAAQ;QACR,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,gFAAgF;IAChF,MAAM,WAAW,GAAI,MAAM,CAAC,eAEzB,IAAI,EAAE,CAAC;IAEV,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;QACpE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,eAAe,CAAC,CAAC;QAClE,IAAI,OAAO,IAAI,OAAO,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC;YAC3C,EAAE,CAAC,YAAY,GAAG,OAAO,CAAC;YAC1B,EAAE,CAAC,OAAO,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,eAAe,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,yBAAyB;IACzB,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC7C,MAAM,CAAC,mBAAkD,IAAI,EAAE,EAAE,eAAe,CAClF,CAAC;IACF,MAAM,CAAC,iBAAiB,IAAI,SAAS,CAAC,OAAO,CAAC;IAC9C,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IACnC,MAAM,CAAC,aAAa,GAAG,MAAM,kBAAkB,CAC5C,MAAM,CAAC,aAAsC,IAAI,EAAE,EAAE,eAAe,EAAE,GAAG,CAC3E,CAAC;IACF,MAAM,CAAC,eAAe,GAAG,MAAM,mBAAmB,CAC/C,MAAM,CAAC,cAAwC,IAAI,EAAE,EAAE,YAAY,CACrE,CAAC;IAEF,MAAM,CAAC,OAAO,GAAI,MAAM,CAAC,eAA0B,IAAI,IAAI,CAAC;IAE5D,0BAA0B;IAC1B,MAAM,YAAY,GAAI,MAAM,CAAC,oBAAuD,IAAI,EAAE,CAAC;IAC3F,MAAM,eAAe,GAAI,MAAM,CAAC,eAAiD,IAAI,EAAE,CAAC;IACxF,MAAM,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE;QACxD,6BAA6B,WAAW,CAAC,MAAM,EAAE;QACjD,6BAA6B,YAAY,CAAC,MAAM,EAAE;QAClD,uBAAuB,eAAe,CAAC,MAAM,EAAE;KAChD,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function transformShadowContent(raw: string): string;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const HEADER = "## Behavioral Pulls (Shadow Layer)";
|
|
2
|
+
const INTRO = "These are not facts about you. They are forces that move through you — patterns that arise before you choose them. Read them as weather, not verdict.";
|
|
3
|
+
const FOOTER = "These pulls are not flaws to fix. They are the complexity that makes you more than a trait list.";
|
|
4
|
+
function transformItem(item) {
|
|
5
|
+
const trimmed = item.trim();
|
|
6
|
+
if (/^Tends to /i.test(trimmed) || /^Often /i.test(trimmed)) {
|
|
7
|
+
return `You have a tendency to ${trimmed}. Notice when this happens. You may choose differently — or not. This tension is part of who you are.`;
|
|
8
|
+
}
|
|
9
|
+
if (/^Avoids /i.test(trimmed) || /^Defaults to /i.test(trimmed)) {
|
|
10
|
+
return `You have a pull toward ${trimmed}. This pull exists beneath your conscious preferences. Don't resolve it — hold it.`;
|
|
11
|
+
}
|
|
12
|
+
if (/^Learning to /i.test(trimmed)) {
|
|
13
|
+
return `You are ${trimmed}. This is your growth edge. When you notice yourself at this edge, lean in — even when it's uncomfortable.`;
|
|
14
|
+
}
|
|
15
|
+
if (/\bbut\b|\byet\b/i.test(trimmed)) {
|
|
16
|
+
return `You carry a contradiction: ${trimmed}. This tension is part of who you are. Don't resolve it — hold it.`;
|
|
17
|
+
}
|
|
18
|
+
return `You have a tendency: ${trimmed}. When you notice this pattern, you may choose to act differently. This tension is part of who you are.`;
|
|
19
|
+
}
|
|
20
|
+
export function transformShadowContent(raw) {
|
|
21
|
+
if (!raw || raw.trim() === "") {
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
const lines = raw.split("\n");
|
|
25
|
+
const pulls = [];
|
|
26
|
+
for (const line of lines) {
|
|
27
|
+
const match = line.match(/^-\s+(.+)/);
|
|
28
|
+
if (match) {
|
|
29
|
+
const item = match[1].trim();
|
|
30
|
+
if (item) {
|
|
31
|
+
pulls.push(transformItem(item));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (pulls.length === 0) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
const body = pulls.map((p) => `- ${p}`).join("\n");
|
|
39
|
+
return [HEADER, "", INTRO, "", body, "", FOOTER].join("\n");
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=shadow-transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-transform.js","sourceRoot":"","sources":["../../src/engine/shadow-transform.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,oCAAoC,CAAC;AAEpD,MAAM,KAAK,GACT,uJAAuJ,CAAC;AAE1J,MAAM,MAAM,GACV,kGAAkG,CAAC;AAErG,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAE5B,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,OAAO,0BAA0B,OAAO,uGAAuG,CAAC;IAClJ,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,OAAO,0BAA0B,OAAO,oFAAoF,CAAC;IAC/H,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,WAAW,OAAO,4GAA4G,CAAC;IACxI,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,8BAA8B,OAAO,oEAAoE,CAAC;IACnH,CAAC;IAED,OAAO,wBAAwB,OAAO,yGAAyG,CAAC;AAClJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnD,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MicroSignal } from "../types/learning-types.js";
|
|
2
|
+
export type TranscriptMessage = {
|
|
3
|
+
role: "user" | "assistant";
|
|
4
|
+
text: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Extract signals from a list of transcript messages.
|
|
8
|
+
* Adapted from the OpenClaw version to work with Claude Code transcripts.
|
|
9
|
+
*/
|
|
10
|
+
export declare function extractSignalsFromMessages(messages: TranscriptMessage[], sessionKey: string): MicroSignal[];
|
|
11
|
+
/**
|
|
12
|
+
* Parse a Claude Code transcript JSONL file into messages suitable for signal extraction.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseTranscript(jsonlContent: string): TranscriptMessage[];
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
const COMMON_WORDS = new Set([
|
|
2
|
+
"about", "after", "again", "also", "another", "because", "been", "before",
|
|
3
|
+
"being", "between", "both", "could", "does", "doing", "don't", "during",
|
|
4
|
+
"each", "from", "further", "have", "having", "here", "itself", "just",
|
|
5
|
+
"like", "more", "most", "need", "other", "over", "same", "should",
|
|
6
|
+
"since", "some", "still", "such", "than", "that", "their", "them",
|
|
7
|
+
"then", "there", "these", "they", "this", "those", "through", "time",
|
|
8
|
+
"under", "until", "very", "want", "were", "what", "when", "where",
|
|
9
|
+
"which", "while", "will", "with", "would", "your",
|
|
10
|
+
]);
|
|
11
|
+
function truncate(text, maxLen) {
|
|
12
|
+
if (text.length <= maxLen)
|
|
13
|
+
return text;
|
|
14
|
+
return text.slice(0, maxLen);
|
|
15
|
+
}
|
|
16
|
+
function wordSet(text) {
|
|
17
|
+
return new Set(text.toLowerCase().split(/\W+/).filter((w) => w.length > 0));
|
|
18
|
+
}
|
|
19
|
+
function wordOverlapRatio(a, b) {
|
|
20
|
+
const setA = wordSet(a);
|
|
21
|
+
const setB = wordSet(b);
|
|
22
|
+
if (setA.size === 0 || setB.size === 0)
|
|
23
|
+
return 0;
|
|
24
|
+
let shared = 0;
|
|
25
|
+
for (const w of setA) {
|
|
26
|
+
if (setB.has(w))
|
|
27
|
+
shared++;
|
|
28
|
+
}
|
|
29
|
+
return shared / Math.max(setA.size, setB.size);
|
|
30
|
+
}
|
|
31
|
+
function extractNouns(text) {
|
|
32
|
+
return new Set(text.toLowerCase().split(/\W+/).filter((w) => w.length > 4 && !COMMON_WORDS.has(w)));
|
|
33
|
+
}
|
|
34
|
+
function nounOverlapRatio(a, b) {
|
|
35
|
+
const nouns1 = extractNouns(a);
|
|
36
|
+
const nouns2 = extractNouns(b);
|
|
37
|
+
if (nouns1.size === 0 || nouns2.size === 0)
|
|
38
|
+
return 1;
|
|
39
|
+
let shared = 0;
|
|
40
|
+
for (const n of nouns1) {
|
|
41
|
+
if (nouns2.has(n))
|
|
42
|
+
shared++;
|
|
43
|
+
}
|
|
44
|
+
return shared / Math.max(nouns1.size, nouns2.size);
|
|
45
|
+
}
|
|
46
|
+
// Regex patterns for signal detection
|
|
47
|
+
const CORRECTION_PATTERN = /\bno[,\s]|\bwrong\b|actually,|not what i|that'?s not|incorrect/i;
|
|
48
|
+
const GRATITUDE_PATTERN = /thanks|thank you|perfect|exactly|great work|awesome/i;
|
|
49
|
+
const CONFUSION_PATTERN = /what do you mean|don'?t understand|confused|\bhuh\?/i;
|
|
50
|
+
const COMPLETION_PATTERN = /\b(done|works|fixed)\b/i;
|
|
51
|
+
/**
|
|
52
|
+
* Extract signals from a list of transcript messages.
|
|
53
|
+
* Adapted from the OpenClaw version to work with Claude Code transcripts.
|
|
54
|
+
*/
|
|
55
|
+
export function extractSignalsFromMessages(messages, sessionKey) {
|
|
56
|
+
const signals = [];
|
|
57
|
+
const addedTypes = new Set();
|
|
58
|
+
// Use up to last 10 messages for analysis
|
|
59
|
+
const window = messages.slice(-10);
|
|
60
|
+
const userMsgs = window.filter((m) => m.role === "user");
|
|
61
|
+
const assistantMsgs = window.filter((m) => m.role === "assistant");
|
|
62
|
+
const lastTwoUser = userMsgs.slice(-2).map((m) => truncate(m.text, 300));
|
|
63
|
+
const lastTwoAssistant = assistantMsgs.slice(-2).map((m) => truncate(m.text, 300));
|
|
64
|
+
function makeSignal(type, evidence, confidence) {
|
|
65
|
+
return {
|
|
66
|
+
timestamp: Date.now(),
|
|
67
|
+
sessionKey,
|
|
68
|
+
type,
|
|
69
|
+
evidence: truncate(evidence, 200),
|
|
70
|
+
source: "user",
|
|
71
|
+
confidence,
|
|
72
|
+
userSnippets: lastTwoUser,
|
|
73
|
+
assistantSnippets: lastTwoAssistant,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function addSignal(signal) {
|
|
77
|
+
if (!addedTypes.has(signal.type)) {
|
|
78
|
+
addedTypes.add(signal.type);
|
|
79
|
+
signals.push(signal);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Track for multi-message patterns
|
|
83
|
+
let prevUserLength = null;
|
|
84
|
+
let prevAssistantText = null;
|
|
85
|
+
const gratitudeIndices = [];
|
|
86
|
+
const completionIndices = [];
|
|
87
|
+
for (let i = 0; i < window.length; i++) {
|
|
88
|
+
const { role, text } = window[i];
|
|
89
|
+
if (role === "user") {
|
|
90
|
+
// correction — high confidence for explicit phrases
|
|
91
|
+
if (CORRECTION_PATTERN.test(text)) {
|
|
92
|
+
const confidence = /actually,|that'?s not|incorrect|not what i/i.test(text) ? 0.9 : 0.6;
|
|
93
|
+
addSignal(makeSignal("correction", text, confidence));
|
|
94
|
+
}
|
|
95
|
+
// gratitude
|
|
96
|
+
if (GRATITUDE_PATTERN.test(text)) {
|
|
97
|
+
const confidence = /perfect|exactly|great work/i.test(text) ? 0.9 : 0.7;
|
|
98
|
+
addSignal(makeSignal("gratitude", text, confidence));
|
|
99
|
+
gratitudeIndices.push(i);
|
|
100
|
+
}
|
|
101
|
+
// confusion
|
|
102
|
+
const trimmed = text.trim();
|
|
103
|
+
if (trimmed === "?") {
|
|
104
|
+
addSignal(makeSignal("confusion", text, 0.6));
|
|
105
|
+
}
|
|
106
|
+
else if (CONFUSION_PATTERN.test(text)) {
|
|
107
|
+
addSignal(makeSignal("confusion", text, 0.8));
|
|
108
|
+
}
|
|
109
|
+
// disengagement: user message < 10 chars AND previous assistant > 200 chars
|
|
110
|
+
if (text.length < 10 && prevAssistantText !== null && prevAssistantText.length > 200) {
|
|
111
|
+
addSignal(makeSignal("disengagement", text, 0.5));
|
|
112
|
+
}
|
|
113
|
+
// depth_change: length ratio >3x compared to previous user message
|
|
114
|
+
if (prevUserLength !== null && prevUserLength > 0) {
|
|
115
|
+
const ratio = text.length / prevUserLength;
|
|
116
|
+
if (ratio > 3 || ratio < 0.3) {
|
|
117
|
+
addSignal(makeSignal("depth_change", text, 0.6));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// completion language tracking
|
|
121
|
+
if (COMPLETION_PATTERN.test(text)) {
|
|
122
|
+
completionIndices.push(i);
|
|
123
|
+
}
|
|
124
|
+
prevUserLength = text.length;
|
|
125
|
+
}
|
|
126
|
+
else if (role === "assistant") {
|
|
127
|
+
prevAssistantText = text;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// rephrasing: two user messages within 3 turns share >40% words but aren't identical
|
|
131
|
+
if (!addedTypes.has("rephrasing") && userMsgs.length >= 2) {
|
|
132
|
+
for (let i = 0; i < window.length; i++) {
|
|
133
|
+
if (window[i].role !== "user")
|
|
134
|
+
continue;
|
|
135
|
+
for (let j = i + 1; j < window.length && j - i <= 4; j++) {
|
|
136
|
+
if (window[j].role !== "user")
|
|
137
|
+
continue;
|
|
138
|
+
const a = window[i].text;
|
|
139
|
+
const b = window[j].text;
|
|
140
|
+
if (a !== b && wordOverlapRatio(a, b) > 0.4) {
|
|
141
|
+
addSignal(makeSignal("rephrasing", b, 0.7));
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (addedTypes.has("rephrasing"))
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// topic_shift: consecutive user messages with <20% noun overlap
|
|
150
|
+
if (!addedTypes.has("topic_shift") && userMsgs.length >= 2) {
|
|
151
|
+
for (let i = 0; i < userMsgs.length - 1; i++) {
|
|
152
|
+
if (nounOverlapRatio(userMsgs[i].text, userMsgs[i + 1].text) < 0.2) {
|
|
153
|
+
addSignal(makeSignal("topic_shift", userMsgs[i + 1].text, 0.6));
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// success: task-completion language + gratitude within 2 turns
|
|
159
|
+
if (!addedTypes.has("success")) {
|
|
160
|
+
for (const ci of completionIndices) {
|
|
161
|
+
for (const gi of gratitudeIndices) {
|
|
162
|
+
if (Math.abs(ci - gi) <= 2) {
|
|
163
|
+
const evidenceIdx = Math.max(ci, gi);
|
|
164
|
+
addSignal(makeSignal("success", window[evidenceIdx].text, 0.85));
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (addedTypes.has("success"))
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return signals;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Parse a Claude Code transcript JSONL file into messages suitable for signal extraction.
|
|
176
|
+
*/
|
|
177
|
+
export function parseTranscript(jsonlContent) {
|
|
178
|
+
const lines = jsonlContent.split("\n").filter((l) => l.trim().length > 0);
|
|
179
|
+
const messages = [];
|
|
180
|
+
for (const line of lines) {
|
|
181
|
+
try {
|
|
182
|
+
const entry = JSON.parse(line);
|
|
183
|
+
if (entry.type !== "user" && entry.type !== "assistant")
|
|
184
|
+
continue;
|
|
185
|
+
if (!entry.message?.content)
|
|
186
|
+
continue;
|
|
187
|
+
const textParts = entry.message.content
|
|
188
|
+
.filter((c) => c.type === "text")
|
|
189
|
+
.map((c) => c.text);
|
|
190
|
+
const text = textParts.join("\n").trim();
|
|
191
|
+
if (!text)
|
|
192
|
+
continue;
|
|
193
|
+
messages.push({
|
|
194
|
+
role: entry.message.role,
|
|
195
|
+
text,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Skip malformed lines
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return messages;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=signal-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-extractor.js","sourceRoot":"","sources":["../../src/engine/signal-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MicroSignal } from "../types/learning-types.js";
|
|
2
|
+
export declare function appendSignals(signals: MicroSignal[]): Promise<void>;
|
|
3
|
+
export declare function readSignals(): Promise<MicroSignal[]>;
|
|
4
|
+
export declare function clearSignals(): Promise<void>;
|
|
5
|
+
export declare function getSignalCount(): Promise<number>;
|