@futdevpro/fdp-agent-memory 1.1.153 → 1.1.158

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/fdp-agent-memory",
3
- "version": "1.1.153",
3
+ "version": "1.1.158",
4
4
  "description": "Local-first, vector-backed multi-table agent memory exposed as an MCP server (read/write/capabilities). Public, FDP-Templates-free, no auth.",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -526,12 +526,12 @@ exports.CONFIG_CATALOG = {
526
526
  },
527
527
  // --- 4.5c. Rules-injekció (fogyasztó: FAM_RuleInjection_ControlService) ---
528
528
  'rules.injectBudgetChars': {
529
- type: 'number', default: 32000, min: 1000, max: 200000, integer: true, levels: GLOBAL_ONLY,
530
- description: 'Az always-on szabály-injekció char-budgetje (owner-döntés 2026-08-14: a szabályok kritikusak"). '
531
- + 'MÉRVE: a teljes kurált készlet egy FDP-projekten belül 56 szabály / 25 179 char; a korábbi 6000-es '
532
- + 'budget ebből csak ~10-et engedett be (36 kimaradt). A budget-fit ATOMI: egy szabály vagy TELJESEN '
533
- + 'bekerül, vagy a „(…and N more rules not shown)" jelzésbe esik sosem félig (`core-rule-integrity`). '
534
- + 'A hívó explicit `budgetChars`-a (pl. a SessionStart-hook) felülírja ezt.',
529
+ type: 'number', default: 88000, min: 1000, max: 400000, integer: true, levels: ALL_LEVELS,
530
+ description: 'Az injektalt szabaly-blokk char-budgetje. MERT (2026-08-22): a 60 szabaly injektalt merete '
531
+ + '80 514 char, ezert 82 000 alatt szabalyok ESNEK KI 32 000-nel 65-bol 45, koztuk a core-no-coauthor, '
532
+ + 'a core-always-master es maga a fam-use-preferentially. A 88 000 ~9% fejlodesi tartalek. '
533
+ + 'Elotte a `fam:elide-start/end` jelolok mar levalasztottak a nem-normativ kifejtest (88 480 -> 80 514, '
534
+ + '-9%); tovabbi csokkentes csak a hosszu UTASITASOK owner-dontesu tomoritesevel lehetseges.',
535
535
  },
536
536
  // --- 4.6. Reference / scope (fogyasztó: dsgn-002) ---
