@mnemoai/core 1.1.0 → 1.1.1
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/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +7 -0
- package/dist/index.d.ts +128 -0
- package/dist/index.d.ts.map +1 -0
- package/{index.ts → dist/index.js} +526 -1333
- package/dist/index.js.map +7 -0
- package/dist/src/access-tracker.d.ts +97 -0
- package/dist/src/access-tracker.d.ts.map +1 -0
- package/dist/src/access-tracker.js +184 -0
- package/dist/src/access-tracker.js.map +7 -0
- package/dist/src/adapters/chroma.d.ts +31 -0
- package/dist/src/adapters/chroma.d.ts.map +1 -0
- package/{src/adapters/chroma.ts → dist/src/adapters/chroma.js} +45 -107
- package/dist/src/adapters/chroma.js.map +7 -0
- package/dist/src/adapters/lancedb.d.ts +29 -0
- package/dist/src/adapters/lancedb.d.ts.map +1 -0
- package/{src/adapters/lancedb.ts → dist/src/adapters/lancedb.js} +41 -109
- package/dist/src/adapters/lancedb.js.map +7 -0
- package/dist/src/adapters/pgvector.d.ts +33 -0
- package/dist/src/adapters/pgvector.d.ts.map +1 -0
- package/{src/adapters/pgvector.ts → dist/src/adapters/pgvector.js} +42 -104
- package/dist/src/adapters/pgvector.js.map +7 -0
- package/dist/src/adapters/qdrant.d.ts +34 -0
- package/dist/src/adapters/qdrant.d.ts.map +1 -0
- package/dist/src/adapters/qdrant.js +132 -0
- package/dist/src/adapters/qdrant.js.map +7 -0
- package/dist/src/adaptive-retrieval.d.ts +14 -0
- package/dist/src/adaptive-retrieval.d.ts.map +1 -0
- package/dist/src/adaptive-retrieval.js +52 -0
- package/dist/src/adaptive-retrieval.js.map +7 -0
- package/dist/src/audit-log.d.ts +56 -0
- package/dist/src/audit-log.d.ts.map +1 -0
- package/dist/src/audit-log.js +139 -0
- package/dist/src/audit-log.js.map +7 -0
- package/dist/src/chunker.d.ts +45 -0
- package/dist/src/chunker.d.ts.map +1 -0
- package/dist/src/chunker.js +157 -0
- package/dist/src/chunker.js.map +7 -0
- package/dist/src/config.d.ts +70 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +142 -0
- package/dist/src/config.js.map +7 -0
- package/dist/src/decay-engine.d.ts +73 -0
- package/dist/src/decay-engine.d.ts.map +1 -0
- package/dist/src/decay-engine.js +119 -0
- package/dist/src/decay-engine.js.map +7 -0
- package/dist/src/embedder.d.ts +94 -0
- package/dist/src/embedder.d.ts.map +1 -0
- package/{src/embedder.ts → dist/src/embedder.js} +119 -317
- package/dist/src/embedder.js.map +7 -0
- package/dist/src/extraction-prompts.d.ts +12 -0
- package/dist/src/extraction-prompts.d.ts.map +1 -0
- package/dist/src/extraction-prompts.js +311 -0
- package/dist/src/extraction-prompts.js.map +7 -0
- package/dist/src/license.d.ts +29 -0
- package/dist/src/license.d.ts.map +1 -0
- package/{src/license.ts → dist/src/license.js} +42 -113
- package/dist/src/license.js.map +7 -0
- package/dist/src/llm-client.d.ts +23 -0
- package/dist/src/llm-client.d.ts.map +1 -0
- package/{src/llm-client.ts → dist/src/llm-client.js} +22 -55
- package/dist/src/llm-client.js.map +7 -0
- package/dist/src/logger.d.ts +33 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +35 -0
- package/dist/src/logger.js.map +7 -0
- package/dist/src/mcp-server.d.ts +16 -0
- package/dist/src/mcp-server.d.ts.map +1 -0
- package/{src/mcp-server.ts → dist/src/mcp-server.js} +81 -181
- package/dist/src/mcp-server.js.map +7 -0
- package/dist/src/memory-categories.d.ts +40 -0
- package/dist/src/memory-categories.d.ts.map +1 -0
- package/dist/src/memory-categories.js +33 -0
- package/dist/src/memory-categories.js.map +7 -0
- package/dist/src/memory-upgrader.d.ts +71 -0
- package/dist/src/memory-upgrader.d.ts.map +1 -0
- package/dist/src/memory-upgrader.js +238 -0
- package/dist/src/memory-upgrader.js.map +7 -0
- package/dist/src/migrate.d.ts +47 -0
- package/dist/src/migrate.d.ts.map +1 -0
- package/{src/migrate.ts → dist/src/migrate.js} +57 -165
- package/dist/src/migrate.js.map +7 -0
- package/dist/src/mnemo.d.ts +67 -0
- package/dist/src/mnemo.d.ts.map +1 -0
- package/dist/src/mnemo.js +66 -0
- package/dist/src/mnemo.js.map +7 -0
- package/dist/src/noise-filter.d.ts +23 -0
- package/dist/src/noise-filter.d.ts.map +1 -0
- package/dist/src/noise-filter.js +62 -0
- package/dist/src/noise-filter.js.map +7 -0
- package/dist/src/noise-prototypes.d.ts +40 -0
- package/dist/src/noise-prototypes.d.ts.map +1 -0
- package/dist/src/noise-prototypes.js +116 -0
- package/dist/src/noise-prototypes.js.map +7 -0
- package/dist/src/observability.d.ts +16 -0
- package/dist/src/observability.d.ts.map +1 -0
- package/dist/src/observability.js +53 -0
- package/dist/src/observability.js.map +7 -0
- package/dist/src/query-tracker.d.ts +27 -0
- package/dist/src/query-tracker.d.ts.map +1 -0
- package/dist/src/query-tracker.js +32 -0
- package/dist/src/query-tracker.js.map +7 -0
- package/dist/src/reflection-event-store.d.ts +44 -0
- package/dist/src/reflection-event-store.d.ts.map +1 -0
- package/dist/src/reflection-event-store.js +50 -0
- package/dist/src/reflection-event-store.js.map +7 -0
- package/dist/src/reflection-item-store.d.ts +58 -0
- package/dist/src/reflection-item-store.d.ts.map +1 -0
- package/dist/src/reflection-item-store.js +69 -0
- package/dist/src/reflection-item-store.js.map +7 -0
- package/dist/src/reflection-mapped-metadata.d.ts +47 -0
- package/dist/src/reflection-mapped-metadata.d.ts.map +1 -0
- package/dist/src/reflection-mapped-metadata.js +40 -0
- package/dist/src/reflection-mapped-metadata.js.map +7 -0
- package/dist/src/reflection-metadata.d.ts +11 -0
- package/dist/src/reflection-metadata.d.ts.map +1 -0
- package/dist/src/reflection-metadata.js +24 -0
- package/dist/src/reflection-metadata.js.map +7 -0
- package/dist/src/reflection-ranking.d.ts +13 -0
- package/dist/src/reflection-ranking.d.ts.map +1 -0
- package/{src/reflection-ranking.ts → dist/src/reflection-ranking.js} +12 -21
- package/dist/src/reflection-ranking.js.map +7 -0
- package/dist/src/reflection-retry.d.ts +30 -0
- package/dist/src/reflection-retry.d.ts.map +1 -0
- package/{src/reflection-retry.ts → dist/src/reflection-retry.js} +24 -64
- package/dist/src/reflection-retry.js.map +7 -0
- package/dist/src/reflection-slices.d.ts +42 -0
- package/dist/src/reflection-slices.d.ts.map +1 -0
- package/{src/reflection-slices.ts → dist/src/reflection-slices.js} +60 -136
- package/dist/src/reflection-slices.js.map +7 -0
- package/dist/src/reflection-store.d.ts +85 -0
- package/dist/src/reflection-store.d.ts.map +1 -0
- package/dist/src/reflection-store.js +407 -0
- package/dist/src/reflection-store.js.map +7 -0
- package/dist/src/resonance-state.d.ts +19 -0
- package/dist/src/resonance-state.d.ts.map +1 -0
- package/{src/resonance-state.ts → dist/src/resonance-state.js} +13 -42
- package/dist/src/resonance-state.js.map +7 -0
- package/dist/src/retriever.d.ts +228 -0
- package/dist/src/retriever.d.ts.map +1 -0
- package/dist/src/retriever.js +1006 -0
- package/dist/src/retriever.js.map +7 -0
- package/dist/src/scopes.d.ts +58 -0
- package/dist/src/scopes.d.ts.map +1 -0
- package/dist/src/scopes.js +252 -0
- package/dist/src/scopes.js.map +7 -0
- package/dist/src/self-improvement-files.d.ts +20 -0
- package/dist/src/self-improvement-files.d.ts.map +1 -0
- package/{src/self-improvement-files.ts → dist/src/self-improvement-files.js} +24 -49
- package/dist/src/self-improvement-files.js.map +7 -0
- package/dist/src/semantic-gate.d.ts +24 -0
- package/dist/src/semantic-gate.d.ts.map +1 -0
- package/dist/src/semantic-gate.js +86 -0
- package/dist/src/semantic-gate.js.map +7 -0
- package/dist/src/session-recovery.d.ts +9 -0
- package/dist/src/session-recovery.d.ts.map +1 -0
- package/{src/session-recovery.ts → dist/src/session-recovery.js} +40 -57
- package/dist/src/session-recovery.js.map +7 -0
- package/dist/src/smart-extractor.d.ts +107 -0
- package/dist/src/smart-extractor.d.ts.map +1 -0
- package/{src/smart-extractor.ts → dist/src/smart-extractor.js} +130 -383
- package/dist/src/smart-extractor.js.map +7 -0
- package/dist/src/smart-metadata.d.ts +103 -0
- package/dist/src/smart-metadata.d.ts.map +1 -0
- package/dist/src/smart-metadata.js +361 -0
- package/dist/src/smart-metadata.js.map +7 -0
- package/dist/src/storage-adapter.d.ts +102 -0
- package/dist/src/storage-adapter.d.ts.map +1 -0
- package/dist/src/storage-adapter.js +22 -0
- package/dist/src/storage-adapter.js.map +7 -0
- package/dist/src/store.d.ts +108 -0
- package/dist/src/store.d.ts.map +1 -0
- package/dist/src/store.js +939 -0
- package/dist/src/store.js.map +7 -0
- package/dist/src/tier-manager.d.ts +57 -0
- package/dist/src/tier-manager.d.ts.map +1 -0
- package/dist/src/tier-manager.js +80 -0
- package/dist/src/tier-manager.js.map +7 -0
- package/dist/src/tools.d.ts +43 -0
- package/dist/src/tools.d.ts.map +1 -0
- package/dist/src/tools.js +1075 -0
- package/dist/src/tools.js.map +7 -0
- package/dist/src/wal-recovery.d.ts +30 -0
- package/dist/src/wal-recovery.d.ts.map +1 -0
- package/{src/wal-recovery.ts → dist/src/wal-recovery.js} +26 -79
- package/dist/src/wal-recovery.js.map +7 -0
- package/package.json +21 -2
- package/openclaw.plugin.json +0 -815
- package/src/access-tracker.ts +0 -341
- package/src/adapters/README.md +0 -78
- package/src/adapters/qdrant.ts +0 -191
- package/src/adaptive-retrieval.ts +0 -90
- package/src/audit-log.ts +0 -238
- package/src/chunker.ts +0 -254
- package/src/config.ts +0 -271
- package/src/decay-engine.ts +0 -238
- package/src/extraction-prompts.ts +0 -339
- package/src/memory-categories.ts +0 -71
- package/src/memory-upgrader.ts +0 -388
- package/src/mnemo.ts +0 -142
- package/src/noise-filter.ts +0 -97
- package/src/noise-prototypes.ts +0 -164
- package/src/observability.ts +0 -81
- package/src/query-tracker.ts +0 -57
- package/src/reflection-event-store.ts +0 -98
- package/src/reflection-item-store.ts +0 -112
- package/src/reflection-mapped-metadata.ts +0 -84
- package/src/reflection-metadata.ts +0 -23
- package/src/reflection-store.ts +0 -602
- package/src/retriever.ts +0 -1510
- package/src/scopes.ts +0 -375
- package/src/semantic-gate.ts +0 -121
- package/src/smart-metadata.ts +0 -561
- package/src/storage-adapter.ts +0 -153
- package/src/store.ts +0 -1330
- package/src/tier-manager.ts +0 -189
- package/src/tools.ts +0 -1292
- package/test/core.test.mjs +0 -301
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
const REFLECTION_INVARIANT_DECAY_MIDPOINT_DAYS = 45;
|
|
2
|
+
const REFLECTION_INVARIANT_DECAY_K = 0.22;
|
|
3
|
+
const REFLECTION_INVARIANT_BASE_WEIGHT = 1.1;
|
|
4
|
+
const REFLECTION_INVARIANT_QUALITY = 1;
|
|
5
|
+
const REFLECTION_DERIVED_DECAY_MIDPOINT_DAYS = 7;
|
|
6
|
+
const REFLECTION_DERIVED_DECAY_K = 0.65;
|
|
7
|
+
const REFLECTION_DERIVED_BASE_WEIGHT = 1;
|
|
8
|
+
const REFLECTION_DERIVED_QUALITY = 0.95;
|
|
9
|
+
function getReflectionItemDecayDefaults(itemKind) {
|
|
10
|
+
if (itemKind === "invariant") {
|
|
11
|
+
return {
|
|
12
|
+
midpointDays: REFLECTION_INVARIANT_DECAY_MIDPOINT_DAYS,
|
|
13
|
+
k: REFLECTION_INVARIANT_DECAY_K,
|
|
14
|
+
baseWeight: REFLECTION_INVARIANT_BASE_WEIGHT,
|
|
15
|
+
quality: REFLECTION_INVARIANT_QUALITY
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
midpointDays: REFLECTION_DERIVED_DECAY_MIDPOINT_DAYS,
|
|
20
|
+
k: REFLECTION_DERIVED_DECAY_K,
|
|
21
|
+
baseWeight: REFLECTION_DERIVED_BASE_WEIGHT,
|
|
22
|
+
quality: REFLECTION_DERIVED_QUALITY
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function buildReflectionItemPayloads(params) {
|
|
26
|
+
return params.items.map((item) => {
|
|
27
|
+
const defaults = getReflectionItemDecayDefaults(item.itemKind);
|
|
28
|
+
const metadata = {
|
|
29
|
+
type: "memory-reflection-item",
|
|
30
|
+
reflectionVersion: 4,
|
|
31
|
+
stage: "reflect-store",
|
|
32
|
+
eventId: params.eventId,
|
|
33
|
+
itemKind: item.itemKind,
|
|
34
|
+
section: item.section,
|
|
35
|
+
ordinal: item.ordinal,
|
|
36
|
+
groupSize: item.groupSize,
|
|
37
|
+
agentId: params.agentId,
|
|
38
|
+
sessionKey: params.sessionKey,
|
|
39
|
+
sessionId: params.sessionId,
|
|
40
|
+
storedAt: params.runAt,
|
|
41
|
+
usedFallback: params.usedFallback,
|
|
42
|
+
errorSignals: params.toolErrorSignals.map((signal) => signal.signatureHash),
|
|
43
|
+
decayModel: "logistic",
|
|
44
|
+
decayMidpointDays: defaults.midpointDays,
|
|
45
|
+
decayK: defaults.k,
|
|
46
|
+
baseWeight: defaults.baseWeight,
|
|
47
|
+
quality: defaults.quality,
|
|
48
|
+
...params.sourceReflectionPath ? { sourceReflectionPath: params.sourceReflectionPath } : {}
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
kind: item.itemKind === "invariant" ? "item-invariant" : "item-derived",
|
|
52
|
+
text: item.text,
|
|
53
|
+
metadata
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export {
|
|
58
|
+
REFLECTION_DERIVED_BASE_WEIGHT,
|
|
59
|
+
REFLECTION_DERIVED_DECAY_K,
|
|
60
|
+
REFLECTION_DERIVED_DECAY_MIDPOINT_DAYS,
|
|
61
|
+
REFLECTION_DERIVED_QUALITY,
|
|
62
|
+
REFLECTION_INVARIANT_BASE_WEIGHT,
|
|
63
|
+
REFLECTION_INVARIANT_DECAY_K,
|
|
64
|
+
REFLECTION_INVARIANT_DECAY_MIDPOINT_DAYS,
|
|
65
|
+
REFLECTION_INVARIANT_QUALITY,
|
|
66
|
+
buildReflectionItemPayloads,
|
|
67
|
+
getReflectionItemDecayDefaults
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=reflection-item-store.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/reflection-item-store.ts"],
|
|
4
|
+
"sourcesContent": ["// SPDX-License-Identifier: LicenseRef-Mnemo-Pro\nimport type { ReflectionSliceItem } from \"./reflection-slices.js\";\n\nexport type ReflectionItemKind = \"invariant\" | \"derived\";\n\nexport interface ReflectionItemMetadata {\n type: \"memory-reflection-item\";\n reflectionVersion: 4;\n stage: \"reflect-store\";\n eventId: string;\n itemKind: ReflectionItemKind;\n section: \"Invariants\" | \"Derived\";\n ordinal: number;\n groupSize: number;\n agentId: string;\n sessionKey: string;\n sessionId: string;\n storedAt: number;\n usedFallback: boolean;\n errorSignals: string[];\n decayModel: \"logistic\";\n decayMidpointDays: number;\n decayK: number;\n baseWeight: number;\n quality: number;\n sourceReflectionPath?: string;\n}\n\nexport interface ReflectionItemPayload {\n kind: \"item-invariant\" | \"item-derived\";\n text: string;\n metadata: ReflectionItemMetadata;\n}\n\nexport interface BuildReflectionItemPayloadsParams {\n items: ReflectionSliceItem[];\n eventId: string;\n agentId: string;\n sessionKey: string;\n sessionId: string;\n runAt: number;\n usedFallback: boolean;\n toolErrorSignals: Array<{ signatureHash: string }>;\n sourceReflectionPath?: string;\n}\n\nexport const REFLECTION_INVARIANT_DECAY_MIDPOINT_DAYS = 45;\nexport const REFLECTION_INVARIANT_DECAY_K = 0.22;\nexport const REFLECTION_INVARIANT_BASE_WEIGHT = 1.1;\nexport const REFLECTION_INVARIANT_QUALITY = 1;\n\nexport const REFLECTION_DERIVED_DECAY_MIDPOINT_DAYS = 7;\nexport const REFLECTION_DERIVED_DECAY_K = 0.65;\nexport const REFLECTION_DERIVED_BASE_WEIGHT = 1;\nexport const REFLECTION_DERIVED_QUALITY = 0.95;\n\nexport function getReflectionItemDecayDefaults(itemKind: ReflectionItemKind): {\n midpointDays: number;\n k: number;\n baseWeight: number;\n quality: number;\n} {\n if (itemKind === \"invariant\") {\n return {\n midpointDays: REFLECTION_INVARIANT_DECAY_MIDPOINT_DAYS,\n k: REFLECTION_INVARIANT_DECAY_K,\n baseWeight: REFLECTION_INVARIANT_BASE_WEIGHT,\n quality: REFLECTION_INVARIANT_QUALITY,\n };\n }\n\n return {\n midpointDays: REFLECTION_DERIVED_DECAY_MIDPOINT_DAYS,\n k: REFLECTION_DERIVED_DECAY_K,\n baseWeight: REFLECTION_DERIVED_BASE_WEIGHT,\n quality: REFLECTION_DERIVED_QUALITY,\n };\n}\n\nexport function buildReflectionItemPayloads(params: BuildReflectionItemPayloadsParams): ReflectionItemPayload[] {\n return params.items.map((item) => {\n const defaults = getReflectionItemDecayDefaults(item.itemKind);\n const metadata: ReflectionItemMetadata = {\n type: \"memory-reflection-item\",\n reflectionVersion: 4,\n stage: \"reflect-store\",\n eventId: params.eventId,\n itemKind: item.itemKind,\n section: item.section,\n ordinal: item.ordinal,\n groupSize: item.groupSize,\n agentId: params.agentId,\n sessionKey: params.sessionKey,\n sessionId: params.sessionId,\n storedAt: params.runAt,\n usedFallback: params.usedFallback,\n errorSignals: params.toolErrorSignals.map((signal) => signal.signatureHash),\n decayModel: \"logistic\",\n decayMidpointDays: defaults.midpointDays,\n decayK: defaults.k,\n baseWeight: defaults.baseWeight,\n quality: defaults.quality,\n ...(params.sourceReflectionPath ? { sourceReflectionPath: params.sourceReflectionPath } : {}),\n };\n\n return {\n kind: item.itemKind === \"invariant\" ? \"item-invariant\" : \"item-derived\",\n text: item.text,\n metadata,\n };\n });\n}\n"],
|
|
5
|
+
"mappings": "AA8CO,MAAM,2CAA2C;AACjD,MAAM,+BAA+B;AACrC,MAAM,mCAAmC;AACzC,MAAM,+BAA+B;AAErC,MAAM,yCAAyC;AAC/C,MAAM,6BAA6B;AACnC,MAAM,iCAAiC;AACvC,MAAM,6BAA6B;AAEnC,SAAS,+BAA+B,UAK7C;AACA,MAAI,aAAa,aAAa;AAC5B,WAAO;AAAA,MACL,cAAc;AAAA,MACd,GAAG;AAAA,MACH,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,EACF;AAEA,SAAO;AAAA,IACL,cAAc;AAAA,IACd,GAAG;AAAA,IACH,YAAY;AAAA,IACZ,SAAS;AAAA,EACX;AACF;AAEO,SAAS,4BAA4B,QAAoE;AAC9G,SAAO,OAAO,MAAM,IAAI,CAAC,SAAS;AAChC,UAAM,WAAW,+BAA+B,KAAK,QAAQ;AAC7D,UAAM,WAAmC;AAAA,MACvC,MAAM;AAAA,MACN,mBAAmB;AAAA,MACnB,OAAO;AAAA,MACP,SAAS,OAAO;AAAA,MAChB,UAAU,KAAK;AAAA,MACf,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,MACnB,WAAW,OAAO;AAAA,MAClB,UAAU,OAAO;AAAA,MACjB,cAAc,OAAO;AAAA,MACrB,cAAc,OAAO,iBAAiB,IAAI,CAAC,WAAW,OAAO,aAAa;AAAA,MAC1E,YAAY;AAAA,MACZ,mBAAmB,SAAS;AAAA,MAC5B,QAAQ,SAAS;AAAA,MACjB,YAAY,SAAS;AAAA,MACrB,SAAS,SAAS;AAAA,MAClB,GAAI,OAAO,uBAAuB,EAAE,sBAAsB,OAAO,qBAAqB,IAAI,CAAC;AAAA,IAC7F;AAEA,WAAO;AAAA,MACL,MAAM,KAAK,aAAa,cAAc,mBAAmB;AAAA,MACzD,MAAM,KAAK;AAAA,MACX;AAAA,IACF;AAAA,EACF,CAAC;AACH;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ReflectionMappedMemoryItem } from "./reflection-slices.js";
|
|
2
|
+
export type ReflectionMappedKind = "user-model" | "agent-model" | "lesson" | "decision";
|
|
3
|
+
export type ReflectionMappedCategory = "preference" | "fact" | "decision";
|
|
4
|
+
export interface ReflectionMappedMetadata {
|
|
5
|
+
type: "memory-reflection-mapped";
|
|
6
|
+
reflectionVersion: 4;
|
|
7
|
+
stage: "reflect-store";
|
|
8
|
+
eventId: string;
|
|
9
|
+
mappedKind: ReflectionMappedKind;
|
|
10
|
+
mappedCategory: ReflectionMappedCategory;
|
|
11
|
+
section: string;
|
|
12
|
+
ordinal: number;
|
|
13
|
+
groupSize: number;
|
|
14
|
+
agentId: string;
|
|
15
|
+
sessionKey: string;
|
|
16
|
+
sessionId: string;
|
|
17
|
+
storedAt: number;
|
|
18
|
+
usedFallback: boolean;
|
|
19
|
+
errorSignals: string[];
|
|
20
|
+
decayModel: "logistic";
|
|
21
|
+
decayMidpointDays: number;
|
|
22
|
+
decayK: number;
|
|
23
|
+
baseWeight: number;
|
|
24
|
+
quality: number;
|
|
25
|
+
sourceReflectionPath?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ReflectionMappedDecayDefaults {
|
|
28
|
+
midpointDays: number;
|
|
29
|
+
k: number;
|
|
30
|
+
baseWeight: number;
|
|
31
|
+
quality: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function getReflectionMappedDecayDefaults(kind: ReflectionMappedKind): ReflectionMappedDecayDefaults;
|
|
34
|
+
export declare function buildReflectionMappedMetadata(params: {
|
|
35
|
+
mappedItem: ReflectionMappedMemoryItem;
|
|
36
|
+
eventId: string;
|
|
37
|
+
agentId: string;
|
|
38
|
+
sessionKey: string;
|
|
39
|
+
sessionId: string;
|
|
40
|
+
runAt: number;
|
|
41
|
+
usedFallback: boolean;
|
|
42
|
+
toolErrorSignals: Array<{
|
|
43
|
+
signatureHash: string;
|
|
44
|
+
}>;
|
|
45
|
+
sourceReflectionPath?: string;
|
|
46
|
+
}): ReflectionMappedMetadata;
|
|
47
|
+
//# sourceMappingURL=reflection-mapped-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection-mapped-metadata.d.ts","sourceRoot":"","sources":["../../src/reflection-mapped-metadata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AACxF,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1E,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,0BAA0B,CAAC;IACjC,iBAAiB,EAAE,CAAC,CAAC;IACrB,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,oBAAoB,CAAC;IACjC,cAAc,EAAE,wBAAwB,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,6BAA6B;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AASD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,oBAAoB,GAAG,6BAA6B,CAE1G;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE;IACpD,UAAU,EAAE,0BAA0B,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,KAAK,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,wBAAwB,CAyB3B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const REFLECTION_MAPPED_DECAY_DEFAULTS = {
|
|
2
|
+
decision: { midpointDays: 45, k: 0.25, baseWeight: 1.1, quality: 1 },
|
|
3
|
+
"user-model": { midpointDays: 21, k: 0.3, baseWeight: 1, quality: 0.95 },
|
|
4
|
+
"agent-model": { midpointDays: 10, k: 0.35, baseWeight: 0.95, quality: 0.93 },
|
|
5
|
+
lesson: { midpointDays: 7, k: 0.45, baseWeight: 0.9, quality: 0.9 }
|
|
6
|
+
};
|
|
7
|
+
function getReflectionMappedDecayDefaults(kind) {
|
|
8
|
+
return REFLECTION_MAPPED_DECAY_DEFAULTS[kind];
|
|
9
|
+
}
|
|
10
|
+
function buildReflectionMappedMetadata(params) {
|
|
11
|
+
const defaults = getReflectionMappedDecayDefaults(params.mappedItem.mappedKind);
|
|
12
|
+
return {
|
|
13
|
+
type: "memory-reflection-mapped",
|
|
14
|
+
reflectionVersion: 4,
|
|
15
|
+
stage: "reflect-store",
|
|
16
|
+
eventId: params.eventId,
|
|
17
|
+
mappedKind: params.mappedItem.mappedKind,
|
|
18
|
+
mappedCategory: params.mappedItem.category,
|
|
19
|
+
section: params.mappedItem.heading,
|
|
20
|
+
ordinal: params.mappedItem.ordinal,
|
|
21
|
+
groupSize: params.mappedItem.groupSize,
|
|
22
|
+
agentId: params.agentId,
|
|
23
|
+
sessionKey: params.sessionKey,
|
|
24
|
+
sessionId: params.sessionId,
|
|
25
|
+
storedAt: params.runAt,
|
|
26
|
+
usedFallback: params.usedFallback,
|
|
27
|
+
errorSignals: params.toolErrorSignals.map((signal) => signal.signatureHash),
|
|
28
|
+
decayModel: "logistic",
|
|
29
|
+
decayMidpointDays: defaults.midpointDays,
|
|
30
|
+
decayK: defaults.k,
|
|
31
|
+
baseWeight: defaults.baseWeight,
|
|
32
|
+
quality: defaults.quality,
|
|
33
|
+
...params.sourceReflectionPath ? { sourceReflectionPath: params.sourceReflectionPath } : {}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
buildReflectionMappedMetadata,
|
|
38
|
+
getReflectionMappedDecayDefaults
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=reflection-mapped-metadata.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/reflection-mapped-metadata.ts"],
|
|
4
|
+
"sourcesContent": ["// SPDX-License-Identifier: LicenseRef-Mnemo-Pro\nimport type { ReflectionMappedMemoryItem } from \"./reflection-slices.js\";\n\nexport type ReflectionMappedKind = \"user-model\" | \"agent-model\" | \"lesson\" | \"decision\";\nexport type ReflectionMappedCategory = \"preference\" | \"fact\" | \"decision\";\n\nexport interface ReflectionMappedMetadata {\n type: \"memory-reflection-mapped\";\n reflectionVersion: 4;\n stage: \"reflect-store\";\n eventId: string;\n mappedKind: ReflectionMappedKind;\n mappedCategory: ReflectionMappedCategory;\n section: string;\n ordinal: number;\n groupSize: number;\n agentId: string;\n sessionKey: string;\n sessionId: string;\n storedAt: number;\n usedFallback: boolean;\n errorSignals: string[];\n decayModel: \"logistic\";\n decayMidpointDays: number;\n decayK: number;\n baseWeight: number;\n quality: number;\n sourceReflectionPath?: string;\n}\n\nexport interface ReflectionMappedDecayDefaults {\n midpointDays: number;\n k: number;\n baseWeight: number;\n quality: number;\n}\n\nconst REFLECTION_MAPPED_DECAY_DEFAULTS: Record<ReflectionMappedKind, ReflectionMappedDecayDefaults> = {\n decision: { midpointDays: 45, k: 0.25, baseWeight: 1.1, quality: 1 },\n \"user-model\": { midpointDays: 21, k: 0.3, baseWeight: 1, quality: 0.95 },\n \"agent-model\": { midpointDays: 10, k: 0.35, baseWeight: 0.95, quality: 0.93 },\n lesson: { midpointDays: 7, k: 0.45, baseWeight: 0.9, quality: 0.9 },\n};\n\nexport function getReflectionMappedDecayDefaults(kind: ReflectionMappedKind): ReflectionMappedDecayDefaults {\n return REFLECTION_MAPPED_DECAY_DEFAULTS[kind];\n}\n\nexport function buildReflectionMappedMetadata(params: {\n mappedItem: ReflectionMappedMemoryItem;\n eventId: string;\n agentId: string;\n sessionKey: string;\n sessionId: string;\n runAt: number;\n usedFallback: boolean;\n toolErrorSignals: Array<{ signatureHash: string }>;\n sourceReflectionPath?: string;\n}): ReflectionMappedMetadata {\n const defaults = getReflectionMappedDecayDefaults(params.mappedItem.mappedKind);\n return {\n type: \"memory-reflection-mapped\",\n reflectionVersion: 4,\n stage: \"reflect-store\",\n eventId: params.eventId,\n mappedKind: params.mappedItem.mappedKind,\n mappedCategory: params.mappedItem.category,\n section: params.mappedItem.heading,\n ordinal: params.mappedItem.ordinal,\n groupSize: params.mappedItem.groupSize,\n agentId: params.agentId,\n sessionKey: params.sessionKey,\n sessionId: params.sessionId,\n storedAt: params.runAt,\n usedFallback: params.usedFallback,\n errorSignals: params.toolErrorSignals.map((signal) => signal.signatureHash),\n decayModel: \"logistic\",\n decayMidpointDays: defaults.midpointDays,\n decayK: defaults.k,\n baseWeight: defaults.baseWeight,\n quality: defaults.quality,\n ...(params.sourceReflectionPath ? { sourceReflectionPath: params.sourceReflectionPath } : {}),\n };\n}\n"],
|
|
5
|
+
"mappings": "AAqCA,MAAM,mCAAgG;AAAA,EACpG,UAAU,EAAE,cAAc,IAAI,GAAG,MAAM,YAAY,KAAK,SAAS,EAAE;AAAA,EACnE,cAAc,EAAE,cAAc,IAAI,GAAG,KAAK,YAAY,GAAG,SAAS,KAAK;AAAA,EACvE,eAAe,EAAE,cAAc,IAAI,GAAG,MAAM,YAAY,MAAM,SAAS,KAAK;AAAA,EAC5E,QAAQ,EAAE,cAAc,GAAG,GAAG,MAAM,YAAY,KAAK,SAAS,IAAI;AACpE;AAEO,SAAS,iCAAiC,MAA2D;AAC1G,SAAO,iCAAiC,IAAI;AAC9C;AAEO,SAAS,8BAA8B,QAUjB;AAC3B,QAAM,WAAW,iCAAiC,OAAO,WAAW,UAAU;AAC9E,SAAO;AAAA,IACL,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,OAAO;AAAA,IACP,SAAS,OAAO;AAAA,IAChB,YAAY,OAAO,WAAW;AAAA,IAC9B,gBAAgB,OAAO,WAAW;AAAA,IAClC,SAAS,OAAO,WAAW;AAAA,IAC3B,SAAS,OAAO,WAAW;AAAA,IAC3B,WAAW,OAAO,WAAW;AAAA,IAC7B,SAAS,OAAO;AAAA,IAChB,YAAY,OAAO;AAAA,IACnB,WAAW,OAAO;AAAA,IAClB,UAAU,OAAO;AAAA,IACjB,cAAc,OAAO;AAAA,IACrB,cAAc,OAAO,iBAAiB,IAAI,CAAC,WAAW,OAAO,aAAa;AAAA,IAC1E,YAAY;AAAA,IACZ,mBAAmB,SAAS;AAAA,IAC5B,QAAQ,SAAS;AAAA,IACjB,YAAY,SAAS;AAAA,IACrB,SAAS,SAAS;AAAA,IAClB,GAAI,OAAO,uBAAuB,EAAE,sBAAsB,OAAO,qBAAqB,IAAI,CAAC;AAAA,EAC7F;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function parseReflectionMetadata(metadataRaw: string | undefined): Record<string, unknown>;
|
|
2
|
+
export declare function isReflectionEntry(entry: {
|
|
3
|
+
category: string;
|
|
4
|
+
metadata?: string;
|
|
5
|
+
}): boolean;
|
|
6
|
+
export declare function getDisplayCategoryTag(entry: {
|
|
7
|
+
category: string;
|
|
8
|
+
scope: string;
|
|
9
|
+
metadata?: string;
|
|
10
|
+
}): string;
|
|
11
|
+
//# sourceMappingURL=reflection-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection-metadata.d.ts","sourceRoot":"","sources":["../../src/reflection-metadata.ts"],"names":[],"mappings":"AACA,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQhG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAMzF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAG3G"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function parseReflectionMetadata(metadataRaw) {
|
|
2
|
+
if (!metadataRaw) return {};
|
|
3
|
+
try {
|
|
4
|
+
const parsed = JSON.parse(metadataRaw);
|
|
5
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
6
|
+
} catch {
|
|
7
|
+
return {};
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function isReflectionEntry(entry) {
|
|
11
|
+
if (entry.category === "reflection") return true;
|
|
12
|
+
const metadata = parseReflectionMetadata(entry.metadata);
|
|
13
|
+
return metadata.type === "memory-reflection" || metadata.type === "memory-reflection-event" || metadata.type === "memory-reflection-item";
|
|
14
|
+
}
|
|
15
|
+
function getDisplayCategoryTag(entry) {
|
|
16
|
+
if (!isReflectionEntry(entry)) return `${entry.category}:${entry.scope}`;
|
|
17
|
+
return `reflection:${entry.scope}`;
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
getDisplayCategoryTag,
|
|
21
|
+
isReflectionEntry,
|
|
22
|
+
parseReflectionMetadata
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=reflection-metadata.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/reflection-metadata.ts"],
|
|
4
|
+
"sourcesContent": ["// SPDX-License-Identifier: LicenseRef-Mnemo-Pro\nexport function parseReflectionMetadata(metadataRaw: string | undefined): Record<string, unknown> {\n if (!metadataRaw) return {};\n try {\n const parsed = JSON.parse(metadataRaw);\n return parsed && typeof parsed === \"object\" ? parsed as Record<string, unknown> : {};\n } catch {\n return {};\n }\n}\n\nexport function isReflectionEntry(entry: { category: string; metadata?: string }): boolean {\n if (entry.category === \"reflection\") return true;\n const metadata = parseReflectionMetadata(entry.metadata);\n return metadata.type === \"memory-reflection\" ||\n metadata.type === \"memory-reflection-event\" ||\n metadata.type === \"memory-reflection-item\";\n}\n\nexport function getDisplayCategoryTag(entry: { category: string; scope: string; metadata?: string }): string {\n if (!isReflectionEntry(entry)) return `${entry.category}:${entry.scope}`;\n return `reflection:${entry.scope}`;\n}\n"],
|
|
5
|
+
"mappings": "AACO,SAAS,wBAAwB,aAA0D;AAChG,MAAI,CAAC,YAAa,QAAO,CAAC;AAC1B,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,WAAW;AACrC,WAAO,UAAU,OAAO,WAAW,WAAW,SAAoC,CAAC;AAAA,EACrF,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,SAAS,kBAAkB,OAAyD;AACzF,MAAI,MAAM,aAAa,aAAc,QAAO;AAC5C,QAAM,WAAW,wBAAwB,MAAM,QAAQ;AACvD,SAAO,SAAS,SAAS,uBACvB,SAAS,SAAS,6BAClB,SAAS,SAAS;AACtB;AAEO,SAAS,sBAAsB,OAAuE;AAC3G,MAAI,CAAC,kBAAkB,KAAK,EAAG,QAAO,GAAG,MAAM,QAAQ,IAAI,MAAM,KAAK;AACtE,SAAO,cAAc,MAAM,KAAK;AAClC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const REFLECTION_FALLBACK_SCORE_FACTOR = 0.75;
|
|
2
|
+
export interface ReflectionScoreInput {
|
|
3
|
+
ageDays: number;
|
|
4
|
+
midpointDays: number;
|
|
5
|
+
k: number;
|
|
6
|
+
baseWeight: number;
|
|
7
|
+
quality: number;
|
|
8
|
+
usedFallback: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function computeReflectionLogistic(ageDays: number, midpointDays: number, k: number): number;
|
|
11
|
+
export declare function computeReflectionScore(input: ReflectionScoreInput): number;
|
|
12
|
+
export declare function normalizeReflectionLineForAggregation(line: string): string;
|
|
13
|
+
//# sourceMappingURL=reflection-ranking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection-ranking.d.ts","sourceRoot":"","sources":["../../src/reflection-ranking.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAM1E;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK1E"}
|
|
@@ -1,33 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export interface ReflectionScoreInput {
|
|
5
|
-
ageDays: number;
|
|
6
|
-
midpointDays: number;
|
|
7
|
-
k: number;
|
|
8
|
-
baseWeight: number;
|
|
9
|
-
quality: number;
|
|
10
|
-
usedFallback: boolean;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function computeReflectionLogistic(ageDays: number, midpointDays: number, k: number): number {
|
|
1
|
+
const REFLECTION_FALLBACK_SCORE_FACTOR = 0.75;
|
|
2
|
+
function computeReflectionLogistic(ageDays, midpointDays, k) {
|
|
14
3
|
const safeAgeDays = Number.isFinite(ageDays) ? Math.max(0, ageDays) : 0;
|
|
15
4
|
const safeMidpointDays = Number.isFinite(midpointDays) && midpointDays > 0 ? midpointDays : 1;
|
|
16
5
|
const safeK = Number.isFinite(k) && k > 0 ? k : 0.1;
|
|
17
6
|
return 1 / (1 + Math.exp(safeK * (safeAgeDays - safeMidpointDays)));
|
|
18
7
|
}
|
|
19
|
-
|
|
20
|
-
export function computeReflectionScore(input: ReflectionScoreInput): number {
|
|
8
|
+
function computeReflectionScore(input) {
|
|
21
9
|
const logistic = computeReflectionLogistic(input.ageDays, input.midpointDays, input.k);
|
|
22
10
|
const baseWeight = Number.isFinite(input.baseWeight) && input.baseWeight > 0 ? input.baseWeight : 1;
|
|
23
11
|
const quality = Number.isFinite(input.quality) ? Math.max(0, Math.min(1, input.quality)) : 1;
|
|
24
12
|
const fallbackFactor = input.usedFallback ? REFLECTION_FALLBACK_SCORE_FACTOR : 1;
|
|
25
13
|
return logistic * baseWeight * quality * fallbackFactor;
|
|
26
14
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return String(line)
|
|
30
|
-
.trim()
|
|
31
|
-
.replace(/\s+/g, " ")
|
|
32
|
-
.toLowerCase();
|
|
15
|
+
function normalizeReflectionLineForAggregation(line) {
|
|
16
|
+
return String(line).trim().replace(/\s+/g, " ").toLowerCase();
|
|
33
17
|
}
|
|
18
|
+
export {
|
|
19
|
+
REFLECTION_FALLBACK_SCORE_FACTOR,
|
|
20
|
+
computeReflectionLogistic,
|
|
21
|
+
computeReflectionScore,
|
|
22
|
+
normalizeReflectionLineForAggregation
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=reflection-ranking.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/reflection-ranking.ts"],
|
|
4
|
+
"sourcesContent": ["// SPDX-License-Identifier: LicenseRef-Mnemo-Pro\nexport const REFLECTION_FALLBACK_SCORE_FACTOR = 0.75;\n\nexport interface ReflectionScoreInput {\n ageDays: number;\n midpointDays: number;\n k: number;\n baseWeight: number;\n quality: number;\n usedFallback: boolean;\n}\n\nexport function computeReflectionLogistic(ageDays: number, midpointDays: number, k: number): number {\n const safeAgeDays = Number.isFinite(ageDays) ? Math.max(0, ageDays) : 0;\n const safeMidpointDays = Number.isFinite(midpointDays) && midpointDays > 0 ? midpointDays : 1;\n const safeK = Number.isFinite(k) && k > 0 ? k : 0.1;\n return 1 / (1 + Math.exp(safeK * (safeAgeDays - safeMidpointDays)));\n}\n\nexport function computeReflectionScore(input: ReflectionScoreInput): number {\n const logistic = computeReflectionLogistic(input.ageDays, input.midpointDays, input.k);\n const baseWeight = Number.isFinite(input.baseWeight) && input.baseWeight > 0 ? input.baseWeight : 1;\n const quality = Number.isFinite(input.quality) ? Math.max(0, Math.min(1, input.quality)) : 1;\n const fallbackFactor = input.usedFallback ? REFLECTION_FALLBACK_SCORE_FACTOR : 1;\n return logistic * baseWeight * quality * fallbackFactor;\n}\n\nexport function normalizeReflectionLineForAggregation(line: string): string {\n return String(line)\n .trim()\n .replace(/\\s+/g, \" \")\n .toLowerCase();\n}\n"],
|
|
5
|
+
"mappings": "AACO,MAAM,mCAAmC;AAWzC,SAAS,0BAA0B,SAAiB,cAAsB,GAAmB;AAClG,QAAM,cAAc,OAAO,SAAS,OAAO,IAAI,KAAK,IAAI,GAAG,OAAO,IAAI;AACtE,QAAM,mBAAmB,OAAO,SAAS,YAAY,KAAK,eAAe,IAAI,eAAe;AAC5F,QAAM,QAAQ,OAAO,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI;AAChD,SAAO,KAAK,IAAI,KAAK,IAAI,SAAS,cAAc,iBAAiB;AACnE;AAEO,SAAS,uBAAuB,OAAqC;AAC1E,QAAM,WAAW,0BAA0B,MAAM,SAAS,MAAM,cAAc,MAAM,CAAC;AACrF,QAAM,aAAa,OAAO,SAAS,MAAM,UAAU,KAAK,MAAM,aAAa,IAAI,MAAM,aAAa;AAClG,QAAM,UAAU,OAAO,SAAS,MAAM,OAAO,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI;AAC3F,QAAM,iBAAiB,MAAM,eAAe,mCAAmC;AAC/E,SAAO,WAAW,aAAa,UAAU;AAC3C;AAEO,SAAS,sCAAsC,MAAsB;AAC1E,SAAO,OAAO,IAAI,EACf,KAAK,EACL,QAAQ,QAAQ,GAAG,EACnB,YAAY;AACjB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
type RetryClassifierInput = {
|
|
2
|
+
inReflectionScope: boolean;
|
|
3
|
+
retryCount: number;
|
|
4
|
+
usefulOutputChars: number;
|
|
5
|
+
error: unknown;
|
|
6
|
+
};
|
|
7
|
+
type RetryClassifierResult = {
|
|
8
|
+
retryable: boolean;
|
|
9
|
+
reason: "not_reflection_scope" | "retry_already_used" | "useful_output_present" | "non_retry_error" | "non_transient_error" | "transient_upstream_failure";
|
|
10
|
+
normalizedError: string;
|
|
11
|
+
};
|
|
12
|
+
type RetryState = {
|
|
13
|
+
count: number;
|
|
14
|
+
};
|
|
15
|
+
type RetryRunnerParams<T> = {
|
|
16
|
+
scope: "reflection" | "distiller";
|
|
17
|
+
runner: "embedded" | "cli";
|
|
18
|
+
retryState: RetryState;
|
|
19
|
+
execute: () => Promise<T>;
|
|
20
|
+
onLog?: (level: "info" | "warn", message: string) => void;
|
|
21
|
+
random?: () => number;
|
|
22
|
+
sleep?: (ms: number) => Promise<void>;
|
|
23
|
+
};
|
|
24
|
+
export declare function isTransientReflectionUpstreamError(error: unknown): boolean;
|
|
25
|
+
export declare function isReflectionNonRetryError(error: unknown): boolean;
|
|
26
|
+
export declare function classifyReflectionRetry(input: RetryClassifierInput): RetryClassifierResult;
|
|
27
|
+
export declare function computeReflectionRetryDelayMs(random?: () => number): number;
|
|
28
|
+
export declare function runWithReflectionTransientRetryOnce<T>(params: RetryRunnerParams<T>): Promise<T>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=reflection-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection-retry.d.ts","sourceRoot":"","sources":["../../src/reflection-retry.ts"],"names":[],"mappings":"AACA,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EACJ,sBAAsB,GACtB,oBAAoB,GACpB,uBAAuB,GACvB,iBAAiB,GACjB,qBAAqB,GACrB,4BAA4B,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,KAAK,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC,KAAK,iBAAiB,CAAC,CAAC,IAAI;IAC1B,KAAK,EAAE,YAAY,GAAG,WAAW,CAAC;IAClC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC,CAAC;AA6EF,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG1E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGjE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAmB1F;AAED,wBAAgB,6BAA6B,CAAC,MAAM,GAAE,MAAM,MAAoB,GAAG,MAAM,CAIxF;AAED,wBAAsB,mCAAmC,CAAC,CAAC,EACzD,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC,CAkCZ"}
|
|
@@ -1,36 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
type RetryClassifierInput = {
|
|
3
|
-
inReflectionScope: boolean;
|
|
4
|
-
retryCount: number;
|
|
5
|
-
usefulOutputChars: number;
|
|
6
|
-
error: unknown;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
type RetryClassifierResult = {
|
|
10
|
-
retryable: boolean;
|
|
11
|
-
reason:
|
|
12
|
-
| "not_reflection_scope"
|
|
13
|
-
| "retry_already_used"
|
|
14
|
-
| "useful_output_present"
|
|
15
|
-
| "non_retry_error"
|
|
16
|
-
| "non_transient_error"
|
|
17
|
-
| "transient_upstream_failure";
|
|
18
|
-
normalizedError: string;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
type RetryState = { count: number };
|
|
22
|
-
|
|
23
|
-
type RetryRunnerParams<T> = {
|
|
24
|
-
scope: "reflection" | "distiller";
|
|
25
|
-
runner: "embedded" | "cli";
|
|
26
|
-
retryState: RetryState;
|
|
27
|
-
execute: () => Promise<T>;
|
|
28
|
-
onLog?: (level: "info" | "warn", message: string) => void;
|
|
29
|
-
random?: () => number;
|
|
30
|
-
sleep?: (ms: number) => Promise<void>;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
const REFLECTION_TRANSIENT_PATTERNS: RegExp[] = [
|
|
1
|
+
const REFLECTION_TRANSIENT_PATTERNS = [
|
|
34
2
|
/unexpected eof/i,
|
|
35
3
|
/\beconnreset\b/i,
|
|
36
4
|
/\beconnaborted\b/i,
|
|
@@ -52,10 +20,9 @@ const REFLECTION_TRANSIENT_PATTERNS: RegExp[] = [
|
|
|
52
20
|
/\btimeout\b/i,
|
|
53
21
|
/\bund_err_(?:socket|headers_timeout|body_timeout)\b/i,
|
|
54
22
|
/network error/i,
|
|
55
|
-
/fetch failed/i
|
|
23
|
+
/fetch failed/i
|
|
56
24
|
];
|
|
57
|
-
|
|
58
|
-
const REFLECTION_NON_RETRY_PATTERNS: RegExp[] = [
|
|
25
|
+
const REFLECTION_NON_RETRY_PATTERNS = [
|
|
59
26
|
/\b401\b/i,
|
|
60
27
|
/\bunauthorized\b/i,
|
|
61
28
|
/invalid api key/i,
|
|
@@ -81,12 +48,10 @@ const REFLECTION_NON_RETRY_PATTERNS: RegExp[] = [
|
|
|
81
48
|
/content policy/i,
|
|
82
49
|
/safety policy/i,
|
|
83
50
|
/content filter/i,
|
|
84
|
-
/disallowed/i
|
|
51
|
+
/disallowed/i
|
|
85
52
|
];
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
function toErrorMessage(error: unknown): string {
|
|
53
|
+
const DEFAULT_SLEEP = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
54
|
+
function toErrorMessage(error) {
|
|
90
55
|
if (error instanceof Error) {
|
|
91
56
|
const msg = `${error.name}: ${error.message}`.trim();
|
|
92
57
|
return msg || "Error";
|
|
@@ -98,26 +63,21 @@ function toErrorMessage(error: unknown): string {
|
|
|
98
63
|
return String(error);
|
|
99
64
|
}
|
|
100
65
|
}
|
|
101
|
-
|
|
102
|
-
function clipSingleLine(text: string, maxLen = 260): string {
|
|
66
|
+
function clipSingleLine(text, maxLen = 260) {
|
|
103
67
|
const oneLine = text.replace(/\s+/g, " ").trim();
|
|
104
68
|
if (oneLine.length <= maxLen) return oneLine;
|
|
105
69
|
return `${oneLine.slice(0, maxLen - 3)}...`;
|
|
106
70
|
}
|
|
107
|
-
|
|
108
|
-
export function isTransientReflectionUpstreamError(error: unknown): boolean {
|
|
71
|
+
function isTransientReflectionUpstreamError(error) {
|
|
109
72
|
const msg = toErrorMessage(error);
|
|
110
73
|
return REFLECTION_TRANSIENT_PATTERNS.some((pattern) => pattern.test(msg));
|
|
111
74
|
}
|
|
112
|
-
|
|
113
|
-
export function isReflectionNonRetryError(error: unknown): boolean {
|
|
75
|
+
function isReflectionNonRetryError(error) {
|
|
114
76
|
const msg = toErrorMessage(error);
|
|
115
77
|
return REFLECTION_NON_RETRY_PATTERNS.some((pattern) => pattern.test(msg));
|
|
116
78
|
}
|
|
117
|
-
|
|
118
|
-
export function classifyReflectionRetry(input: RetryClassifierInput): RetryClassifierResult {
|
|
79
|
+
function classifyReflectionRetry(input) {
|
|
119
80
|
const normalizedError = clipSingleLine(toErrorMessage(input.error), 260);
|
|
120
|
-
|
|
121
81
|
if (!input.inReflectionScope) {
|
|
122
82
|
return { retryable: false, reason: "not_reflection_scope", normalizedError };
|
|
123
83
|
}
|
|
@@ -135,16 +95,12 @@ export function classifyReflectionRetry(input: RetryClassifierInput): RetryClass
|
|
|
135
95
|
}
|
|
136
96
|
return { retryable: false, reason: "non_transient_error", normalizedError };
|
|
137
97
|
}
|
|
138
|
-
|
|
139
|
-
export function computeReflectionRetryDelayMs(random: () => number = Math.random): number {
|
|
98
|
+
function computeReflectionRetryDelayMs(random = Math.random) {
|
|
140
99
|
const raw = random();
|
|
141
100
|
const clamped = Number.isFinite(raw) ? Math.min(1, Math.max(0, raw)) : 0;
|
|
142
|
-
return
|
|
101
|
+
return 1e3 + Math.floor(clamped * 2e3);
|
|
143
102
|
}
|
|
144
|
-
|
|
145
|
-
export async function runWithReflectionTransientRetryOnce<T>(
|
|
146
|
-
params: RetryRunnerParams<T>
|
|
147
|
-
): Promise<T> {
|
|
103
|
+
async function runWithReflectionTransientRetryOnce(params) {
|
|
148
104
|
try {
|
|
149
105
|
return await params.execute();
|
|
150
106
|
} catch (error) {
|
|
@@ -152,19 +108,16 @@ export async function runWithReflectionTransientRetryOnce<T>(
|
|
|
152
108
|
inReflectionScope: params.scope === "reflection" || params.scope === "distiller",
|
|
153
109
|
retryCount: params.retryState.count,
|
|
154
110
|
usefulOutputChars: 0,
|
|
155
|
-
error
|
|
111
|
+
error
|
|
156
112
|
});
|
|
157
113
|
if (!decision.retryable) throw error;
|
|
158
|
-
|
|
159
114
|
const delayMs = computeReflectionRetryDelayMs(params.random);
|
|
160
115
|
params.retryState.count += 1;
|
|
161
116
|
params.onLog?.(
|
|
162
117
|
"warn",
|
|
163
|
-
`memory-${params.scope}: transient upstream failure detected (${params.runner}); `
|
|
164
|
-
`retrying once in ${delayMs}ms (${decision.reason}). error=${decision.normalizedError}`
|
|
118
|
+
`memory-${params.scope}: transient upstream failure detected (${params.runner}); retrying once in ${delayMs}ms (${decision.reason}). error=${decision.normalizedError}`
|
|
165
119
|
);
|
|
166
120
|
await (params.sleep ?? DEFAULT_SLEEP)(delayMs);
|
|
167
|
-
|
|
168
121
|
try {
|
|
169
122
|
const result = await params.execute();
|
|
170
123
|
params.onLog?.("info", `memory-${params.scope}: retry succeeded (${params.runner})`);
|
|
@@ -172,10 +125,17 @@ export async function runWithReflectionTransientRetryOnce<T>(
|
|
|
172
125
|
} catch (retryError) {
|
|
173
126
|
params.onLog?.(
|
|
174
127
|
"warn",
|
|
175
|
-
`memory-${params.scope}: retry exhausted (${params.runner}). `
|
|
176
|
-
`error=${clipSingleLine(toErrorMessage(retryError), 260)}`
|
|
128
|
+
`memory-${params.scope}: retry exhausted (${params.runner}). error=${clipSingleLine(toErrorMessage(retryError), 260)}`
|
|
177
129
|
);
|
|
178
130
|
throw retryError;
|
|
179
131
|
}
|
|
180
132
|
}
|
|
181
133
|
}
|
|
134
|
+
export {
|
|
135
|
+
classifyReflectionRetry,
|
|
136
|
+
computeReflectionRetryDelayMs,
|
|
137
|
+
isReflectionNonRetryError,
|
|
138
|
+
isTransientReflectionUpstreamError,
|
|
139
|
+
runWithReflectionTransientRetryOnce
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=reflection-retry.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/reflection-retry.ts"],
|
|
4
|
+
"sourcesContent": ["// SPDX-License-Identifier: LicenseRef-Mnemo-Pro\ntype RetryClassifierInput = {\n inReflectionScope: boolean;\n retryCount: number;\n usefulOutputChars: number;\n error: unknown;\n};\n\ntype RetryClassifierResult = {\n retryable: boolean;\n reason:\n | \"not_reflection_scope\"\n | \"retry_already_used\"\n | \"useful_output_present\"\n | \"non_retry_error\"\n | \"non_transient_error\"\n | \"transient_upstream_failure\";\n normalizedError: string;\n};\n\ntype RetryState = { count: number };\n\ntype RetryRunnerParams<T> = {\n scope: \"reflection\" | \"distiller\";\n runner: \"embedded\" | \"cli\";\n retryState: RetryState;\n execute: () => Promise<T>;\n onLog?: (level: \"info\" | \"warn\", message: string) => void;\n random?: () => number;\n sleep?: (ms: number) => Promise<void>;\n};\n\nconst REFLECTION_TRANSIENT_PATTERNS: RegExp[] = [\n /unexpected eof/i,\n /\\beconnreset\\b/i,\n /\\beconnaborted\\b/i,\n /\\betimedout\\b/i,\n /\\bepipe\\b/i,\n /connection reset/i,\n /socket hang up/i,\n /socket (?:closed|disconnected)/i,\n /connection (?:closed|aborted|dropped)/i,\n /early close/i,\n /stream (?:ended|closed) unexpectedly/i,\n /temporar(?:y|ily).*unavailable/i,\n /upstream.*unavailable/i,\n /service unavailable/i,\n /bad gateway/i,\n /gateway timeout/i,\n /\\b(?:http|status)\\s*(?:502|503|504)\\b/i,\n /\\btimed out\\b/i,\n /\\btimeout\\b/i,\n /\\bund_err_(?:socket|headers_timeout|body_timeout)\\b/i,\n /network error/i,\n /fetch failed/i,\n];\n\nconst REFLECTION_NON_RETRY_PATTERNS: RegExp[] = [\n /\\b401\\b/i,\n /\\bunauthorized\\b/i,\n /invalid api key/i,\n /invalid[_ -]?token/i,\n /\\bauth(?:entication)?_?unavailable\\b/i,\n /insufficient (?:credit|credits|balance)/i,\n /\\bbilling\\b/i,\n /\\bquota exceeded\\b/i,\n /payment required/i,\n /model .*not found/i,\n /no such model/i,\n /unknown model/i,\n /context length/i,\n /context window/i,\n /request too large/i,\n /payload too large/i,\n /too many tokens/i,\n /token limit/i,\n /prompt too long/i,\n /session expired/i,\n /invalid session/i,\n /refusal/i,\n /content policy/i,\n /safety policy/i,\n /content filter/i,\n /disallowed/i,\n];\n\nconst DEFAULT_SLEEP = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));\n\nfunction toErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n const msg = `${error.name}: ${error.message}`.trim();\n return msg || \"Error\";\n }\n if (typeof error === \"string\") return error;\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n}\n\nfunction clipSingleLine(text: string, maxLen = 260): string {\n const oneLine = text.replace(/\\s+/g, \" \").trim();\n if (oneLine.length <= maxLen) return oneLine;\n return `${oneLine.slice(0, maxLen - 3)}...`;\n}\n\nexport function isTransientReflectionUpstreamError(error: unknown): boolean {\n const msg = toErrorMessage(error);\n return REFLECTION_TRANSIENT_PATTERNS.some((pattern) => pattern.test(msg));\n}\n\nexport function isReflectionNonRetryError(error: unknown): boolean {\n const msg = toErrorMessage(error);\n return REFLECTION_NON_RETRY_PATTERNS.some((pattern) => pattern.test(msg));\n}\n\nexport function classifyReflectionRetry(input: RetryClassifierInput): RetryClassifierResult {\n const normalizedError = clipSingleLine(toErrorMessage(input.error), 260);\n\n if (!input.inReflectionScope) {\n return { retryable: false, reason: \"not_reflection_scope\", normalizedError };\n }\n if (input.retryCount > 0) {\n return { retryable: false, reason: \"retry_already_used\", normalizedError };\n }\n if (input.usefulOutputChars > 0) {\n return { retryable: false, reason: \"useful_output_present\", normalizedError };\n }\n if (isReflectionNonRetryError(input.error)) {\n return { retryable: false, reason: \"non_retry_error\", normalizedError };\n }\n if (isTransientReflectionUpstreamError(input.error)) {\n return { retryable: true, reason: \"transient_upstream_failure\", normalizedError };\n }\n return { retryable: false, reason: \"non_transient_error\", normalizedError };\n}\n\nexport function computeReflectionRetryDelayMs(random: () => number = Math.random): number {\n const raw = random();\n const clamped = Number.isFinite(raw) ? Math.min(1, Math.max(0, raw)) : 0;\n return 1000 + Math.floor(clamped * 2000);\n}\n\nexport async function runWithReflectionTransientRetryOnce<T>(\n params: RetryRunnerParams<T>\n): Promise<T> {\n try {\n return await params.execute();\n } catch (error) {\n const decision = classifyReflectionRetry({\n inReflectionScope: params.scope === \"reflection\" || params.scope === \"distiller\",\n retryCount: params.retryState.count,\n usefulOutputChars: 0,\n error,\n });\n if (!decision.retryable) throw error;\n\n const delayMs = computeReflectionRetryDelayMs(params.random);\n params.retryState.count += 1;\n params.onLog?.(\n \"warn\",\n `memory-${params.scope}: transient upstream failure detected (${params.runner}); ` +\n `retrying once in ${delayMs}ms (${decision.reason}). error=${decision.normalizedError}`\n );\n await (params.sleep ?? DEFAULT_SLEEP)(delayMs);\n\n try {\n const result = await params.execute();\n params.onLog?.(\"info\", `memory-${params.scope}: retry succeeded (${params.runner})`);\n return result;\n } catch (retryError) {\n params.onLog?.(\n \"warn\",\n `memory-${params.scope}: retry exhausted (${params.runner}). ` +\n `error=${clipSingleLine(toErrorMessage(retryError), 260)}`\n );\n throw retryError;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface ReflectionSlices {
|
|
2
|
+
invariants: string[];
|
|
3
|
+
derived: string[];
|
|
4
|
+
}
|
|
5
|
+
export interface ReflectionMappedMemory {
|
|
6
|
+
text: string;
|
|
7
|
+
category: "preference" | "fact" | "decision";
|
|
8
|
+
heading: string;
|
|
9
|
+
}
|
|
10
|
+
export type ReflectionMappedKind = "user-model" | "agent-model" | "lesson" | "decision";
|
|
11
|
+
export interface ReflectionMappedMemoryItem extends ReflectionMappedMemory {
|
|
12
|
+
mappedKind: ReflectionMappedKind;
|
|
13
|
+
ordinal: number;
|
|
14
|
+
groupSize: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ReflectionSliceItem {
|
|
17
|
+
text: string;
|
|
18
|
+
itemKind: "invariant" | "derived";
|
|
19
|
+
section: "Invariants" | "Derived";
|
|
20
|
+
ordinal: number;
|
|
21
|
+
groupSize: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ReflectionGovernanceEntry {
|
|
24
|
+
priority?: string;
|
|
25
|
+
status?: string;
|
|
26
|
+
area?: string;
|
|
27
|
+
summary: string;
|
|
28
|
+
details?: string;
|
|
29
|
+
suggestedAction?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function extractSectionMarkdown(markdown: string, heading: string): string;
|
|
32
|
+
export declare function parseSectionBullets(markdown: string, heading: string): string[];
|
|
33
|
+
export declare function isPlaceholderReflectionSliceLine(line: string): boolean;
|
|
34
|
+
export declare function normalizeReflectionSliceLine(line: string): string;
|
|
35
|
+
export declare function sanitizeReflectionSliceLines(lines: string[]): string[];
|
|
36
|
+
export declare function extractReflectionLessons(reflectionText: string): string[];
|
|
37
|
+
export declare function extractReflectionLearningGovernanceCandidates(reflectionText: string): ReflectionGovernanceEntry[];
|
|
38
|
+
export declare function extractReflectionMappedMemories(reflectionText: string): ReflectionMappedMemory[];
|
|
39
|
+
export declare function extractReflectionMappedMemoryItems(reflectionText: string): ReflectionMappedMemoryItem[];
|
|
40
|
+
export declare function extractReflectionSlices(reflectionText: string): ReflectionSlices;
|
|
41
|
+
export declare function extractReflectionSliceItems(reflectionText: string): ReflectionSliceItem[];
|
|
42
|
+
//# sourceMappingURL=reflection-slices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection-slices.d.ts","sourceRoot":"","sources":["../../src/reflection-slices.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAExF,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;IACxE,UAAU,EAAE,oBAAoB,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBhF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAW/E;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAStE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAItE;AAgBD,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAEzE;AAED,wBAAgB,6CAA6C,CAAC,cAAc,EAAE,MAAM,GAAG,yBAAyB,EAAE,CA4BjH;AAgCD,wBAAgB,+BAA+B,CAAC,cAAc,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAEhG;AAED,wBAAgB,kCAAkC,CAAC,cAAc,EAAE,MAAM,GAAG,0BAA0B,EAAE,CAiCvG;AAED,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,gBAAgB,CA+BhF;AAED,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAqBzF"}
|