@miller-tech/uap 1.5.4 → 1.5.5
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/.tsbuildinfo +1 -0
- package/dist/telemetry/session-telemetry.d.ts +5 -0
- package/dist/telemetry/session-telemetry.d.ts.map +1 -1
- package/dist/telemetry/session-telemetry.js +243 -0
- package/dist/telemetry/session-telemetry.js.map +1 -1
- package/dist/utils/concurrency.d.ts +33 -0
- package/dist/utils/concurrency.d.ts.map +1 -0
- package/dist/utils/concurrency.js +88 -0
- package/dist/utils/concurrency.js.map +1 -0
- package/dist/utils/file-discovery.d.ts +38 -0
- package/dist/utils/file-discovery.d.ts.map +1 -0
- package/dist/utils/file-discovery.js +100 -0
- package/dist/utils/file-discovery.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface FileEntry<T> {
|
|
2
|
+
name: string;
|
|
3
|
+
path: string;
|
|
4
|
+
metadata: T;
|
|
5
|
+
source: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DiscoveryOptions {
|
|
8
|
+
/** TTL for file cache in milliseconds (default: 60s) */
|
|
9
|
+
cacheTTL?: number;
|
|
10
|
+
/** Custom error handler */
|
|
11
|
+
onError?: (error: Error, path: string) => void;
|
|
12
|
+
}
|
|
13
|
+
export interface CacheEntry<T> {
|
|
14
|
+
data: FileEntry<T>[];
|
|
15
|
+
timestamp: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Discover and parse files from a directory with caching
|
|
19
|
+
* @param baseDir - Base directory to search
|
|
20
|
+
* @param filePattern - Function to filter files by name
|
|
21
|
+
* @param parser - Function to parse file content and extract metadata
|
|
22
|
+
* @param options - Configuration options
|
|
23
|
+
* @returns Array of file entries with parsed metadata
|
|
24
|
+
*/
|
|
25
|
+
export declare function discoverFiles<T>(baseDir: string, filePattern: (name: string) => boolean, parser: (content: string) => T | null, options?: DiscoveryOptions): Promise<FileEntry<T>[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Discover files from subdirectories (e.g., skills in folders)
|
|
28
|
+
*/
|
|
29
|
+
export declare function discoverFilesFromSubdirs<T>(baseDir: string, subdirPattern: (name: string) => boolean, filePattern: (name: string) => boolean, parser: (content: string) => T | null, options?: DiscoveryOptions): Promise<FileEntry<T>[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Clear cache for a specific discovery operation
|
|
32
|
+
*/
|
|
33
|
+
export declare function clearFileCache(baseDir: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Clear all file discovery caches
|
|
36
|
+
*/
|
|
37
|
+
export declare function clearAllFileCaches(): void;
|
|
38
|
+
//# sourceMappingURL=file-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/file-discovery.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACtC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,EACrC,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAoDzB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACxC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACtC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,EACrC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAyBzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAOpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { readdir, readFile } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
// Simple in-memory cache for file discovery
|
|
4
|
+
const fileCache = new Map();
|
|
5
|
+
/**
|
|
6
|
+
* Discover and parse files from a directory with caching
|
|
7
|
+
* @param baseDir - Base directory to search
|
|
8
|
+
* @param filePattern - Function to filter files by name
|
|
9
|
+
* @param parser - Function to parse file content and extract metadata
|
|
10
|
+
* @param options - Configuration options
|
|
11
|
+
* @returns Array of file entries with parsed metadata
|
|
12
|
+
*/
|
|
13
|
+
export async function discoverFiles(baseDir, filePattern, parser, options = {}) {
|
|
14
|
+
const { cacheTTL = 60000, // 1 minute default
|
|
15
|
+
onError = () => { }, } = options;
|
|
16
|
+
const cacheKey = `${baseDir}:${filePattern.toString()}`;
|
|
17
|
+
const cached = fileCache.get(cacheKey);
|
|
18
|
+
// Return cached data if still valid
|
|
19
|
+
if (cached && Date.now() - cached.timestamp < cacheTTL) {
|
|
20
|
+
return cached.data;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const entries = await readdir(baseDir, { withFileTypes: true });
|
|
24
|
+
const results = [];
|
|
25
|
+
for (const entry of entries) {
|
|
26
|
+
if (!entry.isFile() || !filePattern(entry.name))
|
|
27
|
+
continue;
|
|
28
|
+
const filePath = join(baseDir, entry.name);
|
|
29
|
+
try {
|
|
30
|
+
const content = await readFile(filePath, 'utf-8');
|
|
31
|
+
const metadata = parser(content);
|
|
32
|
+
if (metadata) {
|
|
33
|
+
results.push({
|
|
34
|
+
name: entry.name,
|
|
35
|
+
path: filePath,
|
|
36
|
+
metadata,
|
|
37
|
+
source: baseDir,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
43
|
+
onError(err, filePath);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Update cache
|
|
47
|
+
fileCache.set(cacheKey, {
|
|
48
|
+
data: results,
|
|
49
|
+
timestamp: Date.now(),
|
|
50
|
+
});
|
|
51
|
+
return results;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
55
|
+
onError(err, baseDir);
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Discover files from subdirectories (e.g., skills in folders)
|
|
61
|
+
*/
|
|
62
|
+
export async function discoverFilesFromSubdirs(baseDir, subdirPattern, filePattern, parser, options) {
|
|
63
|
+
const results = [];
|
|
64
|
+
try {
|
|
65
|
+
const entries = await readdir(baseDir, { withFileTypes: true });
|
|
66
|
+
for (const entry of entries) {
|
|
67
|
+
if (!entry.isDirectory() || !subdirPattern(entry.name))
|
|
68
|
+
continue;
|
|
69
|
+
const dirPath = join(baseDir, entry.name);
|
|
70
|
+
const subdirResults = await discoverFiles(dirPath, filePattern, parser, options);
|
|
71
|
+
results.push(...subdirResults.map((r) => ({
|
|
72
|
+
...r,
|
|
73
|
+
source: join(baseDir, entry.name),
|
|
74
|
+
})));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
79
|
+
options?.onError?.(err, baseDir);
|
|
80
|
+
}
|
|
81
|
+
return results;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Clear cache for a specific discovery operation
|
|
85
|
+
*/
|
|
86
|
+
export function clearFileCache(baseDir) {
|
|
87
|
+
const patterns = [...fileCache.keys()];
|
|
88
|
+
patterns.forEach((key) => {
|
|
89
|
+
if (key.startsWith(`${baseDir}:`)) {
|
|
90
|
+
fileCache.delete(key);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Clear all file discovery caches
|
|
96
|
+
*/
|
|
97
|
+
export function clearAllFileCaches() {
|
|
98
|
+
fileCache.clear();
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=file-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-discovery.js","sourceRoot":"","sources":["../../src/utils/file-discovery.ts"],"names":[],"mappings":"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"}
|