537
537
  'reference.cacheTtlMs': {
@@ -23,6 +23,16 @@ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
23
23
  * hogy a logok a látható ablak MELLETT fájlból is tail-elhetők legyenek (a `fam serve` ezt állítja be a detached szerverre).
24
24
  */
25
25
  class FAM_Console_Util {
26
+ /**
27
+ * UTF-8 BOM (`U+FEFF`) — a generalt `.ps1` ELSO karaktere. Enelkul a Windows PowerShell 5.1 a fajlt a
28
+ * rendszer ANSI-kodlapjan olvassa (magyar Windowson `windows-1250`), es minden ekezet elromlik
29
+ * (lasd `windowsServerScript`). A Node `writeFileSync` UTF-8-ban ir, igy ebbol pontosan `EF BB BF` lesz.
30
+ *
31
+ * A `String.fromCharCode(0xFEFF)` forma szandekos a literalis (lathatatlan) karakter helyett: azt egy code-style sweep,
32
+ * egy editor vagy egy trim-elo szkript NEMAN kiszedhetne, es a hiba csak a felhasznalonal jelentkezne
33
+ * mojibake-kent — pontosan ugy, ahogy 2026-08-22-en jelentkezett.
34
+ */
35
+ static UTF8_BOM = String.fromCharCode(0xFEFF);
26
36
  /**
27
37
  * **File-log (`FAM_LOG_FILE`)** — ha az env be van állítva, a `console.*` MINDEN sorát rácsatolja arra a fájlra
28
38
  * (a látható ablak MELLETT). A `fam serve` ezt állítja a detached szerverre → a logok (köztük az import-progress)
@@ -113,11 +123,23 @@ class FAM_Console_Util {
113
123
  * A Windows szerver-launcher `.ps1` tartalma (PURE — unit-tesztelhető): UTF-8 konzol + ablakcím, az env-override-ok
114
124
  * (`$env:X='...'`), majd a szerver futtatása (`& command args`). A `'`-eket megdupláljuk (PS string-escape). A
115
125
  * `-NoExit` (a spawn-oldalon) tartja nyitva az ablakot kilépés után.
126
+ *
127
+ * 🔴 **A visszaadott szöveg UTF-8 BOM-mal KEZDŐDIK — ez nem díszítés, hanem a helyes működés feltétele.**
128
+ * A launchert a `powershell.exe` (**Windows PowerShell 5.1**) futtatja, az pedig a **BOM NÉLKÜLI** `.ps1`-et a
129
+ * rendszer ANSI-kódlapján értelmezi — magyar Windowson `windows-1250`. Mérve (2026-08-22, PS 5.1.26100,
130
+ * ANSI = windows-1250) ugyanazzal a fájllal:
131
+ *
132
+ * BOM nélkül → `[FAM szerver kilĂ©pett †exit 0 †'fam serve --restart' ĂşjraindĂ­tja]`
133
+ * BOM-mal → `[FAM szerver kilépett — exit 0 — 'fam serve --restart' újraindítja]`
134
+ *
135
+ * A `[Console]::OutputEncoding=UTF8` sor ezen NEM segít: az a KIMENET kódolását állítja, a hiba viszont már a
136
+ * fájl BEOLVASÁSAKOR megtörténik. És a hiba nem csak kozmetikai: az `envOverrides` ÉRTÉKEI is ezen az úton
137
+ * mennek át, így egy ékezetes útvonal/érték is elromlana.
116
138
  */
117
139
  static windowsServerScript(set) {
118
140
  const esc = (value) => value.replace(/'/g, "''");
119
141
  const lines = [
120
- 'try { [Console]::OutputEncoding=[System.Text.Encoding]::UTF8 } catch {}',
142
+ `${FAM_Console_Util.UTF8_BOM}try { [Console]::OutputEncoding=[System.Text.Encoding]::UTF8 } catch {}`,
121
143
  `try { $host.UI.RawUI.WindowTitle='FAM server :${set.port}' } catch {}`,
122
144
  ];
123
145
  for (const [key, value] of Object.entries(set.envOverrides)) {
@@ -13,15 +13,47 @@ const fam_rule_scope_type_enum_1 = require("../../../_enums/fam-rule-scope.type-
13
13
  */
14
14
  class FAM_RuleInjection_Util {
15
15
  /**
16
- * Default char-budget az injektált blokkra. **32000 (owner-döntés 2026-08-14: „a szabályok kritikusak").**
16
+ * Default char-budget az injektált blokkra. **88000 (2026-08-22).** Owner-alapelv változatlan (2026-08-14):
17
+ * „a szabályok kritikusak" — inkább fizetünk kontextust, mint hogy szabály essen ki.
17
18
  *
18
- * MÉRVE: a teljes kurált készlet egy FDP-PROJEKTEN BELÜL 56 szabály / **25 179 char** (global 19 552 +
19
- * fdp-global 2 103 + project-internal 2 779 + project-type 745). A korábbi `6000` ebből csak ~10-et engedett be,
20
- * 36-ot kihagyva — és mivel a hosszabb szabályok chunkokra bomlottak, a kimaradás NÉMA CSONKOLÁSKÉNT jelent meg
21
- * (`core-rule-integrity` sérülés). A 32000 a mért 25 179-re ad ~27% fejlődési tartalékot, hogy egy új szabály
22
- * felvétele NE szorítson ki egy meglévőt. Konfigurálható: `rules.injectBudgetChars` (a hívó `budgetChars`-a nyer).
19
+ * A SZÁM TÖRTÉNETE, MÉRVE:
20
+ * - `6000` 56 szabályból ~10 fért be; a hosszabbak chunkokra bomlottak, így a kimaradás NÉMA CSONKOLÁSKÉNT
21
+ * jelent meg (`core-rule-integrity` sérülés).
22
+ * - `32000` a 2026-08-14-i mért 25 179 char-ra ~27% tartalék volt. 2026-08-22-re a készlet **85 854 char**-ra
23
+ * nőtt (nem a darabszám, hanem a HOSSZ nőtt), és **65 szabályból 45 esett ki** — köztük a `core-no-coauthor`,
24
+ * a `core-always-master`, a `core-no-polling` és maga a `fam-use-preferentially`.
25
+ * - `88000` → a `fam:elide-start/end` jelölők bevezetése UTÁN mért injektált méret **80 514 char** (a jelölés
26
+ * 88 480-ról vitte le, −9%; a további csökkentés már a hosszú UTASÍTÁSOKAT érintené, az pedig owner-döntés).
27
+ * 82 000 alatt szabály esik ki; a 88 000 ~9% fejlődési tartalék.
28
+ *
29
+ * Konfigurálható: `rules.injectBudgetChars` (a hívó `budgetChars`-a nyer). A budget-hiány SOHA nem néma:
30
+ * a záró sor jelzi a kimaradt darabszámot, és minden rövidített szabály LÁTHATÓ pointert kap (`coreOf`).
23
31
  */
24
- static DEFAULT_BUDGET_CHARS = 32000;
32
+ static DEFAULT_BUDGET_CHARS = 88000;
33
+ /**
34
+ * A **mindig injektálandó normatív mag** vége a szabály-fájlban. Ami a jelölő UTÁN áll (Miért / Példák /
35
+ * Migráció / Ellenőrzés / incidens-narratíva), az **on-demand** — a kanonikus fájlban marad, és a `read`
36
+ * hozza elő, ha kell.
37
+ *
38
+ * MÉRT INDOK (2026-08-22): a szabály-készlet 60 szabályból **85 854 char**-ra nőtt, és 65-ből **45 esett ki**
39
+ * a 32k-s budgetből — köztük a `core-no-coauthor`, a `core-always-master` és maga a `fam-use-preferentially`.
40
+ * A készlet ugyanakkor KETTÉVÁLT: 38 szabály 1000 char alatt (átlag 292, kifejtés nélkül), míg 8 szabály
41
+ * 4000 fölött adja a készlet **49%-át**. A hízás NEM az utasításban van: a legnagyobbaknál a normatív mag
42
+ * `core-no-polling` 7%, `core-dynamo-docs-english` 10%, `core-wakeup-state-file` 20%. A címkézett kifejtés
43
+ * összesen a készlet **33%-a** (alsó becslés).
44
+ *
45
+ * A megoldás a `core-rule-integrity` által KIFEJEZETTEN megengedett forma: az **utasítás inline marad**, a
46
+ * kifejtés **pointerré válik**, LÁTHATÓ jelzéssel. A fájlból SEMMI nem kerül ki — csak az injektálás
47
+ * szelektív. Jelölő nélküli szabály **teljes egészében** injektálódik (visszafelé kompatibilis default).
48
+ *
49
+ * SZAKASZ-jelölő, nem egyetlen vágópont: a kifejtés a valós szabály-fájlokban BEÉKELŐDIK a normatív részek
50
+ * közé (pl. `core-wakeup-state-file`: „A szabály" → „Miért" → „Hol éljen" → „Mit tartalmazzon"), ezért egy
51
+ * záró vágópont nem lenne elég — átrendezéssel járna, azt pedig nem akarjuk a szabály-fájlokon.
52
+ * Lezáratlan `elide-start` → a fájl végéig tart (így a záró kifejtésnél elég egyetlen jelölő).
53
+ */
54
+ static ELIDE_START = '<!-- fam:elide-start -->';
55
+ /** Az elhagyható szakasz vége (lásd `ELIDE_START`). */
56
+ static ELIDE_END = '<!-- fam:elide-end -->';
25
57
  /** A `globalRule:true` legacy hard-rule effektív fontossága, ha nincs explicit `importance`. */
26
58
  static LEGACY_GLOBAL_IMPORTANCE = 90;
27
59
  /** Importance-default explicit érték nélkül (közepes — a globalRule-legacy fölött, nem-jelölt alatt). */
@@ -102,6 +134,41 @@ class FAM_RuleInjection_Util {
102
134
  * addig vesz fel, amíg a következő szabály content-je (a `separator`-ral) belefér. Ha a legelső sem fér, akkor is
103
135
  * felveszi (legalább a legfontosabb core menjen). A footer csak akkor van, ha tényleg maradt ki.
104
136
  */
137
+ /**
138
+ * Egy szabály **injektálandó** szövege: a `CORE_END_MARKER` előtti normatív mag + egy LÁTHATÓ pointer-sor,
139
+ * ha volt mit elhagyni. Jelölő nélkül a teljes szöveg (back-compat). Üres mag esetén szintén a teljes
140
+ * szöveg — a jelölő elgépelése SOHA nem némíthat el egy szabályt.
141
+ */
142
+ static coreOf(rule) {
143
+ const text = (rule.content ?? '').trim();
144
+ const start = FAM_RuleInjection_Util.ELIDE_START;
145
+ const end = FAM_RuleInjection_Util.ELIDE_END;
146
+ if (!text.includes(start)) {
147
+ return text;
148
+ }
149
+ let kept = '';
150
+ let cursor = 0;
151
+ for (;;) {
152
+ const from = text.indexOf(start, cursor);
153
+ if (from < 0) {
154
+ kept += text.slice(cursor);
155
+ break;
156
+ }
157
+ kept += text.slice(cursor, from);
158
+ const to = text.indexOf(end, from);
159
+ if (to < 0) {
160
+ break; // lezáratlan szakasz → a fájl végéig tart
161
+ }
162
+ cursor = to + end.length;
163
+ }
164
+ const core = kept.replace(/\n{3,}/g, '\n\n').trim();
165
+ if (!core) {
166
+ return text;
167
+ }
168
+ const id = rule.ruleId ?? rule.id ?? '(ismeretlen ruleId)';
169
+ return `${core}\n> ℹ️ *A szabály INDOKLÁSA / példái / migrációs-ellenőrzési része itt NINCS inline-olva — `
170
+ + `a teljes kanonikus szöveg: \`${id}\` (\`read\` a \`rules\` táron).*`;
171
+ }
105
172
  static assemble(input) {
106
173
  const budget = input.budgetChars && input.budgetChars > 0 ? input.budgetChars : FAM_RuleInjection_Util.DEFAULT_BUDGET_CHARS;
107
174
  const sep = input.separator ?? '\n\n';
@@ -113,7 +180,7 @@ class FAM_RuleInjection_Util {
113
180
  let used = 0;
114
181
  let included = 0;
115
182
  for (const rule of ranked) {
116
- const text = (rule.content ?? '').trim();
183
+ const text = FAM_RuleInjection_Util.coreOf(rule);
117
184
  const addLen = text.length + (parts.length ? sep.length : 0);
118
185
  if (used + addLen > budget && included > 0) {
119
186
  break; // budget-stop (de a legelső MINDIG befér — included>0 guard)
@@ -8,8 +8,8 @@
8
8
  <link rel="icon" type="image/x-icon" href="favicon.ico">
9
9
  <style>@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBGEe.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBGEe.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBGEe.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBGEe.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBGEe.woff2) format('woff2');unicode-range:U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBGEe.woff2) format('woff2');unicode-range:U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBGEe.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBGEe.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBA.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBGEe.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBGEe.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBGEe.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBGEe.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBGEe.woff2) format('woff2');unicode-range:U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBGEe.woff2) format('woff2');unicode-range:U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBGEe.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBGEe.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBA.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBGEe.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBGEe.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBGEe.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBGEe.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBGEe.woff2) format('woff2');unicode-range:U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBGEe.woff2) format('woff2');unicode-range:U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBGEe.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBGEe.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v51/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBA.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style>
10
10
  <style>@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v145/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');}.material-icons{font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>
11
- <style>@font-face{font-family:'Material Symbols Outlined';font-style:normal;font-weight:700;src:url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v367/kJF4BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzBwG-RpA6RzaxHMPdY40KH8nGzv3fzfVJU22ZZLsYEpzC_1hCs5Y0.woff2) format('woff2');}.material-symbols-outlined{font-family:'Material Symbols Outlined';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>
12
- <style>@font-face{font-family:'Material Symbols Rounded';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialsymbolsrounded/v368/syl7-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvLgyidOK7BDB_Qb9vUdV6_gjDK-P3JuF_Zs-obHph2-jOcZTKPqw.woff2) format('woff2');}.material-symbols-rounded{font-family:'Material Symbols Rounded';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>
11
+ <style>@font-face{font-family:'Material Symbols Outlined';font-style:normal;font-weight:700;src:url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v368/kJF4BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzBwG-RpA6RzaxHMPdY40KH8nGzv3fzfVJU22ZZLsYEpzC_1hCs5Y0.woff2) format('woff2');}.material-symbols-outlined{font-family:'Material Symbols Outlined';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>
12
+ <style>@font-face{font-family:'Material Symbols Rounded';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialsymbolsrounded/v369/syl7-zNym6YjUruM-QrEh7-nyTnjDwKNJ_190FjpZIvLgyidOK7BDB_Qb9vUdV6_gjDK-P3JuF_Zs-obHph2-jOcZTKPqw.woff2) format('woff2');}.material-symbols-rounded{font-family:'Material Symbols Rounded';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>
13
13
  <style>*,:before,:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}html,body{height:100%;background-color:#0f0f0f}body{margin:0;font-family:Roboto,Helvetica Neue,sans-serif;color:#c8c8c8}</style><link rel="stylesheet" href="styles-3J7JD5YE.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-3J7JD5YE.css"></noscript></head>
14
14
  <body class="mat-typography">
15
15
  <a-root-root></a-root-root>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/fdp-agent-memory",
3
- "version": "1.1.153",
3
+ "version": "1.1.158",
4
4
  "description": "Local-first, vector-backed multi-table agent memory exposed as an MCP server (read/write/capabilities). Public, FDP-Templates-free, no auth.",
5
5
  "private": false,
6
6
  "publishConfig": {