@futdevpro/nts-dynamo 1.15.113 → 1.15.114

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,7 +1,7 @@
1
1
  {
2
- "pid": 61695,
3
- "startedAt": "2026-07-22T04:16:06.130Z",
4
- "startedAtMs": 1784693766130,
2
+ "pid": 66541,
3
+ "startedAt": "2026-07-22T04:48:25.016Z",
4
+ "startedAtMs": 1784695705016,
5
5
  "phase": "npm-publish",
6
6
  "pipelineComplete": false,
7
7
  "serverRunning": false,
@@ -10,77 +10,77 @@
10
10
  "steps": {
11
11
  "validate-secrets": {
12
12
  "status": "ok",
13
- "startedAt": "2026-07-22T04:16:06.176Z",
13
+ "startedAt": "2026-07-22T04:48:25.032Z",
14
14
  "logLineStart": 2,
15
15
  "logLineEnd": 8,
16
- "durationSec": 0.2
16
+ "durationSec": 0.6
17
17
  },
18
18
  "discord-start": {
19
19
  "status": "ok",
20
- "startedAt": "2026-07-22T04:16:07.421Z",
20
+ "startedAt": "2026-07-22T04:48:26.599Z",
21
21
  "logLineStart": 9,
22
22
  "logLineEnd": 14,
23
- "durationSec": 4.2
23
+ "durationSec": 3.2
24
24
  },
25
25
  "pre-flight": {
26
26
  "status": "ok",
27
- "startedAt": "2026-07-22T04:16:12.654Z",
27
+ "startedAt": "2026-07-22T04:48:30.822Z",
28
28
  "logLineStart": 15,
29
29
  "logLineEnd": 17,
30
30
  "durationSec": 0.2
31
31
  },
32
32
  "install": {
33
33
  "status": "ok",
34
- "startedAt": "2026-07-22T04:16:13.877Z",
34
+ "startedAt": "2026-07-22T04:48:32.014Z",
35
35
  "logLineStart": 18,
36
- "logLineEnd": 121,
37
- "durationSec": 34.4
36
+ "logLineEnd": 101,
37
+ "durationSec": 21.5
38
38
  },
39
39
  "check-dev-leftovers": {
40
40
  "status": "ok",
41
- "startedAt": "2026-07-22T04:16:49.313Z",
42
- "logLineStart": 122,
43
- "logLineEnd": 129,
44
- "durationSec": 4.4
41
+ "startedAt": "2026-07-22T04:48:54.507Z",
42
+ "logLineStart": 102,
43
+ "logLineEnd": 109,
44
+ "durationSec": 4.5
45
45
  },
46
46
  "build": {
47
47
  "status": "ok",
48
- "startedAt": "2026-07-22T04:16:54.721Z",
49
- "logLineStart": 130,
50
- "logLineEnd": 131,
51
- "durationSec": 31.6
48
+ "startedAt": "2026-07-22T04:49:00.035Z",
49
+ "logLineStart": 110,
50
+ "logLineEnd": 111,
51
+ "durationSec": 35.5
52
52
  },
53
53
  "test": {
54
54
  "status": "ok",
55
- "startedAt": "2026-07-22T04:17:27.287Z",
56
- "logLineStart": 132,
57
- "logLineEnd": 2821,
58
- "durationSec": 23,
55
+ "startedAt": "2026-07-22T04:49:38.854Z",
56
+ "logLineStart": 112,
57
+ "logLineEnd": 2802,
58
+ "durationSec": 46,
59
59
  "testSummary": {
60
- "totalSpecs": 1571,
60
+ "totalSpecs": 1575,
61
61
  "failures": 0,
62
- "passed": 1571,
63
- "testDurationSec": 6.5
62
+ "passed": 1575,
63
+ "testDurationSec": 9.682
64
64
  },
65
65
  "errors": [
66
66
  {
67
- "line": 1483,
67
+ "line": 2151,
68
68
  "text": "(checkDbReadiness) diagnostics collection failed (non-fatal) Error: boom",
69
- "details": "at runNext (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8355:16)\nat /tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8361:11\nat /tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8241:9\nat UserContext.<anonymous> (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/build/_modules/server/server-status/server-status.control-service.spec.js:507:68)\nat QueueRunner.attempt (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8414:40)\nat QueueRunner.run (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8452:27)\nat runNext (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8355:16)\nat /tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8361:11\nat /tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8241:9",
70
- "detailLineEnd": 1489
69
+ "details": "at runNext (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8355:16)\nat /tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8361:11\nat /tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8241:9\nat UserContext.<anonymous> (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/build/_modules/server/server-status/server-status.control-service.spec.js:507:68)\nat QueueRunner.attempt (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8414:40)\nat QueueRunner.run (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8452:27)\nat runNext (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8355:16)\nat /tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8361:11\nat /tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8241:9",
70
+ "detailLineEnd": 2157
71
71
  },
72
72
  {
73
- "line": 1490,
74
- "text": "(checkDbReadiness) diagnostics collection failed (non-fatal) Error: diag boom",
75
- "details": "at runNext (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8355:16)\nat /tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8361:11\nat /tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8241:9\nat Object.get host [as host] (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/build/_modules/server/server-status/server-status.control-service.spec.js:487:36)\nat TestServerStatusControlService.checkDbReadiness (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/build/_modules/server/server-status/server-status.control-service.js:177:29)\nat async UserContext.<anonymous> (/tmp/pipeline-runs/16da4736-b46d-469d-95da-018fb0da05c5/build/_modules/server/server-status/server-status.control-service.spec.js:490:28)",
76
- "detailLineEnd": 1493
73
+ "line": 2158,
74
+ "text": ".(checkDbReadiness) diagnostics collection failed (non-fatal) Error: diag boom",
75
+ "details": "at runNext (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8355:16)\nat /tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8361:11\nat /tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8241:9\nat Object.get host [as host] (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/build/_modules/server/server-status/server-status.control-service.spec.js:487:36)\nat TestServerStatusControlService.checkDbReadiness (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/build/_modules/server/server-status/server-status.control-service.js:177:29)\nat async UserContext.<anonymous> (/tmp/pipeline-runs/315298a8-c46b-402b-901c-65c812d93bef/build/_modules/server/server-status/server-status.control-service.spec.js:490:28)",
76
+ "detailLineEnd": 2161
77
77
  }
78
78
  ]
79
79
  },
80
80
  "npm-publish": {
81
81
  "status": "running",
82
- "startedAt": "2026-07-22T04:17:51.346Z",
83
- "logLineStart": 2822,
82
+ "startedAt": "2026-07-22T04:50:25.869Z",
83
+ "logLineStart": 2803,
84
84
  "logLineEnd": null,
85
85
  "durationSec": null
86
86
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/nts-dynamo",
3
- "version": "01.15.113",
3
+ "version": "01.15.114",
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",
@@ -0,0 +1,92 @@
1
+ import { DyFM_Error } from '@futdevpro/fsm-dynamo';
2
+
3
+ import { DyNTS_AIMock_Modality } from '../_enums/aim-modality.enum';
4
+ import { DyNTS_AIMock_Fixture } from '../_models/interfaces/aim-fixture.interface';
5
+ import { DyNTS_AIMock_ServiceCollection } from '../_models/interfaces/aim-service-collection.interface';
6
+ import { getDefaultAiMockServiceCollection } from '../_collections/aim-default-collection.util';
7
+ import { DyNTS_AIMock_TextFixtures } from '../fixtures/aim-text.fixtures';
8
+
9
+ /**
10
+ * **MP-8 SP-8.2 — integracios bizonyitas, NULLA halozattal.**
11
+ *
12
+ * Ez a spec a TENYLEGESEN COMMITOLT, valodi AI-generalasbol beegetett fixture-oket (`DyNTS_AIMock_TextFixtures`)
13
+ * tolti be a `getDefaultAiMockServiceCollection` factory-n keresztul — vagyis pontosan azon az uton, ahogy egy
14
+ * consumer hasznalna —, es igazolja a rendszer ket alapigeretet:
15
+ * 1. **replay**: a beegetett valasz visszajon, outbound hivas NELKUL,
16
+ * 2. **reject-on-unknown**: a nem beegetett input strukturalt hibat kap (D3 — sosem csendes fallback).
17
+ *
18
+ * Ha ez a spec zold, akkor a lanc `valodi generalas → determinisztikus beegetes → offline replay` mukodik.
19
+ */
20
+ describe('| ai-mock INTEGRACIOS BIZONYITAS (commitolt fixture-ok, halozat nelkul)', () => {
21
+
22
+ /** A beegetett keszlet legyen tenylegesen jelen — ures fixture-keszlet eseten a spec hamis-zold lenne. */
23
+ it('| a commitolt fixture-keszlet NEM ures (kulonben a tobbi allitas ertelmetlen)', () => {
24
+ expect(DyNTS_AIMock_TextFixtures.length).toBeGreaterThan(0);
25
+ });
26
+
27
+ it('| a factory-n keresztul betoltve a beegetett valasz VISSZAJATSZHATO (outbound hivas nelkul)', async () => {
28
+ const collection: DyNTS_AIMock_ServiceCollection = getDefaultAiMockServiceCollection({
29
+ fixtures: DyNTS_AIMock_TextFixtures,
30
+ });
31
+
32
+ const chat: DyNTS_AIMock_Fixture = DyNTS_AIMock_TextFixtures.find(
33
+ (fixture: DyNTS_AIMock_Fixture) => fixture.modality === DyNTS_AIMock_Modality.text && !!fixture.output
34
+ );
35
+
36
+ expect(chat).toBeDefined();
37
+
38
+ const replayed: unknown = await collection.service.chatCompletion({
39
+ provider: chat.provider,
40
+ model: chat.model,
41
+ config: chat.config,
42
+ input: chat.input,
43
+ });
44
+
45
+ expect(replayed).toEqual(chat.output);
46
+ });
47
+
48
+ it('| embedding-fixture is visszajatszhato ugyanazon a felületen', async () => {
49
+ const collection: DyNTS_AIMock_ServiceCollection = getDefaultAiMockServiceCollection({
50
+ fixtures: DyNTS_AIMock_TextFixtures,
51
+ });
52
+
53
+ const embedding: DyNTS_AIMock_Fixture = DyNTS_AIMock_TextFixtures.find(
54
+ (fixture: DyNTS_AIMock_Fixture) => fixture.modality === DyNTS_AIMock_Modality.embedding
55
+ );
56
+
57
+ if (!embedding) {
58
+ pending('nincs embedding-fixture a beegetett keszletben');
59
+
60
+ return;
61
+ }
62
+
63
+ const replayed: unknown = await collection.service.embed({
64
+ provider: embedding.provider,
65
+ model: embedding.model,
66
+ config: embedding.config,
67
+ input: embedding.input,
68
+ });
69
+
70
+ expect(replayed).toEqual(embedding.output);
71
+ });
72
+
73
+ it('| NEM beegetett input → strukturalt reject-on-unknown (D3: sosem csendes fallback)', async () => {
74
+ const collection: DyNTS_AIMock_ServiceCollection = getDefaultAiMockServiceCollection({
75
+ fixtures: DyNTS_AIMock_TextFixtures,
76
+ });
77
+
78
+ try {
79
+ await collection.service.chatCompletion({
80
+ provider: 'open-ai',
81
+ model: 'gpt-4o-mini',
82
+ input: 'ezt a bemenetet SOHA nem egettuk be',
83
+ });
84
+ fail('reject-on-unknown-t vartunk');
85
+ } catch (error) {
86
+ expect(error instanceof DyFM_Error).toBe(true);
87
+ if (error instanceof DyFM_Error) {
88
+ expect(error.message).toContain('no fixture');
89
+ }
90
+ }
91
+ });
92
+ });