@miller-tech/uap 1.5.4 → 1.5.6

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 (70) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/bin/cli.js +6 -0
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/bin/llama-server-optimize.js +0 -0
  5. package/dist/bin/policy.js +0 -0
  6. package/dist/bin/tool-calls.js +0 -0
  7. package/dist/cli/dashboard.d.ts +1 -0
  8. package/dist/cli/dashboard.d.ts.map +1 -1
  9. package/dist/cli/dashboard.js.map +1 -1
  10. package/dist/memory/active-context.d.ts +65 -0
  11. package/dist/memory/active-context.d.ts.map +1 -0
  12. package/dist/memory/active-context.js +126 -0
  13. package/dist/memory/active-context.js.map +1 -0
  14. package/dist/memory/dedup-detector.d.ts +57 -0
  15. package/dist/memory/dedup-detector.d.ts.map +1 -0
  16. package/dist/memory/dedup-detector.js +107 -0
  17. package/dist/memory/dedup-detector.js.map +1 -0
  18. package/dist/memory/dedup-memory.d.ts +89 -0
  19. package/dist/memory/dedup-memory.d.ts.map +1 -0
  20. package/dist/memory/dedup-memory.js +173 -0
  21. package/dist/memory/dedup-memory.js.map +1 -0
  22. package/dist/memory/merge-claude-md.d.ts +45 -0
  23. package/dist/memory/merge-claude-md.d.ts.map +1 -0
  24. package/dist/memory/merge-claude-md.js +118 -0
  25. package/dist/memory/merge-claude-md.js.map +1 -0
  26. package/dist/memory/patterns.d.ts +37 -0
  27. package/dist/memory/patterns.d.ts.map +1 -0
  28. package/dist/memory/patterns.js +81 -0
  29. package/dist/memory/patterns.js.map +1 -0
  30. package/dist/memory/semantic-edge-graph.d.ts +86 -0
  31. package/dist/memory/semantic-edge-graph.d.ts.map +1 -0
  32. package/dist/memory/semantic-edge-graph.js +168 -0
  33. package/dist/memory/semantic-edge-graph.js.map +1 -0
  34. package/dist/memory/semantic-retrieval.d.ts +70 -0
  35. package/dist/memory/semantic-retrieval.d.ts.map +1 -0
  36. package/dist/memory/semantic-retrieval.js +112 -0
  37. package/dist/memory/semantic-retrieval.js.map +1 -0
  38. package/dist/memory/smart-consolidator.d.ts +53 -0
  39. package/dist/memory/smart-consolidator.d.ts.map +1 -0
  40. package/dist/memory/smart-consolidator.js +144 -0
  41. package/dist/memory/smart-consolidator.js.map +1 -0
  42. package/dist/memory/view-memory.d.ts +80 -0
  43. package/dist/memory/view-memory.d.ts.map +1 -0
  44. package/dist/memory/view-memory.js +130 -0
  45. package/dist/memory/view-memory.js.map +1 -0
  46. package/dist/memory/wrapped-memory.d.ts +77 -0
  47. package/dist/memory/wrapped-memory.d.ts.map +1 -0
  48. package/dist/memory/wrapped-memory.js +127 -0
  49. package/dist/memory/wrapped-memory.js.map +1 -0
  50. package/dist/telemetry/session-telemetry.d.ts +5 -0
  51. package/dist/telemetry/session-telemetry.d.ts.map +1 -1
  52. package/dist/telemetry/session-telemetry.js +243 -0
  53. package/dist/telemetry/session-telemetry.js.map +1 -1
  54. package/dist/utils/adaptive-cache.d.ts +67 -0
  55. package/dist/utils/adaptive-cache.d.ts.map +1 -0
  56. package/dist/utils/adaptive-cache.js +149 -0
  57. package/dist/utils/adaptive-cache.js.map +1 -0
  58. package/dist/utils/concurrency.d.ts +33 -0
  59. package/dist/utils/concurrency.d.ts.map +1 -0
  60. package/dist/utils/concurrency.js +88 -0
  61. package/dist/utils/concurrency.js.map +1 -0
  62. package/dist/utils/file-discovery.d.ts +38 -0
  63. package/dist/utils/file-discovery.d.ts.map +1 -0
  64. package/dist/utils/file-discovery.js +100 -0
  65. package/dist/utils/file-discovery.js.map +1 -0
  66. package/dist/utils/performance-monitor.d.ts +52 -0
  67. package/dist/utils/performance-monitor.d.ts.map +1 -0
  68. package/dist/utils/performance-monitor.js +103 -0
  69. package/dist/utils/performance-monitor.js.map +1 -0
  70. package/package.json +5 -3
