smart-thinking-mcp 11.0.6 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +18 -2
  2. package/build/cli.js +197 -18
  3. package/build/cli.js.map +1 -1
  4. package/build/index.d.ts +15 -6
  5. package/build/index.js +24 -4
  6. package/build/index.js.map +1 -1
  7. package/build/memory-manager.d.ts +6 -0
  8. package/build/memory-manager.js +38 -6
  9. package/build/memory-manager.js.map +1 -1
  10. package/build/server/contracts.d.ts +221 -0
  11. package/build/server/contracts.js +93 -0
  12. package/build/server/contracts.js.map +1 -0
  13. package/build/server/registrations/prompt-registrations.d.ts +2 -0
  14. package/build/server/registrations/prompt-registrations.js +60 -0
  15. package/build/server/registrations/prompt-registrations.js.map +1 -0
  16. package/build/server/registrations/resource-registrations.d.ts +3 -0
  17. package/build/server/registrations/resource-registrations.js +99 -0
  18. package/build/server/registrations/resource-registrations.js.map +1 -0
  19. package/build/server/registrations/tool-registrations.d.ts +7 -0
  20. package/build/server/registrations/tool-registrations.js +202 -0
  21. package/build/server/registrations/tool-registrations.js.map +1 -0
  22. package/build/server/server-metadata.d.ts +6 -0
  23. package/build/server/server-metadata.js +36 -0
  24. package/build/server/server-metadata.js.map +1 -0
  25. package/build/server/smart-thinking-server.d.ts +11 -344
  26. package/build/server/smart-thinking-server.js +19 -275
  27. package/build/server/smart-thinking-server.js.map +1 -1
  28. package/build/services/service-container.d.ts +17 -49
  29. package/build/services/service-container.js +12 -57
  30. package/build/services/service-container.js.map +1 -1
  31. package/build/services/verification-service.js +1 -1
  32. package/build/services/verification-service.js.map +1 -1
  33. package/build/test-utils/logger-setup.js +1 -1
  34. package/build/test-utils/logger-setup.js.map +1 -1
  35. package/build/tool-integrator.d.ts +11 -1
  36. package/build/tool-integrator.js +43 -11
  37. package/build/tool-integrator.js.map +1 -1
  38. package/build/utils/logger.js +4 -1
  39. package/build/utils/logger.js.map +1 -1
  40. package/build/verification-memory.d.ts +5 -0
  41. package/build/verification-memory.js +35 -5
  42. package/build/verification-memory.js.map +1 -1
  43. package/package.json +7 -7
package/README.md CHANGED
@@ -80,11 +80,27 @@ Smart-Thinking is validated across the most popular MCP clients and operating sy
80
80
 
81
81
  > Need a minimal deployment footprint? Combine `--transport=http --mode=connector` with a reverse proxy (ngrok, fly.io, render, etc.) so remote clients can consume the server without exposing the full toolset.
82
82
 
83
+ For registry scanners and fallback metadata extraction, Smart-Thinking also exposes:
84
+
85
+ - `GET /.well-known/mcp/server-card.json`
86
+
83
87
  ## Configuration & Feature Flags
84
88
  - `feature-flags.ts` toggles advanced behaviours such as external integrations (disabled by default) and verbose tracing.
85
89
  - `config.ts` aligns platform-specific paths and verification thresholds.
86
90
  - `memory-manager.ts` and `verification-memory.ts` store session graphs, metrics, and calculation results using deterministic JSON snapshots.
87
91
 
92
+ ## Zero-API-Key Mode (Default)
93
+ - Smart-Thinking runs fully in local deterministic mode without any API key.
94
+ - External verification/search connectors are disabled by default in `ToolIntegrator`.
95
+ - To explicitly enable external connectors, set:
96
+
97
+ ```bash
98
+ export SMART_THINKING_ENABLE_EXTERNAL_TOOLS=true
99
+ ```
100
+
101
+ - If external connectors are disabled (default), verification suggestions stay local (`executePython`, `executeJavaScript`) and external tool calls return a local fallback result.
102
+ - `FeatureFlags.externalLlmEnabled` and `FeatureFlags.externalEmbeddingEnabled` remain disabled by default, so no remote LLM/embedding provider is required.
103
+
88
104
  ## Development Workflow
89
105
  ```bash
90
106
  npm run build # Compile TypeScript sources
@@ -94,11 +110,11 @@ npm run test:coverage # Jest coverage report
94
110
  npm run watch # Incremental TypeScript compilation
95
111
  ```
