@defai.digital/ax-cli 3.7.2 → 3.8.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 +148 -53
- package/dist/agent/context-manager.d.ts +15 -1
- package/dist/agent/context-manager.js +50 -19
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/dependency-resolver.js +13 -7
- package/dist/agent/dependency-resolver.js.map +1 -1
- package/dist/agent/llm-agent.d.ts +37 -0
- package/dist/agent/llm-agent.js +318 -98
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/status-reporter.d.ts +114 -0
- package/dist/agent/status-reporter.js +335 -0
- package/dist/agent/status-reporter.js.map +1 -0
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +8 -2
- package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +3 -1
- package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -1
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +9 -3
- package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +1 -1
- package/dist/analyzers/git/churn-calculator.d.ts +2 -0
- package/dist/analyzers/git/churn-calculator.js +42 -8
- package/dist/analyzers/git/churn-calculator.js.map +1 -1
- package/dist/analyzers/git/hotspot-detector.js +2 -2
- package/dist/analyzers/git/hotspot-detector.js.map +1 -1
- package/dist/analyzers/metrics/metrics-analyzer.js +1 -1
- package/dist/analyzers/metrics/metrics-analyzer.js.map +1 -1
- package/dist/analyzers/security/security-analyzer.js +1 -1
- package/dist/analyzers/security/security-analyzer.js.map +1 -1
- package/dist/checkpoint/manager.d.ts +1 -0
- package/dist/checkpoint/manager.js +49 -9
- package/dist/checkpoint/manager.js.map +1 -1
- package/dist/checkpoint/storage.js +2 -2
- package/dist/checkpoint/storage.js.map +1 -1
- package/dist/commands/mcp-migrate.d.ts +9 -0
- package/dist/commands/mcp-migrate.js +172 -0
- package/dist/commands/mcp-migrate.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.js +211 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/vscode.d.ts +7 -0
- package/dist/commands/vscode.js +363 -0
- package/dist/commands/vscode.js.map +1 -0
- package/dist/index.js +79 -30
- package/dist/index.js.map +1 -1
- package/dist/llm/client.js +33 -4
- package/dist/llm/client.js.map +1 -1
- package/dist/mcp/automatosx-loader.d.ts +84 -0
- package/dist/mcp/automatosx-loader.js +238 -0
- package/dist/mcp/automatosx-loader.js.map +1 -0
- package/dist/mcp/client-mutex-patch.d.ts +36 -0
- package/dist/mcp/client-mutex-patch.js +75 -0
- package/dist/mcp/client-mutex-patch.js.map +1 -0
- package/dist/mcp/client-v2.d.ts +229 -0
- package/dist/mcp/client-v2.js +740 -0
- package/dist/mcp/client-v2.js.map +1 -0
- package/dist/mcp/client.d.ts +111 -13
- package/dist/mcp/client.js +168 -253
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config-detector-v2.d.ts +83 -0
- package/dist/mcp/config-detector-v2.js +328 -0
- package/dist/mcp/config-detector-v2.js.map +1 -0
- package/dist/mcp/config-detector.d.ts +90 -0
- package/dist/mcp/config-detector.js +242 -0
- package/dist/mcp/config-detector.js.map +1 -0
- package/dist/mcp/config-migrator-v2.d.ts +89 -0
- package/dist/mcp/config-migrator-v2.js +288 -0
- package/dist/mcp/config-migrator-v2.js.map +1 -0
- package/dist/mcp/config-migrator.d.ts +63 -0
- package/dist/mcp/config-migrator.js +269 -0
- package/dist/mcp/config-migrator.js.map +1 -0
- package/dist/mcp/config-v2.d.ts +106 -0
- package/dist/mcp/config-v2.js +417 -0
- package/dist/mcp/config-v2.js.map +1 -0
- package/dist/mcp/config.d.ts +12 -1
- package/dist/mcp/config.js +95 -10
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/error-formatter.d.ts +46 -0
- package/dist/mcp/error-formatter.js +244 -0
- package/dist/mcp/error-formatter.js.map +1 -0
- package/dist/mcp/health.d.ts +5 -0
- package/dist/mcp/health.js +22 -2
- package/dist/mcp/health.js.map +1 -1
- package/dist/mcp/invariants.d.ts +141 -0
- package/dist/mcp/invariants.js +243 -0
- package/dist/mcp/invariants.js.map +1 -0
- package/dist/mcp/mutex-safe.d.ts +153 -0
- package/dist/mcp/mutex-safe.js +260 -0
- package/dist/mcp/mutex-safe.js.map +1 -0
- package/dist/mcp/mutex.d.ts +73 -0
- package/dist/mcp/mutex.js +137 -0
- package/dist/mcp/mutex.js.map +1 -0
- package/dist/mcp/reconnection.d.ts +4 -0
- package/dist/mcp/reconnection.js +25 -1
- package/dist/mcp/reconnection.js.map +1 -1
- package/dist/mcp/transports-v2.d.ts +152 -0
- package/dist/mcp/transports-v2.js +481 -0
- package/dist/mcp/transports-v2.js.map +1 -0
- package/dist/mcp/type-safety.d.ts +231 -0
- package/dist/mcp/type-safety.js +273 -0
- package/dist/mcp/type-safety.js.map +1 -0
- package/dist/planner/task-planner.js +13 -0
- package/dist/planner/task-planner.js.map +1 -1
- package/dist/planner/types.d.ts +6 -6
- package/dist/schemas/confirmation-schemas.d.ts +2 -2
- package/dist/schemas/settings-schemas.d.ts +196 -0
- package/dist/schemas/settings-schemas.js +146 -5
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/sdk/index.d.ts +118 -2
- package/dist/sdk/index.js +146 -4
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/testing.d.ts +182 -0
- package/dist/sdk/testing.js +231 -0
- package/dist/sdk/testing.js.map +1 -1
- package/dist/sdk/version.d.ts +114 -15
- package/dist/sdk/version.js +137 -15
- package/dist/sdk/version.js.map +1 -1
- package/dist/tools/bash.js +54 -9
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/registry.d.ts +146 -0
- package/dist/tools/registry.js +170 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search.js +12 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/text-editor.js +84 -26
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/ui/components/chat-history.js +6 -1
- package/dist/ui/components/chat-history.js.map +1 -1
- package/dist/ui/components/chat-input.d.ts +2 -1
- package/dist/ui/components/chat-input.js +5 -2
- package/dist/ui/components/chat-input.js.map +1 -1
- package/dist/ui/components/chat-interface.js +187 -5
- package/dist/ui/components/chat-interface.js.map +1 -1
- package/dist/ui/components/context-breakdown.d.ts +23 -0
- package/dist/ui/components/context-breakdown.js +124 -0
- package/dist/ui/components/context-breakdown.js.map +1 -0
- package/dist/ui/components/keyboard-help.d.ts +17 -0
- package/dist/ui/components/keyboard-help.js +116 -0
- package/dist/ui/components/keyboard-help.js.map +1 -0
- package/dist/ui/components/keyboard-hints.js +2 -2
- package/dist/ui/components/keyboard-hints.js.map +1 -1
- package/dist/ui/components/quick-actions.js +43 -7
- package/dist/ui/components/quick-actions.js.map +1 -1
- package/dist/ui/components/status-bar.d.ts +3 -0
- package/dist/ui/components/status-bar.js +25 -16
- package/dist/ui/components/status-bar.js.map +1 -1
- package/dist/ui/components/toast-notification.d.ts +42 -0
- package/dist/ui/components/toast-notification.js +30 -2
- package/dist/ui/components/toast-notification.js.map +1 -1
- package/dist/ui/components/tool-group-display.js +34 -4
- package/dist/ui/components/tool-group-display.js.map +1 -1
- package/dist/ui/components/welcome-panel.js +2 -2
- package/dist/ui/components/welcome-panel.js.map +1 -1
- package/dist/ui/hooks/use-enhanced-input.d.ts +9 -1
- package/dist/ui/hooks/use-enhanced-input.js +901 -90
- package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.d.ts +11 -1
- package/dist/ui/hooks/use-input-handler.js +67 -3
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/hooks/use-input-history.d.ts +1 -1
- package/dist/ui/hooks/use-input-history.js +50 -14
- package/dist/ui/hooks/use-input-history.js.map +1 -1
- package/dist/ui/utils/bracketed-paste-handler.d.ts +97 -0
- package/dist/ui/utils/bracketed-paste-handler.js +322 -0
- package/dist/ui/utils/bracketed-paste-handler.js.map +1 -0
- package/dist/ui/utils/change-summarizer.js +16 -6
- package/dist/ui/utils/change-summarizer.js.map +1 -1
- package/dist/ui/utils/tool-grouper.d.ts +10 -1
- package/dist/ui/utils/tool-grouper.js +143 -30
- package/dist/ui/utils/tool-grouper.js.map +1 -1
- package/dist/utils/auto-accept-logger.d.ts +173 -0
- package/dist/utils/auto-accept-logger.js +420 -0
- package/dist/utils/auto-accept-logger.js.map +1 -0
- package/dist/utils/background-task-manager.d.ts +11 -0
- package/dist/utils/background-task-manager.js +124 -38
- package/dist/utils/background-task-manager.js.map +1 -1
- package/dist/utils/confirmation-service.d.ts +1 -0
- package/dist/utils/confirmation-service.js +6 -1
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/encryption.d.ts +8 -0
- package/dist/utils/encryption.js +44 -27
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/enhanced-error-messages.d.ts +33 -0
- package/dist/utils/enhanced-error-messages.js +420 -0
- package/dist/utils/enhanced-error-messages.js.map +1 -0
- package/dist/utils/error-handler.d.ts +13 -3
- package/dist/utils/error-handler.js +16 -4
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/external-editor.d.ts +47 -0
- package/dist/utils/external-editor.js +179 -0
- package/dist/utils/external-editor.js.map +1 -0
- package/dist/utils/history-migration.d.ts +9 -0
- package/dist/utils/history-migration.js +36 -0
- package/dist/utils/history-migration.js.map +1 -0
- package/dist/utils/paste-utils.js +12 -11
- package/dist/utils/paste-utils.js.map +1 -1
- package/dist/utils/rate-limiter.js +20 -1
- package/dist/utils/rate-limiter.js.map +1 -1
- package/dist/utils/safety-rules.d.ts +64 -0
- package/dist/utils/safety-rules.js +225 -0
- package/dist/utils/safety-rules.js.map +1 -0
- package/dist/utils/settings-manager.d.ts +89 -1
- package/dist/utils/settings-manager.js +359 -3
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/token-counter.d.ts +2 -0
- package/dist/utils/token-counter.js +32 -9
- package/dist/utils/token-counter.js.map +1 -1
- package/dist/utils/version.d.ts +11 -2
- package/dist/utils/version.js +54 -21
- package/dist/utils/version.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safety Rules for Auto-accept Mode - Phase 2
|
|
3
|
+
*
|
|
4
|
+
* Defines destructive operations that always require confirmation
|
|
5
|
+
* even when auto-accept mode is enabled.
|
|
6
|
+
*
|
|
7
|
+
* Safety Philosophy:
|
|
8
|
+
* - Auto-accept is for convenience, not carte blanche
|
|
9
|
+
* - Destructive operations ALWAYS require explicit confirmation
|
|
10
|
+
* - Better safe than sorry (false positives acceptable)
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Predefined destructive operations
|
|
14
|
+
*/
|
|
15
|
+
export const DESTRUCTIVE_OPERATIONS = {
|
|
16
|
+
git_push_main: {
|
|
17
|
+
id: 'git_push_main',
|
|
18
|
+
name: 'Push to Main Branch',
|
|
19
|
+
description: 'Pushing to main/master branch (potential to affect production)',
|
|
20
|
+
patterns: [
|
|
21
|
+
/git\s+push.*\s+(origin\s+)?(main|master)/i,
|
|
22
|
+
/git\s+push.*--force.*\s+(main|master)/i,
|
|
23
|
+
],
|
|
24
|
+
severity: 'high',
|
|
25
|
+
},
|
|
26
|
+
git_force_push: {
|
|
27
|
+
id: 'git_force_push',
|
|
28
|
+
name: 'Force Push',
|
|
29
|
+
description: 'Force push can rewrite history and cause data loss',
|
|
30
|
+
patterns: [
|
|
31
|
+
/git\s+push.*--force/i,
|
|
32
|
+
/git\s+push.*-f\s/i,
|
|
33
|
+
],
|
|
34
|
+
severity: 'high',
|
|
35
|
+
},
|
|
36
|
+
mass_delete: {
|
|
37
|
+
id: 'mass_delete',
|
|
38
|
+
name: 'Mass File Deletion',
|
|
39
|
+
description: 'Deleting 25+ files at once',
|
|
40
|
+
patterns: [
|
|
41
|
+
// This will be checked programmatically based on file count
|
|
42
|
+
],
|
|
43
|
+
severity: 'high',
|
|
44
|
+
},
|
|
45
|
+
rm_rf: {
|
|
46
|
+
id: 'rm_rf',
|
|
47
|
+
name: 'Recursive Force Delete',
|
|
48
|
+
description: 'rm -rf can delete entire directory trees',
|
|
49
|
+
patterns: [
|
|
50
|
+
/rm\s+-rf/i,
|
|
51
|
+
/rm\s+-fr/i,
|
|
52
|
+
/rm\s+.*-r.*-f/i,
|
|
53
|
+
/rm\s+.*-f.*-r/i,
|
|
54
|
+
],
|
|
55
|
+
severity: 'high',
|
|
56
|
+
},
|
|
57
|
+
npm_publish: {
|
|
58
|
+
id: 'npm_publish',
|
|
59
|
+
name: 'NPM Package Publish',
|
|
60
|
+
description: 'Publishing to npm registry (irreversible)',
|
|
61
|
+
patterns: [
|
|
62
|
+
/npm\s+publish/i,
|
|
63
|
+
/yarn\s+publish/i,
|
|
64
|
+
/pnpm\s+publish/i,
|
|
65
|
+
],
|
|
66
|
+
severity: 'high',
|
|
67
|
+
},
|
|
68
|
+
drop_database: {
|
|
69
|
+
id: 'drop_database',
|
|
70
|
+
name: 'Drop Database',
|
|
71
|
+
description: 'Dropping database or tables',
|
|
72
|
+
patterns: [
|
|
73
|
+
/DROP\s+DATABASE/i,
|
|
74
|
+
/DROP\s+TABLE/i,
|
|
75
|
+
/DROP\s+SCHEMA/i,
|
|
76
|
+
/TRUNCATE\s+TABLE/i,
|
|
77
|
+
],
|
|
78
|
+
severity: 'high',
|
|
79
|
+
},
|
|
80
|
+
docker_prune: {
|
|
81
|
+
id: 'docker_prune',
|
|
82
|
+
name: 'Docker System Prune',
|
|
83
|
+
description: 'Removing all unused Docker data',
|
|
84
|
+
patterns: [
|
|
85
|
+
/docker\s+system\s+prune/i,
|
|
86
|
+
/docker\s+volume\s+prune/i,
|
|
87
|
+
],
|
|
88
|
+
severity: 'medium',
|
|
89
|
+
},
|
|
90
|
+
pip_uninstall_all: {
|
|
91
|
+
id: 'pip_uninstall_all',
|
|
92
|
+
name: 'Uninstall All Packages',
|
|
93
|
+
description: 'Uninstalling all Python packages',
|
|
94
|
+
patterns: [
|
|
95
|
+
/pip\s+freeze.*\|\s*xargs\s+pip\s+uninstall/i,
|
|
96
|
+
],
|
|
97
|
+
severity: 'medium',
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Check if a command matches any destructive operation patterns
|
|
102
|
+
*/
|
|
103
|
+
export function isDestructiveCommand(command) {
|
|
104
|
+
const matchedOperations = [];
|
|
105
|
+
for (const operation of Object.values(DESTRUCTIVE_OPERATIONS)) {
|
|
106
|
+
for (const pattern of operation.patterns) {
|
|
107
|
+
if (pattern.test(command)) {
|
|
108
|
+
matchedOperations.push(operation);
|
|
109
|
+
break; // Only add each operation once
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
isDestructive: matchedOperations.length > 0,
|
|
115
|
+
matchedOperations,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if a file operation is a mass deletion
|
|
120
|
+
*/
|
|
121
|
+
export function isMassDelete(fileCount) {
|
|
122
|
+
return fileCount >= 25;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get human-readable description of destructive operation
|
|
126
|
+
*/
|
|
127
|
+
export function getOperationDescription(operation) {
|
|
128
|
+
return `${operation.name}: ${operation.description}`;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if operation ID should always require confirmation
|
|
132
|
+
*/
|
|
133
|
+
export function shouldAlwaysConfirm(operationId, alwaysConfirmList) {
|
|
134
|
+
return alwaysConfirmList.includes(operationId);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get all destructive operation IDs
|
|
138
|
+
*/
|
|
139
|
+
export function getAllOperationIds() {
|
|
140
|
+
return Object.keys(DESTRUCTIVE_OPERATIONS);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get default always-confirm list
|
|
144
|
+
*/
|
|
145
|
+
export function getDefaultAlwaysConfirm() {
|
|
146
|
+
return [
|
|
147
|
+
'git_push_main',
|
|
148
|
+
'git_force_push',
|
|
149
|
+
'mass_delete',
|
|
150
|
+
'rm_rf',
|
|
151
|
+
'npm_publish',
|
|
152
|
+
'drop_database',
|
|
153
|
+
];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Format operation severity for display
|
|
157
|
+
*/
|
|
158
|
+
export function formatSeverity(severity) {
|
|
159
|
+
switch (severity) {
|
|
160
|
+
case 'high':
|
|
161
|
+
return '🔴 HIGH RISK';
|
|
162
|
+
case 'medium':
|
|
163
|
+
return '🟡 MEDIUM RISK';
|
|
164
|
+
case 'low':
|
|
165
|
+
return '🟢 LOW RISK';
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Check if file operation is destructive
|
|
170
|
+
* Currently checks for:
|
|
171
|
+
* - Editing critical system files
|
|
172
|
+
* - Creating executable files
|
|
173
|
+
* - Editing configuration files in production-like paths
|
|
174
|
+
*/
|
|
175
|
+
export function isDestructiveFileOperation(filepath, operation) {
|
|
176
|
+
const matchedOperations = [];
|
|
177
|
+
// Normalize path for consistent matching
|
|
178
|
+
const normalizedPath = filepath.toLowerCase().replace(/\\/g, '/');
|
|
179
|
+
// Check for critical system files
|
|
180
|
+
const criticalFiles = [
|
|
181
|
+
'/etc/passwd',
|
|
182
|
+
'/etc/shadow',
|
|
183
|
+
'/etc/sudoers',
|
|
184
|
+
'/etc/hosts',
|
|
185
|
+
'/boot/',
|
|
186
|
+
'c:/windows/system32',
|
|
187
|
+
'.ssh/authorized_keys',
|
|
188
|
+
'.ssh/id_rsa',
|
|
189
|
+
'.ssh/id_ed25519',
|
|
190
|
+
'.aws/credentials',
|
|
191
|
+
'.env.production',
|
|
192
|
+
'production.env',
|
|
193
|
+
];
|
|
194
|
+
for (const pattern of criticalFiles) {
|
|
195
|
+
if (normalizedPath.includes(pattern.toLowerCase())) {
|
|
196
|
+
matchedOperations.push({
|
|
197
|
+
id: 'edit_critical_file',
|
|
198
|
+
name: 'Edit Critical System File',
|
|
199
|
+
description: 'Modifying critical system or security files',
|
|
200
|
+
patterns: [],
|
|
201
|
+
severity: 'high',
|
|
202
|
+
});
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Check for executable file creation
|
|
207
|
+
if (operation === 'write' && (normalizedPath.endsWith('.exe') ||
|
|
208
|
+
normalizedPath.endsWith('.sh') ||
|
|
209
|
+
normalizedPath.endsWith('.bat') ||
|
|
210
|
+
normalizedPath.endsWith('.cmd') ||
|
|
211
|
+
normalizedPath.endsWith('.ps1'))) {
|
|
212
|
+
matchedOperations.push({
|
|
213
|
+
id: 'create_executable',
|
|
214
|
+
name: 'Create Executable File',
|
|
215
|
+
description: 'Creating executable or script files',
|
|
216
|
+
patterns: [],
|
|
217
|
+
severity: 'medium',
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
isDestructive: matchedOperations.length > 0,
|
|
222
|
+
matchedOperations,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=safety-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-rules.js","sourceRoot":"","sources":["../../src/utils/safety-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import type { UserSettings, ProjectSettings, SamplingSettings, ThinkingSettings, DualModelSettings } from "../schemas/settings-schemas.js";
|
|
1
|
+
import type { UserSettings, ProjectSettings, SamplingSettings, ThinkingSettings, DualModelSettings, InputSettings, ShortcutsSettings, PasteSettings, StatusBarSettings, AutoAcceptSettings, ExternalEditorSettings, ThinkingModeSettings } from "../schemas/settings-schemas.js";
|
|
2
2
|
export type { UserSettings, ProjectSettings };
|
|
3
|
+
type RequiredInputSettings = Required<InputSettings>;
|
|
4
|
+
type RequiredShortcutsSettings = Required<ShortcutsSettings>;
|
|
5
|
+
type RequiredPasteSettings = Required<PasteSettings>;
|
|
3
6
|
/**
|
|
4
7
|
* Unified settings manager that handles both user-level and project-level settings
|
|
5
8
|
*/
|
|
@@ -52,6 +55,21 @@ export declare class SettingsManager {
|
|
|
52
55
|
* Get a specific project setting
|
|
53
56
|
*/
|
|
54
57
|
getProjectSetting<K extends keyof ProjectSettings>(key: K): ProjectSettings[K];
|
|
58
|
+
/**
|
|
59
|
+
* Phase 3: Get paste settings with proper defaults
|
|
60
|
+
* Priority: Project settings > User settings > Schema defaults
|
|
61
|
+
* v3.8.0: Now includes bracketed paste mode settings
|
|
62
|
+
*/
|
|
63
|
+
getPasteSettings(): {
|
|
64
|
+
allowLargePaste: any;
|
|
65
|
+
maxPasteLength: any;
|
|
66
|
+
warningThreshold: any;
|
|
67
|
+
enableBracketedPaste: any;
|
|
68
|
+
showPasteIndicator: any;
|
|
69
|
+
maxPasteSize: any;
|
|
70
|
+
pasteTimeout: any;
|
|
71
|
+
enableFallback: any;
|
|
72
|
+
};
|
|
55
73
|
/**
|
|
56
74
|
* Get the current model with proper fallback logic:
|
|
57
75
|
* 1. Project-specific model setting
|
|
@@ -128,6 +146,76 @@ export declare class SettingsManager {
|
|
|
128
146
|
* Get the actual project settings path being used
|
|
129
147
|
*/
|
|
130
148
|
getProjectSettingsPath(): string;
|
|
149
|
+
/**
|
|
150
|
+
* Get input configuration with proper defaults
|
|
151
|
+
* Priority: User settings > Schema defaults
|
|
152
|
+
*/
|
|
153
|
+
getInputConfig(): RequiredInputSettings;
|
|
154
|
+
/**
|
|
155
|
+
* Update input configuration
|
|
156
|
+
* Merges with existing config and saves to user settings
|
|
157
|
+
*/
|
|
158
|
+
updateInputConfig(config: Partial<InputSettings>): void;
|
|
159
|
+
/**
|
|
160
|
+
* Get shortcuts configuration with proper defaults
|
|
161
|
+
* Priority: User settings > Schema defaults
|
|
162
|
+
*/
|
|
163
|
+
getShortcutsConfig(): RequiredShortcutsSettings;
|
|
164
|
+
/**
|
|
165
|
+
* Update shortcuts configuration
|
|
166
|
+
* Merges with existing config and saves to user settings
|
|
167
|
+
*/
|
|
168
|
+
updateShortcutsConfig(config: Partial<ShortcutsSettings>): void;
|
|
169
|
+
/**
|
|
170
|
+
* Get paste configuration with proper defaults
|
|
171
|
+
* Priority: User settings > Schema defaults
|
|
172
|
+
*/
|
|
173
|
+
getPasteConfig(): RequiredPasteSettings;
|
|
174
|
+
/**
|
|
175
|
+
* Update paste configuration
|
|
176
|
+
* Merges with existing config and saves to user settings
|
|
177
|
+
*/
|
|
178
|
+
updatePasteConfig(config: Partial<PasteSettings>): void;
|
|
179
|
+
/**
|
|
180
|
+
* Get status bar configuration with proper defaults
|
|
181
|
+
* Priority: User settings > Schema defaults
|
|
182
|
+
*/
|
|
183
|
+
getStatusBarConfig(): Required<StatusBarSettings>;
|
|
184
|
+
/**
|
|
185
|
+
* Update status bar configuration
|
|
186
|
+
* Merges with existing config and saves to user settings
|
|
187
|
+
*/
|
|
188
|
+
updateStatusBarConfig(config: Partial<StatusBarSettings>): void;
|
|
189
|
+
/**
|
|
190
|
+
* Get auto-accept configuration with proper defaults
|
|
191
|
+
* Priority: User settings > Schema defaults
|
|
192
|
+
*/
|
|
193
|
+
getAutoAcceptConfig(): AutoAcceptSettings;
|
|
194
|
+
/**
|
|
195
|
+
* Update auto-accept configuration
|
|
196
|
+
* Merges with existing config and saves to user settings
|
|
197
|
+
*/
|
|
198
|
+
updateAutoAcceptConfig(config: Partial<AutoAcceptSettings>): void;
|
|
199
|
+
/**
|
|
200
|
+
* Get external editor configuration with proper defaults
|
|
201
|
+
* Priority: User settings > Schema defaults
|
|
202
|
+
*/
|
|
203
|
+
getExternalEditorConfig(): ExternalEditorSettings;
|
|
204
|
+
/**
|
|
205
|
+
* Update external editor configuration
|
|
206
|
+
* Merges with existing config and saves to user settings
|
|
207
|
+
*/
|
|
208
|
+
updateExternalEditorConfig(config: Partial<ExternalEditorSettings>): void;
|
|
209
|
+
/**
|
|
210
|
+
* Get thinking mode configuration with proper defaults
|
|
211
|
+
* Priority: User settings > Schema defaults
|
|
212
|
+
*/
|
|
213
|
+
getThinkingModeConfig(): ThinkingModeSettings;
|
|
214
|
+
/**
|
|
215
|
+
* Update thinking mode configuration
|
|
216
|
+
* Merges with existing config and saves to user settings
|
|
217
|
+
*/
|
|
218
|
+
updateThinkingModeConfig(config: Partial<ThinkingModeSettings>): void;
|
|
131
219
|
}
|
|
132
220
|
/**
|
|
133
221
|
* Convenience function to get the singleton instance
|