@cachly-dev/mcp-server 0.10.128 → 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.
Files changed (217) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +1 -7
  3. package/dist/packages/telegram-notify/client.js +2 -75
  4. package/dist/src/ambient-cli.js +7 -253
  5. package/dist/src/ambient-deps.js +1 -55
  6. package/dist/src/ambient-hooks.js +5 -278
  7. package/dist/src/ambient-ledger.js +6 -95
  8. package/dist/src/ambient-memory.js +1 -67
  9. package/dist/src/ambient-recall.js +1 -221
  10. package/dist/src/aussetzer.js +1 -82
  11. package/dist/src/auth.js +9 -140
  12. package/dist/src/autor-abzeichen.js +1 -56
  13. package/dist/src/autor.js +1 -136
  14. package/dist/src/bauabdruck.js +1 -93
  15. package/dist/src/bedeutung.js +2 -323
  16. package/dist/src/bench/cachly-bench.js +4 -249
  17. package/dist/src/bench/external-corpus.js +4 -135
  18. package/dist/src/bench/fixtures.js +1 -225
  19. package/dist/src/brain-export.js +16 -119
  20. package/dist/src/brain-watch-hook.js +8 -86
  21. package/dist/src/cachly-url.js +1 -21
  22. package/dist/src/ckg.js +1 -108
  23. package/dist/src/cls-hook.js +8 -94
  24. package/dist/src/confidence.js +1 -50
  25. package/dist/src/credentials.js +1 -85
  26. package/dist/src/deutsch.js +1 -223
  27. package/dist/src/doctor.js +2 -248
  28. package/dist/src/editor.js +1 -63
  29. package/dist/src/eingaenge-nachruesten.js +1 -290
  30. package/dist/src/eingaenge.js +2 -228
  31. package/dist/src/embeddings.js +13 -223
  32. package/dist/src/feldreparatur.js +3 -0
  33. package/dist/src/first-contact.js +4 -108
  34. package/dist/src/first-recall-proof.js +4 -41
  35. package/dist/src/funnel-milestones.js +2 -48
  36. package/dist/src/geliefert.js +1 -114
  37. package/dist/src/handlers/advanced.js +38 -537
  38. package/dist/src/handlers/brain.js +69 -4181
  39. package/dist/src/handlers/cache.js +59 -638
  40. package/dist/src/handlers/context.js +17 -182
  41. package/dist/src/handlers/fedbrain.js +40 -1436
  42. package/dist/src/handlers/instances.js +16 -201
  43. package/dist/src/handlers/roadmap.js +13 -175
  44. package/dist/src/handlers/share.js +19 -530
  45. package/dist/src/handlers/syndicate.js +38 -904
  46. package/dist/src/handlers/team.js +89 -1850
  47. package/dist/src/handlers/viz.js +3 -148
  48. package/dist/src/index.js +321 -4281
  49. package/dist/src/interferenz.js +1 -0
  50. package/dist/src/kostprobe.js +7 -125
  51. package/dist/src/lesson-preview.js +2 -133
  52. package/dist/src/namespace.js +1 -128
  53. package/dist/src/notifier.js +1 -6
  54. package/dist/src/rangfolge-stellschrauben.js +1 -0
  55. package/dist/src/rangfolge.js +1 -214
  56. package/dist/src/raumkorrektur.js +1 -197
  57. package/dist/src/recall-tiefe.js +1 -42
  58. package/dist/src/rerank.js +1 -154
  59. package/dist/src/resonanz.js +1 -0
  60. package/dist/src/search.js +1 -2104
  61. package/dist/src/seltenheitsbestand.js +1 -92
  62. package/dist/src/speicherlage.js +1 -84
  63. package/dist/src/spuren.js +1 -150
  64. package/dist/src/starter-corpus.js +1 -165
  65. package/dist/src/telemetry-types.js +0 -13
  66. package/dist/src/tools.js +10 -2465
  67. package/dist/src/toolspecs.js +1 -121
  68. package/dist/src/upgrade-nudge.js +1 -29
  69. package/dist/src/utils.js +1 -89
  70. package/dist/src/versuch.js +1 -250
  71. package/dist/src/vorspann.js +1 -146
  72. package/dist/src/wartung/vektoren-verdichten.js +1 -200
  73. package/dist/src/werkzeug-nutzung.js +1 -72
  74. package/dist/src/wertbeitrag.js +1 -73
  75. package/dist/src/wirkungsspur.js +1 -0
  76. package/glama.json +1 -1
  77. package/package.json +8 -7
  78. package/server.json +3 -3
  79. package/dist/index.d.ts +0 -1
  80. package/dist/index.js.map +0 -1
  81. package/dist/packages/telegram-notify/client.d.ts +0 -19
  82. package/dist/packages/telegram-notify/client.js.map +0 -1
  83. package/dist/src/ambient-cli.d.ts +0 -101
  84. package/dist/src/ambient-cli.js.map +0 -1
  85. package/dist/src/ambient-deps.d.ts +0 -26
  86. package/dist/src/ambient-deps.js.map +0 -1
  87. package/dist/src/ambient-hooks.d.ts +0 -137
  88. package/dist/src/ambient-hooks.js.map +0 -1
  89. package/dist/src/ambient-ledger.d.ts +0 -19
  90. package/dist/src/ambient-ledger.js.map +0 -1
  91. package/dist/src/ambient-memory.d.ts +0 -12
  92. package/dist/src/ambient-memory.js.map +0 -1
  93. package/dist/src/ambient-recall.d.ts +0 -127
  94. package/dist/src/ambient-recall.js.map +0 -1
  95. package/dist/src/aussetzer.d.ts +0 -67
  96. package/dist/src/aussetzer.js.map +0 -1
  97. package/dist/src/auth.d.ts +0 -43
  98. package/dist/src/auth.js.map +0 -1
  99. package/dist/src/autor-abzeichen.d.ts +0 -41
  100. package/dist/src/autor-abzeichen.js.map +0 -1
  101. package/dist/src/autor.d.ts +0 -101
  102. package/dist/src/autor.js.map +0 -1
  103. package/dist/src/bauabdruck-daten.generiert.json +0 -5
  104. package/dist/src/bauabdruck.d.ts +0 -38
  105. package/dist/src/bauabdruck.js.map +0 -1
  106. package/dist/src/bedeutung.d.ts +0 -168
  107. package/dist/src/bedeutung.js.map +0 -1
  108. package/dist/src/bench/cachly-bench.d.ts +0 -61
  109. package/dist/src/bench/cachly-bench.js.map +0 -1
  110. package/dist/src/bench/external-corpus.d.ts +0 -44
  111. package/dist/src/bench/external-corpus.js.map +0 -1
  112. package/dist/src/bench/fixtures.d.ts +0 -37
  113. package/dist/src/bench/fixtures.js.map +0 -1
  114. package/dist/src/brain-export.d.ts +0 -64
  115. package/dist/src/brain-export.js.map +0 -1
  116. package/dist/src/brain-watch-hook.d.ts +0 -21
  117. package/dist/src/brain-watch-hook.js.map +0 -1
  118. package/dist/src/cachly-url.d.ts +0 -68
  119. package/dist/src/cachly-url.js.map +0 -1
  120. package/dist/src/ckg.d.ts +0 -54
  121. package/dist/src/ckg.js.map +0 -1
  122. package/dist/src/cls-hook.d.ts +0 -15
  123. package/dist/src/cls-hook.js.map +0 -1
  124. package/dist/src/confidence.d.ts +0 -19
  125. package/dist/src/confidence.js.map +0 -1
  126. package/dist/src/credentials.d.ts +0 -37
  127. package/dist/src/credentials.js.map +0 -1
  128. package/dist/src/deutsch.d.ts +0 -98
  129. package/dist/src/deutsch.js.map +0 -1
  130. package/dist/src/doctor.d.ts +0 -47
  131. package/dist/src/doctor.js.map +0 -1
  132. package/dist/src/editor.d.ts +0 -9
  133. package/dist/src/editor.js.map +0 -1
  134. package/dist/src/eingaenge-nachruesten.d.ts +0 -41
  135. package/dist/src/eingaenge-nachruesten.js.map +0 -1
  136. package/dist/src/eingaenge.d.ts +0 -135
  137. package/dist/src/eingaenge.js.map +0 -1
  138. package/dist/src/embeddings.d.ts +0 -48
  139. package/dist/src/embeddings.js.map +0 -1
  140. package/dist/src/first-contact.d.ts +0 -56
  141. package/dist/src/first-contact.js.map +0 -1
  142. package/dist/src/first-recall-proof.d.ts +0 -19
  143. package/dist/src/first-recall-proof.js.map +0 -1
  144. package/dist/src/funnel-milestones.d.ts +0 -5
  145. package/dist/src/funnel-milestones.js.map +0 -1
  146. package/dist/src/geliefert.d.ts +0 -63
  147. package/dist/src/geliefert.js.map +0 -1
  148. package/dist/src/handlers/advanced.d.ts +0 -6
  149. package/dist/src/handlers/advanced.js.map +0 -1
  150. package/dist/src/handlers/brain.d.ts +0 -41
  151. package/dist/src/handlers/brain.js.map +0 -1
  152. package/dist/src/handlers/cache.d.ts +0 -6
  153. package/dist/src/handlers/cache.js.map +0 -1
  154. package/dist/src/handlers/context.d.ts +0 -6
  155. package/dist/src/handlers/context.js.map +0 -1
  156. package/dist/src/handlers/fedbrain.d.ts +0 -18
  157. package/dist/src/handlers/fedbrain.js.map +0 -1
  158. package/dist/src/handlers/instances.d.ts +0 -33
  159. package/dist/src/handlers/instances.js.map +0 -1
  160. package/dist/src/handlers/roadmap.d.ts +0 -6
  161. package/dist/src/handlers/roadmap.js.map +0 -1
  162. package/dist/src/handlers/share.d.ts +0 -8
  163. package/dist/src/handlers/share.js.map +0 -1
  164. package/dist/src/handlers/syndicate.d.ts +0 -6
  165. package/dist/src/handlers/syndicate.js.map +0 -1
  166. package/dist/src/handlers/team.d.ts +0 -45
  167. package/dist/src/handlers/team.js.map +0 -1
  168. package/dist/src/handlers/viz.d.ts +0 -6
  169. package/dist/src/handlers/viz.js.map +0 -1
  170. package/dist/src/index.d.ts +0 -93
  171. package/dist/src/index.js.map +0 -1
  172. package/dist/src/kostprobe.d.ts +0 -25
  173. package/dist/src/kostprobe.js.map +0 -1
  174. package/dist/src/lesson-preview.d.ts +0 -81
  175. package/dist/src/lesson-preview.js.map +0 -1
  176. package/dist/src/namespace.d.ts +0 -20
  177. package/dist/src/namespace.js.map +0 -1
  178. package/dist/src/notifier.d.ts +0 -5
  179. package/dist/src/notifier.js.map +0 -1
  180. package/dist/src/rangfolge.d.ts +0 -169
  181. package/dist/src/rangfolge.js.map +0 -1
  182. package/dist/src/raumkorrektur.d.ts +0 -100
  183. package/dist/src/raumkorrektur.js.map +0 -1
  184. package/dist/src/recall-tiefe.d.ts +0 -48
  185. package/dist/src/recall-tiefe.js.map +0 -1
  186. package/dist/src/rerank.d.ts +0 -48
  187. package/dist/src/rerank.js.map +0 -1
  188. package/dist/src/search.d.ts +0 -153
  189. package/dist/src/search.js.map +0 -1
  190. package/dist/src/seltenheitsbestand.d.ts +0 -53
  191. package/dist/src/seltenheitsbestand.js.map +0 -1
  192. package/dist/src/speicherlage.d.ts +0 -51
  193. package/dist/src/speicherlage.js.map +0 -1
  194. package/dist/src/spuren.d.ts +0 -97
  195. package/dist/src/spuren.js.map +0 -1
  196. package/dist/src/starter-corpus.d.ts +0 -28
  197. package/dist/src/starter-corpus.js.map +0 -1
  198. package/dist/src/telemetry-types.d.ts +0 -87
  199. package/dist/src/telemetry-types.js.map +0 -1
  200. package/dist/src/tools.d.ts +0 -2933
  201. package/dist/src/tools.js.map +0 -1
  202. package/dist/src/toolspecs.d.ts +0 -43
  203. package/dist/src/toolspecs.js.map +0 -1
  204. package/dist/src/upgrade-nudge.d.ts +0 -15
  205. package/dist/src/upgrade-nudge.js.map +0 -1
  206. package/dist/src/utils.d.ts +0 -34
  207. package/dist/src/utils.js.map +0 -1
  208. package/dist/src/versuch.d.ts +0 -179
  209. package/dist/src/versuch.js.map +0 -1
  210. package/dist/src/vorspann.d.ts +0 -73
  211. package/dist/src/vorspann.js.map +0 -1
  212. package/dist/src/wartung/vektoren-verdichten.d.ts +0 -50
  213. package/dist/src/wartung/vektoren-verdichten.js.map +0 -1
  214. package/dist/src/werkzeug-nutzung.d.ts +0 -62
  215. package/dist/src/werkzeug-nutzung.js.map +0 -1
  216. package/dist/src/wertbeitrag.d.ts +0 -57
  217. package/dist/src/wertbeitrag.js.map +0 -1
