@defai.digital/ax-cli 0.1.1 → 0.2.2
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/README.md +24 -16
- package/automatosx.config.json +333 -0
- package/dist/agent/grok-agent.d.ts +7 -1
- package/dist/agent/grok-agent.js +22 -9
- package/dist/agent/grok-agent.js.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/constants.d.ts +67 -1
- package/dist/constants.js +57 -1
- package/dist/constants.js.map +1 -1
- package/dist/grok/client.d.ts +133 -2
- package/dist/grok/client.js +173 -16
- package/dist/grok/client.js.map +1 -1
- package/dist/grok/types.d.ts +291 -0
- package/dist/grok/types.js +127 -0
- package/dist/grok/types.js.map +1 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/config.d.ts +1 -1
- package/dist/mcp/config.js +28 -5
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/transports.d.ts +6 -3
- package/dist/mcp/transports.js +18 -12
- package/dist/mcp/transports.js.map +1 -1
- package/dist/schemas/api-schemas.d.ts +569 -0
- package/dist/schemas/api-schemas.js +117 -0
- package/dist/schemas/api-schemas.js.map +1 -0
- package/dist/schemas/confirmation-schemas.d.ts +60 -0
- package/dist/schemas/confirmation-schemas.js +41 -0
- package/dist/schemas/confirmation-schemas.js.map +1 -0
- package/dist/schemas/index-unified.d.ts +12 -0
- package/dist/schemas/index-unified.js +17 -0
- package/dist/schemas/index-unified.js.map +1 -0
- package/dist/schemas/index.d.ts +8 -8
- package/dist/schemas/index.js +5 -4
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/mcp-schemas.d.ts +171 -0
- package/dist/schemas/mcp-schemas.js +77 -0
- package/dist/schemas/mcp-schemas.js.map +1 -0
- package/dist/schemas/tool-schemas.d.ts +2 -2
- package/dist/tools/search.js +2 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.js +6 -0
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/ui/components/api-key-input.js +2 -2
- package/dist/ui/components/api-key-input.js.map +1 -1
- package/dist/ui/components/chat-history.js +2 -0
- package/dist/ui/components/chat-history.js.map +1 -1
- package/dist/ui/components/chat-interface.js +31 -1
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/mcp-status.js +1 -1
- package/dist/ui/components/mcp-status.js.map +1 -1
- package/dist/ui/components/reasoning-display.d.ts +109 -0
- package/dist/ui/components/reasoning-display.js +110 -0
- package/dist/ui/components/reasoning-display.js.map +1 -0
- package/dist/ui/shared/max-sized-box.js +1 -1
- package/dist/ui/shared/max-sized-box.js.map +1 -1
- package/dist/utils/cache.d.ts +75 -0
- package/dist/utils/cache.js +137 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/confirmation-service.js +2 -2
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/index.d.ts +13 -0
- package/dist/utils/index.js +23 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/path-validator.d.ts +30 -0
- package/dist/utils/path-validator.js +67 -0
- package/dist/utils/path-validator.js.map +1 -0
- package/dist/utils/performance.d.ts +72 -0
- package/dist/utils/performance.js +114 -0
- package/dist/utils/performance.js.map +1 -0
- package/dist/utils/settings-manager.js +2 -2
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/token-counter.d.ts +8 -1
- package/dist/utils/token-counter.js +11 -10
- package/dist/utils/token-counter.js.map +1 -1
- package/eslint.config.js +60 -0
- package/package.json +6 -2
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic LRU Cache implementation for performance optimization
|
|
3
|
+
* Provides consistent caching across the application
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const cache = new LRUCache<string, number>({ maxSize: 100 });
|
|
8
|
+
* cache.set('key', 42);
|
|
9
|
+
* const value = cache.get('key'); // 42
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export interface CacheOptions {
|
|
13
|
+
/** Maximum number of entries in cache (default: 1000) */
|
|
14
|
+
maxSize?: number;
|
|
15
|
+
/** Time to live in milliseconds (optional) */
|
|
16
|
+
ttl?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Least Recently Used (LRU) Cache with optional TTL
|
|
20
|
+
*/
|
|
21
|
+
export declare class LRUCache<K, V> {
|
|
22
|
+
private cache;
|
|
23
|
+
private readonly maxSize;
|
|
24
|
+
private readonly ttl?;
|
|
25
|
+
constructor(options?: CacheOptions);
|
|
26
|
+
/**
|
|
27
|
+
* Get value from cache
|
|
28
|
+
* Returns undefined if not found or expired
|
|
29
|
+
*/
|
|
30
|
+
get(key: K): V | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Set value in cache with LRU eviction
|
|
33
|
+
*/
|
|
34
|
+
set(key: K, value: V): void;
|
|
35
|
+
/**
|
|
36
|
+
* Check if key exists and is not expired
|
|
37
|
+
*/
|
|
38
|
+
has(key: K): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Delete entry from cache
|
|
41
|
+
*/
|
|
42
|
+
delete(key: K): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Clear all entries
|
|
45
|
+
*/
|
|
46
|
+
clear(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Get cache size
|
|
49
|
+
*/
|
|
50
|
+
size(): number;
|
|
51
|
+
/**
|
|
52
|
+
* Get all keys (in LRU order)
|
|
53
|
+
*/
|
|
54
|
+
keys(): K[];
|
|
55
|
+
/**
|
|
56
|
+
* Get cache statistics
|
|
57
|
+
*/
|
|
58
|
+
stats(): {
|
|
59
|
+
size: number;
|
|
60
|
+
maxSize: number;
|
|
61
|
+
ttl?: number;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create a memoized version of an async function with caching
|
|
66
|
+
*/
|
|
67
|
+
export declare function memoizeAsync<TArgs extends any[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>, options?: CacheOptions & {
|
|
68
|
+
keyFn?: (...args: TArgs) => string;
|
|
69
|
+
}): (...args: TArgs) => Promise<TReturn>;
|
|
70
|
+
/**
|
|
71
|
+
* Create a memoized version of a sync function with caching
|
|
72
|
+
*/
|
|
73
|
+
export declare function memoize<TArgs extends any[], TReturn>(fn: (...args: TArgs) => TReturn, options?: CacheOptions & {
|
|
74
|
+
keyFn?: (...args: TArgs) => string;
|
|
75
|
+
}): (...args: TArgs) => TReturn;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic LRU Cache implementation for performance optimization
|
|
3
|
+
* Provides consistent caching across the application
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const cache = new LRUCache<string, number>({ maxSize: 100 });
|
|
8
|
+
* cache.set('key', 42);
|
|
9
|
+
* const value = cache.get('key'); // 42
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Least Recently Used (LRU) Cache with optional TTL
|
|
14
|
+
*/
|
|
15
|
+
export class LRUCache {
|
|
16
|
+
cache;
|
|
17
|
+
maxSize;
|
|
18
|
+
ttl;
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
this.cache = new Map();
|
|
21
|
+
this.maxSize = options.maxSize || 1000;
|
|
22
|
+
this.ttl = options.ttl;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get value from cache
|
|
26
|
+
* Returns undefined if not found or expired
|
|
27
|
+
*/
|
|
28
|
+
get(key) {
|
|
29
|
+
const entry = this.cache.get(key);
|
|
30
|
+
if (!entry) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
// Check if expired
|
|
34
|
+
if (this.ttl && Date.now() - entry.timestamp > this.ttl) {
|
|
35
|
+
this.cache.delete(key);
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
// Move to end (most recently used)
|
|
39
|
+
this.cache.delete(key);
|
|
40
|
+
this.cache.set(key, entry);
|
|
41
|
+
return entry.value;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Set value in cache with LRU eviction
|
|
45
|
+
*/
|
|
46
|
+
set(key, value) {
|
|
47
|
+
// Remove if already exists (to update position)
|
|
48
|
+
this.cache.delete(key);
|
|
49
|
+
// Evict oldest if at max size
|
|
50
|
+
if (this.cache.size >= this.maxSize) {
|
|
51
|
+
const firstKey = this.cache.keys().next().value;
|
|
52
|
+
if (firstKey !== undefined) {
|
|
53
|
+
this.cache.delete(firstKey);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Add new entry
|
|
57
|
+
this.cache.set(key, {
|
|
58
|
+
value,
|
|
59
|
+
timestamp: Date.now(),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if key exists and is not expired
|
|
64
|
+
*/
|
|
65
|
+
has(key) {
|
|
66
|
+
return this.get(key) !== undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Delete entry from cache
|
|
70
|
+
*/
|
|
71
|
+
delete(key) {
|
|
72
|
+
return this.cache.delete(key);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Clear all entries
|
|
76
|
+
*/
|
|
77
|
+
clear() {
|
|
78
|
+
this.cache.clear();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get cache size
|
|
82
|
+
*/
|
|
83
|
+
size() {
|
|
84
|
+
return this.cache.size;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get all keys (in LRU order)
|
|
88
|
+
*/
|
|
89
|
+
keys() {
|
|
90
|
+
return Array.from(this.cache.keys());
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get cache statistics
|
|
94
|
+
*/
|
|
95
|
+
stats() {
|
|
96
|
+
return {
|
|
97
|
+
size: this.cache.size,
|
|
98
|
+
maxSize: this.maxSize,
|
|
99
|
+
ttl: this.ttl,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Create a memoized version of an async function with caching
|
|
105
|
+
*/
|
|
106
|
+
export function memoizeAsync(fn, options = {}) {
|
|
107
|
+
const cache = new LRUCache(options);
|
|
108
|
+
const keyFn = options.keyFn || ((...args) => JSON.stringify(args));
|
|
109
|
+
return async (...args) => {
|
|
110
|
+
const key = keyFn(...args);
|
|
111
|
+
const cached = cache.get(key);
|
|
112
|
+
if (cached !== undefined) {
|
|
113
|
+
return cached;
|
|
114
|
+
}
|
|
115
|
+
const result = await fn(...args);
|
|
116
|
+
cache.set(key, result);
|
|
117
|
+
return result;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a memoized version of a sync function with caching
|
|
122
|
+
*/
|
|
123
|
+
export function memoize(fn, options = {}) {
|
|
124
|
+
const cache = new LRUCache(options);
|
|
125
|
+
const keyFn = options.keyFn || ((...args) => JSON.stringify(args));
|
|
126
|
+
return (...args) => {
|
|
127
|
+
const key = keyFn(...args);
|
|
128
|
+
const cached = cache.get(key);
|
|
129
|
+
if (cached !== undefined) {
|
|
130
|
+
return cached;
|
|
131
|
+
}
|
|
132
|
+
const result = fn(...args);
|
|
133
|
+
cache.set(key, result);
|
|
134
|
+
return result;
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export class ConfirmationService extends EventEmitter {
|
|
|
33
33
|
try {
|
|
34
34
|
await this.openInVSCode(options.filename);
|
|
35
35
|
}
|
|
36
|
-
catch
|
|
36
|
+
catch {
|
|
37
37
|
// If VS Code opening fails, continue without it
|
|
38
38
|
options.showVSCodeOpen = false;
|
|
39
39
|
}
|
|
@@ -82,7 +82,7 @@ export class ConfirmationService extends EventEmitter {
|
|
|
82
82
|
await execAsync(`${cmd} "${filename}"`);
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
|
-
catch
|
|
85
|
+
catch {
|
|
86
86
|
// Continue to next command
|
|
87
87
|
continue;
|
|
88
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirmation-service.js","sourceRoot":"","sources":["../../src/utils/confirmation-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAelC,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IAC3C,MAAM,CAAC,QAAQ,CAAsB;IACrC,mBAAmB,GAAuC,IAAI,CAAC;IAC/D,mBAAmB,GACzB,IAAI,CAAC;IAEP,8CAA8C;IACtC,YAAY,GAAG;QACrB,cAAc,EAAE,KAAK;QACrB,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,KAAK;KACrB,CAAC;IAEF,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAClC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC3D,CAAC;QACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,OAA4B,EAC5B,gBAAiC,MAAM;QAEvC,sBAAsB;QACtB,IACE,IAAI,CAAC,YAAY,CAAC,aAAa;YAC/B,CAAC,aAAa,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;YAC9D,CAAC,aAAa,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAC5D,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,8CAA8C;QAC9C,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC;YAAC,
|
|
1
|
+
{"version":3,"file":"confirmation-service.js","sourceRoot":"","sources":["../../src/utils/confirmation-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified utility exports
|
|
3
|
+
* Central location for all utility functions and classes
|
|
4
|
+
*/
|
|
5
|
+
export * from './cache.js';
|
|
6
|
+
export * from './error-handler.js';
|
|
7
|
+
export * from './path-validator.js';
|
|
8
|
+
export * from './settings-manager.js';
|
|
9
|
+
export * from './token-counter.js';
|
|
10
|
+
export * from './text-utils.js';
|
|
11
|
+
export * from './confirmation-service.js';
|
|
12
|
+
export * from './custom-instructions.js';
|
|
13
|
+
export * from './performance.js';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified utility exports
|
|
3
|
+
* Central location for all utility functions and classes
|
|
4
|
+
*/
|
|
5
|
+
// Cache utilities
|
|
6
|
+
export * from './cache.js';
|
|
7
|
+
// Error handling
|
|
8
|
+
export * from './error-handler.js';
|
|
9
|
+
// Path validation
|
|
10
|
+
export * from './path-validator.js';
|
|
11
|
+
// Settings management
|
|
12
|
+
export * from './settings-manager.js';
|
|
13
|
+
// Token counting
|
|
14
|
+
export * from './token-counter.js';
|
|
15
|
+
// Text utilities
|
|
16
|
+
export * from './text-utils.js';
|
|
17
|
+
// Confirmation service
|
|
18
|
+
export * from './confirmation-service.js';
|
|
19
|
+
// Custom instructions
|
|
20
|
+
export * from './custom-instructions.js';
|
|
21
|
+
// Performance monitoring
|
|
22
|
+
export * from './performance.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAE3B,iBAAiB;AACjB,cAAc,oBAAoB,CAAC;AAEnC,kBAAkB;AAClB,cAAc,qBAAqB,CAAC;AAEpC,sBAAsB;AACtB,cAAc,uBAAuB,CAAC;AAEtC,iBAAiB;AACjB,cAAc,oBAAoB,CAAC;AAEnC,iBAAiB;AACjB,cAAc,iBAAiB,CAAC;AAEhC,uBAAuB;AACvB,cAAc,2BAA2B,CAAC;AAE1C,sBAAsB;AACtB,cAAc,0BAA0B,CAAC;AAEzC,yBAAyB;AACzB,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path validation utilities to prevent security issues
|
|
3
|
+
* Protects against path traversal attacks and invalid file operations
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* Path validation schema
|
|
8
|
+
*/
|
|
9
|
+
export declare const PathSchema: z.ZodEffects<z.ZodString, string, string>;
|
|
10
|
+
/**
|
|
11
|
+
* Validate and resolve a file path safely
|
|
12
|
+
* @throws Error if path is invalid or dangerous
|
|
13
|
+
*/
|
|
14
|
+
export declare function validatePath(filePath: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Check if a path is within a specific directory
|
|
17
|
+
*/
|
|
18
|
+
export declare function isPathWithin(filePath: string, baseDir: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Safely join paths with validation
|
|
21
|
+
*/
|
|
22
|
+
export declare function safeJoin(...paths: string[]): string;
|
|
23
|
+
/**
|
|
24
|
+
* Check if path is safe for file operations
|
|
25
|
+
*/
|
|
26
|
+
export declare function isPathSafe(filePath: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Get relative path safely
|
|
29
|
+
*/
|
|
30
|
+
export declare function safeRelative(from: string, to: string): string;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path validation utilities to prevent security issues
|
|
3
|
+
* Protects against path traversal attacks and invalid file operations
|
|
4
|
+
*/
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
/**
|
|
8
|
+
* Path validation schema
|
|
9
|
+
*/
|
|
10
|
+
export const PathSchema = z.string().min(1).refine((filePath) => {
|
|
11
|
+
// Prevent path traversal attempts
|
|
12
|
+
const normalized = path.normalize(filePath);
|
|
13
|
+
// Check for suspicious patterns
|
|
14
|
+
return (!normalized.includes('..') &&
|
|
15
|
+
!normalized.startsWith('/etc') &&
|
|
16
|
+
!normalized.startsWith('/sys') &&
|
|
17
|
+
!normalized.startsWith('/proc'));
|
|
18
|
+
}, {
|
|
19
|
+
message: 'Invalid or potentially dangerous file path',
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Validate and resolve a file path safely
|
|
23
|
+
* @throws Error if path is invalid or dangerous
|
|
24
|
+
*/
|
|
25
|
+
export function validatePath(filePath) {
|
|
26
|
+
const result = PathSchema.safeParse(filePath);
|
|
27
|
+
if (!result.success) {
|
|
28
|
+
throw new Error(`Invalid path: ${result.error.message}`);
|
|
29
|
+
}
|
|
30
|
+
return path.resolve(filePath);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if a path is within a specific directory
|
|
34
|
+
*/
|
|
35
|
+
export function isPathWithin(filePath, baseDir) {
|
|
36
|
+
const resolvedPath = path.resolve(filePath);
|
|
37
|
+
const resolvedBase = path.resolve(baseDir);
|
|
38
|
+
return resolvedPath.startsWith(resolvedBase);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Safely join paths with validation
|
|
42
|
+
*/
|
|
43
|
+
export function safeJoin(...paths) {
|
|
44
|
+
const joined = path.join(...paths);
|
|
45
|
+
return validatePath(joined);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if path is safe for file operations
|
|
49
|
+
*/
|
|
50
|
+
export function isPathSafe(filePath) {
|
|
51
|
+
try {
|
|
52
|
+
validatePath(filePath);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get relative path safely
|
|
61
|
+
*/
|
|
62
|
+
export function safeRelative(from, to) {
|
|
63
|
+
const validFrom = validatePath(from);
|
|
64
|
+
const validTo = validatePath(to);
|
|
65
|
+
return path.relative(validFrom, validTo);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=path-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-validator.js","sourceRoot":"","sources":["../../src/utils/path-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAChD,CAAC,QAAQ,EAAE,EAAE;IACX,kCAAkC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5C,gCAAgC;IAChC,OAAO,CACL,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1B,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;QAC9B,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;QAC9B,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAChC,CAAC;AACJ,CAAC,EACD;IACE,OAAO,EAAE,4CAA4C;CACtD,CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAe;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C,OAAO,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAG,KAAe;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACnC,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,EAAU;IACnD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance monitoring utilities
|
|
3
|
+
* Provides timing and performance metrics for operations
|
|
4
|
+
*/
|
|
5
|
+
export interface PerformanceMetric {
|
|
6
|
+
name: string;
|
|
7
|
+
startTime: number;
|
|
8
|
+
endTime?: number;
|
|
9
|
+
duration?: number;
|
|
10
|
+
metadata?: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Simple performance timer for measuring operation duration
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const timer = new PerformanceTimer('tokenCount');
|
|
18
|
+
* // ... do work ...
|
|
19
|
+
* const duration = timer.end();
|
|
20
|
+
* console.log(`Operation took ${duration}ms`);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class PerformanceTimer {
|
|
24
|
+
private startTime;
|
|
25
|
+
private endTime?;
|
|
26
|
+
private name;
|
|
27
|
+
constructor(name: string);
|
|
28
|
+
/**
|
|
29
|
+
* End the timer and return duration in milliseconds
|
|
30
|
+
*/
|
|
31
|
+
end(): number;
|
|
32
|
+
/**
|
|
33
|
+
* Get duration without ending timer
|
|
34
|
+
*/
|
|
35
|
+
duration(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Get metric object
|
|
38
|
+
*/
|
|
39
|
+
getMetric(): PerformanceMetric;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Measure the performance of an async function
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const [result, duration] = await measureAsync(
|
|
47
|
+
* 'apiCall',
|
|
48
|
+
* () => fetch('https://api.example.com')
|
|
49
|
+
* );
|
|
50
|
+
* console.log(`API call took ${duration}ms`);
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function measureAsync<T>(name: string, fn: () => Promise<T>): Promise<[T, number]>;
|
|
54
|
+
/**
|
|
55
|
+
* Measure the performance of a sync function
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const [result, duration] = measure('calculation', () => {
|
|
60
|
+
* return heavyComputation();
|
|
61
|
+
* });
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function measure<T>(name: string, fn: () => T): [T, number];
|
|
65
|
+
/**
|
|
66
|
+
* Debounce function to limit execution rate
|
|
67
|
+
*/
|
|
68
|
+
export declare function debounce<TArgs extends any[]>(fn: (...args: TArgs) => void, delay: number): (...args: TArgs) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Throttle function to limit execution frequency
|
|
71
|
+
*/
|
|
72
|
+
export declare function throttle<TArgs extends any[]>(fn: (...args: TArgs) => void, limit: number): (...args: TArgs) => void;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance monitoring utilities
|
|
3
|
+
* Provides timing and performance metrics for operations
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Simple performance timer for measuring operation duration
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const timer = new PerformanceTimer('tokenCount');
|
|
11
|
+
* // ... do work ...
|
|
12
|
+
* const duration = timer.end();
|
|
13
|
+
* console.log(`Operation took ${duration}ms`);
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export class PerformanceTimer {
|
|
17
|
+
startTime;
|
|
18
|
+
endTime;
|
|
19
|
+
name;
|
|
20
|
+
constructor(name) {
|
|
21
|
+
this.name = name;
|
|
22
|
+
this.startTime = performance.now();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* End the timer and return duration in milliseconds
|
|
26
|
+
*/
|
|
27
|
+
end() {
|
|
28
|
+
this.endTime = performance.now();
|
|
29
|
+
return this.duration();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get duration without ending timer
|
|
33
|
+
*/
|
|
34
|
+
duration() {
|
|
35
|
+
const end = this.endTime || performance.now();
|
|
36
|
+
return end - this.startTime;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get metric object
|
|
40
|
+
*/
|
|
41
|
+
getMetric() {
|
|
42
|
+
return {
|
|
43
|
+
name: this.name,
|
|
44
|
+
startTime: this.startTime,
|
|
45
|
+
endTime: this.endTime,
|
|
46
|
+
duration: this.endTime ? this.duration() : undefined,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Measure the performance of an async function
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const [result, duration] = await measureAsync(
|
|
56
|
+
* 'apiCall',
|
|
57
|
+
* () => fetch('https://api.example.com')
|
|
58
|
+
* );
|
|
59
|
+
* console.log(`API call took ${duration}ms`);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export async function measureAsync(name, fn) {
|
|
63
|
+
const timer = new PerformanceTimer(name);
|
|
64
|
+
const result = await fn();
|
|
65
|
+
const duration = timer.end();
|
|
66
|
+
return [result, duration];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Measure the performance of a sync function
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const [result, duration] = measure('calculation', () => {
|
|
74
|
+
* return heavyComputation();
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function measure(name, fn) {
|
|
79
|
+
const timer = new PerformanceTimer(name);
|
|
80
|
+
const result = fn();
|
|
81
|
+
const duration = timer.end();
|
|
82
|
+
return [result, duration];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Debounce function to limit execution rate
|
|
86
|
+
*/
|
|
87
|
+
export function debounce(fn, delay) {
|
|
88
|
+
let timeoutId = null;
|
|
89
|
+
return (...args) => {
|
|
90
|
+
if (timeoutId) {
|
|
91
|
+
clearTimeout(timeoutId);
|
|
92
|
+
}
|
|
93
|
+
timeoutId = setTimeout(() => {
|
|
94
|
+
fn(...args);
|
|
95
|
+
timeoutId = null;
|
|
96
|
+
}, delay);
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Throttle function to limit execution frequency
|
|
101
|
+
*/
|
|
102
|
+
export function throttle(fn, limit) {
|
|
103
|
+
let inThrottle = false;
|
|
104
|
+
return (...args) => {
|
|
105
|
+
if (!inThrottle) {
|
|
106
|
+
fn(...args);
|
|
107
|
+
inThrottle = true;
|
|
108
|
+
setTimeout(() => {
|
|
109
|
+
inThrottle = false;
|
|
110
|
+
}, limit);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=performance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/utils/performance.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;;;;;;;;;GAUG;AACH,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAAS;IAClB,OAAO,CAAU;IACjB,IAAI,CAAS;IAErB,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,GAAG;QACD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;QAC9C,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;SACrD,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,EAAoB;IAEpB,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAC7B,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAI,IAAY,EAAE,EAAW;IAClD,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;IACpB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;IAC7B,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,EAA4B,EAC5B,KAAa;IAEb,IAAI,SAAS,GAA0B,IAAI,CAAC;IAE5C,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAED,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACZ,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,EAA4B,EAC5B,KAAa;IAEb,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACZ,UAAU,GAAG,IAAI,CAAC;YAElB,UAAU,CAAC,GAAG,EAAE;gBACd,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC,EAAE,KAAK,CAAC,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -93,7 +93,7 @@ export class SettingsManager {
|
|
|
93
93
|
const parsed = JSON.parse(content);
|
|
94
94
|
existingSettings = { ...DEFAULT_USER_SETTINGS, ...parsed };
|
|
95
95
|
}
|
|
96
|
-
catch
|
|
96
|
+
catch {
|
|
97
97
|
// If file is corrupted, use defaults
|
|
98
98
|
console.warn("Corrupted user settings file, using defaults");
|
|
99
99
|
}
|
|
@@ -161,7 +161,7 @@ export class SettingsManager {
|
|
|
161
161
|
const parsed = JSON.parse(content);
|
|
162
162
|
existingSettings = { ...DEFAULT_PROJECT_SETTINGS, ...parsed };
|
|
163
163
|
}
|
|
164
|
-
catch
|
|
164
|
+
catch {
|
|
165
165
|
// If file is corrupted, use defaults
|
|
166
166
|
console.warn("Corrupted project settings file, using defaults");
|
|
167
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/utils/settings-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/utils/settings-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export declare class TokenCounter {
|
|
2
2
|
private encoder;
|
|
3
3
|
private cache;
|
|
4
|
-
private static readonly MAX_CACHE_SIZE;
|
|
5
4
|
constructor(model?: string);
|
|
6
5
|
/**
|
|
7
6
|
* Count tokens in a string with LRU caching for performance
|
|
@@ -24,6 +23,14 @@ export declare class TokenCounter {
|
|
|
24
23
|
* Clean up resources
|
|
25
24
|
*/
|
|
26
25
|
dispose(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get cache statistics
|
|
28
|
+
*/
|
|
29
|
+
getCacheStats(): {
|
|
30
|
+
size: number;
|
|
31
|
+
maxSize: number;
|
|
32
|
+
ttl?: number;
|
|
33
|
+
};
|
|
27
34
|
}
|
|
28
35
|
/**
|
|
29
36
|
* Format token count for display (e.g., 1.2k for 1200)
|