@cachly-dev/mcp-server 0.10.129 → 0.10.130
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/README.md +2 -2
- package/dist/index.js +1 -7
- package/dist/packages/telegram-notify/client.js +2 -75
- package/dist/src/ambient-cli.js +7 -253
- package/dist/src/ambient-deps.js +1 -55
- package/dist/src/ambient-hooks.js +5 -278
- package/dist/src/ambient-ledger.js +6 -95
- package/dist/src/ambient-memory.js +1 -67
- package/dist/src/ambient-recall.js +1 -221
- package/dist/src/aussetzer.js +1 -225
- package/dist/src/auth.js +9 -140
- package/dist/src/autor-abzeichen.js +1 -56
- package/dist/src/autor.js +1 -136
- package/dist/src/bauabdruck.js +1 -93
- package/dist/src/bedeutung.js +2 -323
- package/dist/src/bench/cachly-bench.js +4 -249
- package/dist/src/bench/external-corpus.js +4 -135
- package/dist/src/bench/fixtures.js +1 -225
- package/dist/src/brain-export.js +16 -119
- package/dist/src/brain-watch-hook.js +8 -86
- package/dist/src/cachly-url.js +1 -21
- package/dist/src/ckg.js +1 -108
- package/dist/src/cls-hook.js +8 -94
- package/dist/src/confidence.js +1 -50
- package/dist/src/credentials.js +1 -85
- package/dist/src/deutsch.js +1 -223
- package/dist/src/doctor.js +2 -248
- package/dist/src/editor.js +1 -63
- package/dist/src/eingaenge-nachruesten.js +1 -290
- package/dist/src/eingaenge.js +2 -260
- package/dist/src/embeddings.js +13 -223
- package/dist/src/feldreparatur.js +3 -113
- package/dist/src/first-contact.js +4 -108
- package/dist/src/first-recall-proof.js +4 -41
- package/dist/src/funnel-milestones.js +2 -48
- package/dist/src/geliefert.js +1 -114
- package/dist/src/handlers/advanced.js +38 -537
- package/dist/src/handlers/brain.js +69 -4397
- package/dist/src/handlers/cache.js +59 -638
- package/dist/src/handlers/context.js +17 -182
- package/dist/src/handlers/fedbrain.js +40 -1436
- package/dist/src/handlers/instances.js +16 -201
- package/dist/src/handlers/roadmap.js +13 -175
- package/dist/src/handlers/share.js +19 -530
- package/dist/src/handlers/syndicate.js +38 -904
- package/dist/src/handlers/team.js +89 -1865
- package/dist/src/handlers/viz.js +3 -148
- package/dist/src/index.js +321 -4281
- package/dist/src/interferenz.js +1 -141
- package/dist/src/kostprobe.js +7 -125
- package/dist/src/lesson-preview.js +2 -133
- package/dist/src/namespace.js +1 -128
- package/dist/src/notifier.js +1 -6
- package/dist/src/rangfolge-stellschrauben.js +1 -0
- package/dist/src/rangfolge.js +1 -249
- package/dist/src/raumkorrektur.js +1 -197
- package/dist/src/recall-tiefe.js +1 -42
- package/dist/src/rerank.js +1 -154
- package/dist/src/resonanz.js +1 -140
- package/dist/src/search.js +1 -2104
- package/dist/src/seltenheitsbestand.js +1 -92
- package/dist/src/speicherlage.js +1 -84
- package/dist/src/spuren.js +1 -150
- package/dist/src/starter-corpus.js +1 -165
- package/dist/src/telemetry-types.js +0 -13
- package/dist/src/tools.js +10 -2465
- package/dist/src/toolspecs.js +1 -121
- package/dist/src/upgrade-nudge.js +1 -29
- package/dist/src/utils.js +1 -89
- package/dist/src/versuch.js +1 -264
- package/dist/src/vorspann.js +1 -146
- package/dist/src/wartung/vektoren-verdichten.js +1 -200
- package/dist/src/werkzeug-nutzung.js +1 -72
- package/dist/src/wertbeitrag.js +1 -203
- package/dist/src/wirkungsspur.js +1 -0
- package/glama.json +1 -1
- package/package.json +8 -7
- package/server.json +3 -3
- package/dist/index.d.ts +0 -1
- package/dist/index.js.map +0 -1
- package/dist/packages/telegram-notify/client.d.ts +0 -19
- package/dist/packages/telegram-notify/client.js.map +0 -1
- package/dist/src/ambient-cli.d.ts +0 -101
- package/dist/src/ambient-cli.js.map +0 -1
- package/dist/src/ambient-deps.d.ts +0 -26
- package/dist/src/ambient-deps.js.map +0 -1
- package/dist/src/ambient-hooks.d.ts +0 -137
- package/dist/src/ambient-hooks.js.map +0 -1
- package/dist/src/ambient-ledger.d.ts +0 -19
- package/dist/src/ambient-ledger.js.map +0 -1
- package/dist/src/ambient-memory.d.ts +0 -12
- package/dist/src/ambient-memory.js.map +0 -1
- package/dist/src/ambient-recall.d.ts +0 -127
- package/dist/src/ambient-recall.js.map +0 -1
- package/dist/src/aussetzer.d.ts +0 -156
- package/dist/src/aussetzer.js.map +0 -1
- package/dist/src/auth.d.ts +0 -43
- package/dist/src/auth.js.map +0 -1
- package/dist/src/autor-abzeichen.d.ts +0 -41
- package/dist/src/autor-abzeichen.js.map +0 -1
- package/dist/src/autor.d.ts +0 -101
- package/dist/src/autor.js.map +0 -1
- package/dist/src/bauabdruck-daten.generiert.json +0 -5
- package/dist/src/bauabdruck.d.ts +0 -38
- package/dist/src/bauabdruck.js.map +0 -1
- package/dist/src/bedeutung.d.ts +0 -168
- package/dist/src/bedeutung.js.map +0 -1
- package/dist/src/bench/cachly-bench.d.ts +0 -61
- package/dist/src/bench/cachly-bench.js.map +0 -1
- package/dist/src/bench/external-corpus.d.ts +0 -44
- package/dist/src/bench/external-corpus.js.map +0 -1
- package/dist/src/bench/fixtures.d.ts +0 -37
- package/dist/src/bench/fixtures.js.map +0 -1
- package/dist/src/brain-export.d.ts +0 -64
- package/dist/src/brain-export.js.map +0 -1
- package/dist/src/brain-watch-hook.d.ts +0 -21
- package/dist/src/brain-watch-hook.js.map +0 -1
- package/dist/src/cachly-url.d.ts +0 -68
- package/dist/src/cachly-url.js.map +0 -1
- package/dist/src/ckg.d.ts +0 -54
- package/dist/src/ckg.js.map +0 -1
- package/dist/src/cls-hook.d.ts +0 -15
- package/dist/src/cls-hook.js.map +0 -1
- package/dist/src/confidence.d.ts +0 -19
- package/dist/src/confidence.js.map +0 -1
- package/dist/src/credentials.d.ts +0 -37
- package/dist/src/credentials.js.map +0 -1
- package/dist/src/deutsch.d.ts +0 -98
- package/dist/src/deutsch.js.map +0 -1
- package/dist/src/doctor.d.ts +0 -47
- package/dist/src/doctor.js.map +0 -1
- package/dist/src/editor.d.ts +0 -9
- package/dist/src/editor.js.map +0 -1
- package/dist/src/eingaenge-nachruesten.d.ts +0 -41
- package/dist/src/eingaenge-nachruesten.js.map +0 -1
- package/dist/src/eingaenge.d.ts +0 -159
- package/dist/src/eingaenge.js.map +0 -1
- package/dist/src/embeddings.d.ts +0 -48
- package/dist/src/embeddings.js.map +0 -1
- package/dist/src/feldreparatur.d.ts +0 -58
- package/dist/src/feldreparatur.js.map +0 -1
- package/dist/src/first-contact.d.ts +0 -56
- package/dist/src/first-contact.js.map +0 -1
- package/dist/src/first-recall-proof.d.ts +0 -19
- package/dist/src/first-recall-proof.js.map +0 -1
- package/dist/src/funnel-milestones.d.ts +0 -5
- package/dist/src/funnel-milestones.js.map +0 -1
- package/dist/src/geliefert.d.ts +0 -63
- package/dist/src/geliefert.js.map +0 -1
- package/dist/src/handlers/advanced.d.ts +0 -6
- package/dist/src/handlers/advanced.js.map +0 -1
- package/dist/src/handlers/brain.d.ts +0 -41
- package/dist/src/handlers/brain.js.map +0 -1
- package/dist/src/handlers/cache.d.ts +0 -6
- package/dist/src/handlers/cache.js.map +0 -1
- package/dist/src/handlers/context.d.ts +0 -6
- package/dist/src/handlers/context.js.map +0 -1
- package/dist/src/handlers/fedbrain.d.ts +0 -18
- package/dist/src/handlers/fedbrain.js.map +0 -1
- package/dist/src/handlers/instances.d.ts +0 -33
- package/dist/src/handlers/instances.js.map +0 -1
- package/dist/src/handlers/roadmap.d.ts +0 -6
- package/dist/src/handlers/roadmap.js.map +0 -1
- package/dist/src/handlers/share.d.ts +0 -8
- package/dist/src/handlers/share.js.map +0 -1
- package/dist/src/handlers/syndicate.d.ts +0 -6
- package/dist/src/handlers/syndicate.js.map +0 -1
- package/dist/src/handlers/team.d.ts +0 -45
- package/dist/src/handlers/team.js.map +0 -1
- package/dist/src/handlers/viz.d.ts +0 -6
- package/dist/src/handlers/viz.js.map +0 -1
- package/dist/src/index.d.ts +0 -93
- package/dist/src/index.js.map +0 -1
- package/dist/src/interferenz.d.ts +0 -111
- package/dist/src/interferenz.js.map +0 -1
- package/dist/src/kostprobe.d.ts +0 -25
- package/dist/src/kostprobe.js.map +0 -1
- package/dist/src/lesson-preview.d.ts +0 -81
- package/dist/src/lesson-preview.js.map +0 -1
- package/dist/src/namespace.d.ts +0 -20
- package/dist/src/namespace.js.map +0 -1
- package/dist/src/notifier.d.ts +0 -5
- package/dist/src/notifier.js.map +0 -1
- package/dist/src/rangfolge.d.ts +0 -205
- package/dist/src/rangfolge.js.map +0 -1
- package/dist/src/raumkorrektur.d.ts +0 -100
- package/dist/src/raumkorrektur.js.map +0 -1
- package/dist/src/recall-tiefe.d.ts +0 -48
- package/dist/src/recall-tiefe.js.map +0 -1
- package/dist/src/rerank.d.ts +0 -48
- package/dist/src/rerank.js.map +0 -1
- package/dist/src/resonanz.d.ts +0 -85
- package/dist/src/resonanz.js.map +0 -1
- package/dist/src/search.d.ts +0 -153
- package/dist/src/search.js.map +0 -1
- package/dist/src/seltenheitsbestand.d.ts +0 -53
- package/dist/src/seltenheitsbestand.js.map +0 -1
- package/dist/src/speicherlage.d.ts +0 -51
- package/dist/src/speicherlage.js.map +0 -1
- package/dist/src/spuren.d.ts +0 -97
- package/dist/src/spuren.js.map +0 -1
- package/dist/src/starter-corpus.d.ts +0 -28
- package/dist/src/starter-corpus.js.map +0 -1
- package/dist/src/telemetry-types.d.ts +0 -87
- package/dist/src/telemetry-types.js.map +0 -1
- package/dist/src/tools.d.ts +0 -2933
- package/dist/src/tools.js.map +0 -1
- package/dist/src/toolspecs.d.ts +0 -43
- package/dist/src/toolspecs.js.map +0 -1
- package/dist/src/upgrade-nudge.d.ts +0 -15
- package/dist/src/upgrade-nudge.js.map +0 -1
- package/dist/src/utils.d.ts +0 -34
- package/dist/src/utils.js.map +0 -1
- package/dist/src/versuch.d.ts +0 -187
- package/dist/src/versuch.js.map +0 -1
- package/dist/src/vorspann.d.ts +0 -73
- package/dist/src/vorspann.js.map +0 -1
- package/dist/src/wartung/vektoren-verdichten.d.ts +0 -50
- package/dist/src/wartung/vektoren-verdichten.js.map +0 -1
- package/dist/src/werkzeug-nutzung.d.ts +0 -62
- package/dist/src/werkzeug-nutzung.js.map +0 -1
- package/dist/src/wertbeitrag.d.ts +0 -148
- package/dist/src/wertbeitrag.js.map +0 -1
package/dist/src/aussetzer.d.ts
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Meldestelle fuer stille Aussetzer.
|
|
3
|
-
*
|
|
4
|
-
* ── Warum es das gibt ───────────────────────────────────────────────────────
|
|
5
|
-
*
|
|
6
|
-
* Am 20.08.2026 wurde am Produktionsspeicher gemessen: `cachly:lesson:vec:*`
|
|
7
|
-
* war LEER — 0 Vektoren bei 506 Lektionen. Der Recall-Pfad steigt bei
|
|
8
|
-
* `vektorbestand.groesse === 0` aus und faellt auf den reinen Wortabgleich
|
|
9
|
-
* zurueck. Er tut das STUMM.
|
|
10
|
-
*
|
|
11
|
-
* Von aussen ist dieser Zustand von "alles in Ordnung" nicht zu
|
|
12
|
-
* unterscheiden: die Suche liefert weiter Ergebnisse, nur schlechtere. Die am
|
|
13
|
-
* 19.08. gemessene Verbesserung von 21 auf 40 Prozent existierte in
|
|
14
|
-
* Produktion nie, und nichts hat es gesagt.
|
|
15
|
-
*
|
|
16
|
-
* Das ist die Fehlerklasse "Stille wird als gruen gebucht". Diese Datei ist
|
|
17
|
-
* die Gegenmassnahme an der billigsten Stelle: eine Zeile im Protokoll.
|
|
18
|
-
*
|
|
19
|
-
* ── Warum nur EINMAL je Grund ───────────────────────────────────────────────
|
|
20
|
-
*
|
|
21
|
-
* Der Recall-Pfad laeuft bei jeder Anfrage. Eine Zeile je Anfrage waere nach
|
|
22
|
-
* einer Stunde ein Protokoll, das niemand mehr liest — und ein Protokoll, das
|
|
23
|
-
* niemand liest, ist wieder Stille. Einmal je Grund und Prozess ist die
|
|
24
|
-
* Menge, die auffaellt, ohne zu ermueden.
|
|
25
|
-
*
|
|
26
|
-
* ── Warum stderr und nicht stdout ───────────────────────────────────────────
|
|
27
|
-
*
|
|
28
|
-
* Ueber stdout laeuft das MCP-Protokoll. Eine Zeile Text dort ist kein
|
|
29
|
-
* Hinweis, sondern ein Verbindungsabbruch.
|
|
30
|
-
*/
|
|
31
|
-
/**
|
|
32
|
-
* Aus einem geworfenen Wert einen lesbaren Grund machen.
|
|
33
|
-
*
|
|
34
|
-
* JavaScript laesst zu, dass ALLES geworfen wird — ein Error, ein String, ein
|
|
35
|
-
* undefined. `String(e)` auf einem leeren Objekt ergibt "[object Object]", und
|
|
36
|
-
* das ist als Ursachenangabe wertlos.
|
|
37
|
-
*
|
|
38
|
-
* Gekuerzt auf 200 Zeichen: der Grund gehoert in EINE Protokollzeile. Manche
|
|
39
|
-
* Anbieter antworten mit einer ganzen HTML-Seite, und ein Protokoll, das
|
|
40
|
-
* niemand mehr liest, ist wieder Stille.
|
|
41
|
-
*/
|
|
42
|
-
export declare function fehlerText(e: unknown): string;
|
|
43
|
-
/**
|
|
44
|
-
* Meldet einen Aussetzer genau einmal je Grund und Prozess.
|
|
45
|
-
*
|
|
46
|
-
* @param grund kurzer Schluessel, z. B. 'bedeutung-ohne-vektoren'
|
|
47
|
-
* @param text was ausgefallen ist und was das fuer das Ergebnis heisst
|
|
48
|
-
* @returns true, wenn diese Meldung wirklich hinausging
|
|
49
|
-
*/
|
|
50
|
-
export declare function meldeEinmal(grund: string, text: string): boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Wurde dieser Grund in diesem Prozess schon gemeldet?
|
|
53
|
-
*
|
|
54
|
-
* Fuer `brain_doctor`: dort soll stehen, was hier passiert ist, ohne dass
|
|
55
|
-
* jemand ein Protokoll durchsuchen muss.
|
|
56
|
-
*/
|
|
57
|
-
export declare function schonGemeldet(grund: string): boolean;
|
|
58
|
-
/** Alle bisher gemeldeten Gruende, in der Reihenfolge des Auftretens. */
|
|
59
|
-
export declare function gemeldeteGruende(): string[];
|
|
60
|
-
/**
|
|
61
|
-
* Setzt die Merkliste zurueck.
|
|
62
|
-
*
|
|
63
|
-
* Nur fuer Tests. Ohne das wuerde die erste Testdatei alle weiteren blind
|
|
64
|
-
* machen — genau der Fehler, gegen den diese Datei antritt.
|
|
65
|
-
*/
|
|
66
|
-
export declare function setzeAussetzerZurueck(): void;
|
|
67
|
-
/** Der Grund, um den es beim Anlass ging: Bedeutungsabgleich ohne Vektoren. */
|
|
68
|
-
export declare const OHNE_VEKTOREN = "bedeutung-ohne-vektoren";
|
|
69
|
-
/** Der Nachbarfall: es gibt gar keinen Dienst zum Einbetten. */
|
|
70
|
-
export declare const OHNE_DIENST = "bedeutung-ohne-dienst";
|
|
71
|
-
/**
|
|
72
|
-
* Der Bestand ist da, aber die FRAGE liess sich nicht einbetten.
|
|
73
|
-
*
|
|
74
|
-
* Eigener Grund und nicht mit OHNE_VEKTOREN zusammengelegt: hier ist der
|
|
75
|
-
* Bestand gesund und der fremde Dienst hat gerade nicht geantwortet. Das ist
|
|
76
|
-
* ein Netzproblem und keine fehlende Nachruestung — wer beides unter einem
|
|
77
|
-
* Namen fuehrt, sucht spaeter an der falschen Stelle.
|
|
78
|
-
*/
|
|
79
|
-
export declare const OHNE_FRAGEVEKTOR = "bedeutung-ohne-fragevektor";
|
|
80
|
-
/**
|
|
81
|
-
* Der Auffang-catch am Ende des Bedeutungspfads.
|
|
82
|
-
*
|
|
83
|
-
* Eigener Grund, weil er etwas anderes bedeutet als die drei darueber: die
|
|
84
|
-
* sind BENANNTE Ausstiege ("kein Dienst", "keine Vektoren", "Frage nicht
|
|
85
|
-
* einbettbar") — hier ist etwas Unerwartetes passiert. Wer beides unter einem
|
|
86
|
-
* Namen fuehrt, sieht nicht, dass er einen Fehler hat statt einer Luecke.
|
|
87
|
-
*/
|
|
88
|
-
export declare const SINNPFAD_ABBRUCH = "bedeutung-abbruch";
|
|
89
|
-
/**
|
|
90
|
-
* Die Einbettung BEIM SCHREIBEN einer Lektion ist fehlgeschlagen.
|
|
91
|
-
*
|
|
92
|
-
* ── Warum dieser Grund am 22.08.2026 dazukam ────────────────────────────────
|
|
93
|
-
*
|
|
94
|
-
* Alle Gruende darueber betreffen das SUCHEN. Das Schreiben hatte keinen: in
|
|
95
|
-
* handlers/brain.ts standen drei leere `catch { }` um die drei Einbettungen
|
|
96
|
-
* (Volltext, Themenname, Eingaenge). Sie sind mit Absicht fehlertolerant —
|
|
97
|
-
* eine Lektion muss auch ohne Netz gespeichert werden koennen — aber sie
|
|
98
|
-
* warfen den GRUND weg.
|
|
99
|
-
*
|
|
100
|
-
* Gemessen am 22.08.2026 ueber den Admin-Endpunkt: von 50 gezogenen Instanzen
|
|
101
|
-
* hatten drei Lektionen (10, 2 und 46) und NULL Vektoren. Warum, konnte
|
|
102
|
-
* niemand sagen — kein Protokoll, keine Zahl, nichts. Der Wachhund meldete
|
|
103
|
-
* seit zwei Tagen "Bedeutungsabgleich AUS", ohne dass eine Ursache
|
|
104
|
-
* feststellbar war.
|
|
105
|
-
*
|
|
106
|
-
* Die Fehlerklasse ist bekannt: "Stille wird als gruen gebucht". Der
|
|
107
|
-
* Unterschied hier ist, dass nicht einmal der Ausfall still war, sondern nur
|
|
108
|
-
* sein Grund. Ein Alarm ohne Ursache ist ein Alarm, den man abschaltet.
|
|
109
|
-
*
|
|
110
|
-
* Die Lektion wird weiterhin gespeichert. Es aendert sich NUR, dass der Grund
|
|
111
|
-
* einmal je Prozess im Protokoll steht.
|
|
112
|
-
*/
|
|
113
|
-
export declare const OHNE_SCHREIBVEKTOR = "einbettung-beim-schreiben";
|
|
114
|
-
/** Der Versuch ist eingeschaltet, laeuft aber ohne Wirkung (siehe versuch.ts). */
|
|
115
|
-
export declare const VERSUCH_LEER = "versuch-laeuft-leer";
|
|
116
|
-
/** Schluessel-Vorsatz der Vermerke. */
|
|
117
|
-
export declare const AUSSETZER_VORSATZ = "cachly:aussetzer:";
|
|
118
|
-
/** 30 Tage. Wird bei jedem Vermerk erneuert. */
|
|
119
|
-
export declare const AUSSETZER_TTL_SEKUNDEN: number;
|
|
120
|
-
/** Was ein Vermerk enthaelt. */
|
|
121
|
-
export interface Aussetzervermerk {
|
|
122
|
-
grund: string;
|
|
123
|
-
anzahl: number;
|
|
124
|
-
zuletzt: string;
|
|
125
|
-
text: string;
|
|
126
|
-
}
|
|
127
|
-
/** So viel wie ein Vermerk braucht, ohne den Speicher zu belasten. */
|
|
128
|
-
interface VermerkSpeicher {
|
|
129
|
-
hincrby(key: string, field: string, increment: number): Promise<number>;
|
|
130
|
-
hset(key: string, values: Record<string, string>): Promise<unknown>;
|
|
131
|
-
expire(key: string, seconds: number): Promise<unknown>;
|
|
132
|
-
keys(pattern: string): Promise<string[]>;
|
|
133
|
-
hgetall(key: string): Promise<Record<string, string>>;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Meldet den Aussetzer (einmal je Prozess) UND vermerkt ihn dauerhaft.
|
|
137
|
-
*
|
|
138
|
-
* Der Vermerk darf die Anfrage NIE zum Scheitern bringen: wer eine Suche
|
|
139
|
-
* abbricht, weil er den Ausfall nicht aufschreiben konnte, hat aus einer
|
|
140
|
-
* Verschlechterung einen Ausfall gemacht. Scheitert das Schreiben, bleibt es
|
|
141
|
-
* bei der stderr-Zeile — gemeldet ueber meldeEinmal, damit auch dieser
|
|
142
|
-
* Rueckfall nicht still ist.
|
|
143
|
-
*
|
|
144
|
-
* @returns true, wenn die stderr-Meldung wirklich hinausging
|
|
145
|
-
*/
|
|
146
|
-
export declare function meldeUndVermerke(redis: VermerkSpeicher | null | undefined, grund: string, text: string): Promise<boolean>;
|
|
147
|
-
/**
|
|
148
|
-
* Alle Vermerke der letzten 30 Tage, der haeufigste zuerst.
|
|
149
|
-
*
|
|
150
|
-
* Fuer `brain_doctor`. Ein Fehler beim Lesen liefert eine leere Liste — aber
|
|
151
|
-
* NICHT still: der Aufrufer bekommt `null` und kann "nicht gemessen" von
|
|
152
|
-
* "nichts gefunden" unterscheiden. Genau dieser Unterschied fehlte an allen
|
|
153
|
-
* Stellen, aus denen diese Datei entstanden ist.
|
|
154
|
-
*/
|
|
155
|
-
export declare function leseVermerke(redis: VermerkSpeicher | null | undefined): Promise<Aussetzervermerk[] | null>;
|
|
156
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aussetzer.js","sourceRoot":"","sources":["../../src/aussetzer.ts"],"names":[],"mappings":"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"}
|
package/dist/src/auth.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
export declare function jwtExpiryMs(token: string): number | null;
|
|
2
|
-
/** Long-lived API keys cannot expire silently; raw access tokens can. */
|
|
3
|
-
export declare const API_KEY_PREFIX = "cky_";
|
|
4
|
-
export type AuthState = 'healthy' | 'no_jwt' | 'expired' | 'near_expiry' | 'long_lived';
|
|
5
|
-
export interface AuthDiagnosis {
|
|
6
|
-
state: AuthState;
|
|
7
|
-
/** Safe to make API calls right now? (healthy, near_expiry and long_lived all are.) */
|
|
8
|
-
usable: boolean;
|
|
9
|
-
/** ms until expiry, or null for tokens with no exp claim (long-lived keys). */
|
|
10
|
-
expiresInMs: number | null;
|
|
11
|
-
/** Human-facing message with the single fix, when action is needed. */
|
|
12
|
-
message: string;
|
|
13
|
-
}
|
|
14
|
-
/** A long-lived API key (cky_live_… / cky_…) has no exp and never expires silently. */
|
|
15
|
-
export declare function isLongLivedApiKey(token: string): boolean;
|
|
16
|
-
export declare const NEAR_EXPIRY_MS: number;
|
|
17
|
-
/**
|
|
18
|
-
* Diagnose the current credential without making any network call. Pure +
|
|
19
|
-
* deterministic (pass `now` in tests).
|
|
20
|
-
*/
|
|
21
|
-
export declare function diagnoseAuth(jwt: string, now?: number): AuthDiagnosis;
|
|
22
|
-
export type AuthHealAction = 'none' | 'refresh' | 'reauth';
|
|
23
|
-
/**
|
|
24
|
-
* Decide what self-healing step (if any) to take for a diagnosis. Pure so the
|
|
25
|
-
* decision is unit-testable independently of the network-bound executor.
|
|
26
|
-
*/
|
|
27
|
-
export declare function planAuthHeal(d: AuthDiagnosis): AuthHealAction;
|
|
28
|
-
export declare function checkJwt(jwt: string): void;
|
|
29
|
-
export declare const DEFAULT_AUTH_BASE = "https://auth.cachly.dev/realms/cachly/protocol/openid-connect";
|
|
30
|
-
export interface ClientCredentials {
|
|
31
|
-
clientId: string;
|
|
32
|
-
clientSecret: string;
|
|
33
|
-
scope?: string;
|
|
34
|
-
/** Override the Keycloak realm token base (self-host). */
|
|
35
|
-
authBase?: string;
|
|
36
|
-
}
|
|
37
|
-
/** Read M2M client credentials from the environment, if both are present. */
|
|
38
|
-
export declare function readClientCredentialsFromEnv(env?: NodeJS.ProcessEnv): ClientCredentials | null;
|
|
39
|
-
/** Build the application/x-www-form-urlencoded body for a client_credentials grant. */
|
|
40
|
-
export declare function buildClientCredentialsBody(c: ClientCredentials): string;
|
|
41
|
-
/** Token endpoint URL for a given credentials/realm config. */
|
|
42
|
-
export declare function clientCredentialsTokenUrl(c: ClientCredentials): string;
|
|
43
|
-
export declare function handleApiError(status: number, detail: string): never;
|
package/dist/src/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wer hat diese Lektion geschrieben — ich oder jemand anderes?
|
|
3
|
-
*
|
|
4
|
-
* `session_start_summary` nimmt seit jeher einen Parameter `author` entgegen
|
|
5
|
-
* und beschreibt ihn in der Werkzeug-Spezifikation so:
|
|
6
|
-
*
|
|
7
|
-
* "Your name or handle (optional). Same as session_start — used for team
|
|
8
|
-
* lesson filtering."
|
|
9
|
-
*
|
|
10
|
-
* Die Zusage wurde nie eingeloest. Der Handler holte den Wert aus den
|
|
11
|
-
* Argumenten und benutzte ihn danach nirgends; eslint meldete ihn seit
|
|
12
|
-
* Monaten als ungenutzte Variable. Wer den Parameter setzte, bekam exakt
|
|
13
|
-
* dieselbe Ausgabe wie ohne ihn.
|
|
14
|
-
*
|
|
15
|
-
* Fehlerklasse: eine Zusage an zwei Orten — hier in der Spezifikation, dort
|
|
16
|
-
* im Code — und nur einer wurde gepflegt. Dieselbe Form wie die Kommentarzeile
|
|
17
|
-
* am Frei-Limit, die "the #1 result is always returned" versprach, waehrend
|
|
18
|
-
* der Zweig darunter null lieferte.
|
|
19
|
-
*
|
|
20
|
-
* Reines Modul, weil die Entscheidung eine Rechnung ist: dieselbe Regel, die
|
|
21
|
-
* `smart_recall` schon anwendet, an EINER Stelle statt zweimal abgeschrieben.
|
|
22
|
-
*/
|
|
23
|
-
/**
|
|
24
|
-
* Das Abzeichen hinter einer Lektion — leer, wenn sie von mir selbst stammt
|
|
25
|
-
* oder niemand als Autor eingetragen ist.
|
|
26
|
-
*
|
|
27
|
-
* Bewusst KEIN Abzeichen fuer die eigenen Lektionen: in einem Brain, das
|
|
28
|
-
* ueberwiegend einer Person gehoert, stuende sonst hinter jeder Zeile derselbe
|
|
29
|
-
* Name, und das Abzeichen verlöre genau die Aussage, für die es da ist.
|
|
30
|
-
*/
|
|
31
|
-
export declare function autorAbzeichen(lektionsAutor: string | null | undefined, anfragender: string | null | undefined): string;
|
|
32
|
-
/**
|
|
33
|
-
* Wie viele der gezeigten Lektionen von jemand anderem stammen.
|
|
34
|
-
*
|
|
35
|
-
* Das ist der Wert, den nur ein GETEILTES Gedaechtnis liefert — und deshalb
|
|
36
|
-
* die Zahl, die es zu nennen lohnt. Ist sie null, wird auch nichts gesagt:
|
|
37
|
-
* "0 von Teamkollegen" ist keine Nachricht, sondern Rauschen.
|
|
38
|
-
*/
|
|
39
|
-
export declare function fremdanteil(lektionen: readonly {
|
|
40
|
-
author?: string | null;
|
|
41
|
-
}[], anfragender: string | null | undefined): number;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autor-abzeichen.js","sourceRoot":"","sources":["../../src/autor-abzeichen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,aAAwC,EAAE,WAAsC;IAC7G,MAAM,KAAK,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,SAAS,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,SAAgD,EAChD,WAAsC;IAEtC,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC;IACnB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC;IAC3C,CAAC,CAAC,CAAC,MAAM,CAAC;AACZ,CAAC"}
|
package/dist/src/autor.d.ts
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wer hat diese Lektion geschrieben?
|
|
3
|
-
*
|
|
4
|
-
* ── Der Befund, gemessen am 19.08.2026 ──────────────────────────────────────
|
|
5
|
-
*
|
|
6
|
-
* 195 von 493 Lektionen tragen keinen Autor — zwei Fuenftel. Ohne Autor zaehlt
|
|
7
|
-
* keine Team-Wiederverwendung, brain_who_knows findet niemanden, und das
|
|
8
|
-
* Versprechen "geteiltes Gedaechtnis" ist von einer Notizdatei nicht zu
|
|
9
|
-
* unterscheiden.
|
|
10
|
-
*
|
|
11
|
-
* ── Und es war unser Fehler, nicht der der Nutzer ───────────────────────────
|
|
12
|
-
*
|
|
13
|
-
* Heinrich, 19.08.2026: "das mit dem Autor war doch eher ein Fehler von uns
|
|
14
|
-
* bzw. wie cachly die Anweisungen fuer das Brain geschrieben hat, denn der
|
|
15
|
-
* Autor steht doch in den Git-Zugangsdaten."
|
|
16
|
-
*
|
|
17
|
-
* Genau so ist es. `author` war ein OPTIONALES Feld, das ein Agent bei jedem
|
|
18
|
-
* Aufruf mitschicken sollte — und natuerlich vergisst. Dabei steht der Name
|
|
19
|
-
* seit jeher zwei Zeilen entfernt in `git config user.name`. Der Code holte
|
|
20
|
-
* ihn sogar schon, aber nur an einer anderen Stelle (index.ts, fuer die
|
|
21
|
-
* Demo-Ausgabe) und nie fuer die Lektion selbst.
|
|
22
|
-
*
|
|
23
|
-
* Ein Pflichtfeld, das man vergessen kann, ist kein Pflichtfeld. Ein Wert, der
|
|
24
|
-
* sich herleiten laesst, gehoert hergeleitet.
|
|
25
|
-
*
|
|
26
|
-
* ── Reihenfolge, absichtlich in dieser Richtung ─────────────────────────────
|
|
27
|
-
*
|
|
28
|
-
* 1. was ausdruecklich uebergeben wurde — der Aufrufer weiss es besser
|
|
29
|
-
* 2. CACHLY_AUTHOR — bewusst gesetzt, etwa in der CI
|
|
30
|
-
* 3. git config user.name — der angemeldete Mensch
|
|
31
|
-
* 4. git config user.email (Teil vor dem @)
|
|
32
|
-
* 5. leer — dann steht dort ehrlich nichts statt eines geratenen Namens
|
|
33
|
-
*
|
|
34
|
-
* Schritt 5 ist wichtig: lieber kein Autor als ein falscher. Ein erfundener
|
|
35
|
-
* Name macht aus einer fehlenden Zuordnung eine falsche, und die faellt
|
|
36
|
-
* niemandem mehr auf.
|
|
37
|
-
*/
|
|
38
|
-
/** Ein Git-Wert, oder leer. Wirft nie — Git kann fehlen, das ist kein Fehler. */
|
|
39
|
-
export type GitLeser = (schluessel: string) => string;
|
|
40
|
-
export declare const echterGitLeser: (cwd?: string) => GitLeser;
|
|
41
|
-
/**
|
|
42
|
-
* Einen Namen auf die Form bringen, in der Autoren gespeichert werden.
|
|
43
|
-
*
|
|
44
|
-
* Klein geschrieben und ohne Leerzeichen: "Heinrich Neb" wird zu "heinrich".
|
|
45
|
-
* Das ist keine Kosmetik — brain_who_knows, team_recall und die
|
|
46
|
-
* Wiederverwendungs-Zaehlung vergleichen Autoren als Zeichenketten. "Heinrich"
|
|
47
|
-
* und "heinrich" waeren zwei Menschen.
|
|
48
|
-
*/
|
|
49
|
-
export declare function normalisiere(roh: string): string;
|
|
50
|
-
export interface AutorHerkunft {
|
|
51
|
-
/** Der ermittelte Name, oder leer. */
|
|
52
|
-
autor: string;
|
|
53
|
-
/** Woher er kam — steht im Hinweis an den Aufrufer. */
|
|
54
|
-
quelle: 'uebergeben' | 'umgebung' | 'git-name' | 'git-mail' | 'anonym' | 'unbekannt';
|
|
55
|
-
}
|
|
56
|
-
export declare function ermittleAutor(input: {
|
|
57
|
-
uebergeben?: string;
|
|
58
|
-
umgebung?: string;
|
|
59
|
-
git: GitLeser;
|
|
60
|
-
}): AutorHerkunft;
|
|
61
|
-
/**
|
|
62
|
-
* Der Mitautor — standardmaessig AUS.
|
|
63
|
-
*
|
|
64
|
-
* Heinrich: "Wir koennen im gleichen Zuge ja auch zum Beispiel claude als
|
|
65
|
-
* Co-Author nehmen, wenn der User das moechte? Einstellungssache,
|
|
66
|
-
* standardmaessig aber aus."
|
|
67
|
-
*
|
|
68
|
-
* Aus zwei Gruenden aus: erstens gehoert die Entscheidung dem Menschen, und
|
|
69
|
-
* zweitens wuerde ein automatisch gesetzter Mitautor die Zahl, um die es hier
|
|
70
|
-
* geht — wie viele Lektionen einen MENSCHEN als Autor haben — sofort wieder
|
|
71
|
-
* unbrauchbar machen.
|
|
72
|
-
*
|
|
73
|
-
* Eingeschaltet wird er mit
|
|
74
|
-
* brain_set_pref(key="coauthor", value="claude")
|
|
75
|
-
* und wieder aus mit value="" oder "off".
|
|
76
|
-
*/
|
|
77
|
-
export declare const COAUTHOR_PREF_KEY = "coauthor";
|
|
78
|
-
/** Aus dem gespeicherten Wert den Mitautor lesen — leer heisst aus. */
|
|
79
|
-
export declare function coautorAus(prefWert: string | null | undefined): string;
|
|
80
|
-
/**
|
|
81
|
-
* Wie der Autor gespeichert wird, wenn ein Mitautor eingeschaltet ist.
|
|
82
|
-
*
|
|
83
|
-
* "heinrich+claude" — ein Feld, kein zweites. Ein zweites Feld haette jede
|
|
84
|
-
* Abfrage im ganzen Haus anfassen muessen (who_knows, team_recall,
|
|
85
|
-
* reuse_pairs, das Briefing), und die Zahl "wie viele Lektionen haben einen
|
|
86
|
-
* Autor" waere dabei zweideutig geworden.
|
|
87
|
-
*
|
|
88
|
-
* Der Mensch steht VORN. Wer die Zeichenkette an "+" trennt, bekommt zuerst
|
|
89
|
-
* den, der die Entscheidung getroffen hat.
|
|
90
|
-
*/
|
|
91
|
-
export declare function mitCoautor(autor: string, coautor: string): string;
|
|
92
|
-
/** Nur der Mensch, ohne Mitautor — fuer Zaehlungen und Vergleiche. */
|
|
93
|
-
export declare function nurMensch(autorFeld: string): string;
|
|
94
|
-
/**
|
|
95
|
-
* Ein Satz an den Aufrufer, wenn kein Autor ermittelt werden konnte.
|
|
96
|
-
*
|
|
97
|
-
* Wieder ein HINWEIS und keine Ablehnung: eine abgelehnte Lektion ist immer
|
|
98
|
-
* schlechter als eine ohne Autor. Aber schweigen waere falsch — genau das
|
|
99
|
-
* Schweigen hat die 195 erzeugt.
|
|
100
|
-
*/
|
|
101
|
-
export declare function autorHinweis(h: AutorHerkunft): string | null;
|
package/dist/src/autor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autor.js","sourceRoot":"","sources":["../../src/autor.ts"],"names":[],"mappings":"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"}
|
package/dist/src/bauabdruck.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export interface Bauabdruck {
|
|
2
|
-
version: string;
|
|
3
|
-
commit: string;
|
|
4
|
-
/** ISO-Zeitstempel, oder "unbekannt" solange nie gebaut wurde. */
|
|
5
|
-
gebautAm: string;
|
|
6
|
-
}
|
|
7
|
-
/** Rueckfall, solange kein Bauabdruck generiert wurde (kein Absturz, keine Erfindung). */
|
|
8
|
-
export declare const RUECKFALL_BAUABDRUCK: Bauabdruck;
|
|
9
|
-
/**
|
|
10
|
-
* Laedt den generierten Bauabdruck aus dem eigenen Verzeichnis.
|
|
11
|
-
*
|
|
12
|
-
* Faellt auf RUECKFALL_BAUABDRUCK zurueck, wenn die Datei fehlt, kein gueltiges
|
|
13
|
-
* JSON enthaelt oder die falsche Form hat — ein fehlender Bauabdruck ist kein
|
|
14
|
-
* Grund, den Server gar nicht erst zu starten.
|
|
15
|
-
*/
|
|
16
|
-
export declare function ladeBauabdruck(verzeichnis?: string): Bauabdruck;
|
|
17
|
-
/** Der Bauabdruck dieses laufenden Prozesses — einmal beim Start geladen. */
|
|
18
|
-
export declare const bauabdruck: Bauabdruck;
|
|
19
|
-
/** Ab wie vielen Tagen der Bauabdruck in brain_doctor als alt gilt (🟡). */
|
|
20
|
-
export declare const ALTER_SCHWELLE_TAGE = 14;
|
|
21
|
-
/**
|
|
22
|
-
* Der Waechter: ist der Bauabdruck aelter als die Schwelle?
|
|
23
|
-
*
|
|
24
|
-
* Eigene Funktion, damit sie einzeln aufrufbar und pruefbar ist — aus
|
|
25
|
-
* demselben Grund wie beurteileDeckung in eingaenge.ts: ein Wächter, den man
|
|
26
|
-
* nicht einzeln aufrufen kann, ist ein Wächter, dessen Nein niemand je sieht.
|
|
27
|
-
* "unbekannt" gilt NICHT als alt — ein Server, der nie gebaut wurde, ist ein
|
|
28
|
-
* anderer Zustand als einer, der seit Wochen laeuft.
|
|
29
|
-
*/
|
|
30
|
-
export declare function istAlt(gebautAm: string, jetzt?: Date): boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Baut die Zeile fuer brain_doctor — Form und Ton wie die Zeile
|
|
33
|
-
* "Semantic coverage" dort: Emoji, Fettdruck-Label, Zahlen statt Adjektive.
|
|
34
|
-
*
|
|
35
|
-
* Ein Server, der seit Wochen laeuft, ist kein Fehler — aber man muss es
|
|
36
|
-
* sehen koennen. Darum 🟡 statt ❌ fuer den Altersfall.
|
|
37
|
-
*/
|
|
38
|
-
export declare function formatiereBauabdruck(a: Bauabdruck, jetzt?: Date): string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bauabdruck.js","sourceRoot":"","sources":["../../src/bauabdruck.ts"],"names":[],"mappings":"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"}
|
package/dist/src/bedeutung.d.ts
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bedeutungsabgleich: die Frage findet die Lektion auch ohne gemeinsame Wörter.
|
|
3
|
-
*
|
|
4
|
-
* ── Warum es das gibt ────────────────────────────────────────────────────────
|
|
5
|
-
*
|
|
6
|
-
* Gemessen am 19.08.2026 an 499 echten Lektionen mit 100 Fragen in Alltags-
|
|
7
|
-
* sprache:
|
|
8
|
-
*
|
|
9
|
-
* Verfahren Platz 1 Top 3 MRR
|
|
10
|
-
* Wörter (bisher) 21 % 33 % 29,3 %
|
|
11
|
-
* Bedeutung (bge-m3) 40 % 60 % 51,4 %
|
|
12
|
-
*
|
|
13
|
-
* Der Wortabgleich war ausgereizt: nach drei Reparaturen brachten weitere
|
|
14
|
-
* Eingriffe je eine Frage. Der Grund liegt in der Aufgabe, nicht in der
|
|
15
|
-
* Umsetzung. Eine Frage beschreibt ein SYMPTOM, die Lektion eine URSACHE.
|
|
16
|
-
* "Der Deploy hängt beim Bauen" und "No space left on device" teilen kein Wort
|
|
17
|
-
* und meinen dasselbe. Kein Wörterbuch schließt diese Lücke.
|
|
18
|
-
*
|
|
19
|
-
* ── Und es ist SCHNELLER, nicht langsamer ───────────────────────────────────
|
|
20
|
-
*
|
|
21
|
-
* Das war die Überraschung. Am selben Tag gemessen:
|
|
22
|
-
*
|
|
23
|
-
* Wortabgleich (heute, 499 Lektionen) 788 ms (Mitte)
|
|
24
|
-
* Einbettung der Frage (Netzaufruf) 282 ms
|
|
25
|
-
* Vergleich gegen 494 Vektoren 0 ms (14 ms im schlechtesten Fall)
|
|
26
|
-
*
|
|
27
|
-
* Der Wortabgleich baut seinen Index bei JEDER Frage neu: alle Datensätze
|
|
28
|
-
* holen, zerlegen, Worthäufigkeiten und Bigramme rechnen. Das wächst linear
|
|
29
|
-
* mit dem Bestand — gemessen 1,6 ms je Lektion und Frage:
|
|
30
|
-
*
|
|
31
|
-
* Lektionen 50 100 250 499 998 1996
|
|
32
|
-
* Wartezeit 75ms 156ms 408ms 792ms 1601ms 3185ms
|
|
33
|
-
*
|
|
34
|
-
* Bei 2000 Lektionen sind das 3,2 Sekunden. Die automatische Einblendung hat
|
|
35
|
-
* ein 3-Sekunden-Budget — das erklärt, warum sie nichts liefert
|
|
36
|
-
* (cachly:ambient-recall-blendet-nichts-ein).
|
|
37
|
-
*
|
|
38
|
-
* Der Bedeutungsabgleich kostet dagegen konstant einen Netzaufruf. Er wird
|
|
39
|
-
* nicht langsamer, wenn der Bestand wächst.
|
|
40
|
-
*
|
|
41
|
-
* ── Was das Modul NICHT tut ─────────────────────────────────────────────────
|
|
42
|
-
*
|
|
43
|
-
* Es ersetzt den Wortabgleich nicht. Zwei Gründe:
|
|
44
|
-
*
|
|
45
|
-
* 1. Ohne Netz gibt es keine Einbettung. Der Wortabgleich läuft immer.
|
|
46
|
-
* 2. Gemischt sind die ersten zehn Treffer besser als bei beiden einzeln
|
|
47
|
-
* (71 % gegen 68 und 47). Wörter finden das wörtlich Genannte, Bedeutung
|
|
48
|
-
* das sinngemäß Gemeinte.
|
|
49
|
-
*/
|
|
50
|
-
import type { Redis } from 'ioredis';
|
|
51
|
-
/** Wo ein Lektionsvektor liegt. Ein Schlüssel je Lektion, neben der Lektion. */
|
|
52
|
-
export declare const VEKTOR_PRAEFIX = "cachly:lesson:vec:";
|
|
53
|
-
/**
|
|
54
|
-
* Wo der Vektor des THEMENNAMENS liegt.
|
|
55
|
-
*
|
|
56
|
-
* Warum getrennt vom Volltextvektor: der Name ist kurz und frageähnlich, der
|
|
57
|
-
* Volltext ist 1376 Zeichen lang. Eine 60-Zeichen-Frage gegen 60 Zeichen zu
|
|
58
|
-
* halten ist symmetrisch, gegen 1376 nicht — der Sortierer bewertet beide
|
|
59
|
-
* deshalb als eigene Merkmale (`naeheText` 1,0 und `naeheThema` 0,6).
|
|
60
|
-
*
|
|
61
|
-
* Gemessen am 19.08.2026: der Name allein findet nur 26 %, im Verbund trägt er
|
|
62
|
-
* verlässlich. Bis zum 20.08. gab es diese Vektoren nur im Messstand
|
|
63
|
-
* (korpus-gross.sicht-c.json), im Produkt nicht — der Sortierer aus
|
|
64
|
-
* rangfolge.ts war deshalb auch gar nicht verdrahtet.
|
|
65
|
-
*/
|
|
66
|
-
export declare const NAME_VEKTOR_PRAEFIX = "cachly:lesson:vecname:";
|
|
67
|
-
/** Der Text, aus dem der Namensvektor gebildet wird: Trennzeichen zu Wörtern. */
|
|
68
|
-
export declare function textFuerNamensVektor(topic: string): string;
|
|
69
|
-
export declare function packe(vektor: number[]): string;
|
|
70
|
-
export declare function entpacke(s: string): number[] | null;
|
|
71
|
-
/**
|
|
72
|
-
* Kosinus-Ähnlichkeit zweier Vektoren.
|
|
73
|
-
*
|
|
74
|
-
* Die Länge wird bei JEDEM Aufruf neu gerechnet statt einmal vorher. Das ist
|
|
75
|
-
* absichtlich: gemessen liegt der gesamte Vergleich gegen 494 Vektoren bei
|
|
76
|
-
* 0 ms. Eine Vorberechnung wäre eine zweite Wahrheit über denselben Vektor —
|
|
77
|
-
* und der Gewinn wäre nicht messbar.
|
|
78
|
-
*/
|
|
79
|
-
export declare function kosinus(a: number[], b: number[]): number;
|
|
80
|
-
/**
|
|
81
|
-
* Der Text, aus dem der Vektor einer Lektion gebildet wird.
|
|
82
|
-
*
|
|
83
|
-
* Bewusst NICHT das rohe JSON: Feldnamen, Zeitstempel und Prüfspuren tragen
|
|
84
|
-
* keine Bedeutung, verbrauchen aber vom Fenster des Einbettungsmodells. Der
|
|
85
|
-
* Dienst kürzt bei rund 2000 Zeichen — gemessen liefern 2000, 4000 und 6000
|
|
86
|
-
* Zeichen denselben Vektor. Was hinten steht, existiert für ihn nicht.
|
|
87
|
-
*/
|
|
88
|
-
export declare function textFuerVektor(lektion: Record<string, unknown>): string;
|
|
89
|
-
/**
|
|
90
|
-
* Ein Vektorbestand, der im Arbeitsspeicher bleibt.
|
|
91
|
-
*
|
|
92
|
-
* Warum: 494 Vektoren sind rund 2 MB. Die bei jeder Frage aus dem Speicher zu
|
|
93
|
-
* holen wäre langsamer als der Wortabgleich, den wir gerade ersetzen — der
|
|
94
|
-
* Gewinn wäre weg, bevor er anfängt.
|
|
95
|
-
*
|
|
96
|
-
* Der MCP-Server läuft lange, also wird einmal geladen und danach nur
|
|
97
|
-
* nachgetragen. Die Prüfung "hat sich etwas geändert" läuft über die ANZAHL
|
|
98
|
-
* der Schlüssel, nicht über ihren Inhalt: eine geänderte Lektion bekommt beim
|
|
99
|
-
* Lernen sofort ihren neuen Vektor geschrieben, und dieser Bestand holt ihn
|
|
100
|
-
* beim nächsten Nachladen.
|
|
101
|
-
*/
|
|
102
|
-
export declare class Vektorbestand {
|
|
103
|
-
private readonly frischeMs;
|
|
104
|
-
private readonly praefix;
|
|
105
|
-
private vektoren;
|
|
106
|
-
private geladen;
|
|
107
|
-
/**
|
|
108
|
-
* @param frischeMs wie lange ein geladener Bestand als frisch gilt
|
|
109
|
-
* @param praefix welche Sicht — Volltext (Standard) oder Themenname
|
|
110
|
-
*
|
|
111
|
-
* Der Präfix ist ein Parameter und keine zweite Klasse: die Mechanik ist
|
|
112
|
-
* identisch (scannen, in Blöcken holen, entpacken, Gelöschtes vergessen).
|
|
113
|
-
* Zwei Klassen dafür wären zwei Orte, an denen dieselbe Änderung nachgezogen
|
|
114
|
-
* werden müsste.
|
|
115
|
-
*/
|
|
116
|
-
constructor(frischeMs?: number, praefix?: string);
|
|
117
|
-
/** Die Nähe einer Frage zu EINER Lektion. -2, wenn sie keinen Vektor hat. */
|
|
118
|
-
naehe(frage: number[], topic: string): number;
|
|
119
|
-
/**
|
|
120
|
-
* Der Vektor selbst — für die Rückkopplung, die aus den besten Treffern
|
|
121
|
-
* einen angereicherten Fragevektor baut (`reichereAn`). `null`, wenn die
|
|
122
|
-
* Lektion keinen hat; der Aufrufer filtert das weg.
|
|
123
|
-
*/
|
|
124
|
-
rohvektor(topic: string): number[] | null;
|
|
125
|
-
get groesse(): number;
|
|
126
|
-
/** Lädt fehlende Vektoren nach. Tut nichts, wenn kürzlich geladen wurde. */
|
|
127
|
-
aktualisiere(redis: Redis, jetzt?: number): Promise<void>;
|
|
128
|
-
/**
|
|
129
|
-
* Die ähnlichsten Lektionen zu einem Fragevektor.
|
|
130
|
-
*
|
|
131
|
-
* Zurück kommen die THEMEN, nicht die Schlüssel — der Aufrufer arbeitet mit
|
|
132
|
-
* Themen und soll das Schlüsselformat nicht kennen müssen.
|
|
133
|
-
*/
|
|
134
|
-
aehnlichste(frage: number[], anzahl: number): Array<{
|
|
135
|
-
topic: string;
|
|
136
|
-
naehe: number;
|
|
137
|
-
}>;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Mischt zwei Rangfolgen über die PLATZIERUNG, nicht über die Punktzahl.
|
|
141
|
-
*
|
|
142
|
-
* Punktzahlen aus BM25 und aus einem Kosinus sind nicht vergleichbar: die eine
|
|
143
|
-
* ist nach oben offen, die andere liegt zwischen -1 und 1. Wer sie addiert oder
|
|
144
|
-
* skaliert, wählt unbeabsichtigt einen Gewinner und merkt es nie.
|
|
145
|
-
*
|
|
146
|
-
* Reciprocal Rank Fusion braucht keine gemeinsame Einheit.
|
|
147
|
-
*
|
|
148
|
-
* ── Wie viel Wortabgleich? ──────────────────────────────────────────────────
|
|
149
|
-
*
|
|
150
|
-
* Gemessen am 19.08.2026 an 499 Lektionen mit 100 Fragen:
|
|
151
|
-
*
|
|
152
|
-
* Wortgewicht Platz 1 Top 3 Top 10 MRR
|
|
153
|
-
* 0,0 (nur Sinn) 40 % 60 % 68 % 51,4 %
|
|
154
|
-
* 0,1 41 % 63 % 71 % 53,5 %
|
|
155
|
-
* 0,2 42 % 57 % 70 % 52,0 %
|
|
156
|
-
* 0,3 39 % 55 % 71 % 49,0 %
|
|
157
|
-
* 0,4 38 % 51 % 69 % 47,7 %
|
|
158
|
-
* 1,0 (nur Wörter) 21 % 33 % 47 % 29,3 %
|
|
159
|
-
*
|
|
160
|
-
* 0,1 ist auf drei von vier Maßen vorn und überall besser als reine Bedeutung.
|
|
161
|
-
* Wenig Wortabgleich hilft, viel schadet: die Wörter fangen den Fall, in dem
|
|
162
|
-
* jemand eine Fehlermeldung wörtlich einfügt, und stören sonst.
|
|
163
|
-
*
|
|
164
|
-
* Zu 0,2 ist der Abstand bei Platz 1 EINE Frage. Das ist kein Beleg, sondern
|
|
165
|
-
* eine Richtung — wer hier dreht, misst nach.
|
|
166
|
-
*/
|
|
167
|
-
export declare const WORT_GEWICHT = 0.1;
|
|
168
|
-
export declare function mischeRangfolgen(woerter: string[], bedeutung: string[], wortGewicht?: number, k?: number): string[];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bedeutung.js","sourceRoot":"","sources":["../../src/bedeutung.ts"],"names":[],"mappings":"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"}
|