package/dist/src/ckg.d.ts DELETED
@@ -1,54 +0,0 @@
1
- import { Redis } from 'ioredis';
2
- export type CKGEdge = {
3
- from: string;
4
- to: string;
5
- edgeType: string;
6
- successes: number;
7
- trials: number;
8
- confidence: number;
9
- last_updated: string;
10
- };
11
- export type CKGNode = {
12
- id: string;
13
- domain: string;
14
- type: string;
15
- count: number;
16
- ts: string;
17
- };
18
- export type PersonNode = {
19
- id: string;
20
- handle: string;
21
- domain: string;
22
- type: 'person';
23
- count: number;
24
- last_active: string;
25
- };
26
- export type FileNode = {
27
- id: string;
28
- path: string;
29
- domain: string;
30
- type: 'file';
31
- count: number;
32
- ts: string;
33
- };
34
- export type ServiceNode = {
35
- id: string;
36
- name: string;
37
- kind: 'service' | 'system';
38
- domain: string;
39
- type: 'service';
40
- count: number;
41
- last_active: string;
42
- };
43
- export declare function ckgSlug(text: string): string;
44
- /** Extract 1-3 significant keywords from free text for a problem concept */
45
- export declare function extractProblemConcept(text: string): string | null;
46
- export declare function ckgUpsertNode(redis: Redis, id: string, domain: string, type: string): Promise<void>;
47
- /** Upsert a Person node; returns the node id ("person:{slug}"). */
48
- export declare function ckgUpsertPersonNode(redis: Redis, handle: string, domain: string): Promise<string>;
49
- /** Upsert a File node; returns the node id ("file:{slug}"). */
50
- export declare function ckgUpsertFileNode(redis: Redis, filePath: string): Promise<string>;
51
- /** Upsert a Service/System node; returns the node id ("service:{slug}"). */
52
- export declare function ckgUpsertServiceNode(redis: Redis, name: string, domain: string, kind?: 'service' | 'system'): Promise<string>;
53
- export declare function ckgUpdateEdge(redis: Redis, from: string, edgeType: string, to: string, success: boolean, partial?: boolean): Promise<void>;
54
- export declare function ckgRecordCollaboration(redis: Redis, fileId: string, personId: string): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"ckg.js","sourceRoot":"","sources":["../../src/ckg.ts"],"names":[],"mappings":"AA+CA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,CAAC,CAAC,CAAC;AAEvQ,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACjH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;SAC7B,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;SAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACf,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAY,EAAE,EAAU,EAAE,MAAc,EAAE,IAAY;IACxF,MAAM,GAAG,GAAG,mBAAmB,EAAE,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAC3G,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAY,EAAE,MAAc,EAAE,MAAc;IACpF,MAAM,EAAE,GAAG,UAAU,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,mBAAmB,EAAE,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAe,GAAG;QAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACjB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAC5F,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAY,EAAE,QAAgB;IACpE,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAC7C,MAAM,EAAE,GAAG,QAAQ,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,mBAAmB,EAAE,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAa,GAAG;QACxB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACjB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IAC9F,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAY,EAAE,IAAY,EAAE,MAAc,EAAE,OAA6B,SAAS;IAC3H,MAAM,EAAE,GAAG,WAAW,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,mBAAmB,EAAE,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAgB,GAAG;QAC3B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACjB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;IACjG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvC,oFAAoF;IACpF,+EAA+E;IAC/E,IAAI,IAAI,KAAK,QAAQ;QAAE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC5C,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAY,EAAE,IAAY,EAAE,QAAgB,EAAE,EAAU,EAAE,OAAgB,EAAE,OAAO,GAAG,KAAK;IAC7H,MAAM,GAAG,GAAG,mBAAmB,IAAI,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,GAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC/H,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,OAAO;QAAE,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACnD,IAAI,OAAO;QAAE,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/D,oEAAoE;IACpE,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,+DAA+D;IAC/D,MAAM,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAY,EAAE,MAAc,EAAE,QAAgB;IACzF,MAAM,WAAW,GAAG,4BAA4B,MAAM,EAAE,CAAC;IACzD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC;QAC5D,IAAI,KAAK,KAAK,QAAQ;YAAE,SAAS;QACjC,uDAAuD;QACvD,MAAM,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC"}
@@ -1,15 +0,0 @@
1
- /** Bumped whenever the hook script changes so installers can upgrade old hooks. */
2
- export declare const CLS_HOOK_VERSION = "v2";
3
- export type ClsHookResult = 'written' | 'upgraded' | 'appended' | 'unchanged' | 'skipped-no-git';
4
- /**
5
- * Idempotently install/upgrade the CLS post-commit hook in `projectDir`.
6
- * Never throws — returns a status the caller can log. Shared by `init`, `setup`
7
- * and `autopilot` so all paths stay in lock-step.
8
- */
9
- export declare function installClsPostCommitHook(projectDir: string, instanceId: string, apiKey?: string): Promise<ClsHookResult>;
10
- /**
11
- * Build the `.git/hooks/post-commit` shell script.
12
- * @param instanceId Cachly Brain instance to ingest into.
13
- * @param apiKey Optional cky_… key embedded for authentication.
14
- */
15
- export declare function buildClsPostCommitHook(instanceId: string, apiKey?: string): string;
@@ -1 +0,0 @@
1
- {"version":3,"file":"cls-hook.js","sourceRoot":"","sources":["../../src/cls-hook.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- export declare const CONFIDENCE_WARN_DAYS: number;
2
- export declare const CONFIDENCE_STALE_DAYS: number;
3
- export declare const CONFIDENCE_WARN_VALUE = 0.7;
4
- export declare const CONFIDENCE_STALE_VALUE = 0.5;
5
- /** Calculate current confidence for a lesson based on how long since last verified. */
6
- export declare function calculateConfidence(lesson: {
7
- verified_at?: string;
8
- ts: string;
9
- recall_count?: number;
10
- }): number;
11
- /** Render a confidence badge string. */
12
- export declare function confidenceBadge(confidence: number, ageDays: number): string;
13
- /** Category-specific required fields for structured lessons. */
14
- export declare const STRUCTURED_TEMPLATES: Record<string, {
15
- required: string[];
16
- hint: string;
17
- }>;
18
- /** Fast content hash for index invalidation (not cryptographic, just change detection) */
19
- export declare function simpleHash(text: string): string;
@@ -1 +0,0 @@
1
- {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../../src/confidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAK,CAAC,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAI,GAAG,CAAC;AAC1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,iFAAiF;AACjF,8EAA8E;AAC9E,+EAA+E;AAC/E,mEAAmE;AACnE,uEAAuE;AACvE,gFAAgF;AAChF,gFAAgF;AAChF,8EAA8E;AAC9E,0EAA0E;AAC1E,oEAAoE;AACpE,+DAA+D;AAC/D,4EAA4E;AAC5E,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,MAAmE;IACrG,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACjC,IAAI,OAAO,IAAI,qBAAqB;QAAE,OAAO,sBAAsB,CAAC;IACpE,IAAI,OAAO,IAAI,oBAAoB;QAAG,OAAO,qBAAqB,CAAC;IACnE,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC;AAChF,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,OAAe;IACjE,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAClC,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;IACxI,OAAO,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACnH,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAyD;IACxF,QAAQ,EAAG,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAiB,IAAI,EAAE,2BAA2B,EAAE;IACvF,MAAM,EAAK,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAiB,IAAI,EAAE,yBAAyB,EAAE;IACrF,OAAO,EAAI,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAiB,IAAI,EAAE,oDAAoD,EAAE;IAChH,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAA2B,IAAI,EAAE,wEAAwE,EAAE;IACpI,QAAQ,EAAG,EAAE,QAAQ,EAAE,EAAE,EAA2B,IAAI,EAAE,gDAAgD,EAAE;CAC7G,CAAC;AAEF,0FAA0F;AAC1F,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC"}
@@ -1,37 +0,0 @@
1
- export interface CredentialsHomeOptions {
2
- /** Overrides the resolved user home directory (tests inject a temp dir). */
3
- home?: string;
4
- }
5
- export interface ResolveApiKeyOptions extends CredentialsHomeOptions {
6
- /** Project directory checked for a legacy `.mcp.json` entry. Defaults to `process.cwd()`. */
7
- cwd?: string;
8
- /** Environment to read CACHLY_JWT/CACHLY_API_KEY from. Defaults to `process.env`. */
9
- env?: Record<string, string | undefined>;
10
- }
11
- /**
12
- * Path of the local credentials file in the user's home directory
13
- * (`<home>/.cachly/credentials.json`) — never inside a project checkout.
14
- * Mirrors the HOME/USERPROFILE/APPDATA fallback `persistApiKeyToConfig`
15
- * already uses for `~/.claude/mcp.json`.
16
- */
17
- export declare function credentialsPath(opts?: CredentialsHomeOptions): string;
18
- /**
19
- * Persists the API key to {@link credentialsPath} so ambient hooks (which run
20
- * as bare OS processes and never see the MCP config's env) can find it at
21
- * run time without it ever being embedded in a generated script. Writes via
22
- * a temp file + rename so a crash mid-write can never leave a truncated
23
- * file, and restricts the file to the owner (0600 — a no-op on Windows).
24
- * Best-effort: a failure here never throws, matching every other ambient-path
25
- * write (setup and CLI auth still succeed without a persisted copy).
26
- */
27
- export declare function saveApiKey(key: string, opts?: CredentialsHomeOptions): void;
28
- /**
29
- * Resolves the API key the same way for every ambient/CLI caller, in order:
30
- * `CACHLY_JWT` env -> `CACHLY_API_KEY` env -> {@link credentialsPath} in the
31
- * user's home -> (legacy fallback) `mcpServers.cachly.env.CACHLY_JWT` in a
32
- * project's `.mcp.json`, for installs from before this file existed. A
33
- * corrupt file at any source counts as empty rather than throwing. Returns
34
- * `undefined` — never an empty string — when nothing is found, so callers
35
- * can tell "no key" apart from "empty key" with a plain truthiness check.
36
- */
37
- export declare function resolveApiKey(opts?: ResolveApiKeyOptions): string | undefined;
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/credentials.ts"],"names":[],"mappings":"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"}
@@ -1,98 +0,0 @@
1
- /**
2
- * Deutsch für die Suche: Umlaute, Wortformen, zusammengesetzte Wörter.
3
- *
4
- * ── Warum es dieses Modul gibt ───────────────────────────────────────────────
5
- *
6
- * Gemessen am 19.08.2026 an 498 echten Lektionen mit 20 Fragen in Alltags-
7
- * deutsch: 2 Treffer. Sechs Fragen teilten mit der richtigen Antwort NICHT EIN
8
- * EINZIGES Wort. Die Aufteilung nach Ursachen (src/bench/wortschatz-oder-
9
- * menge.ts) zeigte: schon bei 20 Lektionen und null Ablenkern scheitern 14 von
10
- * 20. Es ist also der Wortschatz, nicht die Menge.
11
- *
12
- * Die Suche hatte deutsche Stoppwörter und 35 deutsche Wortpaare. Was fehlte,
13
- * waren drei Dinge — und alle drei sind an echten Fragen belegt:
14
- *
15
- * 1. UMLAUTE. Die Wortliste stand mit echten Umlauten (`lösung`,
16
- * `überwachung`), Lektionen und Fragen schreiben oft `ae/oe/ue`. Damit
17
- * fand `ueberwachung` den Eintrag `überwachung` nie. Zwei Schreibweisen
18
- * desselben Wortes, und die Suche hielt sie für verschieden.
19
- *
20
- * 2. WORTFORM. `abhaengigkeiten` gegen `abhaengigkeit`, `prozesse` gegen
21
- * `prozess`. Für sieben Sprachen gab es einen Stemmer, für Deutsch nicht.
22
- *
23
- * 3. ZUSAMMENGESETZTE WÖRTER. Das ist die deutsche Besonderheit und war die
24
- * größte Lücke. `Arbeitsspeicher` enthält `speicher`, und `speicher` steht
25
- * längst in der Wortliste — nur kam niemand dort an. Genauso
26
- * `Zugriffsprotokoll` → `protokoll` → `log`, `Browsertests` → `test`.
27
- *
28
- * ── Die Entscheidung, die dieses Modul klein hält ────────────────────────────
29
- *
30
- * Für die Zerlegung braucht es ein Wörterbuch der Grundwörter. Es wäre nahe-
31
- * liegend, dafür eine zweite Liste zu pflegen. Genau das ist die Fehlerklasse,
32
- * die uns in diesem Haus am häufigsten trifft: eine Wahrheit an zwei Orten.
33
- *
34
- * Deshalb: die Wortliste IST das Wörterbuch. Wer ein Wortpaar einträgt, macht
35
- * es damit automatisch als Grundwort für zusammengesetzte Wörter verfügbar.
36
- * Eine Liste, zwei Wirkungen.
37
- */
38
- /**
39
- * Schreibt Umlaute aus. Aus `ä` wird `ae`, aus `ß` wird `ss`.
40
- *
41
- * Beide Schreibweisen werden auf DIESELBE Form gebracht — nicht die eine in die
42
- * andere übersetzt. Nur so ist `Lösung` dasselbe Wort wie `Loesung`, egal in
43
- * welcher Richtung jemand tippt.
44
- */
45
- export declare function ohneUmlaute(wort: string): string;
46
- /**
47
- * Deutsche Wortform auf einen gemeinsamen Stamm bringen.
48
- *
49
- * Absichtlich zurückhaltend: eine Endung, nicht mehrere hintereinander. Bei
50
- * `Abhaengigkeiten` reicht `-en`, und `Abhaengigkeit` ist genau die Form, die
51
- * in den Lektionen steht.
52
- */
53
- export declare function deutscherStamm(wort: string): string;
54
- /**
55
- * Die Rückumlautung: `eintraeg` → `eintrag`, `laeuft` → `lauft`.
56
- *
57
- * Das Deutsche verändert im Plural und in gebeugten Formen den Stammvokal
58
- * (Eintrag → Einträge). Ohne diesen Schritt bleiben Einzahl und Mehrzahl zwei
59
- * verschiedene Wörter.
60
- *
61
- * Nur die letzte Umlautstelle wird zurückgenommen. `Ueberpruefung` soll nicht
62
- * zu `Uberprufung` werden — das Wort beginnt mit einem echten `ü`, das kein
63
- * Umlaut einer Mehrzahl ist.
64
- */
65
- export declare function ohneRueckumlaut(stamm: string): string | null;
66
- /**
67
- * Zerlegt ein zusammengesetztes Wort in seine Bestandteile.
68
- *
69
- * `Arbeitsspeicher` → `speicher` (und `arbeit`)
70
- * `Zugriffsprotokoll` → `protokoll` (und `zugriff`)
71
- * `Browsertests` → `test` (und `browser`)
72
- *
73
- * Wie es arbeitet: Das Grundwort steht im Deutschen HINTEN. Also wird von
74
- * hinten nach einem bekannten Wort gesucht. Der Rest davor wird ebenfalls
75
- * zurückgegeben, wenn er lang genug ist — er trägt oft die eigentliche
76
- * Bedeutung (`Arbeit` in `Arbeitsspeicher`).
77
- *
78
- * Das `s` in `Arbeits|speicher` ist eine Fuge und gehört zu keinem der beiden
79
- * Teile. Es wird abgeschnitten.
80
- *
81
- * @param bekannt Grundwörter, gegen die geprüft wird. Das ist die Wortliste der
82
- * Suche selbst — kein zweites Wörterbuch, das veralten kann.
83
- */
84
- export declare function zerlegeKompositum(wort: string, bekannt: Set<string>): string[];
85
- /**
86
- * Deutsche Fachwörter, die in unseren Lektionen und Fragen vorkommen.
87
- *
88
- * ── Woher diese Liste kommt ──────────────────────────────────────────────────
89
- *
90
- * Nicht aus dem Kopf. Jeder Eintrag stammt aus der Messung vom 19.08.2026: es
91
- * sind die Wörter, die in echten Fragen standen und in der richtigen Antwort
92
- * keinen Anschluss fanden (src/bench/wo-bricht-die-frage.ts nennt sie).
93
- *
94
- * Deshalb ist die Liste kurz und wird es bleiben. Sie wächst aus Messungen,
95
- * nicht aus Vermutungen — wer etwas einträgt, soll die Frage nennen können, die
96
- * ohne den Eintrag danebengeht.
97
- */
98
- export declare const DEUTSCHE_FACHWOERTER: ReadonlyArray<readonly [string, string[]]>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"deutsch.js","sourceRoot":"","sources":["../../src/deutsch.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import { type TurnRecord } from './ambient-recall.js';
2
- export type DoctorStatus = 'ok' | 'warn' | 'fail';
3
- export interface DoctorCheck {
4
- /** Short stable label, e.g. "Node.js", "Credential", "Hooks". */
5
- name: string;
6
- status: DoctorStatus;
7
- /** One line of what was found. */
8
- detail: string;
9
- /** Actionable next step — only set when status is not ok. */
10
- hint?: string;
11
- }
12
- /** Node runtime new enough for fetch/AbortSignal (>= 18). */
13
- export declare function checkNodeVersion(version?: string): DoctorCheck;
14
- /** Credential present and roughly the right shape (cky_… API key or JWT). */
15
- export declare function checkCredential(jwt: string): DoctorCheck;
16
- type FetchLike = (url: string, init?: {
17
- signal?: AbortSignal;
18
- }) => Promise<{
19
- ok: boolean;
20
- status: number;
21
- }>;
22
- /** API reachable at all (public /health — no auth involved). */
23
- export declare function checkApiReachable(apiUrl: string, fetchFn?: FetchLike): Promise<DoctorCheck>;
24
- /** Credential actually accepted by the API (authenticated list call). */
25
- export declare function checkAuthAccepted(apiUrl: string, jwt: string, fetchFn?: FetchLike): Promise<DoctorCheck>;
26
- /** Brain instance configured (env or auto-provisioned default). */
27
- export declare function checkInstance(instanceId: string | undefined): DoctorCheck;
28
- export interface HookInspection {
29
- settingsExists: boolean;
30
- wiredEvents: string[];
31
- scriptFiles: {
32
- path: string;
33
- exists: boolean;
34
- version: 'current' | 'stale' | 'unknown';
35
- }[];
36
- }
37
- /** Read-only look at .claude/ in projectDir — never throws. */
38
- export declare function inspectAmbientHooks(projectDir: string): HookInspection;
39
- /** Ambient hooks wired, scripts present, version current. */
40
- export declare function checkHooks(inspection: HookInspection): DoctorCheck;
41
- /** Net-token ledger readable + backoff state. */
42
- export declare function checkLedger(entries: TurnRecord[], ledgerPath: string): DoctorCheck;
43
- /** Render the report; deterministic, no colors (CI-friendly). */
44
- export declare function renderDoctorReport(checks: DoctorCheck[]): string;
45
- /** Exit code contract: 1 only on hard failures (warnings stay 0 for CI use). */
46
- export declare function doctorExitCode(checks: DoctorCheck[]): 0 | 1;
47
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export type Editor = 'claude' | 'cursor' | 'windsurf' | 'copilot' | 'vscode' | 'jetbrains' | 'zed' | 'unknown';
2
- type Env = Record<string, string | undefined>;
3
- /**
4
- * Best-effort host detection. Order matters: forks of VS Code (Cursor,
5
- * Windsurf) also set TERM_PROGRAM=vscode, so their fork-specific signals are
6
- * checked BEFORE the generic vscode fallback.
7
- */
8
- export declare function detectEditor(env?: Env): Editor;
9
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/editor.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,iFAAiF;AACjF,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,iCAAiC;AAcjC;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAW,OAAO,CAAC,GAAG;IACjD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEvE,2EAA2E;IAC3E,6EAA6E;IAC7E,wDAAwD;IACxD,IAAI,GAAG,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG;QAAE,OAAO,QAAQ,CAAC;IAE7E,4EAA4E;IAC5E,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC7E,IAAI,GAAG,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC,YAAY,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAErF,4EAA4E;IAC5E,IAAI,GAAG,CAAC,0BAA0B,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC;QAAE,OAAO,SAAS,CAAC;IAEjF,4EAA4E;IAC5E,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhE,4EAA4E;IAC5E,IACE,GAAG,CAAC,iBAAiB,KAAK,oBAAoB;QAC9C,GAAG,CAAC,+BAA+B,CAAC;QACpC,GAAG,CAAC,wBAAwB,CAAC,EAC7B,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,8EAA8E;IAC9E,IACE,GAAG,CAAC,YAAY,KAAK,QAAQ;QAC7B,GAAG,CAAC,YAAY,CAAC;QACjB,GAAG,CAAC,YAAY,CAAC;QACjB,GAAG,CAAC,iBAAiB,CAAC;QACtB,GAAG,CAAC,qBAAqB,CAAC;QAC1B,GAAG,CAAC,uBAAuB,CAAC;QAC5B,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAC,EACxC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wEAAwE;AACxE,SAAS,cAAc,CAAC,MAA0B;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,CACL,MAAM,KAAK,sBAAsB;QACjC,MAAM,KAAK,8BAA8B;QACzC,MAAM,KAAK,2BAA2B;QACtC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAC1C,CAAC;AACJ,CAAC"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Rüstet den vorhandenen Lektionsbestand mit Eingängen und Namensvektoren nach.
3
- *
4
- * ── Warum es dieses Werkzeug gibt ───────────────────────────────────────────
5
- *
6
- * Seit dem 20.08.2026 schreibt `learn_from_attempts` die Fehlertext-Eingänge
7
- * beim Speichern mit. Die Lektionen, die vorher entstanden sind, haben keine —
8
- * und ohne Nachrüstung wirkt die Verbesserung nur für alles, was ab heute
9
- * gelernt wird. Bei 501 vorhandenen und wenigen neuen Lektionen je Woche wäre
10
- * das praktisch keine Wirkung.
11
- *
12
- * ── Was es kostet ──────────────────────────────────────────────────────────
13
- *
14
- * Rund 1,3 Einbettungen je Lektion (nicht jede trägt einen Fehlertext).
15
- * Gemessen am 20.08.: 1440 Einbettungen in 406 s mit Admin-Schlüssel, das sind
16
- * 3,5 je Sekunde. Für 501 Lektionen also wenige Minuten.
17
- *
18
- * OHNE Admin-Schlüssel greift die Drosselung von 60 Anfragen je Minute
19
- * (api/cmd/server/routes.go). Ein paralleler Lauf hat am 19.08. 563 mal
20
- * HTTP 429 erzeugt, eine Wachhund-Warnung mit unserer eigenen Adresse
21
- * ausgelöst und eine automatische Hochskalierung angestoßen. Deshalb die
22
- * Notbremse.
23
- *
24
- * ── Was es NICHT tut ───────────────────────────────────────────────────────
25
- *
26
- * Es rührt die Lektionen selbst nicht an und schreibt keine Vektoren. Fällt es
27
- * mittendrin aus, ist der Bestand in demselben Zustand wie vorher, nur mit
28
- * weniger Eingängen — ein zweiter Lauf holt den Rest.
29
- *
30
- * Aufruf:
31
- * REDIS_URL=... CACHLY_JWT=... CACHLY_ADMIN_KEY=... \
32
- * npx tsx src/eingaenge-nachruesten.ts [--probe 20] [--parallel 6]
33
- * npx tsx src/eingaenge-nachruesten.ts --selbstprobe
34
- */
35
- /**
36
- * Wie viele Lektionen überhaupt einen Eingang bekommen könnten.
37
- *
38
- * Wird VOR dem ersten Netzaufruf gerechnet und gemeldet: wer die Zahl vorher
39
- * kennt, merkt sofort, wenn am Ende viel weniger herauskommt.
40
- */
41
- export declare function wieVieleTragen(lektionen: Array<Record<string, unknown>>): number;
@@ -1 +0,0 @@
1
- {"version":3,"file":"eingaenge-nachruesten.js","sourceRoot":"","sources":["../../src/eingaenge-nachruesten.ts"],"names":[],"mappings":"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"}
@@ -1,135 +0,0 @@
1
- /**
2
- * Eingänge: die zweite Tür zu einer Lektion.
3
- *
4
- * ── Was gemessen wurde, und was daraus folgt ────────────────────────────────
5
- *
6
- * Am 20.08.2026 an 499 echten Lektionen mit zwei unabhängigen 100-Fragen-Sätzen
7
- * (`.agent/cachly/tor0-tor1-ergebnis.md`):
8
- *
9
- * Findequote@3, frischer Prüfsatz
10
- * heute, nur Volltextvektor 52 %
11
- * Eingänge in der Vorauswahl 56 %
12
- * dazu das Merkmal "bester Eingang" im Sortierer 58 %
13
- * alle Eingänge AUSSER den Fehlertexten 52 % ← null Gewinn
14
- *
15
- * Die letzte Zeile ist die wichtigste: von fünf ausprobierten Türarten trägt
16
- * GENAU EINE. Der erste Satz von what_worked bringt nichts, die Übersetzung
17
- * bringt nichts, der Themenname steckt längst im Sortierer. Deshalb baut
18
- * dieses Modul nur die Fehlertexte — alles andere wäre Speicher ohne Wirkung.
19
- *
20
- * ── Warum ausgerechnet der Fehlertext ───────────────────────────────────────
21
- *
22
- * Er ist ein scharfer Schlüssel. Nutzer fügen Meldungen wörtlich ein; passt der
23
- * Schlüssel, zieht er die Lektion nach ganz vorn. Der Preis steht in derselben
24
- * Messung und wird hier offen genannt: dieselben Eingänge SENKEN die Decke von
25
- * 89 auf 86 % — sie ziehen auch falsche Lektionen in die Vorauswahl. Für den
26
- * Nutzer zählt trotzdem die Findequote: er sieht drei Lektionen, nicht 25.
27
- *
28
- * ── Eine Wahrheit ──────────────────────────────────────────────────────────
29
- *
30
- * Die Extraktion stand zuerst im Messwerkzeug (src/bench/eingaenge-b.ts). Sie
31
- * steht jetzt HIER, und der Bench importiert sie. Zwei Fassungen desselben
32
- * regulären Ausdrucks wären die Fehlerklasse, die dieses Haus am häufigsten
33
- * trifft — und die Messung würde etwas anderes prüfen als das Produkt.
34
- */
35
- import type { Redis } from 'ioredis';
36
- /** Wo die Eingänge einer Lektion liegen: EIN Hash je Lektion, neben ihr. */
37
- export declare const EINGANG_PRAEFIX = "cachly:lesson:eing:";
38
- /** Höchstens so viele Eingänge je Lektion. Mehr Türen kosten Decke. */
39
- export declare const EINGAENGE_JE_LEKTION = 3;
40
- /**
41
- * Die Feld-Markierungen, die im Bestand IM Text stehen.
42
- *
43
- * Gemessen: `what_worked` enthält bei vielen Lektionen wörtlich
44
- * `</what_worked>\n<what_failed>`. Wer das nicht wegnimmt, bettet Feldnamen ein
45
- * und wundert sich über die Nähe zwischen zwei völlig fremden Lektionen.
46
- */
47
- export declare function ohneMarkierungen(text: string): string;
48
- /**
49
- * Wörtliche Fehlertexte, Codes und Kernsätze aus einer Lektion.
50
- *
51
- * Fünf Muster, alle an echten Lektionen belegt:
52
- * 1. der GROSSGESCHRIEBENE Kernsatz am Anfang (Schreibregel des Hauses)
53
- * 2. alles in Anführungszeichen oder Rückwärts-Haken
54
- * 3. Fehlerklassen und Meldungen samt Umfeld (Error, panic, FATAL, HTTP 5xx)
55
- * 4. Systemfehler-Kürzel MIT Umfeld — "EACCES" allein ist als Vektor blind
56
- * 5. englische Meldungssätze mitten im deutschen Text
57
- */
58
- export declare function fehlertexteAus(text: string, hoechstens?: number): string[];
59
- /** Der Text einer Lektion, aus dem Eingänge gezogen werden. */
60
- export declare function eingangsText(lektion: Record<string, unknown>): string;
61
- /**
62
- * Schreibt die Eingänge einer Lektion — als EIN Hash, nicht als n Schlüssel.
63
- *
64
- * Warum ein Hash: die Eingänge gehören zusammen und werden zusammen gelesen.
65
- * Drei Schlüssel je Lektion wären bei 2000 Lektionen 6000 Schlüssel im SCAN.
66
- *
67
- * Der Hash wird zuerst gelöscht: hat sich der Text der Lektion geändert, sind
68
- * die alten Fehlertexte falsch. Eine Lektion neu zu lernen darf keine Reste
69
- * hinterlassen — das wäre eine zweite Wahrheit über denselben Text.
70
- *
71
- * Gibt zurück, wie viele Eingänge geschrieben wurden.
72
- */
73
- export declare function schreibeEingaenge(redis: Redis, topic: string, lektion: Record<string, unknown>, einbetten: (text: string) => Promise<number[] | null>): Promise<number>;
74
- /**
75
- * Die Eingänge aller Lektionen im Arbeitsspeicher.
76
- *
77
- * Baugleich zu `Vektorbestand` in bedeutung.ts und aus demselben Grund: bei
78
- * jeder Frage aus dem Speicher zu holen wäre langsamer als der Wortabgleich,
79
- * den wir gerade ersetzen. Der MCP-Server läuft lange, also wird einmal geladen
80
- * und danach nur nachgetragen.
81
- */
82
- export declare class Eingangsbestand {
83
- private readonly frischeMs;
84
- private eingaenge;
85
- private geladen;
86
- constructor(frischeMs?: number);
87
- get groesse(): number;
88
- get anzahlEingaenge(): number;
89
- /**
90
- * @param praefixe welche Hashes zum Bestand gehoeren
91
- *
92
- * Zwei statt einem: die aus dem Text gezogenen Fehlertexte
93
- * (`cachly:lesson:eing:`) und die aus der Nutzung gelernten Fragen
94
- * (`cachly:lesson:pfad:`). Sie liegen getrennt, weil `schreibeEingaenge`
95
- * seinen Hash vor jedem Schreiben loescht — laegen die gelernten Fragen
96
- * dort, wuerde jedes erneute Lernen die gesammelte Erfahrung wegwerfen.
97
- * Fuer die SUCHE sind sie dasselbe: Tueren zu derselben Lektion.
98
- */
99
- aktualisiere(redis: Redis, jetzt?: number, praefixe?: readonly string[]): Promise<void>;
100
- /**
101
- * Die Nähe zum BESTEN Eingang einer Lektion. -2, wenn sie keinen hat.
102
- *
103
- * Maximum, nicht Mittelwert: eine Lektion wird über ihre passendste Tür
104
- * gefunden, und die anderen dürfen schlecht passen. Der Mittelwert würde
105
- * Lektionen mit vielen Türen bestrafen — gemessen und belegt am 20.08.
106
- */
107
- besteNaehe(frage: number[], topic: string): number;
108
- /** Die ähnlichsten Lektionen, je Lektion ihr bester Eingang. */
109
- aehnlichste(frage: number[], anzahl: number): Array<{
110
- topic: string;
111
- naehe: number;
112
- }>;
113
- }
114
- /**
115
- * Das Gewicht des Merkmals "bester Eingang" im Sortierer.
116
- *
117
- * Gemessen am 20.08.2026: 0,3 / 0,5 / 0,8 / 1,3 ergeben 57 / 58 / 57 / 57 %
118
- * Findequote@3. Das Merkmal ist also unempfindlich gegen sein Gewicht — wer
119
- * hier weiterdreht, misst Rauschen. 0,5 ist die Mitte des flachen Bereichs.
120
- */
121
- export declare const EINGANG_GEWICHT = 0.5;
122
- /**
123
- * Das Urteil über die Deckung des Bedeutungsabgleichs.
124
- *
125
- * Als eigene Funktion, damit sie prüfbar ist: `brain_doctor` steckt in einem
126
- * großen `switch`, und ein Wächter, den man nicht einzeln aufrufen kann, ist
127
- * ein Wächter, dessen Nein niemand je gesehen hat.
128
- *
129
- * Die Schwelle liegt bei 90 Prozent und nicht bei 100: eine einzelne Lektion
130
- * ohne Vektor ist ein Aussetzer beim Einbetten (gemessen 20.08.: 7 von 507,
131
- * alle beim zweiten Lauf nachgeholt), kein Systemfehler. Null ist etwas ganz
132
- * anderes — dann ist der Bedeutungsabgleich schlicht aus.
133
- */
134
- export type Deckungsurteil = 'aus' | 'luecke' | 'gut';
135
- export declare function beurteileDeckung(lektionen: number, vektoren: number): Deckungsurteil;
@@ -1 +0,0 @@
1
- {"version":3,"file":"eingaenge.js","sourceRoot":"","sources":["../../src/eingaenge.ts"],"names":[],"mappings":"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"}