snow-flow 8.37.25 → 8.37.26
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/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +10 -73
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -11
- package/dist/cli.js.map +1 -1
- package/dist/utils/auto-update-snow-code.d.ts +28 -9
- package/dist/utils/auto-update-snow-code.d.ts.map +1 -1
- package/dist/utils/auto-update-snow-code.js +195 -176
- package/dist/utils/auto-update-snow-code.js.map +1 -1
- package/dist/utils/config-cache.d.ts +50 -0
- package/dist/utils/config-cache.d.ts.map +1 -0
- package/dist/utils/config-cache.js +153 -0
- package/dist/utils/config-cache.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Config Cache Utility
|
|
4
|
+
* Caches frequently accessed config files in memory to speed up swarm startup
|
|
5
|
+
*
|
|
6
|
+
* Benefits:
|
|
7
|
+
* - Avoids repeated disk reads for config files
|
|
8
|
+
* - In-memory cache with TTL
|
|
9
|
+
* - Automatic invalidation on file changes (via mtime check)
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.CONFIG_PATHS = void 0;
|
|
16
|
+
exports.loadJsonConfig = loadJsonConfig;
|
|
17
|
+
exports.loadSnowCodeConfig = loadSnowCodeConfig;
|
|
18
|
+
exports.loadMcpConfig = loadMcpConfig;
|
|
19
|
+
exports.clearConfigCache = clearConfigCache;
|
|
20
|
+
exports.invalidateConfig = invalidateConfig;
|
|
21
|
+
exports.getCacheStats = getCacheStats;
|
|
22
|
+
const fs_1 = require("fs");
|
|
23
|
+
const path_1 = require("path");
|
|
24
|
+
const os_1 = __importDefault(require("os"));
|
|
25
|
+
// In-memory cache
|
|
26
|
+
const configCache = new Map();
|
|
27
|
+
// Cache TTL - configs are cached for 5 minutes (but invalidated if file changes)
|
|
28
|
+
const CACHE_TTL_MS = 5 * 60 * 1000;
|
|
29
|
+
/**
|
|
30
|
+
* Get file modification time (fast stat call)
|
|
31
|
+
*/
|
|
32
|
+
function getFileMtime(filePath) {
|
|
33
|
+
try {
|
|
34
|
+
const stats = (0, fs_1.statSync)(filePath);
|
|
35
|
+
return stats.mtimeMs;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if cache entry is valid
|
|
43
|
+
*/
|
|
44
|
+
function isCacheValid(entry, filePath) {
|
|
45
|
+
if (!entry)
|
|
46
|
+
return false;
|
|
47
|
+
// Check TTL
|
|
48
|
+
const age = Date.now() - entry.loadedAt;
|
|
49
|
+
if (age > CACHE_TTL_MS)
|
|
50
|
+
return false;
|
|
51
|
+
// Check if file was modified
|
|
52
|
+
const currentMtime = getFileMtime(filePath);
|
|
53
|
+
if (currentMtime === null)
|
|
54
|
+
return false;
|
|
55
|
+
if (currentMtime !== entry.mtime)
|
|
56
|
+
return false;
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Load and cache a JSON config file
|
|
61
|
+
*/
|
|
62
|
+
function loadJsonConfig(filePath) {
|
|
63
|
+
// Check cache first
|
|
64
|
+
const cached = configCache.get(filePath);
|
|
65
|
+
if (isCacheValid(cached, filePath)) {
|
|
66
|
+
return cached.data;
|
|
67
|
+
}
|
|
68
|
+
// Load from disk
|
|
69
|
+
try {
|
|
70
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const content = (0, fs_1.readFileSync)(filePath, 'utf8');
|
|
74
|
+
const data = JSON.parse(content);
|
|
75
|
+
const mtime = getFileMtime(filePath);
|
|
76
|
+
// Store in cache
|
|
77
|
+
if (mtime !== null) {
|
|
78
|
+
configCache.set(filePath, {
|
|
79
|
+
data,
|
|
80
|
+
mtime,
|
|
81
|
+
loadedAt: Date.now()
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return data;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Pre-defined config paths for snow-flow/snow-code
|
|
92
|
+
*/
|
|
93
|
+
exports.CONFIG_PATHS = {
|
|
94
|
+
// Global snow-code config
|
|
95
|
+
globalSnowCodeConfig: (0, path_1.join)(os_1.default.homedir(), '.snow-code', 'snow-code.json'),
|
|
96
|
+
globalSnowCodeConfigAlt: (0, path_1.join)(os_1.default.homedir(), '.snow-code', 'config.json'),
|
|
97
|
+
// Global snow-flow config
|
|
98
|
+
globalSnowFlowConfig: (0, path_1.join)(os_1.default.homedir(), '.config', 'snow-code', 'config.json'),
|
|
99
|
+
// Local configs (relative to cwd)
|
|
100
|
+
localSnowCodeConfig: (cwd = process.cwd()) => (0, path_1.join)(cwd, '.snow-code', 'snow-code.json'),
|
|
101
|
+
localSnowCodeConfigAlt: (cwd = process.cwd()) => (0, path_1.join)(cwd, '.snow-code', 'config.json'),
|
|
102
|
+
localMcpConfig: (cwd = process.cwd()) => (0, path_1.join)(cwd, '.mcp.json'),
|
|
103
|
+
// Enterprise config
|
|
104
|
+
enterpriseCacheDir: (0, path_1.join)(os_1.default.homedir(), '.snow-flow', 'cache'),
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Load snow-code config with fallback paths
|
|
108
|
+
* Tries multiple locations and returns the first valid config
|
|
109
|
+
*/
|
|
110
|
+
function loadSnowCodeConfig(cwd = process.cwd()) {
|
|
111
|
+
const paths = [
|
|
112
|
+
exports.CONFIG_PATHS.localSnowCodeConfig(cwd),
|
|
113
|
+
exports.CONFIG_PATHS.localSnowCodeConfigAlt(cwd),
|
|
114
|
+
exports.CONFIG_PATHS.globalSnowCodeConfig,
|
|
115
|
+
exports.CONFIG_PATHS.globalSnowCodeConfigAlt,
|
|
116
|
+
exports.CONFIG_PATHS.globalSnowFlowConfig,
|
|
117
|
+
];
|
|
118
|
+
for (const path of paths) {
|
|
119
|
+
const config = loadJsonConfig(path);
|
|
120
|
+
if (config) {
|
|
121
|
+
return config;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Load MCP config (.mcp.json)
|
|
128
|
+
*/
|
|
129
|
+
function loadMcpConfig(cwd = process.cwd()) {
|
|
130
|
+
return loadJsonConfig(exports.CONFIG_PATHS.localMcpConfig(cwd));
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Clear all cached configs (useful for testing or forced refresh)
|
|
134
|
+
*/
|
|
135
|
+
function clearConfigCache() {
|
|
136
|
+
configCache.clear();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Clear a specific cached config
|
|
140
|
+
*/
|
|
141
|
+
function invalidateConfig(filePath) {
|
|
142
|
+
configCache.delete(filePath);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get cache statistics (for debugging)
|
|
146
|
+
*/
|
|
147
|
+
function getCacheStats() {
|
|
148
|
+
return {
|
|
149
|
+
entries: configCache.size,
|
|
150
|
+
paths: Array.from(configCache.keys())
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=config-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-cache.js","sourceRoot":"","sources":["../../src/utils/config-cache.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "snow-flow",
|
|
3
|
-
"version": "8.37.
|
|
3
|
+
"version": "8.37.26",
|
|
4
4
|
"description": "ServiceNow development with SnowCode - 75+ LLM providers (Claude, GPT, Gemini, Llama, Mistral, DeepSeek, Groq, Ollama) • 395 Optimized Tools • 2 MCP Servers • Multi-agent orchestration • Use ANY AI coding assistant (ML tools moved to Enterprise)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|