@@ -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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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Performance monitoring utilities for measuring and analyzing operation metrics
3
+ */
4
+ export interface PerformanceMetrics {
5
+ avg: number;
6
+ p50: number;
7
+ p95: number;
8
+ p99: number;
9
+ min: number;
10
+ max: number;
11
+ count: number;
12
+ }
13
+ /**
14
+ * Monitor performance of operations with percentile tracking
15
+ */
16
+ export declare class PerformanceMonitor {
17
+ private metrics;
18
+ private readonly maxSamples;
19
+ constructor(options?: {
20
+ maxSamples?: number;
21
+ });
22
+ /**
23
+ * Measure and record duration of an async operation
24
+ */
25
+ measure<T>(name: string, fn: () => Promise<T>): Promise<T>;
26
+ /**
27
+ * Record a metric directly
28
+ */
29
+ record(metric: string, duration: number): void;
30
+ /**
31
+ * Get statistics for a metric
32
+ */
33
+ getStats(metric: string): PerformanceMetrics | null;
34
+ /**
35
+ * Get all metric names
36
+ */
37
+ getMetrics(): string[];
38
+ /**
39
+ * Clear all metrics
40
+ */
41
+ clear(): void;
42
+ /**
43
+ * Export metrics as JSON
44
+ */
45
+ exportMetrics(): Record<string, PerformanceMetrics>;
46
+ }
47
+ export declare function getPerformanceMonitor(): PerformanceMonitor;
48
+ /**
49
+ * Helper to wrap any function with performance monitoring
50
+ */
51
+ export declare function monitorFunction<T extends (...args: unknown[]) => Promise<unknown>>(fn: T, name?: string): T;
52
+ //# sourceMappingURL=performance-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-monitor.d.ts","sourceRoot":"","sources":["../../src/utils/performance-monitor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAI7C;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAUhE;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAa9C;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAkBnD;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC;CAYpD;AAOD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAK1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAChF,EAAE,EAAE,CAAC,EACL,IAAI,CAAC,EAAE,MAAM,GACZ,CAAC,CAOH"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Performance monitoring utilities for measuring and analyzing operation metrics
3
+ */
4
+ /**
5
+ * Monitor performance of operations with percentile tracking
6
+ */
7
+ export class PerformanceMonitor {
8
+ metrics = new Map();
9
+ maxSamples;
10
+ constructor(options) {
11
+ this.maxSamples = options?.maxSamples ?? 1000;
12
+ }
13
+ /**
14
+ * Measure and record duration of an async operation
15
+ */
16
+ async measure(name, fn) {
17
+ const start = performance.now();
18
+ try {
19
+ return await fn();
20
+ }
21
+ finally {
22
+ const duration = performance.now() - start;
23
+ this.record(name, duration);
24
+ }
25
+ }
26
+ /**
27
+ * Record a metric directly
28
+ */
29
+ record(metric, duration) {
30
+ const entries = this.metrics.get(metric) || [];
31
+ entries.push(duration);
32
+ // Keep last N samples
33
+ if (entries.length > this.maxSamples) {
34
+ entries.shift();
35
+ }
36
+ this.metrics.set(metric, entries);
37
+ }
38
+ /**
39
+ * Get statistics for a metric
40
+ */
41
+ getStats(metric) {
42
+ const entries = this.metrics.get(metric);
43
+ if (!entries || entries.length === 0)
44
+ return null;
45
+ const sorted = [...entries].sort((a, b) => a - b);
46
+ const count = sorted.length;
47
+ return {
48
+ avg: sorted.reduce((a, b) => a + b, 0) / count,
49
+ p50: sorted[Math.floor(count * 0.5)] ?? 0,
50
+ p95: sorted[Math.floor(count * 0.95)] ?? 0,
51
+ p99: sorted[Math.floor(count * 0.99)] ?? 0,
52
+ min: sorted[0] ?? 0,
53
+ max: sorted[count - 1] ?? 0,
54
+ count,
55
+ };
56
+ }
57
+ /**
58
+ * Get all metric names
59
+ */
60
+ getMetrics() {
61
+ return [...this.metrics.keys()];
62
+ }
63
+ /**
64
+ * Clear all metrics
65
+ */
66
+ clear() {
67
+ this.metrics.clear();
68
+ }
69
+ /**
70
+ * Export metrics as JSON
71
+ */
72
+ exportMetrics() {
73
+ const result = {};
74
+ for (const metric of this.metrics.keys()) {
75
+ const stats = this.getStats(metric);
76
+ if (stats) {
77
+ result[metric] = stats;
78
+ }
79
+ }
80
+ return result;
81
+ }
82
+ }
83
+ /**
84
+ * Global performance monitor instance
85
+ */
86
+ let globalMonitor = null;
87
+ export function getPerformanceMonitor() {
88
+ if (!globalMonitor) {
89
+ globalMonitor = new PerformanceMonitor();
90
+ }
91
+ return globalMonitor;
92
+ }
93
+ /**
94
+ * Helper to wrap any function with performance monitoring
95
+ */
96
+ export function monitorFunction(fn, name) {
97
+ const monitor = getPerformanceMonitor();
98
+ const metricName = (name ?? fn.name) || 'anonymous';
99
+ return (async (...args) => {
100
+ return monitor.measure(metricName, async () => await fn(...args));
101
+ });
102
+ }
103
+ //# sourceMappingURL=performance-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance-monitor.js","sourceRoot":"","sources":["../../src/utils/performance-monitor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miller-tech/uap",
3
- "version": "1.5.4",
3
+ "version": "1.5.6",
4
4
  "description": "Autonomous AI agent memory system with CLAUDE.md protocol enforcement",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -34,9 +34,11 @@
34
34
  "version:patch": "bash scripts/version-bump.sh patch",
35
35
  "version:minor": "bash scripts/version-bump.sh minor",
36
36
  "version:major": "bash scripts/version-bump.sh major",
37
+ "install:hooks": "bash scripts/hooks/install-hooks.sh",
38
+ "verify:tests": "bash scripts/verify-test-count.sh",
37
39
  "update-uap": "bash scripts/update-uap-compliance.sh",
38
- "verify-uap": "bash scripts/verify-compliance.sh",
39
- "check-claude": "bash scripts/verify-compliance.sh"
40
+ "verify-uap": "bash scripts/maintenance/verify-compliance.sh",
41
+ "check-claude": "bash scripts/maintenance/verify-compliance.sh"
40
42
  },
41
43
  "keywords": [
42
44
  "claude",