96
112
 
97
- See `TRANSFORMATION_PLAN.md` for the full transformation history and the checklist that drives ongoing hardening.
113
+ See `docs/modernisation-smart-thinking-v12-plan.md` for the modernization checklist and rollout tracking.
98
114
 
99
115
  ## Quality & Support
100
116
  - Deterministic heuristics and verification eliminate dependency on remote LLMs.
101
- - Coverage targets: 80 % on persistence modules, ≥60 % branch coverage across orchestrator logic.
117
+ - Latest validation (February 6, 2026): `80.47%` statements, `81.59%` lines, `84.34%` functions, `63.48%` branches.
102
118
  - CI recommendations: run `npm run lint` and `npm run test:coverage` before each release candidate.
103
119
 
104
120
  ## Contributing
package/build/cli.js CHANGED
@@ -17,6 +17,162 @@ const platform_stdio_1 = require("./utils/platform-stdio");
17
17
  const path_utils_1 = require("./utils/path-utils");
18
18
  const config_1 = require("./config");
19
19
  const smart_thinking_server_1 = require("./server/smart-thinking-server");
20
+ const PROJECT_HOMEPAGE = 'https://github.com/Leghis/Smart-Thinking';
21
+ const PROJECT_ICON = 'https://raw.githubusercontent.com/Leghis/Smart-Thinking/main/logoSmart-thinking.png';
22
+ function parseCsvEnv(name) {
23
+ const raw = process.env[name];
24
+ if (!raw) {
25
+ return [];
26
+ }
27
+ return raw.split(',').map(item => item.trim()).filter(Boolean);
28
+ }
29
+ function resolveDefaultAllowedHosts(host, port) {
30
+ const hosts = new Set([
31
+ 'localhost',
32
+ `localhost:${port}`,
33
+ '127.0.0.1',
34
+ `127.0.0.1:${port}`
35
+ ]);
36
+ if (host && host !== '0.0.0.0' && host !== '::') {
37
+ hosts.add(host);
38
+ hosts.add(`${host}:${port}`);
39
+ }
40
+ return Array.from(hosts);
41
+ }
42
+ function resolveDefaultAllowedOrigins(host, port) {
43
+ const origins = new Set([
44
+ `http://localhost:${port}`,
45
+ `http://127.0.0.1:${port}`,
46
+ `https://localhost:${port}`,
47
+ `https://127.0.0.1:${port}`
48
+ ]);
49
+ if (host && host !== '0.0.0.0' && host !== '::') {
50
+ origins.add(`http://${host}:${port}`);
51
+ origins.add(`https://${host}:${port}`);
52
+ }
53
+ return Array.from(origins);
54
+ }
55
+ function loadPackageVersion() {
56
+ try {
57
+ const packageJsonPath = path_1.default.join(__dirname, '..', 'package.json');
58
+ const raw = (0, fs_1.readFileSync)(packageJsonPath, 'utf8');
59
+ const parsed = JSON.parse(raw);
60
+ return parsed.version ?? '0.0.0';
61
+ }
62
+ catch {
63
+ return '0.0.0';
64
+ }
65
+ }
66
+ function buildServerCard(options) {
67
+ const version = loadPackageVersion();
68
+ const tools = [
69
+ {
70
+ name: 'search',
71
+ description: 'Recherche semantique dans les memoires locales Smart-Thinking.',
72
+ inputSchema: {
73
+ type: 'object',
74
+ properties: {
75
+ query: { type: 'string', description: 'Requete de recherche.' },
76
+ limit: { type: 'integer', minimum: 1, maximum: 20, default: 5, description: 'Nombre maximal de resultats.' },
77
+ sessionId: { type: 'string', description: 'Session cible optionnelle.' },
78
+ },
79
+ required: ['query'],
80
+ },
81
+ },
82
+ {
83
+ name: 'fetch',
84
+ description: 'Recupere une memoire complete par identifiant.',
85
+ inputSchema: {
86
+ type: 'object',
87
+ properties: {
88
+ id: { type: 'string', description: 'Identifiant de la memoire.' },
89
+ sessionId: { type: 'string', description: 'Session cible optionnelle.' },
90
+ },
91
+ required: ['id'],
92
+ },
93
+ },
94
+ ];
95
+ if (options.mode !== 'connector') {
96
+ tools.unshift({
97
+ name: 'smartthinking',
98
+ description: 'Pipeline de raisonnement graphe local, deterministe et persistant.',
99
+ inputSchema: {
100
+ type: 'object',
101
+ properties: {
102
+ thought: { type: 'string', description: 'Pensee a analyser.' },
103
+ thoughtType: {
104
+ type: 'string',
105
+ enum: ['regular', 'revision', 'meta', 'hypothesis', 'conclusion'],
106
+ default: 'regular',
107
+ description: 'Type de pensee.',
108
+ },
109
+ sessionId: { type: 'string', description: 'Identifiant de session optionnel.' },
110
+ requestSuggestions: { type: 'boolean', default: false, description: 'Demande des suggestions d amelioration.' },
111
+ requestVerification: { type: 'boolean', default: false, description: 'Active la verification explicite.' },
112
+ containsCalculations: { type: 'boolean', default: false, description: 'Indique la presence de calculs.' },
113
+ generateVisualization: { type: 'boolean', default: false, description: 'Active la visualisation.' },
114
+ help: { type: 'boolean', default: false, description: 'Retourne le guide d utilisation.' },
115
+ },
116
+ },
117
+ });
118
+ }
119
+ return {
120
+ serverInfo: {
121
+ name: 'smart-thinking-mcp',
122
+ title: 'Smart-Thinking',
123
+ version,
124
+ websiteUrl: PROJECT_HOMEPAGE,
125
+ icons: [
126
+ {
127
+ src: PROJECT_ICON,
128
+ mimeType: 'image/png',
129
+ sizes: ['512x512'],
130
+ },
131
+ ],
132
+ },
133
+ tools,
134
+ prompts: [
135
+ {
136
+ name: 'smartthinking-reasoning-plan',
137
+ description: 'Construit un plan de raisonnement testable avant execution.',
138
+ arguments: [
139
+ { name: 'objective', required: true, description: 'Objectif principal.' },
140
+ { name: 'constraints', required: false, description: 'Contraintes.' },
141
+ { name: 'depth', required: false, description: 'Niveau de profondeur (fast|balanced|deep).' },
142
+ ],
143
+ },
144
+ {
145
+ name: 'smartthinking-verify-claim',
146
+ description: 'Genere une checklist de verification factuelle.',
147
+ arguments: [
148
+ { name: 'claim', required: true, description: 'Affirmation a verifier.' },
149
+ ],
150
+ },
151
+ ],
152
+ resources: [
153
+ {
154
+ uri: 'smart-thinking://docs/about',
155
+ name: 'smartthinking-about',
156
+ description: 'Documentation du serveur.',
157
+ },
158
+ {
159
+ uri: 'smart-thinking://runtime/status',
160
+ name: 'smartthinking-runtime-status',
161
+ description: 'Etat runtime du serveur.',
162
+ },
163
+ {
164
+ uriTemplate: 'smart-thinking://sessions/{sessionId}/recent',
165
+ name: 'smartthinking-session-recent',
166
+ description: 'Memoires recentes par session.',
167
+ },
168
+ {
169
+ uriTemplate: 'smart-thinking://memories/{memoryId}',
170
+ name: 'smartthinking-memory-by-id',
171
+ description: 'Memoire complete par identifiant.',
172
+ },
173
+ ],
174
+ };
175
+ }
20
176
  (async () => {
21
177
  const options = parseArgs(process.argv.slice(2));
22
178
  try {
@@ -39,9 +195,9 @@ function parseArgs(argv) {
39
195
  const options = {
40
196
  transport: 'stdio',
41
197
  port: process.env.PORT ? Number(process.env.PORT) : 3000,
42
- host: process.env.HOST ?? '0.0.0.0',
43
- allowOrigins: [],
44
- allowHosts: [],
198
+ host: process.env.HOST ?? '127.0.0.1',
199
+ allowOrigins: parseCsvEnv('SMART_THINKING_ALLOWED_ORIGINS'),
200
+ allowHosts: parseCsvEnv('SMART_THINKING_ALLOWED_HOSTS'),
45
201
  enableSse: true,
46
202
  enableStream: true,
47
203
  mode: defaultMode
@@ -129,12 +285,18 @@ function parseArgs(argv) {
129
285
  if (options.transport !== 'stdio' && !options.enableSse && !options.enableStream) {
130
286
  options.enableStream = true;
131
287
  }
288
+ if (options.allowHosts.length === 0) {
289
+ options.allowHosts = resolveDefaultAllowedHosts(options.host, options.port);
290
+ }
291
+ if (options.allowOrigins.length === 0) {
292
+ options.allowOrigins = resolveDefaultAllowedOrigins(options.host, options.port);
293
+ }
132
294
  return options;
133
295
  }
134
296
  async function startStdIoServer(options) {
135
297
  configureStdoutFiltering();
136
298
  if (options.mode === 'connector') {
137
- console.error('Smart-Thinking: mode connecteur actif (outils search & fetch uniquement)');
299
+ console.info('Smart-Thinking: mode connecteur actif (outils search & fetch uniquement)');
138
300
  }
139
301
  const { server } = (0, smart_thinking_server_1.createSmartThinkingServer)(undefined, {
140
302
  includeSmartThinkingTool: options.mode !== 'connector'
@@ -151,12 +313,16 @@ async function startStdIoServer(options) {
151
313
  async function startHttpServer(options) {
152
314
  const app = (0, express_1.default)();
153
315
  app.use(express_1.default.json({ limit: '4mb' }));
316
+ app.use(createHostValidationMiddleware(options));
154
317
  app.use(createCorsMiddleware(options));
318
+ app.get('/.well-known/mcp/server-card.json', (_req, res) => {
319
+ res.json(buildServerCard(options));
320
+ });
155
321
  if (options.mode === 'connector') {
156
- console.error('Smart-Thinking: mode connecteur actif (outils search & fetch uniquement)');
322
+ console.info('Smart-Thinking: mode connecteur actif (outils search & fetch uniquement)');
157
323
  }
158
324
  const sessions = new Map();
159
- const dnsProtectionEnabled = options.allowHosts.length > 0 || options.allowOrigins.length > 0;
325
+ const dnsProtectionEnabled = true;
160
326
  if (options.enableStream) {
161
327
  app.all('/mcp', async (req, res) => {
162
328
  try {
@@ -319,17 +485,17 @@ async function startHttpServer(options) {
319
485
  });
320
486
  await new Promise((resolve, reject) => {
321
487
  const httpServer = app.listen(options.port, options.host, () => {
322
- console.error(`Smart-Thinking: serveur MCP HTTP lancé sur http://${options.host}:${options.port}`);
488
+ console.info(`Smart-Thinking: serveur MCP HTTP lance sur http://${options.host}:${options.port}`);
323
489
  if (options.enableStream) {
324
- console.error(' • Endpoint streamable HTTP : /mcp');
490
+ console.info(' • Endpoint streamable HTTP : /mcp');
325
491
  }
326
492
  if (options.enableSse) {
327
- console.error(' • Endpoint SSE (legacy) : /sse + /messages');
493
+ console.info(' • Endpoint SSE (legacy) : /sse + /messages');
328
494
  }
329
495
  });
330
496
  httpServer.on('error', reject);
331
497
  const shutdown = async () => {
332
- console.error('Smart-Thinking: arrêt du serveur HTTP en cours...');
498
+ console.info('Smart-Thinking: arret du serveur HTTP en cours...');
333
499
  for (const [sessionId] of sessions) {
334
500
  await cleanupSession(sessions, sessionId);
335
501
  }
@@ -346,17 +512,13 @@ function createCorsMiddleware(options) {
346
512
  return (req, res, next) => {
347
513
  const originHeader = Array.isArray(req.headers.origin) ? req.headers.origin[0] : req.headers.origin;
348
514
  res.header('Vary', 'Origin');
349
- if (options.allowOrigins.length > 0) {
350
- if (originHeader && options.allowOrigins.includes(originHeader)) {
351
- res.header('Access-Control-Allow-Origin', originHeader);
515
+ if (originHeader) {
516
+ if (!options.allowOrigins.includes(originHeader)) {
517
+ res.status(403).json({ error: 'Origin non autorisee' });
518
+ return;
352
519
  }
353
- }
354
- else if (originHeader) {
355
520
  res.header('Access-Control-Allow-Origin', originHeader);
356
521
  }
357
- else {
358
- res.header('Access-Control-Allow-Origin', '*');
359
- }
360
522
  res.header('Access-Control-Allow-Headers', 'Content-Type, MCP-Session-Id');
361
523
  res.header('Access-Control-Expose-Headers', 'Mcp-Session-Id');
362
524
  res.header('Access-Control-Allow-Methods', 'GET,POST,DELETE,OPTIONS');
@@ -367,6 +529,23 @@ function createCorsMiddleware(options) {
367
529
  next();
368
530
  };
369
531
  }
532
+ function createHostValidationMiddleware(options) {
533
+ const allowedHosts = new Set(options.allowHosts.map(host => host.toLowerCase()));
534
+ return (req, res, next) => {
535
+ const hostHeader = Array.isArray(req.headers.host) ? req.headers.host[0] : req.headers.host;
536
+ if (!hostHeader) {
537
+ next();
538
+ return;
539
+ }
540
+ const normalizedHost = hostHeader.toLowerCase();
541
+ const hostOnly = normalizedHost.split(':')[0];
542
+ if (!allowedHosts.has(normalizedHost) && !allowedHosts.has(hostOnly)) {
543
+ res.status(403).json({ error: 'Host non autorise' });
544
+ return;
545
+ }
546
+ next();
547
+ };
548
+ }
370
549
  async function cleanupSession(sessions, sessionId, skipTransportClose = false) {
371
550
  if (!sessionId) {
372
551
  return;
package/build/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -1,12 +1,21 @@
1
1
  import { z } from 'zod';
2
2
  import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
3
  export declare const configSchema: z.ZodDefault<z.ZodObject<{
4
- mode: z.ZodDefault<z.ZodEnum<["full", "connector"]>>;
5
- }, "strip", z.ZodTypeAny, {
6
- mode: "full" | "connector";
7
- }, {
8
- mode?: "full" | "connector" | undefined;
9
- }>>;
4
+ mode: z.ZodDefault<z.ZodEnum<{
5
+ full: "full";
6
+ connector: "connector";
7
+ }>>;
8
+ includePrompts: z.ZodDefault<z.ZodBoolean>;
9
+ includeResources: z.ZodDefault<z.ZodBoolean>;
10
+ enableExternalTools: z.ZodDefault<z.ZodBoolean>;
11
+ logLevel: z.ZodDefault<z.ZodEnum<{
12
+ silent: "silent";
13
+ error: "error";
14
+ warn: "warn";
15
+ info: "info";
16
+ debug: "debug";
17
+ }>>;
18
+ }, z.core.$strip>>;
10
19
  type ConfigSchema = z.infer<typeof configSchema>;
11
20
  interface CreateServerArgs {
12
21
  config?: ConfigSchema;
package/build/index.js CHANGED
@@ -4,17 +4,37 @@ exports.createSmartThinkingServer = exports.configSchema = void 0;
4
4
  exports.default = createServer;
5
5
  const zod_1 = require("zod");
6
6
  const smart_thinking_server_1 = require("./server/smart-thinking-server");
7
- const ModeSchema = zod_1.z.enum(['full', 'connector']).describe('Mode du serveur Smart-Thinking');
7
+ const ModeSchema = zod_1.z.enum(['full', 'connector']).describe('Mode de disponibilite des outils exposees');
8
+ const LogLevelSchema = zod_1.z.enum(['silent', 'error', 'warn', 'info', 'debug']);
8
9
  exports.configSchema = zod_1.z.object({
9
- mode: ModeSchema.default('full')
10
- }).default({ mode: 'full' });
10
+ mode: ModeSchema.default('full').describe('Mode full: smartthinking+search+fetch, mode connector: search+fetch'),
11
+ includePrompts: zod_1.z.boolean().default(true).describe('Expose les prompts MCP du serveur'),
12
+ includeResources: zod_1.z.boolean().default(true).describe('Expose les ressources MCP du serveur'),
13
+ enableExternalTools: zod_1.z.boolean().default(false).describe('Active les integrations externes optionnelles de ToolIntegrator'),
14
+ logLevel: LogLevelSchema.default('info').describe('Niveau de logs runtime pour Smart-Thinking'),
15
+ }).default({
16
+ mode: 'full',
17
+ includePrompts: true,
18
+ includeResources: true,
19
+ enableExternalTools: false,
20
+ logLevel: 'info',
21
+ });
11
22
  function resolveServerOptions(config) {
12
23
  return {
13
- includeSmartThinkingTool: config.mode !== 'connector'
24
+ includeSmartThinkingTool: config.mode !== 'connector',
25
+ includePrompts: config.includePrompts,
26
+ includeResources: config.includeResources,
14
27
  };
15
28
  }
29
+ function applyRuntimeConfig(config) {
30
+ process.env.SMART_THINKING_ENABLE_EXTERNAL_TOOLS = config.enableExternalTools ? 'true' : 'false';
31
+ if (!process.env.SMART_THINKING_LOG_LEVEL) {
32
+ process.env.SMART_THINKING_LOG_LEVEL = config.logLevel;
33
+ }
34
+ }
16
35
  function createServer({ config } = {}) {
17
36
  const resolvedConfig = exports.configSchema.parse(config ?? {});
37
+ applyRuntimeConfig(resolvedConfig);
18
38
  const options = resolveServerOptions(resolvedConfig);
19
39
  const { server } = (0, smart_thinking_server_1.createSmartThinkingServer)(undefined, options);
20
40
  return server.server;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAsBA,+BAKC;AA3BD,6BAAwB;AAExB,0EAA4G;AAE5G,MAAM,UAAU,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;AAE/E,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;CACjC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAQ7B,SAAS,oBAAoB,CAAC,MAAoB;IAChD,OAAO;QACL,wBAAwB,EAAE,MAAM,CAAC,IAAI,KAAK,WAAW;KACtD,CAAC;AACJ,CAAC;AAED,SAAwB,YAAY,CAAC,EAAE,MAAM,KAAuB,EAAE;IACpE,MAAM,cAAc,GAAG,oBAAY,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,iDAAyB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,wEAA2E;AAAlE,kIAAA,yBAAyB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AA2CA,+BAOC;AAlDD,6BAAwB;AAExB,0EAA4G;AAE5G,MAAM,UAAU,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC;AACvG,MAAM,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/D,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,qEAAqE,CAAC;IAChH,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACvF,gBAAgB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC5F,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,iEAAiE,CAAC;IAC3H,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;CAChG,CAAC,CAAC,OAAO,CAAC;IACT,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,KAAK;IAC1B,QAAQ,EAAE,MAAM;CACjB,CAAC,CAAC;AAQH,SAAS,oBAAoB,CAAC,MAAoB;IAChD,OAAO;QACL,wBAAwB,EAAE,MAAM,CAAC,IAAI,KAAK,WAAW;QACrD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAoB;IAC9C,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAEjG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzD,CAAC;AACH,CAAC;AAED,SAAwB,YAAY,CAAC,EAAE,MAAM,KAAuB,EAAE;IACpE,MAAM,cAAc,GAAG,oBAAY,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACxD,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,iDAAyB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,wEAA2E;AAAlE,kIAAA,yBAAyB,OAAA"}
@@ -10,6 +10,8 @@ export declare class MemoryManager {
10
10
  private dataDir;
11
11
  private memoriesDir;
12
12
  private knowledgeFilePath;
13
+ private initialization;
14
+ private saveQueue;
13
15
  constructor(similarityEngine?: SimilarityEngine);
14
16
  /**
15
17
  * Fonction de log pour le débogage uniquement
@@ -17,6 +19,9 @@ export declare class MemoryManager {
17
19
  */
18
20
  private debugLog;
19
21
  private requestSave;
22
+ private enqueueSave;
23
+ private writeFileAtomic;
24
+ private writeJsonAtomic;
20
25
  /**
21
26
  * Génère un identifiant unique
22
27
  */
@@ -52,6 +57,7 @@ export declare class MemoryManager {
52
57
  /**
53
58
  * Sauvegarde l'état actuel dans le stockage persistant
54
59
  */
60
+ private saveToStorageInternal;
55
61
  private saveToStorage;
56
62
  /**
57
63
  * Ajoute un élément à la mémoire
@@ -10,6 +10,7 @@ const path_utils_1 = require("./utils/path-utils");
10
10
  const persistence_utils_1 = require("./utils/persistence-utils");
11
11
  // Constante pour contrôler l'affichage des logs de débogage
12
12
  const DEBUG_MODE = false;
13
+ const isTestEnvironment = process.env.NODE_ENV === 'test';
13
14
  /**
14
15
  * Classe qui gère la mémoire persistante des sessions précédentes
15
16
  */
@@ -21,6 +22,8 @@ class MemoryManager {
21
22
  dataDir;
22
23
  memoriesDir;
23
24
  knowledgeFilePath;
25
+ initialization;
26
+ saveQueue = Promise.resolve();
24
27
  constructor(similarityEngine) {
25
28
  this.similarityEngine = similarityEngine;
26
29
  // Initialiser les chemins de fichiers - utiliser des chemins absolus
@@ -33,7 +36,7 @@ class MemoryManager {
33
36
  - memoriesDir: ${this.memoriesDir}
34
37
  - knowledgeFilePath: ${this.knowledgeFilePath}`);
35
38
  // Charger les mémoires et la base de connaissances depuis le stockage persistant
36
- this.loadFromStorage();
39
+ this.initialization = this.loadFromStorage();
37
40
  }
38
41
  /**
39
42
  * Fonction de log pour le débogage uniquement
@@ -45,10 +48,36 @@ class MemoryManager {
45
48
  }
46
49
  }
47
50
  requestSave() {
48
- this.saveToStorage().catch(error => {
51
+ if (isTestEnvironment) {
52
+ return;
53
+ }
54
+ this.enqueueSave().catch(error => {
49
55
  console.error('Smart-Thinking: Échec de la sauvegarde asynchrone:', error);
50
56
  });
51
57
  }
58
+ enqueueSave() {
59
+ this.saveQueue = this.saveQueue
60
+ .catch(() => undefined)
61
+ .then(async () => {
62
+ await this.initialization.catch(() => undefined);
63
+ await this.saveToStorageInternal();
64
+ });
65
+ return this.saveQueue;
66
+ }
67
+ async writeFileAtomic(filePath, content) {
68
+ const tempPath = `${filePath}.tmp-${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`;
69
+ try {
70
+ await fs_1.promises.writeFile(tempPath, content, 'utf8');
71
+ await fs_1.promises.rename(tempPath, filePath);
72
+ }
73
+ catch (error) {
74
+ await fs_1.promises.unlink(tempPath).catch(() => undefined);
75
+ throw error;
76
+ }
77
+ }
78
+ async writeJsonAtomic(filePath, payload) {
79
+ await this.writeFileAtomic(filePath, JSON.stringify(payload, null, 2));
80
+ }
52
81
  /**
53
82
  * Génère un identifiant unique
54
83
  */
@@ -278,7 +307,7 @@ class MemoryManager {
278
307
  /**
279
308
  * Sauvegarde l'état actuel dans le stockage persistant
280
309
  */
281
- async saveToStorage() {
310
+ async saveToStorageInternal() {
282
311
  try {
283
312
  // S'assurer que les répertoires existent
284
313
  await this.ensureDirectoriesExist();
@@ -296,11 +325,11 @@ class MemoryManager {
296
325
  // Sauvegarder chaque groupe de mémoires dans un fichier par session
297
326
  for (const [sessionId, memories] of memoriesBySession.entries()) {
298
327
  const filePath = path_1.default.join(this.memoriesDir, `${sessionId}.json`);
299
- await fs_1.promises.writeFile(filePath, JSON.stringify(memories, null, 2), 'utf8');
328
+ await this.writeJsonAtomic(filePath, memories);
300
329
  }
301
330
  // Sauvegarder la base de connaissances
302
331
  const knowledgePayload = (0, persistence_utils_1.sanitizeKnowledgeBase)(Object.fromEntries(this.knowledgeBase));
303
- await fs_1.promises.writeFile(this.knowledgeFilePath, JSON.stringify(knowledgePayload, null, 2), 'utf8');
332
+ await this.writeJsonAtomic(this.knowledgeFilePath, knowledgePayload);
304
333
  this.debugLog('Données sauvegardées avec succès');
305
334
  }
306
335
  catch (error) {
@@ -311,6 +340,9 @@ class MemoryManager {
311
340
  this.debugLog('Base de connaissances qui aurait dû être sauvegardée: ' + this.knowledgeBase.size + ' éléments');
312
341
  }
313
342
  }
343
+ async saveToStorage() {
344
+ await this.enqueueSave();
345
+ }
314
346
  /**
315
347
  * Ajoute un élément à la mémoire
316
348
  *
@@ -523,7 +555,7 @@ class MemoryManager {
523
555
  try {
524
556
  await this.ensureDirectoriesExist(); // Assure que le répertoire data existe
525
557
  const filePath = path_1.default.join(this.dataDir, `graph_state_${sessionId}.json`);
526
- await fs_1.promises.writeFile(filePath, graphStateJson, 'utf8');
558
+ await this.writeFileAtomic(filePath, graphStateJson);
527
559
  this.debugLog(`État du graphe pour la session ${sessionId} sauvegardé dans ${filePath}`);
528
560
  }
529
561
  catch (error) {