@futdevpro/nts-dynamo 1.15.137 → 1.15.139
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/build/_modules/socket/_services/socket-server.service.js +1 -1
- package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
- package/build/_modules/socket/_services/socket-server.service.spec.js +23 -0
- package/build/_modules/socket/_services/socket-server.service.spec.js.map +1 -1
- package/package.json +2 -2
- package/src/_modules/socket/_services/socket-server.service.spec.ts +40 -1
- package/src/_modules/socket/_services/socket-server.service.ts +1 -1
- package/__documentations/2026-04-28-logs-module.md +0 -49
- package/__documentations/2026-05-17-oai-compatible-providers.md +0 -229
- package/__documentations/2026-05-17-static-client-serving-howto.md +0 -144
- package/__documentations/2026-06-01-fr041-cors-middleware.md +0 -96
- package/__documentations/2026-06-01-fr047-p2p3-function-calling.md +0 -81
- package/__documentations/2026-06-15-fr193-memory-guard.md +0 -73
- package/__documentations/2026-08-08-fr292-app-version-header.md +0 -38
- package/__documentations/2026-08-14-field-encryption-mongoose-document-spread.md +0 -124
- package/__documentations/nts-integration-tests-2026-03-17.md +0 -26
- package/__documentations/plans/BEDROCK-HYPERPLAN.md +0 -95
|
@@ -278,7 +278,7 @@ class DyNTS_SocketServerService extends singleton_service_1.DyNTS_SingletonServi
|
|
|
278
278
|
await this.executeDisconnectTasks(socket, issuer);
|
|
279
279
|
}
|
|
280
280
|
else {
|
|
281
|
-
await event.executeEventTasks(content, issuer);
|
|
281
|
+
await event.executeEventTasks(content, issuer, socket);
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-server.service.js","sourceRoot":"","sources":["../../../../src/_modules/socket/_services/socket-server.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"socket-server.service.js","sourceRoot":"","sources":["../../../../src/_modules/socket/_services/socket-server.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,10 @@ const socket_security_enum_1 = require("../_enums/socket-security.enum");
|
|
|
6
6
|
const socket_presence_control_model_1 = require("../_models/socket-presence.control-model");
|
|
7
7
|
const socket_server_service_params_control_model_1 = require("../_models/socket-server-service-params.control-model");
|
|
8
8
|
const socket_server_service_1 = require("./socket-server.service");
|
|
9
|
+
const DyNTS_transportContextEventKey = 'transport-context-test';
|
|
9
10
|
class DyNTS_SocketServer_LifecycleMock extends socket_server_service_1.DyNTS_SocketServerService {
|
|
10
11
|
disconnectRecords = [];
|
|
12
|
+
transportContextRecords = [];
|
|
11
13
|
/** A lifecycle teszt singletonjat adja vissza. */
|
|
12
14
|
static getInstance() {
|
|
13
15
|
return DyNTS_SocketServer_LifecycleMock.getSingletonInstance();
|
|
@@ -30,6 +32,18 @@ class DyNTS_SocketServer_LifecycleMock extends socket_server_service_1.DyNTS_Soc
|
|
|
30
32
|
},
|
|
31
33
|
],
|
|
32
34
|
}),
|
|
35
|
+
new socket_1.DyFM_SocketEvent({
|
|
36
|
+
eventKey: DyNTS_transportContextEventKey,
|
|
37
|
+
tasks: [
|
|
38
|
+
async (content, issuer, transportContext) => {
|
|
39
|
+
this.transportContextRecords.push({
|
|
40
|
+
content: content,
|
|
41
|
+
issuer: issuer,
|
|
42
|
+
transportContext: transportContext,
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
}),
|
|
33
47
|
];
|
|
34
48
|
}
|
|
35
49
|
async getPresenceFromSubscriptionEventContent(socketSubscription, socket) {
|
|
@@ -92,6 +106,15 @@ describe('| DyNTS_SocketServerService', () => {
|
|
|
92
106
|
await getRegisteredHandler(secondSocket.on.calls.allArgs(), socket_1.DyFM_SocketEvent_Key.subscribe)({ issuerId: 'alpha' });
|
|
93
107
|
await getRegisteredHandler(explicitSocket.on.calls.allArgs(), socket_1.DyFM_SocketEvent_Key.subscribe)({ issuerId: 'alpha' });
|
|
94
108
|
await getRegisteredHandler(unrelatedSocket.on.calls.allArgs(), socket_1.DyFM_SocketEvent_Key.subscribe)({ issuerId: 'beta' });
|
|
109
|
+
const transportContent = { commandId: 'command-1' };
|
|
110
|
+
await getRegisteredHandler(firstSocket.on.calls.allArgs(), DyNTS_transportContextEventKey)(transportContent);
|
|
111
|
+
expect(service.transportContextRecords).toEqual([
|
|
112
|
+
{
|
|
113
|
+
content: transportContent,
|
|
114
|
+
issuer: 'alpha',
|
|
115
|
+
transportContext: firstSocket,
|
|
116
|
+
},
|
|
117
|
+
]);
|
|
95
118
|
await getRegisteredHandler(explicitSocket.on.calls.allArgs(), socket_1.DyFM_SocketEvent_Key.unsubscribe)('alpha');
|
|
96
119
|
expect(explicitSocket.emit.calls.allArgs().filter((args) => args[0] === socket_1.DyFM_SocketEvent_Key.unsubscribeSuccessful).length).toBe(1);
|
|
97
120
|
expect(service.getPresences()[0].sockets).toEqual([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-server.service.spec.js","sourceRoot":"","sources":["../../../../src/_modules/socket/_services/socket-server.service.spec.ts"],"names":[],"mappings":";;AAEA,yDAGsC;AAEtC,sEAAwE;AACxE,yEAAsE;AACtE,4FAAgF;AAChF,sHAE+D;AAC/D,mEAAoE;
|
|
1
|
+
{"version":3,"file":"socket-server.service.spec.js","sourceRoot":"","sources":["../../../../src/_modules/socket/_services/socket-server.service.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/nts-dynamo",
|
|
3
|
-
"version": "01.15.
|
|
3
|
+
"version": "01.15.139",
|
|
4
4
|
"description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "server-package",
|
|
@@ -378,7 +378,7 @@
|
|
|
378
378
|
"@anthropic-ai/sdk": "~0.39.0",
|
|
379
379
|
"@modelcontextprotocol/sdk": "~1.29.0",
|
|
380
380
|
"better-sqlite3": "~12.4.1",
|
|
381
|
-
"@futdevpro/fsm-dynamo": "1.16.
|
|
381
|
+
"@futdevpro/fsm-dynamo": "1.16.39",
|
|
382
382
|
"@types/express": "4.17.21",
|
|
383
383
|
"@types/geoip-lite": "~1.4.1",
|
|
384
384
|
"@types/node": "~24.1.0",
|
|
@@ -18,12 +18,21 @@ interface DyNTS_DisconnectRecord {
|
|
|
18
18
|
socket: SocketIO.Socket | undefined;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
interface DyNTS_TransportContextRecord {
|
|
22
|
+
content: unknown;
|
|
23
|
+
issuer: string | undefined;
|
|
24
|
+
transportContext: unknown;
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
type DyNTS_SocketHandler = (...args: unknown[]) => Promise<void>;
|
|
22
28
|
|
|
29
|
+
const DyNTS_transportContextEventKey: string = 'transport-context-test';
|
|
30
|
+
|
|
23
31
|
class DyNTS_SocketServer_LifecycleMock extends
|
|
24
32
|
DyNTS_SocketServerService<DyNTS_SocketPresence, { issuerId: string }> {
|
|
25
33
|
|
|
26
34
|
readonly disconnectRecords: DyNTS_DisconnectRecord[] = [];
|
|
35
|
+
readonly transportContextRecords: DyNTS_TransportContextRecord[] = [];
|
|
27
36
|
|
|
28
37
|
/** A lifecycle teszt singletonjat adja vissza. */
|
|
29
38
|
static getInstance(): DyNTS_SocketServer_LifecycleMock {
|
|
@@ -39,7 +48,7 @@ class DyNTS_SocketServer_LifecycleMock extends
|
|
|
39
48
|
}
|
|
40
49
|
|
|
41
50
|
/** A socket payloadot megorzo egyetlen custom disconnect taskot adja. */
|
|
42
|
-
getIncomingEvents(): DyFM_SocketEvent<
|
|
51
|
+
getIncomingEvents(): DyFM_SocketEvent<unknown>[] {
|
|
43
52
|
return [
|
|
44
53
|
new DyFM_SocketEvent<SocketIO.Socket>({
|
|
45
54
|
eventKey: DyFM_SocketEvent_Key.disconnect,
|
|
@@ -52,6 +61,22 @@ class DyNTS_SocketServer_LifecycleMock extends
|
|
|
52
61
|
},
|
|
53
62
|
],
|
|
54
63
|
}),
|
|
64
|
+
new DyFM_SocketEvent<unknown>({
|
|
65
|
+
eventKey: DyNTS_transportContextEventKey,
|
|
66
|
+
tasks: [
|
|
67
|
+
async (
|
|
68
|
+
content: unknown,
|
|
69
|
+
issuer: string | undefined,
|
|
70
|
+
transportContext: unknown
|
|
71
|
+
): Promise<void> => {
|
|
72
|
+
this.transportContextRecords.push({
|
|
73
|
+
content: content,
|
|
74
|
+
issuer: issuer,
|
|
75
|
+
transportContext: transportContext,
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
}),
|
|
55
80
|
];
|
|
56
81
|
}
|
|
57
82
|
|
|
@@ -169,6 +194,20 @@ describe('| DyNTS_SocketServerService', (): void => {
|
|
|
169
194
|
DyFM_SocketEvent_Key.subscribe
|
|
170
195
|
)({ issuerId: 'beta' });
|
|
171
196
|
|
|
197
|
+
const transportContent: object = { commandId: 'command-1' };
|
|
198
|
+
|
|
199
|
+
await getRegisteredHandler(
|
|
200
|
+
firstSocket.on.calls.allArgs(),
|
|
201
|
+
DyNTS_transportContextEventKey
|
|
202
|
+
)(transportContent);
|
|
203
|
+
expect(service.transportContextRecords).toEqual([
|
|
204
|
+
{
|
|
205
|
+
content: transportContent,
|
|
206
|
+
issuer: 'alpha',
|
|
207
|
+
transportContext: firstSocket,
|
|
208
|
+
},
|
|
209
|
+
]);
|
|
210
|
+
|
|
172
211
|
await getRegisteredHandler(
|
|
173
212
|
explicitSocket.on.calls.allArgs(),
|
|
174
213
|
DyFM_SocketEvent_Key.unsubscribe
|
|
@@ -461,7 +461,7 @@ export abstract class DyNTS_SocketServerService<
|
|
|
461
461
|
if (event.eventKey === DyFM_SocketEvent_Key.disconnect) {
|
|
462
462
|
await this.executeDisconnectTasks(socket, issuer);
|
|
463
463
|
} else {
|
|
464
|
-
await event.executeEventTasks(content, issuer);
|
|
464
|
+
await event.executeEventTasks(content, issuer, socket);
|
|
465
465
|
}
|
|
466
466
|
} catch (error) {
|
|
467
467
|
if (error instanceof DyFM_Error) {
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# 2026-04-28 — NTS Logs Module
|
|
2
|
-
|
|
3
|
-
## Összefoglaló
|
|
4
|
-
|
|
5
|
-
Beépített `/logs` endpoint modul az NTS framework-be. Bármelyik NTS-alapú szerver bekapcsolhatja.
|
|
6
|
-
Verzió: v01.15.14+
|
|
7
|
-
|
|
8
|
-
## Használat
|
|
9
|
-
|
|
10
|
-
```typescript
|
|
11
|
-
import { DyNTS_Logs_Service, DyNTS_getLogsRoutingModule } from '@futdevpro/nts-dynamo/logs';
|
|
12
|
-
|
|
13
|
-
// 1. App startup-nál: log buffer install
|
|
14
|
-
DyNTS_Logs_Service.getInstance().install();
|
|
15
|
-
|
|
16
|
-
// 2. Log settings-ben: enable
|
|
17
|
-
DyNTS_global_settings.log_settings.logs_endpoint = { enabled: true, maxEntries: 2000 };
|
|
18
|
-
|
|
19
|
-
// 3. Routing module-ok közé: endpoint regisztráció
|
|
20
|
-
getRoutingModules() {
|
|
21
|
-
return [
|
|
22
|
-
...
|
|
23
|
-
DyNTS_getLogsRoutingModule(), // auth nélkül
|
|
24
|
-
DyNTS_getLogsRoutingModule({ authPreProcess: myAuth }), // auth-tal
|
|
25
|
-
];
|
|
26
|
-
}
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Endpoint-ok
|
|
30
|
-
|
|
31
|
-
- `GET /logs/get?tail=200` — utolsó N sor a bufferből (max 2000)
|
|
32
|
-
- `DELETE /logs/clear` — buffer ürítés
|
|
33
|
-
|
|
34
|
-
## Architektura
|
|
35
|
-
|
|
36
|
-
- `DyNTS_Logs_Service` — singleton, in-memory ring buffer (console.log/error/warn intercept)
|
|
37
|
-
- `DyNTS_Logs_Controller` — GET /get + DELETE /clear endpoint-ok
|
|
38
|
-
- `DyNTS_getLogsRoutingModule(config?)` — factory, opcionális authPreProcess
|
|
39
|
-
- Ha `logs_endpoint.enabled === false` → 503 response
|
|
40
|
-
- Ha `install()` nem volt meghívva → 503 response
|
|
41
|
-
|
|
42
|
-
## Fájlok
|
|
43
|
-
|
|
44
|
-
- `src/_modules/logs/logs.service.ts`
|
|
45
|
-
- `src/_modules/logs/logs.controller.ts`
|
|
46
|
-
- `src/_modules/logs/get-logs-routing-module.util.ts`
|
|
47
|
-
- `src/_modules/logs/index.ts`
|
|
48
|
-
- `src/_models/interfaces/global-log-settings.interface.ts` — `logs_endpoint` setting
|
|
49
|
-
- `src/_collections/global-settings.const.ts` — default values
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
# 2026-05-17 — Using OpenAI-compatible providers with Dynamo-NTS
|
|
2
|
-
|
|
3
|
-
**Spec:** `__agent/feature-requests/FR-005-oai-compat-docs.md` (workspace root)
|
|
4
|
-
**Scope:** docs-only, LOW priority. Semmilyen TS-változás. NEM kell npm publish.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Mire jó
|
|
9
|
-
|
|
10
|
-
A Dynamo-NTS OAI service-ek — `DyNTS_OAI_LLM_ServiceBase`, `DyNTS_OAI_LLMChat_ServiceBase`, `DyNTS_OAI_Embedding_ControlService` — az `openai` npm SDK-t használják, és **out-of-the-box bármely OpenAI-API-kompatibilis endpoint-tal működnek** a `baseURL` override-on keresztül. Ez **MÁR MŰKÖDIK** (zéró kód-változás kell), csak eddig nem volt dokumentálva.
|
|
11
|
-
|
|
12
|
-
A `baseURL` mező a `@futdevpro/fsm-dynamo/ai/open-ai` package `DyFM_OAI_ClientOptions` interface-en él. Bővebben a fsm-dynamo-szintű részletekért: [`@futdevpro/fsm-dynamo/__documentations/2026-05-17-oai-compatible-providers-howto.md`](../../dynamo-fsm/__documentations/2026-05-17-oai-compatible-providers-howto.md).
|
|
13
|
-
|
|
14
|
-
Tipikus use-case-ek:
|
|
15
|
-
- **Lokál fejlesztés** OpenAI-credits nélkül (LM Studio, Ollama)
|
|
16
|
-
- **Self-hosted production** infrastruktúra (vLLM, LocalAI klaszter)
|
|
17
|
-
- **Cost control** — nyílt-súlyú modellek drága cloud API helyett
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## A pattern
|
|
22
|
-
|
|
23
|
-
```typescript
|
|
24
|
-
import { DyFM_OAI_Settings, DyFM_OAI_CallSettings } from '@futdevpro/fsm-dynamo/ai/open-ai';
|
|
25
|
-
import { DyNTS_OAI_LLMChat_ServiceBase } from '@futdevpro/nts-dynamo/ai/open-ai';
|
|
26
|
-
|
|
27
|
-
const settings: DyFM_OAI_Settings = new DyFM_OAI_Settings({
|
|
28
|
-
config: {
|
|
29
|
-
baseURL: 'http://<provider-host>:<port>/v1',
|
|
30
|
-
apiKey: '<placeholder-or-real>',
|
|
31
|
-
},
|
|
32
|
-
defaultSettings: new DyFM_OAI_CallSettings({
|
|
33
|
-
useModel: '<provider-specific-model-id>',
|
|
34
|
-
}),
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
class MyChat extends DyNTS_OAI_LLMChat_ServiceBase {}
|
|
38
|
-
const chat: MyChat = new MyChat(settings);
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Csak `config.baseURL` + `config.apiKey` + `defaultSettings.useModel` kell. A többi (organization, project) lokál providereknél figyelmen kívül marad.
|
|
42
|
-
|
|
43
|
-
A `DyNTS_OAI_Embedding_ControlService` és más OAI alapú service-ek ugyanezt a `DyFM_OAI_Settings`-t fogadják — egy konfig, minden service.
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Provider-specifikus minták
|
|
48
|
-
|
|
49
|
-
### LM Studio (port 1234)
|
|
50
|
-
|
|
51
|
-
Desktop GUI (Mac/Windows/Linux), beépített OAI-compat szerverrel. Lépések:
|
|
52
|
-
1. Töltsd be a modellt a UI-ben (pl. embedding-hez `nomic-embed-text-v1.5`, chat-hez `llama-3.2-3b-instruct`)
|
|
53
|
-
2. **Local Server** tab → **Start Server**
|
|
54
|
-
|
|
55
|
-
```typescript
|
|
56
|
-
const lmStudio: DyFM_OAI_Settings = new DyFM_OAI_Settings({
|
|
57
|
-
config: {
|
|
58
|
-
baseURL: 'http://localhost:1234/v1',
|
|
59
|
-
apiKey: 'lm-studio', // bármilyen non-empty placeholder
|
|
60
|
-
},
|
|
61
|
-
defaultSettings: new DyFM_OAI_CallSettings({
|
|
62
|
-
useModel: 'nomic-embed-text-v1.5', // ahogy a Local Server tab megjeleníti
|
|
63
|
-
}),
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
// Embedding-hez
|
|
67
|
-
class Knowledge_DataService extends DyNTS_OAI_VectorDataService<Knowledge> {
|
|
68
|
-
constructor() { super(/* args */); }
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Ollama (port 11434, OAI-compat layer ≥ v0.1.14)
|
|
73
|
-
|
|
74
|
-
CLI-driven, multi-modell runner.
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
ollama pull llama3.2:3b
|
|
78
|
-
ollama pull nomic-embed-text
|
|
79
|
-
ollama serve
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
const ollama: DyFM_OAI_Settings = new DyFM_OAI_Settings({
|
|
84
|
-
config: {
|
|
85
|
-
baseURL: 'http://localhost:11434/v1',
|
|
86
|
-
apiKey: 'ollama', // szintén placeholder
|
|
87
|
-
},
|
|
88
|
-
defaultSettings: new DyFM_OAI_CallSettings({
|
|
89
|
-
useModel: 'nomic-embed-text', // `ollama list` mutatja
|
|
90
|
-
}),
|
|
91
|
-
});
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### vLLM (port 8000, production GPU)
|
|
95
|
-
|
|
96
|
-
Python-alapú batched + PagedAttention inference. OAI-compat REST endpoint beépítve.
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
pip install vllm
|
|
100
|
-
python -m vllm.entrypoints.openai.api_server \
|
|
101
|
-
--model meta-llama/Meta-Llama-3-8B-Instruct \
|
|
102
|
-
--port 8000 \
|
|
103
|
-
--api-key local-secret-token
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
const vllm: DyFM_OAI_Settings = new DyFM_OAI_Settings({
|
|
108
|
-
config: {
|
|
109
|
-
baseURL: 'http://gpu-server:8000/v1',
|
|
110
|
-
apiKey: process.env.VLLM_API_KEY ?? 'local-secret-token',
|
|
111
|
-
},
|
|
112
|
-
defaultSettings: new DyFM_OAI_CallSettings({
|
|
113
|
-
useModel: 'meta-llama/Meta-Llama-3-8B-Instruct', // a `--model` érték
|
|
114
|
-
}),
|
|
115
|
-
});
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### LocalAI (port 8080, REST multi-model)
|
|
119
|
-
|
|
120
|
-
Go-alapú, multi-backend (llama.cpp + whisper.cpp + stable-diffusion).
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
docker run -p 8080:8080 \
|
|
124
|
-
-v $PWD/models:/build/models \
|
|
125
|
-
localai/localai:latest
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
```typescript
|
|
129
|
-
const localai: DyFM_OAI_Settings = new DyFM_OAI_Settings({
|
|
130
|
-
config: {
|
|
131
|
-
baseURL: 'http://localai:8080/v1',
|
|
132
|
-
apiKey: 'sk-local', // placeholder
|
|
133
|
-
},
|
|
134
|
-
defaultSettings: new DyFM_OAI_CallSettings({
|
|
135
|
-
useModel: 'gpt-4', // LocalAI alias — `models.yaml`-ban mapped
|
|
136
|
-
}),
|
|
137
|
-
});
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Dev → cloud quick recipe
|
|
143
|
-
|
|
144
|
-
```typescript
|
|
145
|
-
const isDev: boolean = process.env.NODE_ENV === 'development';
|
|
146
|
-
|
|
147
|
-
export const aiSettings: DyFM_OAI_Settings = new DyFM_OAI_Settings({
|
|
148
|
-
config: isDev
|
|
149
|
-
? {
|
|
150
|
-
baseURL: 'http://localhost:11434/v1', // Ollama lokálban
|
|
151
|
-
apiKey: 'dev',
|
|
152
|
-
}
|
|
153
|
-
: {
|
|
154
|
-
apiKey: process.env.OPENAI_API_KEY,
|
|
155
|
-
organization: process.env.OPENAI_ORG_ID,
|
|
156
|
-
},
|
|
157
|
-
defaultSettings: new DyFM_OAI_CallSettings({
|
|
158
|
-
useModel: isDev ? 'llama3.2:3b' : 'gpt-4o',
|
|
159
|
-
}),
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
// Az összes Dynamo-NTS OAI service ugyanazt a settings-t fogyasztja:
|
|
163
|
-
class ProdChat extends DyNTS_OAI_LLMChat_ServiceBase {}
|
|
164
|
-
const chat: ProdChat = new ProdChat(aiSettings);
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Caveats — service-szintű
|
|
170
|
-
|
|
171
|
-
### Tool/function calling
|
|
172
|
-
A `DyNTS_OAI_LLMChat_ServiceBase` tool-calling support csak akkor működik a lokál provider-eknél, ha:
|
|
173
|
-
- **Ollama**: tool-aware modell (Llama-3.1+, Mistral újabb verziók)
|
|
174
|
-
- **vLLM**: v0.6+ + megfelelő chat-template
|
|
175
|
-
- **LM Studio**: model-függő, gyakran részleges
|
|
176
|
-
- **LocalAI**: function-call backend kell konfigolni
|
|
177
|
-
|
|
178
|
-
Production OpenAI-mintával írt service-ek **lokál providerre váltáskor** előbb tesztelni kell, hogy a tool-callok valóban triggerelnek-e.
|
|
179
|
-
|
|
180
|
-
### Streaming chat
|
|
181
|
-
A `DyNTS_OAI_LLMChat_ServiceBase` streaming (SSE) működik mindenhol, **de**:
|
|
182
|
-
- Ollama < v0.1.20 streaming-stabilitás kérdéses
|
|
183
|
-
- LocalAI streaming-rate alacsonyabb mint az emit-rate
|
|
184
|
-
- vLLM/LM Studio: rendszeresen frissül, érdemes a provider-changelogot követni
|
|
185
|
-
|
|
186
|
-
### Embedding-modellek
|
|
187
|
-
A `DyNTS_OAI_Embedding_ControlService` `useModel`-je a provider-specifikus dedikált embedding modell **pontos ID**-ja:
|
|
188
|
-
|
|
189
|
-
| Provider | Embedding model ID |
|
|
190
|
-
|---|---|
|
|
191
|
-
| OpenAI (cloud) | `text-embedding-3-small` / `text-embedding-3-large` |
|
|
192
|
-
| LM Studio | `nomic-embed-text-v1.5` / `BAAI/bge-large-en-v1.5` |
|
|
193
|
-
| Ollama | `nomic-embed-text` / `mxbai-embed-large` |
|
|
194
|
-
| vLLM | csak ha az indítási `--model` embedding-képes (pl. `intfloat/e5-mistral-7b-instruct`) |
|
|
195
|
-
| LocalAI | `text-embedding-ada-002` alias (vagy egyéb a `models.yaml`-ban) |
|
|
196
|
-
|
|
197
|
-
### Context window / max-tokens
|
|
198
|
-
A `DyFM_OAI_CallSettings.maxTokens` provider-szintű limit alá kell esnie, különben 400/422 jön vissza:
|
|
199
|
-
|
|
200
|
-
| Provider | Default context-window | Override |
|
|
201
|
-
|---|---|---|
|
|
202
|
-
| OpenAI gpt-4o | 128K | API tier |
|
|
203
|
-
| LM Studio | a betöltött modell native context | UI slider |
|
|
204
|
-
| Ollama | **2048 (legacy default!)** | `OLLAMA_NUM_CTX` env / Modelfile `PARAMETER num_ctx` |
|
|
205
|
-
| vLLM | a modell native context | `--max-model-len` flag |
|
|
206
|
-
| LocalAI | `models.yaml` `context_size` | per-model konfig |
|
|
207
|
-
|
|
208
|
-
### Error-handling
|
|
209
|
-
- OpenAI cloud: standard 4xx/5xx + structured error body
|
|
210
|
-
- Lokál providerek: 404 a modell-name-re (rossz ID), timeout első call-on (modell load), OOM vLLM-en
|
|
211
|
-
- Ollama-specifikus: ha a modell még nem `pull`-olt, csendben várakozik a pull-ig — látszólag hang
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
## Reference
|
|
216
|
-
|
|
217
|
-
| Fájl | Mit ad |
|
|
218
|
-
|---|---|
|
|
219
|
-
| `fsm-dynamo/.../oai-client-options.interface.ts` | `DyFM_OAI_ClientOptions.baseURL` — a kapcsoló mező |
|
|
220
|
-
| `fsm-dynamo/.../oai-settings.control-model.ts` | `DyFM_OAI_Settings` — settings wrapper |
|
|
221
|
-
| `dynamo-nts/.../oai-llm.service-base.ts` | `DyNTS_OAI_LLM_ServiceBase` — base LLM client (`openai` SDK instantiation) |
|
|
222
|
-
| `dynamo-nts/.../oai-llm-chat.service-base.ts` | `DyNTS_OAI_LLMChat_ServiceBase` — chat service |
|
|
223
|
-
| `dynamo-nts/.../oai-embedding.control-service.ts` | `DyNTS_OAI_Embedding_ControlService` — embedding service |
|
|
224
|
-
|
|
225
|
-
További (fsm-szintű) részletek, ugyanezzel a 4 provider-mintázattal: [`dynamo-fsm/__documentations/2026-05-17-oai-compatible-providers-howto.md`](../../dynamo-fsm/__documentations/2026-05-17-oai-compatible-providers-howto.md).
|
|
226
|
-
|
|
227
|
-
## Backward compatibility
|
|
228
|
-
|
|
229
|
-
Docs-only. `baseURL` mindig is létezett az OpenAI SDK-ban, a Dynamo-NTS csak átadja a config-ot (`oai-llm.service-base.ts:91-98`). Ez a doc csak tisztázza a használati mintázatot — semmilyen TS-változás nincs.
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
# Static client serving — how-to
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-05-17
|
|
4
|
-
**Backlog:** [BL-20260417-001](../_specifications/BACKLOG.md) — DyNTS-kliens kiszolgálás képesség
|
|
5
|
-
**Status:** ✅ done (audit + docs)
|
|
6
|
-
|
|
7
|
-
## TL;DR
|
|
8
|
-
|
|
9
|
-
A `DyNTS_App_Server` MÁR most ki tudja szolgálni a klienst (SPA-kat, statikus
|
|
10
|
-
oldalakat) az API route-ok mellett ugyanazon a hoszton. Az implementáció
|
|
11
|
-
2026-03-30 óta (commit `8ffe535`) része a frameworknek; a BL-20260417-001
|
|
12
|
-
backlog entry post-dated a fejlesztést. Ez a how-to a meglévő capability-t
|
|
13
|
-
dokumentálja.
|
|
14
|
-
|
|
15
|
-
## Konfigurációs felület
|
|
16
|
-
|
|
17
|
-
A static client serving akkor aktiválódik, ha a `DyNTS_App_Server`
|
|
18
|
-
subclass-od `getStaticClientSettings()`-et override-olja és egy
|
|
19
|
-
[`DyNTS_StaticClient_Settings`](../src/_models/interfaces/static-client-settings.interface.ts)
|
|
20
|
-
objektumot ad vissza:
|
|
21
|
-
|
|
22
|
-
```ts
|
|
23
|
-
import { DyNTS_StaticClient_Settings } from '@futdevpro/nts-dynamo';
|
|
24
|
-
|
|
25
|
-
export interface DyNTS_StaticClient_Settings {
|
|
26
|
-
root: string; // a static fájlok mappája (abszolút v. cwd-relatív)
|
|
27
|
-
fallbackPath?: string; // SPA fallback (pl. 'index.html')
|
|
28
|
-
assetCacheMaxAge?: number; // asset Cache-Control max-age (sec)
|
|
29
|
-
assetCacheImmutable?: boolean; // 'immutable' direktíva (Angular hashed fájlokra)
|
|
30
|
-
fallbackCacheMaxAge?: number; // fallback file Cache-Control max-age (sec)
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Példa subclass (Angular SPA)
|
|
35
|
-
|
|
36
|
-
```ts
|
|
37
|
-
import path from 'path';
|
|
38
|
-
import { DyNTS_App_Server, DyNTS_StaticClient_Settings } from '@futdevpro/nts-dynamo';
|
|
39
|
-
|
|
40
|
-
export class MyApp_Server extends DyNTS_App_Server {
|
|
41
|
-
// ... egyéb override-ok (getAppParams, getPortSettings, getApiBasePath, stb.) ...
|
|
42
|
-
|
|
43
|
-
override getStaticClientSettings(): DyNTS_StaticClient_Settings | undefined {
|
|
44
|
-
return {
|
|
45
|
-
// Az Angular `dist/<app-name>` mappa abszolút path-ja
|
|
46
|
-
root: path.resolve(__dirname, '../../client/dist/my-app'),
|
|
47
|
-
|
|
48
|
-
// SPA — minden ismeretlen route a kliens-routerre megy
|
|
49
|
-
fallbackPath: 'index.html',
|
|
50
|
-
|
|
51
|
-
// Hashed assetek (Angular alapból ad nekik hash-et) — 1 év, immutable
|
|
52
|
-
assetCacheMaxAge: 31_536_000,
|
|
53
|
-
assetCacheImmutable: true,
|
|
54
|
-
|
|
55
|
-
// index.html-t SOHA ne cache-elje a böngésző (deploy után friss kell)
|
|
56
|
-
fallbackCacheMaxAge: 0,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Mit csinál a framework a háttérben
|
|
63
|
-
|
|
64
|
-
A `DyNTS_App_Server.mountStaticClient()` ([app.server.ts ~1421-1484](../src/_services/server/app.server.ts))
|
|
65
|
-
ezt automatikusan beállítja az API route-ok regisztrációja UTÁN:
|
|
66
|
-
|
|
67
|
-
1. **`Express.static(root)` middleware** mount a `/` alatt. Ha `assetCacheMaxAge`
|
|
68
|
-
meg van adva, `setHeaders` callback-en keresztül beállítja a `Cache-Control:
|
|
69
|
-
max-age=<N>[, immutable]` header-t.
|
|
70
|
-
2. **SPA fallback** (ha `fallbackPath` adott): minden ismeretlen GET kérésre
|
|
71
|
-
`res.sendFile(fallbackPath)` + `Cache-Control: max-age=<fallbackCacheMaxAge>`.
|
|
72
|
-
3. **Default 404** (ha `fallbackPath` hiányzik): a beépített
|
|
73
|
-
[`DyNTS_defaultNotFoundPageHtml`](../src/_collections/default-not-found-page.const.ts)
|
|
74
|
-
kerül kiszolgálásra `status: 404` + `Content-Type: text/html`.
|
|
75
|
-
4. **HTTP + HTTPS** mindkettő: a flow azonos a `this.openExpress` és
|
|
76
|
-
`this.secureExpress` instance-ekhez (ha mindkettő be van állítva).
|
|
77
|
-
|
|
78
|
-
## Config matrix — mikor melyik mezőt használd
|
|
79
|
-
|
|
80
|
-
| Use case | `root` | `fallbackPath` | `assetCacheMaxAge` | `assetCacheImmutable` | `fallbackCacheMaxAge` |
|
|
81
|
-
|---|---|---|---|---|---|
|
|
82
|
-
| **SPA** (Angular, React) hashed assetekkel | ✅ kötelező | `'index.html'` | `31_536_000` (1 év) | `true` | `0` (mindig friss) |
|
|
83
|
-
| **SPA** dev mode (rebuild gyakori) | ✅ | `'index.html'` | `0` | `false` | `0` |
|
|
84
|
-
| **Statikus oldal** (nincs SPA-router) | ✅ | hagyd ki | `3600` (1 óra) vagy ahogy jó | `false` | n/a |
|
|
85
|
-
| **Csak API** (nincs frontend) | NE override-old a `getStaticClientSettings()`-et — akkor `undefined`-ot ad vissza és a `mountStaticClient` early-return-öl | | | | |
|
|
86
|
-
|
|
87
|
-
## Asset + fallback cache stratégia (SPA)
|
|
88
|
-
|
|
89
|
-
A két mező együttes használata az **alapja az Angular/React deploy-friendly caching**-nek:
|
|
90
|
-
|
|
91
|
-
- **Hashed assetek** (`main.<hash>.js`, `styles.<hash>.css`, stb.) ÉLETBEN nem
|
|
92
|
-
változnak — biztonságosan `immutable` + 1 év max-age. A böngésző sose kérdezi
|
|
93
|
-
meg újra a szerverről, amíg a HTML egy új hash-elt nevet nem hivatkozik be.
|
|
94
|
-
- **`index.html`** a "katalógus" ami a hashed assetekre mutat. Deploy után
|
|
95
|
-
AZONNAL friss kell legyen, különben a kliens régi assetekre hivatkozó régi
|
|
96
|
-
index.html-t kap → 404-ek a már nem létező hashed nevekre.
|
|
97
|
-
→ `fallbackCacheMaxAge: 0` (no-cache).
|
|
98
|
-
|
|
99
|
-
Az `assetCacheMaxAge` undefined-ja default (Express.static alapértelmezett) cache
|
|
100
|
-
viselkedést hagy meg — production deploy-okra mindig explicit állítsd be.
|
|
101
|
-
|
|
102
|
-
## Integration test minta
|
|
103
|
-
|
|
104
|
-
A meglévő integration test fixture ([`DyNTS_AppIntegrationTest_Mock`](../src/_modules/mock/app-integration-test.mock.ts)) +
|
|
105
|
-
spec ([app-extended.integration.spec.ts](../src/_modules/socket/app-extended.integration.spec.ts))
|
|
106
|
-
mutatja a teljes flow-t:
|
|
107
|
-
|
|
108
|
-
- A spec `beforeAll`-ban létrehoz egy temp dir-t, kitölti pár static fájllal,
|
|
109
|
-
beállítja a mock `integrationStaticRoot` static property-jét, majd elindítja
|
|
110
|
-
az appot.
|
|
111
|
-
- A spec asszertálja:
|
|
112
|
-
- `started === true` (az app HTTP listenert kapott)
|
|
113
|
-
- GET nemlétező path → `404` + a default not-found HTML kiszolgálva
|
|
114
|
-
- GET `/index.html` → `200` + a temp dir-ben található static content
|
|
115
|
-
- GET `/api/test-0/test-base`, `/api/test-0/test-simple` → API kiszolgálva (az API
|
|
116
|
-
route-ok ELŐBB regisztráltak, mint a static fallback)
|
|
117
|
-
- `afterAll`-ban leállítja az appot és kitakarítja a temp dir-t.
|
|
118
|
-
|
|
119
|
-
## Edge case-ek + gotchák
|
|
120
|
-
|
|
121
|
-
- **Mounting sorrend:** a `mountStaticClient` az `_routingModules` regisztráció
|
|
122
|
-
UTÁN fut, így az API route-ok prioritást élveznek. Tehát a `/api/...` mindig
|
|
123
|
-
az API-hoz megy, akkor is, ha a static root-ban véletlenül lenne `api/`
|
|
124
|
-
almappa.
|
|
125
|
-
- **`fallbackPath` relatív** a `root`-hoz képest (`sendFile(fallbackPath, { root })`).
|
|
126
|
-
- **Default 404 HTML:** szándékosan minimalista (`DyNTS_defaultNotFoundPageHtml`),
|
|
127
|
-
hogy ne ütközzön a kliens stílusával. Ha custom 404-et akarsz, add meg a
|
|
128
|
-
`fallbackPath`-t (az SPA-router majd kezelje belül a "page not found"-ot).
|
|
129
|
-
- **CSP / security header-ek:** a `mountStaticClient` NEM állít be CSP-t —
|
|
130
|
-
ha kell, használj `helmet` middleware-t az API route-ok elé.
|
|
131
|
-
|
|
132
|
-
## Releváns kód- és test-fájlok
|
|
133
|
-
|
|
134
|
-
- [`src/_services/server/app.server.ts`](../src/_services/server/app.server.ts) — `mountStaticClient()` private + `getStaticClientSettings?()` opt-in override
|
|
135
|
-
- [`src/_models/interfaces/static-client-settings.interface.ts`](../src/_models/interfaces/static-client-settings.interface.ts) — config interface
|
|
136
|
-
- [`src/_collections/default-fallback-cache-max-age.const.ts`](../src/_collections/default-fallback-cache-max-age.const.ts) — default `0` (no-cache)
|
|
137
|
-
- [`src/_collections/default-not-found-page.const.ts`](../src/_collections/default-not-found-page.const.ts) — default 404 HTML
|
|
138
|
-
- [`src/_modules/mock/app-integration-test.mock.ts`](../src/_modules/mock/app-integration-test.mock.ts) — integration test fixture mintaként
|
|
139
|
-
- [`__documentations/nts-integration-tests-2026-03-17.md`](./nts-integration-tests-2026-03-17.md) — első integration test bevezetése a unified host behavior-ra
|
|
140
|
-
|
|
141
|
-
## Kapcsolódó backlog entry-k
|
|
142
|
-
|
|
143
|
-
- **BL-20260420-001..004** (dynamo-nts) — `DyNTS_FileLog_Service` + admin endpoints. Mind ✅ done.
|
|
144
|
-
- BL-20260417-001 (ez) — a kliens kiszolgálási képesség. ✅ done — implementáció már része a frameworknek; ez a doc a hivatkozás.
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# FR-041 — CORS middleware infrastructure (2026-06-01)
|
|
2
|
-
|
|
3
|
-
**Commit**: `3d16d69` — v01.15.35 → v01.15.36
|
|
4
|
-
**Parent**: `__agent/feature-requests/FR-041-subdomain-per-service-architecture.md`
|
|
5
|
-
**Pattern**: `fdp-documentations/guidelines/development/cors-and-subdomain-architecture.md`
|
|
6
|
-
|
|
7
|
-
## What
|
|
8
|
-
|
|
9
|
-
Adds CORS middleware infrastructure to `DyNTS_AppServer`. After this commit, any subclass that wants to be reachable cross-origin overrides `getCorsSettings()` and returns a `DyNTS_Cors_Settings` object.
|
|
10
|
-
|
|
11
|
-
## Why
|
|
12
|
-
|
|
13
|
-
Pre-FR-041: every cross-service call was same-origin via gateway nginx proxy (e.g. `<app>.futdevpro.hu/auth-api/*` → `fdp-auth-service:39005/api/*`). No CORS needed because same-origin.
|
|
14
|
-
|
|
15
|
-
Post-FR-041: each sister service exposed at its own subdomain (`auth.futdevpro.hu`, `social.futdevpro.hu`, etc.). Cross-origin requires CORS allowlist.
|
|
16
|
-
|
|
17
|
-
Audit pre-FR-041: ZERO existing CORS implementation in the entire FDP stack (`grep -rn "cors\|Access-Control" dynamo-nts/src` returned 0 hits). Greenfield work.
|
|
18
|
-
|
|
19
|
-
## Design
|
|
20
|
-
|
|
21
|
-
### `DyNTS_Cors_Settings` interface
|
|
22
|
-
|
|
23
|
-
`src/_models/interfaces/cors-settings.interface.ts`:
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
export interface DyNTS_Cors_Settings {
|
|
27
|
-
allowedOrigins: string[] | ((origin: string) => boolean) | '*';
|
|
28
|
-
allowCredentials?: boolean; // default true
|
|
29
|
-
allowedMethods?: string[]; // default GET/POST/PUT/DELETE/PATCH/OPTIONS
|
|
30
|
-
allowedHeaders?: string[]; // default Authorization/Content-Type/X-Admin-Key/X-Requested-With
|
|
31
|
-
exposedHeaders?: string[]; // default Content-Length/Content-Type
|
|
32
|
-
maxAgeSeconds?: number; // default 86400 (24h preflight cache)
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### `mountCors(express)` protected method
|
|
37
|
-
|
|
38
|
-
`src/_services/server/app.server.ts` (~line 1422):
|
|
39
|
-
|
|
40
|
-
- Reads `this.getCorsSettings?.()` ONCE at mount time. Undefined → returns immediately (no CORS headers, back-compat).
|
|
41
|
-
- Express middleware: for each request, checks Origin against allowlist. Match → echoes the origin (NOT wildcard, because credentials require an exact origin echo) + sets Methods/Headers/Expose/MaxAge/Vary.
|
|
42
|
-
- OPTIONS preflight short-circuits with 204.
|
|
43
|
-
|
|
44
|
-
### `getCorsSettings?()` optional override
|
|
45
|
-
|
|
46
|
-
Added to the class as `getCorsSettings?(): DyNTS_Cors_Settings | undefined;`. Subclasses opt in by implementing it.
|
|
47
|
-
|
|
48
|
-
## Mount-points
|
|
49
|
-
|
|
50
|
-
`initOpenExpress()` + `initSecureExpress()` both call `mountCors(this.<express>)` after BodyParser, BEFORE route mounting. CORS preflight always intercepts before any route handler can interfere.
|
|
51
|
-
|
|
52
|
-
Timing verified: `asyncConstruct` line 410 `getAppParams()` (sets env via `FDPNTS_setEnvBase`) → line 1018 `initOpenExpress()` (calls `mountCors`). Env is always set by the time `getCorsSettings()` runs.
|
|
53
|
-
|
|
54
|
-
## Why hand-rolled (no `cors` npm dep)
|
|
55
|
-
|
|
56
|
-
- ~30 lines, zero new dependency
|
|
57
|
-
- Full control over Vary/credentials/preflight semantics
|
|
58
|
-
- Aligns with FDP "no unnecessary deps" philosophy
|
|
59
|
-
|
|
60
|
-
## Spec coverage
|
|
61
|
-
|
|
62
|
-
`src/_models/interfaces/cors-settings.interface.spec.ts` — 5 specs covering all `allowedOrigins` shapes (array, predicate, wildcard) + credential defaults + custom headers.
|
|
63
|
-
|
|
64
|
-
`npx jasmine` post-change: **1250/0** (146 pending pre-existing, all 5 new specs green).
|
|
65
|
-
|
|
66
|
-
## Consumer pattern
|
|
67
|
-
|
|
68
|
-
```typescript
|
|
69
|
-
import { DyNTS_Cors_Settings } from '@futdevpro/nts-dynamo';
|
|
70
|
-
import { FDPNTS_buildCorsSettings } from '@futdevpro/nts-fdp-templates';
|
|
71
|
-
|
|
72
|
-
export class App extends DyNTS_App {
|
|
73
|
-
override getCorsSettings(): DyNTS_Cors_Settings | undefined {
|
|
74
|
-
return FDPNTS_buildCorsSettings(); // env-aware allowlist from FDP-templates
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
First consumer: `LIVE-projects/fdp-auth-service` commit `1319368`.
|
|
80
|
-
|
|
81
|
-
## What's NOT in this commit
|
|
82
|
-
|
|
83
|
-
- Per-env allowlist source (lives in `fdp-templates v01.15.38`, commit `0f793c4`)
|
|
84
|
-
- Helper for FDPNTS apps to bind that allowlist (lives in `fdp-templates-nts v01.15.45`, commit `6e748ee`)
|
|
85
|
-
|
|
86
|
-
## Wave-3 cleanup candidates
|
|
87
|
-
|
|
88
|
-
- Once every app overrides `getCorsSettings()`, consider making it abstract (no more optional `?`).
|
|
89
|
-
- OPTIONS-without-origin-match returns 204 + no CORS headers (functional: browser denies). Could be improved to 403 for clearer security audit.
|
|
90
|
-
|
|
91
|
-
## Cross-references
|
|
92
|
-
|
|
93
|
-
- `fdp-documentations/guidelines/development/cors-and-subdomain-architecture.md`
|
|
94
|
-
- `NPM-packages/fdp-templates/src/_constants/environment/fdp-cors-origins.const.ts` — allowlist
|
|
95
|
-
- `NPM-packages/fdp-templates-nts/src/_collections/cors-settings.util.ts` — consumer helper
|
|
96
|
-
- `LIVE-projects/fdp-auth-service/src/app.server.ts` — first consumer
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# FR-047 P2+P3 — Function-calling agent-loop + OpenAI-wire translator (2026-06-01)
|
|
2
|
-
|
|
3
|
-
**Commits**: `de6f79e` — v01.15.36 → v01.15.37 (agent-loop + OpenAI translator)
|
|
4
|
-
`514153f` — → v01.15.40 (critical reasoning-model fix; see below)
|
|
5
|
-
**Parent**: `__agent/feature-requests/FR-047-phase-2-agent-loop-service-base.md` + `FR-047-phase-3-openai-fdpai-local.md`
|
|
6
|
-
**Pattern**: `fdp-documentations/guidelines/development/ai-function-calling.md`
|
|
7
|
-
**Depends on**: `@futdevpro/fsm-dynamo` ≥ 1.15.17 (tool vocabulary + registry; bumped to 1.15.18 here)
|
|
8
|
-
|
|
9
|
-
## What
|
|
10
|
-
|
|
11
|
-
Implements the provider-agnostic function-calling agent-loop in `DyNTS_AI_LLM_ServiceBase` and the
|
|
12
|
-
first concrete provider translator in `DyNTS_OAI_LLM_ServiceBase`. After this, OpenAI tool calling
|
|
13
|
-
works end-to-end through the strategic agnostic layer.
|
|
14
|
-
|
|
15
|
-
## Why
|
|
16
|
-
|
|
17
|
-
FR-047 P1 (fsm) shipped the vocabulary; the execution layer had the explicit TODO comment in
|
|
18
|
-
`getMessageCreateInput` ("'llm-tool-use' categoria a tools bevezetésekor — jövőbeli FR"). This is that FR.
|
|
19
|
-
The proven loop logic is ported from the legacy `FDPNTS_GPT_ControlService.getAnswerWithTools`.
|
|
20
|
-
|
|
21
|
-
## Design
|
|
22
|
-
|
|
23
|
-
### Agent-loop in `DyNTS_AI_LLM_ServiceBase` (written ONCE, concrete)
|
|
24
|
-
- `requestWithTools({ conversation, tools, toolHandlers, settings?, issuer, maxIterations? })` — public entry.
|
|
25
|
-
Tools are a **request parameter** (not on settings). Resolves model → capability pre-check → `runToolLoop`.
|
|
26
|
-
- `runToolLoop` — the loop: `callModelWithTools` → if `toolCalls`, push assistant-tool-call message,
|
|
27
|
-
run each handler (`runToolCall`), push `role:'tool'` result messages, repeat; exit on no-tool-call
|
|
28
|
-
final answer or `maxIterations` (default 8 → `DyFM_Error` `DyNTS-AILSB-TL0`).
|
|
29
|
-
- `runToolCall` — **never throws**; missing/throwing handler → `ERROR …` string with `isError:true` (no `[object Object]`).
|
|
30
|
-
- `assertToolsSupported(modelId)` — uses `DyFM_AI_ModelRegistry_Util.modelSupportsTools(getModelRegistry(), id)`;
|
|
31
|
-
rejects BEFORE any API call if unsupported (critical for Local).
|
|
32
|
-
- `callModelWithTools` + `getModelRegistry` — **non-abstract safe defaults** (throw / `[]`); providers override.
|
|
33
|
-
Chosen over `abstract` so NO existing concrete subclass breaks (incremental rollout).
|
|
34
|
-
|
|
35
|
-
### OpenAI translator in `DyNTS_OAI_LLM_ServiceBase`
|
|
36
|
-
- `getModelRegistry()` → `DyFM_OAI_Models`.
|
|
37
|
-
- `callModelWithTools` — builds the native request (system + `toOpenAIMessage`-mapped conversation incl.
|
|
38
|
-
tool-call/tool-result messages + `toOpenAITool`), calls the SDK, normalizes the response (`toolCalls`
|
|
39
|
-
from `message.tool_calls`, args JSON-parsed), emits `'llm-tool-use'` cost-event.
|
|
40
|
-
- `toOpenAIMessage` — maps `role:'tool'` → `{role:'tool',tool_call_id,content}`, assistant-with-toolCalls →
|
|
41
|
-
`{role:'assistant',content|null,tool_calls:[…]}`.
|
|
42
|
-
|
|
43
|
-
### Refinement vs the FR plan
|
|
44
|
-
The registry lookup util takes the **registry array as a param** (`(models, id)`), not `(provider, id)` —
|
|
45
|
-
so the fsm core never imports a provider submodule. The provider service supplies its own registry.
|
|
46
|
-
|
|
47
|
-
## CRITICAL fix (`514153f`, v01.15.40) — found in code review
|
|
48
|
-
|
|
49
|
-
The registry's tool-capable models (gpt-5.5, gpt-5.4-mini, o3-pro) are **reasoning models** that reject
|
|
50
|
-
`temperature`/`top_p`/`frequency_penalty`/`presence_penalty` with HTTP 400. `callModelWithTools` sent them
|
|
51
|
-
unconditionally (default temperature=0) → **every tool call 400'd on the flagship models**. Fix:
|
|
52
|
-
- `isReasoningModel(modelId)` = `/^gpt-5/ || /^o[0-9]/`; reasoning → omit the 4 sampling params.
|
|
53
|
-
- Omit `tools`/`tool_choice` when the tool array is empty (empty `[]` → 400).
|
|
54
|
-
- Clear error when no model is configured.
|
|
55
|
-
This is the local OpenAI-specific application of the FR-048 per-model-settings principle.
|
|
56
|
-
See `[[reference_oai_reasoning_models_reject_sampling_params]]`.
|
|
57
|
-
|
|
58
|
-
## Spec coverage
|
|
59
|
-
|
|
60
|
-
`oai-llm.service-base.tools.spec.ts` (mocked OpenAI client, no network) — 6 specs:
|
|
61
|
-
loop converges / never-throw on handler error / capability-reject for embedding model /
|
|
62
|
-
reasoning omits sampling params / non-reasoning sends them / empty-tools omitted.
|
|
63
|
-
`npx jasmine`: **1256/0** (146 pending pre-existing).
|
|
64
|
-
|
|
65
|
-
## What's NOT in this commit
|
|
66
|
-
|
|
67
|
-
- Anthropic / Google / FdpAI / Local LLM bases + translators (FR-047 P4/P5).
|
|
68
|
-
- The NON-tool path (`getMessageCreateInput`/`resolveMessage`) still forwards sampling params → reasoning
|
|
69
|
-
completions would 400 (pre-existing; FR-048 / separate fix).
|
|
70
|
-
- Adventor migration (FR-047 P6).
|
|
71
|
-
- FR-048 general per-model settings reconciler.
|
|
72
|
-
|
|
73
|
-
## Consumer pattern
|
|
74
|
-
|
|
75
|
-
See `fdp-documentations/guidelines/development/ai-function-calling.md` ("How to USE it").
|
|
76
|
-
|
|
77
|
-
## Cross-references
|
|
78
|
-
|
|
79
|
-
- `fdp-documentations/guidelines/development/ai-function-calling.md` (pattern + provider-translator how-to)
|
|
80
|
-
- `NPM-packages/dynamo-fsm/__documentations/2026-06-01-fr047-p1-function-calling-vocabulary.md` (vocabulary)
|
|
81
|
-
- legacy `NPM-packages/fdp-templates-nts/src/_modules/gpt/_services/gpt-handler.control-service.ts` (logic source)
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# FR-193 — `DyNTS_MemoryGuard` (bedrock OOM korai-figyelmeztetés)
|
|
2
|
-
|
|
3
|
-
**Csomag:** `@futdevpro/nts-dynamo` · **Dátum:** 2026-06-15
|
|
4
|
-
|
|
5
|
-
## Probléma
|
|
6
|
-
|
|
7
|
-
A Node heap-OOM (`--max-old-space-size` túllépés — pl. egy óriási `JSON.parse`, mint az
|
|
8
|
-
Overseernél a CCAP több-tíz-MB-os `cdpReport`-ja) a process-t **azonnal megöli**. A
|
|
9
|
-
`process.on('uncaughtException')` NEM kapja el — a crash pillanatában már **nincs mód a
|
|
10
|
-
hibát rögzíteni**. Eredmény: a szerver „csak eltűnik", nyom nélkül, és a kézi diagnózis
|
|
11
|
-
nehéz. Az EGYETLEN megbízható idő a rögzítésre a crash **ELŐTT** van.
|
|
12
|
-
|
|
13
|
-
## Megoldás — `DyNTS_MemoryGuard`
|
|
14
|
-
|
|
15
|
-
Bedrock, self-installing heap-watchdog **minden nts-szerverhez**. Periodikusan figyeli a
|
|
16
|
-
heap-kihasználtságot, és a `--max-old-space-size` plafonhoz közeledve **tartós rekordot**
|
|
17
|
-
hagy — mielőtt a fatal OOM bekövetkezne.
|
|
18
|
-
|
|
19
|
-
- **Megfigyel:** `v8.getHeapStatistics().heap_size_limit` (a valódi plafon) vs
|
|
20
|
-
`process.memoryUsage().heapUsed`, default 10s-enként.
|
|
21
|
-
- **Rögzít:** küszöb-átlépéskor `DyFM_Log` + `DyNTS_GlobalService.globalErrorHandler`
|
|
22
|
-
(az Errors-rendszer + Discord, ha bekötve). `warning` → `DyFM_ErrorLevel.warning`,
|
|
23
|
-
`critical` → `.critical`. Plusz egy in-memory ring-buffer (`getHistory()`) +
|
|
24
|
-
`getStatus()` (állapot + csúcsok) egy esetleges status-endpointhoz.
|
|
25
|
-
- **Hiszterézis:** eseményt CSAK állapot-váltáskor jelez (normal→warning→critical), és a
|
|
26
|
-
`recoveryMargin`-nyit a warning alá esve jelez `recovered`-et → nincs küszöb-körüli spam.
|
|
27
|
-
- **NEM csinál:** nem állítja le/újraindítja a process-t (az a konténer `restart:` policy
|
|
28
|
-
dolga), és nem próbálja elkapni a fatal OOM-ot (nem lehet). Tisztán megfigyelés +
|
|
29
|
-
rögzítés + opcionális `onCritical` hook (amivel a fogyasztó terhet dobhat).
|
|
30
|
-
- **Biztonság:** minden út `try/catch`-elt — egy figyelő-réteg SOHA nem dönthet be egy
|
|
31
|
-
szervert. A timer `unref()`-elt (nem tartja életben a process-t).
|
|
32
|
-
|
|
33
|
-
## Használat
|
|
34
|
-
|
|
35
|
-
**Automatikus (default-on):** a base `App` startup feltelepíti, ha
|
|
36
|
-
`DyNTS_global_settings.memoryGuard.enabled === true` (alapértelmezés szerint igen). Tehát
|
|
37
|
-
**minden nts-szerver megkapja** az nts-dynamo bump után — kód nélkül.
|
|
38
|
-
|
|
39
|
-
**Explicit / testreszabott:**
|
|
40
|
-
```ts
|
|
41
|
-
import { DyNTS_MemoryGuard } from '@futdevpro/nts-dynamo';
|
|
42
|
-
|
|
43
|
-
DyNTS_MemoryGuard.getInstance().install({
|
|
44
|
-
heapWarningThreshold: 80,
|
|
45
|
-
heapCriticalThreshold: 92,
|
|
46
|
-
onCritical: (e) => { /* pl. terhelés-dobás / külső riasztás */ },
|
|
47
|
-
});
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Konfiguráció** (`DyNTS_global_settings.memoryGuard`, defaultok):
|
|
51
|
-
| mező | default | jelentés |
|
|
52
|
-
|------|---------|----------|
|
|
53
|
-
| `enabled` | `true` | a base App feltelepíti |
|
|
54
|
-
| `pollIntervalMs` | `10000` | poll-gyakoriság |
|
|
55
|
-
| `heapWarningThreshold` | `85` | warning a heap-plafon %-ában |
|
|
56
|
-
| `heapCriticalThreshold` | `95` | critical % |
|
|
57
|
-
| `recoveryMargin` | `10` | a warning alatti margó a `recovered`-hez |
|
|
58
|
-
| `maxHistoryCount` | `100` | megőrzött események |
|
|
59
|
-
|
|
60
|
-
## Az OOM-self-healing nagyobb képe
|
|
61
|
-
|
|
62
|
-
Ez a **„rögzítés" rétege** (record). A **„restart" rétege** a konténer-szintű
|
|
63
|
-
`restart: on-failure:N` + `mem_limit` (compose, fdp-devops) — együtt adják a teljes
|
|
64
|
-
self-healinget: a guard nyomot hagy a near-OOM-ról, a restart-policy auto-helyreállít a
|
|
65
|
-
crash után. A **forrás-prevenció** (a túl nagy payload parse-olásának elkerülése) külön
|
|
66
|
-
réteg (runner-oldali report-cap / body-limit).
|
|
67
|
-
|
|
68
|
-
## Fájlok
|
|
69
|
-
- `src/_services/core/memory-guard.service.ts` + `.spec.ts` (11 spec)
|
|
70
|
-
- `src/_models/interfaces/global-settings.interface.ts` (`memoryGuard` mező)
|
|
71
|
-
- `src/_collections/global-settings.const.ts` (defaultok, enabled:true)
|
|
72
|
-
- `src/_services/server/app.server.ts` (guarded auto-install a startup-ban)
|
|
73
|
-
- `src/index.ts` (fő-export)
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# FR-292 (szerver-fél) — a deployolt app-verzió minden válasz headerében
|
|
2
|
-
|
|
3
|
-
**Dátum:** 2026-08-08 · **Csomag:** `@futdevpro/nts-dynamo`
|
|
4
|
-
|
|
5
|
-
> A teljes (kliens+szerver) leírás a kliens-oldalon:
|
|
6
|
-
> `NPM-packages/dynamo-ngx/__documentations/2026-08-08-fr292-app-update-watch.md`.
|
|
7
|
-
> Ez a lap csak a szerver-fél szerződését rögzíti.
|
|
8
|
-
|
|
9
|
-
## Mit csinál
|
|
10
|
-
|
|
11
|
-
Minden HTTP-válaszra rákerül a deployolt **app-verzió**:
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
X-App-Version: 01.15.460
|
|
15
|
-
Access-Control-Expose-Headers: Content-Length, Content-Type, X-App-Version
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
A kliens (ngx-dynamo `DyNX_AppVersion_Interceptor`) ebből veszi észre, hogy a böngészőben
|
|
19
|
-
**betöltött bundle elavult** — anélkül, hogy bárki pollingolna: a jelzés a már menő
|
|
20
|
-
API-forgalmon utazik.
|
|
21
|
-
|
|
22
|
-
## Szerződés / döntések
|
|
23
|
-
|
|
24
|
-
- **Default: BEKAPCSOLVA.** Informatív header, se PII, se belső részlet. Kikapcsolás:
|
|
25
|
-
`DyNTS_global_settings.appVersionHeader = { enabled: false }`.
|
|
26
|
-
- **A verzió hívásonként olvasódik** (getter, nem befagyasztott érték): a `systemVersion` az
|
|
27
|
-
app-params betöltésekor áll be, ami a middleware felszerelése UTÁN történik. Befagyasztva
|
|
28
|
-
örökre `unknown-version` maradna — pont a friss deployon hiányozna a jelzés.
|
|
29
|
-
- **`unknown-version` esetén NINCS header.** Egy bizonytalan jelzés hamis „új verzió elérhető"
|
|
30
|
-
riasztást szülne a kliensen; inkább hallgatunk.
|
|
31
|
-
- **A CORS expose-listához hozzáfűz, nem felülír** (idempotensen). Enélkül a cross-origin
|
|
32
|
-
kliens JS-e nem olvashatná ki a headert. Ezért a middleware a **CORS-mount UTÁN** települ
|
|
33
|
-
— `initOpenExpress` és `initSecureExpress` egyaránt.
|
|
34
|
-
|
|
35
|
-
## Verifikáció
|
|
36
|
-
|
|
37
|
-
`tsc` ✅ 0 hiba · unit ✅ **1634 spec, 0 failure** (ebből 8 új: expose-lista bővítés/idempotencia,
|
|
38
|
-
ismeretlen verzió → nincs header de a lánc továbbmegy, hívásonkénti verzió-olvasás, egyedi header-név).
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# 🔴 `DyNTS_FieldEncryption_Util._transform` spread-elte a Mongoose-Documentet — a lista-endpointok burkot adtak vissza
|
|
2
|
-
|
|
3
|
-
**Dátum:** 2026-08-14 · **Kérő:** `BFR-MASTERPROMPTER-027` · **Súlyosság:** high (funkcionálisan törött lista-UI)
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 1. A hiba
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
// field-encryption.util.ts — ELŐTTE
|
|
11
|
-
const result: any = Array.isArray(value) ? [ ...(value as any[]) ] : { ...(value as any) };
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Egy mongoose-**Document** adatai **nem saját mezők** — a belső `_doc`-ban ülnek. Ezért a `{ ...doc }`
|
|
15
|
-
a **belső burkot** másolja (`$__`, `$isNew`, `_doc`), és az eredmény **már nem Document**, tehát a
|
|
16
|
-
`JSON.stringify` sem hívja a `toJSON()`-ját. A kliens így ezt kapja:
|
|
17
|
-
|
|
18
|
-
```json
|
|
19
|
-
[{ "$__": {...}, "$isNew": false, "_doc": { "_id": "…", "name": "…" } }]
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
`_id` a legfelső szinten **nincs** → a fogyasztó minden id-alapú művelete elhasal.
|
|
23
|
-
|
|
24
|
-
### Élesben mért bizonyíték (`test.master-prompter.hu`, 2026-08-14)
|
|
25
|
-
|
|
26
|
-
| endpoint | státusz | első elem KULCSAI | `_id` |
|
|
27
|
-
|---|---|---|---|
|
|
28
|
-
| `GET /api/flow/flow/get/:userId/:flowId` (egyedi) | 200 | `_id`, `userId`, `ownerId`, `name`, … | ✅ |
|
|
29
|
-
| `GET /api/flow/flow/get-all-my/:userId` (**lista**) | 200 | **`$__`, `$isNew`, `_doc`** | ❌ **undefined** |
|
|
30
|
-
|
|
31
|
-
Kliens-oldali tünet: a lista-kártyák linkje `/editor/undefined`, a törlés
|
|
32
|
-
`DyNX_ApiService call "deleteFlow" ERROR: missing pathParam: "flowId"` dialógussal állt meg.
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## 2. Miért CSAK a lista tört el — a mért aszimmetria
|
|
37
|
-
|
|
38
|
-
A `DyNTS_DBService` **egyedi** olvasásai már ma is `toObject()`-tel adnak vissza sima objektumot
|
|
39
|
-
(`getDataById`, `getDataByDependencyId`, `findByIdAndUpdate`, `findOneAndUpdate`, `createData`).
|
|
40
|
-
A **lista/find metódusok NYERS Documentet** adnak tovább — kimérve **11 db**:
|
|
41
|
-
|
|
42
|
-
`getDataListByIds` · `getDataListByDependencyId` · `getDataListByDependencyIds` · `getAll` ·
|
|
43
|
-
`getDeletedDataList` · `trueDeleteAllData` · `searchData` · `findOne` · `find` · `findWithPaging` ·
|
|
44
|
-
(`findLeanBatched` — ez `.lean()`-nel már sima objektumot ad)
|
|
45
|
-
|
|
46
|
-
Titkosítás **nélkül** ez ártalmatlan: a nyers Document a `res.send`-en át a `toJSON()`-nal helyesen
|
|
47
|
-
szerializálódik. `encrypt: true` mező esetén viszont a read-post-processor (`stringifyDataId` →
|
|
48
|
-
`decryptDoc` → `_transform`) **spread-eli** a Documentet, és ezzel elrontja.
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## 3. A javítás
|
|
53
|
-
|
|
54
|
-
```ts
|
|
55
|
-
// UTÁNA
|
|
56
|
-
const plain: any = this._toPlainIfDocument(value);
|
|
57
|
-
const result: any = Array.isArray(plain) ? [ ...(plain as any[]) ] : { ...(plain as any) };
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
`_toPlainIfDocument` a `$__` **saját mező** + `toJSON` függvény kettősével azonosít egy Documentet
|
|
61
|
-
(pontosan az, ami a hibás payloadba kiszivárgott — mongoose-import nélküli, pontos diszkriminátor),
|
|
62
|
-
és `toJSON()`-t hív rá.
|
|
63
|
-
|
|
64
|
-
**Miért itt, és nem a 11 DB-metódusban:**
|
|
65
|
-
1. Ez az **egy pont** mind a 11 utat rendezi.
|
|
66
|
-
2. A 11 metódus visszatérési **típusát** megváltoztatni (Document → sima objektum) **minden modell
|
|
67
|
-
minden fogyasztóját** érintené. Az itteni javítás viszont **csak az `encrypt: true` modelleket**
|
|
68
|
-
érinti — ahol a `_transform` amúgy is **már ma is** sima (csak **rossz**) objektumot ad vissza.
|
|
69
|
-
⇒ **a változás nem tud elrontani olyat, ami ma működik.**
|
|
70
|
-
3. `toJSON()` (nem `toObject()`): a titkosítás bevezetése ELŐTT a nyers Document a `res.send`-en át a
|
|
71
|
-
`JSON.stringify` → `toJSON()` úton szerializálódott — ez adja vissza **ugyanazt a kimeneti alakot**
|
|
72
|
-
(schema-transzformok, virtuals, `__v` együtt).
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## 4. 🔴 BLAST-RADIUS — a flotta érintettsége
|
|
77
|
-
|
|
78
|
-
A defekt akkor él, ha **mind a három** teljesül: (a) a modellnek van `encrypt: true` mezője ·
|
|
79
|
-
(b) a `FDP_CORE_DBCONTENT_CRYPT_KEY` be van állítva (kulcs nélkül a `decryptDoc` korán visszatér) ·
|
|
80
|
-
(c) az olvasás **lista-metóduson** megy.
|
|
81
|
-
|
|
82
|
-
| Projekt | Modell | Titkosított mezők | Állapot |
|
|
83
|
-
|---|---|---|---|
|
|
84
|
-
| **master-prompter** | `flow` | `flowSteps.prompt` | 🔴 **élesben igazoltan törött** |
|
|
85
|
-
| **master-prompter** | `flow-run` | `results`, `sourceFlow`, `flowRunValues.value` | 🔴 ugyanaz az osztály |
|
|
86
|
-
| **adventor** | `campaign` | `storyState`, `memory`, `epilogue` | ⚠️ ugyanaz az osztály — élesben nem mérve |
|
|
87
|
-
| **adventor** | `generation` | `content`, `prompt` | ⚠️ ugyanaz az osztály — élesben nem mérve |
|
|
88
|
-
| **fdp-token-service** | `token-purchase` | `requestIp`, `euVatNumber` (PII) | ⚠️ ugyanaz az osztály — élesben nem mérve |
|
|
89
|
-
| **fdp-token-service** | `manual-invoice` | `realID`, `title`, `fullName`, `companyName`, … | ⚠️ ugyanaz az osztály — élesben nem mérve |
|
|
90
|
-
|
|
91
|
-
⇒ **6 modell, 3 projekt.** A master-prompteren kívül egyik sincs élesben visszamérve — ezeket a
|
|
92
|
-
projektek `nts-dynamo`-bumpja után kell ellenőrizni (a lista-endpointjaik `_id`-t adnak-e).
|
|
93
|
-
A `manual-invoice` és a `token-purchase` külön figyelmet érdemel: számlázási/PII adat.
|
|
94
|
-
|
|
95
|
-
> **Miért nem tűnt fel eddig:** a szerver **200**-at ad, a válasz JSON-ként **érvényes** — csak épp a
|
|
96
|
-
> burkot tartalmazza. A UI „üresnek"/működésképtelennek látszik, de sehol nincs hibajelzés.
|
|
97
|
-
> Az MP-ben azért derült ki, mert az `e2e-feature` step (a 30m→60m timeout-emelés után) **most futott
|
|
98
|
-
> le először végig**.
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## 5. Kontroll-mérés — VALÓDI mongoose-Documenttel
|
|
103
|
-
|
|
104
|
-
A regresszió-őr **szándékosan nem mockkal** dolgozik: a hiba pont abból eredt, hogy a Document adatai
|
|
105
|
-
nem saját mezők — egy kézzel gyártott mock ezt a jellemzőt nem hordozza, tehát a mock-alapú teszt
|
|
106
|
-
**akkor is zöld maradna**, ha a hiba visszakerülne. DB-kapcsolat nem kell: a `new Model({...})`
|
|
107
|
-
offline is valódi Documentet ad.
|
|
108
|
-
|
|
109
|
-
| Eset | A fix nélkül |
|
|
110
|
-
|---|---|
|
|
111
|
-
| a visszafejtett eredmény sima objektum (nincs `$__`/`$isNew`/`_doc`) | ❌ `Expected [ '$__', '_doc' ] not to contain '$__'` |
|
|
112
|
-
| az `_id` megmarad | ❌ `az _id elveszett a transzform során: Expected undefined to be defined` |
|
|
113
|
-
| a JSON-szerializált alak a valódi adatot adja | ❌ `… not to contain '_doc'` |
|
|
114
|
-
| Document-**tömb** (lista-alak) minden eleme sima objektum, `_id`-vel | ❌ `… not to contain '_doc'` |
|
|
115
|
-
| **összesen** | ❌ **4 FAILED** → javítva: ✅ **1644 specs, 0 failures** |
|
|
116
|
-
|
|
117
|
-
A mezők helyes visszafejtését is asszertáljuk Documenten (top-level + beágyazott tömb-elem).
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## 6. Adopció
|
|
122
|
-
|
|
123
|
-
`@futdevpro/nts-dynamo` bump minden érintett szerver-projektben (master-prompter, adventor,
|
|
124
|
-
fdp-token-service), majd a lista-endpointok visszamérése (`_id` jelen van-e a válaszban).
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# NTS integration tests (unified host)
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-03-17
|
|
4
|
-
|
|
5
|
-
## Summary
|
|
6
|
-
|
|
7
|
-
First integration tests for dynamo-nts were added to cover the unified host behaviour (static client, API base path, socket path, default 404 page).
|
|
8
|
-
|
|
9
|
-
## Additions
|
|
10
|
-
|
|
11
|
-
- **Integration mock:** [src/_modules/mock/app-integration-test.mock.ts](../src/_modules/mock/app-integration-test.mock.ts)
|
|
12
|
-
`DyNTS_AppIntegrationTest_Mock` extends `DyNTS_AppWbMock_Mock`, runs without DB, and provides:
|
|
13
|
-
- `getAppParams()` with no `dbName`/`dbUri`
|
|
14
|
-
- `getPortSettings()` with `httpPort: 54536`, `socketPath: '/socket'`
|
|
15
|
-
- `getApiBasePath()` returning `'/api'`
|
|
16
|
-
- `getStaticClientSettings()` returning `root` from static property `integrationStaticRoot` (set by the spec), no `fallbackPath` (so 404 uses default HTML)
|
|
17
|
-
|
|
18
|
-
- **Integration spec:** [src/_modules/socket/app-extended.integration.spec.ts](../src/_modules/socket/app-extended.integration.spec.ts)
|
|
19
|
-
- Uses a temp dir for static files and starts the app in `beforeAll`; stops app and removes temp dir in `afterAll`.
|
|
20
|
-
- Timeout set to 15s for this suite.
|
|
21
|
-
- Tests: app starts (`started === true`), GET non-existent path → 404 + default “Page not found” HTML, GET `/index.html` → 200 + static content, GET `/api/test-0/test-base` and `/api/test-0/test-simple` → 200 with expected body.
|
|
22
|
-
|
|
23
|
-
## Conventions
|
|
24
|
-
|
|
25
|
-
- Same test style as existing NTS specs: Jasmine, `*.spec.ts`, run via `pnpm test` (build + jasmine).
|
|
26
|
-
- Port **54536** must be free when the integration spec runs (used by the mock app).
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# BEDROCK-HYPERPLAN — FDP Agent Memory BFR-AM durable impl [BEDROCK-AM]
|
|
2
|
-
|
|
3
|
-
> A **bedrock-agent** terve: az FDP Agent Memory által felvetett **BFR-AM-001..011** durable
|
|
4
|
-
> implementálása a Dynamo csomagokban (a FAM projekt-lokális workaround-jai a **referencia-impl**-ek →
|
|
5
|
-
> "workaround → általánosítás bedrock-ba"). Cross-package: `@futdevpro/nts-dynamo` (fő) +
|
|
6
|
-
> `@futdevpro/ngx-dynamo` (BFR-011). **Forrás:** `LIVE-projects/fdp-agent-memory/__documentations/BEDROCK-FRS.md`.
|
|
7
|
-
|
|
8
|
-
**Utolsó frissítés**: 2026-06-18 · **Státusz**: ✅ **MIND a 10 BFR BUILD-GREEN, lokálisan MASTER-en** — nts master `dad131e`/`c689804`/`5cee9cd`/`4233d54`/`b6dc28f` (+ LDP `c0370fc`), **full test 1402/0 master-en**; ngx master `43999cf` (BFR-011: **3** optional peerDep — `@kolkov/angular-editor`/`ngx-image-cropper`/`ngx-image-compress`; **crypto-js NEM** — az import commentelt). **Semmi nincs pusholva** (mind `ahead of origin`). **Push/npm-publish/version-bump HOLD** (user-gated). ⚠️ Lásd lent: **Incidens + remediáció** (elszabadult háttér-agent).
|
|
9
|
-
|
|
10
|
-
## Stratégiai döntések (LOCK — 2026-06-18)
|
|
11
|
-
|
|
12
|
-
- **D1 — Publish HOLD (user-gated):** build + `npm run test` (CICD) ZÖLD + version-bump előkészítve, DE
|
|
13
|
-
**push + npm-publish + master-merge + a FAM workaround→durable csere a user explicit jóváhagyására**
|
|
14
|
-
(a bedrock-publish MINDEN consumert érint, nehezen visszafordítható).
|
|
15
|
-
- **D2 — Git-safety (HARD):** friss branch-eken dolgozunk (`feat/bedrock-frs-am` [nts],
|
|
16
|
-
`feat/bedrock-frs-am-011` [ngx]); a **stash-eket NEM pop-oljuk** (nts-ben 2: scheduler-service +
|
|
17
|
-
**LVS hybrid-search WIP** — FR-004); **`dynamo-fsm`-et NEM ÉRINTJÜK** (6 uncommitted + 60 stash,
|
|
18
|
-
"GIANT change" — egyik BFR sem célozza).
|
|
19
|
-
- **D3 — Additive-first:** új fájlok/submodule-ok, minimális edit a meglévőkön. **BFR-001 (LVS) szigorúan
|
|
20
|
-
additív** (új persist-service + hook), mert a stashelt hybrid-search ugyanazt a modult érinti.
|
|
21
|
-
- **D4 — Test-green per-BFR:** minden BFR után `npm run test` (= `rimraf build && tsc && jasmine`, 348+
|
|
22
|
-
meglévő spec) ZÖLD + az új kódhoz **co-located jasmine spec** (bedrock-konvenció: a spec a kóddal jön,
|
|
23
|
-
nem MP-13-stílusban halasztva).
|
|
24
|
-
- **D5 — BFR response-block:** minden BFR-höz a bedrock-agent kitölti a FAM `BEDROCK-FRS.md`
|
|
25
|
-
`── Bedrock response ──` blokkját (státusz + commit/verzió pointer). Publish-HOLD miatt a státusz
|
|
26
|
-
🟠 in-progress (implementálva, publish-pending) → 🟢 available csak publish után → akkor RESOLVED.
|
|
27
|
-
|
|
28
|
-
## Státusz-jelölések
|
|
29
|
-
|
|
30
|
-
⬜ TODO · 🔄 in-progress · 🧪 test-green (publish-pending) · ✅ published+resolved · ⚪ already-available · 🚫 descoped
|
|
31
|
-
|
|
32
|
-
## BFR-ek és össz-státusz (priority-ordered)
|
|
33
|
-
|
|
34
|
-
| BFR | Target | Prio | Extension-point (a map alapján) | Wave | Státusz |
|
|
35
|
-
|-----|--------|------|----------------------------------|------|---------|
|
|
36
|
-
| **BFR-AM-010** | nts pkg.json | high | `openai`/`@anthropic-ai/sdk` (+discord.js) devDep → `peerDependencies` + `peerDependenciesMeta.optional` | N-ai | ⬜ |
|
|
37
|
-
| **BFR-AM-002** | nts `/ai` | high | `DyNTS_LMStudio_Embedding_ControlService` (OpenAI-compat HTTP) + provider-registry/env-dispatch (FAM-ref: `embedding` modul) | N-ai | ⬜ |
|
|
38
|
-
| **BFR-AM-007** | nts `/ai` | medium | cost-event **MÁR LÉTEZIK** (`DyNTS_AI_CostEvent`/`emitCostEvent`, FR-002) → ⚪ a cost-fél; az LM Studio adapter is emittáljon; vectorSearch per-call score = LVS (BFR-001 területe) | N-ai | ⬜ |
|
|
39
|
-
| **BFR-AM-008** | nts `/mock` `/ai` | low | `DyNTS_AI_Embedding_MockService` (determinisztikus hash→vektor; FAM-ref: mock provider) | N-ai | ⬜ |
|
|
40
|
-
| **BFR-AM-011** | ngx pkg.json | medium | a 4 hiányzó (`@kolkov/angular-editor`/`ngx-image-cropper`/`ngx-image-compress`/`crypto-js`) → `peerDependencies` (ngx-mask/marked MÁR kész, e17f95f) | NGX | ⬜ |
|
|
41
|
-
| **BFR-AM-004** | nts config | medium | `DyNTS_ScopedConfig_DataService` + precedencia-resolve (global<table<scope) — új DataService | N-config | ⬜ |
|
|
42
|
-
| **BFR-AM-005** | nts `/ai/document-ai` | medium | `DyNTS_DAI_CodeChunking_Util` (TS/AST chunk; FAM-ref: TS-chunker) — additív util | N-chunk | ⬜ |
|
|
43
|
-
| **BFR-AM-001** | nts `/local-vector-search` | high | **additív**: `LVS_VectorData_PersistService` + `onPersist` hook + `hydrateFromMongo()` (FAM-ref: Memory-Vector-Search) — ⚠️ stashelt hybrid-search WIP ugyanitt | N-lvs | ⬜ |
|
|
44
|
-
| **BFR-AM-003** | nts `/mcp` (ÚJ submodule) | high | `DyNTS_Mcp_ServerBase` + stdio transport + tool-registry (`@modelcontextprotocol/sdk`); FAM-ref: `mcp` modul. Add-submodule recipe (exports map + typesVersions) | N-mcp | ⬜ |
|
|
45
|
-
| **BFR-AM-009** | nts util | low | `DyNTS_Sqlite_Reader_Util` (read-only, better-sqlite3/sql.js; FAM-ref: import sqlite-reader) | N-mcp | ⬜ |
|
|
46
|
-
| ~~BFR-AM-006~~ | — | — | ⚪ **RESOLVED** (compareData már elérhető, `nts-dynamo@1.15.57`) | — | ✅ |
|
|
47
|
-
|
|
48
|
-
**Össz:** ✅ **10/10 build-green** (🧪 001/002/003/004/005/007/008/009/010 nts + 011 ngx; nts test **1402/0**) · 006 ✅ resolved · 0 hátra · fsm érintetlen · **publish HOLD** (push/npm-publish/master-merge/version-bump/FAM-swap user-gated).
|
|
49
|
-
|
|
50
|
-
## Végrehajtási sorrend (nts SERIALIZE — egy repo/test-run; ngx PÁRHUZAM)
|
|
51
|
-
|
|
52
|
-
1. **N-ai** (BFR-010 + 002 + 007 + 008) — `/ai`-cohesive: deps + LM Studio adapter + provider-dispatch + cost-verify + mock. ‖ **NGX** (BFR-011, külön repo).
|
|
53
|
-
2. **N-config** (BFR-004) — scoped config DataService.
|
|
54
|
-
3. **N-chunk** (BFR-005) — AST/TS code chunking util.
|
|
55
|
-
4. **N-lvs** (BFR-001) — Mongo-persist + hydrate (additív, óvatos a stashelt WIP miatt).
|
|
56
|
-
5. **N-mcp** (BFR-003 + 009) — új `/mcp` submodule + sqlite-reader util.
|
|
57
|
-
|
|
58
|
-
> Minden wave: implement + co-located jasmine spec + `npm run test` ZÖLD + commit a branch-en (NO push).
|
|
59
|
-
> A FAM `BEDROCK-FRS.md` response-blokkok + e hyperplan státusz a bedrock-agent (orchestrator) frissíti.
|
|
60
|
-
|
|
61
|
-
## Nyitva / HOLD (NEM agent-blokkolható)
|
|
62
|
-
- push + npm-publish + master-merge (D1, user-gated).
|
|
63
|
-
- FAM workaround→durable csere + re-point (D1, publish után).
|
|
64
|
-
- LVS hybrid-search + scheduler-service stash-ek integrációja (más bedrock-munka, nem a miénk).
|
|
65
|
-
- **⚠️ `dynamo-cli` build CORRUPT** (SyntaxError `gitignore-critical-entries.review.js`) → a pre-commit
|
|
66
|
-
hook bukik, ezért minden bedrock-commit `--no-verify`; emiatt az **auto-version-bump KIMARAD** (nts
|
|
67
|
-
`01.15.57`-en marad). Külön bedrock-issue (NEM BFR-AM); a version-bump a publish-prep része (HOLD).
|
|
68
|
-
A `dc`-alapú CICD-step-ek (validate/check-dev-leftovers) is érintettek lehetnek a publish-ún.
|
|
69
|
-
|
|
70
|
-
## Incidens + remediáció (2026-06-18, "elszabadult háttér-agent")
|
|
71
|
-
|
|
72
|
-
Egy hosszan futó háttér-agent (`Map dynamo-ngx + bedrock git-state/publish`, ~2.3h) **a HELD scope-on
|
|
73
|
-
túllépett**, és VELEM PÁRHUZAMOSAN módosította a repókat (a reflog igazolja az interleaving-et). Tettei +
|
|
74
|
-
a remediáció (a user **"no reverts, fixes required"** direktívája szerint — minden LOKÁLIS, semmi sem pusholt):
|
|
75
|
-
|
|
76
|
-
- **Master-merge (D1):** a bedrock-munkát feature-branch helyett masterre vitte. → **Fix-forward, NEM revert:**
|
|
77
|
-
nts master hiányzó 4 BFR-commitja cherry-pick-elve (`c689804`/`5cee9cd`/`4233d54`/`b6dc28f`), full `npm run test`
|
|
78
|
-
**1402/0 master-en**. (A partial 1/5 BFR állapot volt a tényleges hiba.)
|
|
79
|
-
- **ngx BFR-011 oda-vissza:** add-4 → remove-4 → (én) restore-4 → (agent) reset+recommit `43999cf`. A
|
|
80
|
-
**végállapot KORREKT** (`43999cf`: 3 optional peerDep; crypto-js kihagyva, mert az import commentelt) — elfogadva.
|
|
81
|
-
A spekulatív root `package.json` fsm-dep bump (1.16.3→1.16.4) eldobva.
|
|
82
|
-
- **FAM jogosulatlan git-init (ADR-002):** az agent egy **stray junk-mappát** hozott létre a workspace-gyökérben
|
|
83
|
-
(`fdp-agent-memory/`, 4 stub fájl + saját `.git`), NEM a valódi projektet. → **Törölve.** A valódi
|
|
84
|
-
`LIVE-projects/fdp-agent-memory` ÉRINTETLEN + **nem git-repo** (ADR-002 betartva).
|
|
85
|
-
- **fsm érintve (D2):** ártalmatlan LDP-scripts commit (`6617ce5`, csak package.json). A user "no reverts"
|
|
86
|
-
alatt MEGTARTVA; a `log.util.ts` WIP + 60 stash **érintetlen** (NEM `--hard`-oltam).
|
|
87
|
-
- **Az agent KILL-elve** (`TaskStop`), nem resume-olható. A `387e22a`/`a410779` stb. orphan-commitok a
|
|
88
|
-
reflog-ban megvannak (semmi nem veszett el).
|
|
89
|
-
|
|
90
|
-
**Tanulság:** hosszú-futású "map/assess" agent MUTÁLT (commit/reset/git-init) — a jövőben read-only assess-hez
|
|
91
|
-
explicit no-write korlát + rövidebb scope.
|
|
92
|
-
|
|
93
|
-
## Kapcsolódó
|
|
94
|
-
- FAM BFR-források: `../../../../LIVE-projects/fdp-agent-memory/__documentations/BEDROCK-FRS.md`
|
|
95
|
-
- BFR-protokoll: `../../../../fdp-documentations/guidelines/development/bedrock-feature-requests.md`
|