codehere 0.2.0 → 0.3.0
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.
Potentially problematic release.
This version of codehere might be problematic. Click here for more details.
- package/dist/application/agents/multi-agent-orchestrator.d.ts +1 -0
- package/dist/application/agents/multi-agent-orchestrator.d.ts.map +1 -1
- package/dist/application/agents/multi-agent-orchestrator.js.map +1 -1
- package/dist/application/services/dependency-container.d.ts +3 -0
- package/dist/application/services/dependency-container.d.ts.map +1 -1
- package/dist/application/services/dependency-container.js +24 -0
- package/dist/application/services/dependency-container.js.map +1 -1
- package/dist/application/use-cases/ask-question-use-case.d.ts +12 -0
- package/dist/application/use-cases/ask-question-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/ask-question-use-case.js +129 -9
- package/dist/application/use-cases/ask-question-use-case.js.map +1 -1
- package/dist/application/use-cases/edit-file-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/edit-file-use-case.js +70 -3
- package/dist/application/use-cases/edit-file-use-case.js.map +1 -1
- package/dist/application/use-cases/planning-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/planning-use-case.js +10 -1
- package/dist/application/use-cases/planning-use-case.js.map +1 -1
- package/dist/application/use-cases/react-orchestration-use-case.d.ts.map +1 -1
- package/dist/application/use-cases/react-orchestration-use-case.js +6 -2
- package/dist/application/use-cases/react-orchestration-use-case.js.map +1 -1
- package/dist/domain/services/react-loop.d.ts +8 -0
- package/dist/domain/services/react-loop.d.ts.map +1 -1
- package/dist/domain/services/react-loop.js +82 -6
- package/dist/domain/services/react-loop.js.map +1 -1
- package/dist/formatter.d.ts +2 -2
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +30 -17
- package/dist/formatter.js.map +1 -1
- package/dist/index.js +134 -15
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/ai/cohere-ai-service.d.ts +3 -1
- package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +1 -1
- package/dist/infrastructure/ai/cohere-ai-service.js +51 -4
- package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -1
- package/dist/infrastructure/cache/query-result-cache.d.ts +68 -0
- package/dist/infrastructure/cache/query-result-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/query-result-cache.js +138 -0
- package/dist/infrastructure/cache/query-result-cache.js.map +1 -0
- package/dist/infrastructure/cache/security-scan-cache.d.ts +57 -0
- package/dist/infrastructure/cache/security-scan-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/security-scan-cache.js +124 -0
- package/dist/infrastructure/cache/security-scan-cache.js.map +1 -0
- package/dist/infrastructure/completion/bash-completion.d.ts +8 -0
- package/dist/infrastructure/completion/bash-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/bash-completion.js +101 -0
- package/dist/infrastructure/completion/bash-completion.js.map +1 -0
- package/dist/infrastructure/completion/completion-generator.d.ts +42 -0
- package/dist/infrastructure/completion/completion-generator.d.ts.map +1 -0
- package/dist/infrastructure/completion/completion-generator.js +184 -0
- package/dist/infrastructure/completion/completion-generator.js.map +1 -0
- package/dist/infrastructure/completion/fish-completion.d.ts +8 -0
- package/dist/infrastructure/completion/fish-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/fish-completion.js +65 -0
- package/dist/infrastructure/completion/fish-completion.js.map +1 -0
- package/dist/infrastructure/completion/zsh-completion.d.ts +8 -0
- package/dist/infrastructure/completion/zsh-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/zsh-completion.js +85 -0
- package/dist/infrastructure/completion/zsh-completion.js.map +1 -0
- package/dist/infrastructure/context/context-compressor.d.ts +94 -0
- package/dist/infrastructure/context/context-compressor.d.ts.map +1 -0
- package/dist/infrastructure/context/context-compressor.js +329 -0
- package/dist/infrastructure/context/context-compressor.js.map +1 -0
- package/dist/infrastructure/governance/policy-as-code.d.ts.map +1 -1
- package/dist/infrastructure/governance/policy-as-code.js +18 -3
- package/dist/infrastructure/governance/policy-as-code.js.map +1 -1
- package/dist/infrastructure/observability/execution-tracer.d.ts +5 -2
- package/dist/infrastructure/observability/execution-tracer.d.ts.map +1 -1
- package/dist/infrastructure/observability/execution-tracer.js +45 -8
- package/dist/infrastructure/observability/execution-tracer.js.map +1 -1
- package/dist/infrastructure/security/ai-sast-scanner.d.ts +4 -0
- package/dist/infrastructure/security/ai-sast-scanner.d.ts.map +1 -1
- package/dist/infrastructure/security/ai-sast-scanner.js +82 -4
- package/dist/infrastructure/security/ai-sast-scanner.js.map +1 -1
- package/dist/infrastructure/security/enhanced-security-gate.d.ts +2 -0
- package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +1 -1
- package/dist/infrastructure/security/enhanced-security-gate.js +74 -15
- package/dist/infrastructure/security/enhanced-security-gate.js.map +1 -1
- package/dist/infrastructure/storage/plan-repository.d.ts +38 -0
- package/dist/infrastructure/storage/plan-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/plan-repository.js +133 -0
- package/dist/infrastructure/storage/plan-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +11 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +1 -1
- package/dist/infrastructure/storage/sqlite-embedding-repository.js +121 -6
- package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +1 -1
- package/dist/infrastructure/ux/contextual-feature-discovery.d.ts +24 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.d.ts.map +1 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.js +144 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.js.map +1 -0
- package/dist/infrastructure/ux/expectation-management.d.ts +33 -0
- package/dist/infrastructure/ux/expectation-management.d.ts.map +1 -1
- package/dist/infrastructure/ux/expectation-management.js +138 -4
- package/dist/infrastructure/ux/expectation-management.js.map +1 -1
- package/dist/infrastructure/ux/feature-discovery.d.ts +47 -0
- package/dist/infrastructure/ux/feature-discovery.d.ts.map +1 -0
- package/dist/infrastructure/ux/feature-discovery.js +190 -0
- package/dist/infrastructure/ux/feature-discovery.js.map +1 -0
- package/dist/infrastructure/ux/hitl-review-portal.d.ts +47 -0
- package/dist/infrastructure/ux/hitl-review-portal.d.ts.map +1 -0
- package/dist/infrastructure/ux/hitl-review-portal.js +225 -0
- package/dist/infrastructure/ux/hitl-review-portal.js.map +1 -0
- package/dist/infrastructure/ux/progress-indicator.d.ts +54 -0
- package/dist/infrastructure/ux/progress-indicator.d.ts.map +1 -0
- package/dist/infrastructure/ux/progress-indicator.js +121 -0
- package/dist/infrastructure/ux/progress-indicator.js.map +1 -0
- package/dist/infrastructure/ux/progressive-disclosure.d.ts.map +1 -1
- package/dist/infrastructure/ux/progressive-disclosure.js +2 -1
- package/dist/infrastructure/ux/progressive-disclosure.js.map +1 -1
- package/dist/infrastructure/ux/review-checkpoint.d.ts +35 -0
- package/dist/infrastructure/ux/review-checkpoint.d.ts.map +1 -0
- package/dist/infrastructure/ux/review-checkpoint.js +119 -0
- package/dist/infrastructure/ux/review-checkpoint.js.map +1 -0
- package/dist/infrastructure/ux/staged-feature-intro.d.ts +47 -0
- package/dist/infrastructure/ux/staged-feature-intro.d.ts.map +1 -0
- package/dist/infrastructure/ux/staged-feature-intro.js +144 -0
- package/dist/infrastructure/ux/staged-feature-intro.js.map +1 -0
- package/dist/infrastructure/ux/syntax-highlighter.d.ts +21 -0
- package/dist/infrastructure/ux/syntax-highlighter.d.ts.map +1 -0
- package/dist/infrastructure/ux/syntax-highlighter.js +172 -0
- package/dist/infrastructure/ux/syntax-highlighter.js.map +1 -0
- package/dist/infrastructure/xai/cot-visualizer.d.ts +1 -0
- package/dist/infrastructure/xai/cot-visualizer.d.ts.map +1 -1
- package/dist/infrastructure/xai/cot-visualizer.js +57 -10
- package/dist/infrastructure/xai/cot-visualizer.js.map +1 -1
- package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/ask-command.js +68 -11
- package/dist/presentation/cli/commands/ask-command.js.map +1 -1
- package/dist/presentation/cli/commands/orchestrate-command.d.ts +1 -0
- package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/orchestrate-command.js +35 -1
- package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -1
- package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/plan-command.js +57 -5
- package/dist/presentation/cli/commands/plan-command.js.map +1 -1
- package/dist/presentation/cli/commands/react-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/react-command.js +95 -15
- package/dist/presentation/cli/commands/react-command.js.map +1 -1
- package/dist/presentation/cli/commands/setup-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/setup-command.js +67 -12
- package/dist/presentation/cli/commands/setup-command.js.map +1 -1
- package/dist/presentation/cli/commands/smart-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/smart-command.js +136 -18
- package/dist/presentation/cli/commands/smart-command.js.map +1 -1
- package/dist/presentation/cli/commands/trace-command.d.ts.map +1 -1
- package/dist/presentation/cli/commands/trace-command.js +9 -5
- package/dist/presentation/cli/commands/trace-command.js.map +1 -1
- package/dist/presentation/cli/commands/undo-command.js +15 -6
- package/dist/presentation/cli/commands/undo-command.js.map +1 -1
- package/dist/presentation/cli/error-display.d.ts +2 -0
- package/dist/presentation/cli/error-display.d.ts.map +1 -1
- package/dist/presentation/cli/error-display.js +177 -2
- package/dist/presentation/cli/error-display.js.map +1 -1
- package/dist/presentation/cli/keyboard-shortcuts.d.ts +27 -0
- package/dist/presentation/cli/keyboard-shortcuts.d.ts.map +1 -0
- package/dist/presentation/cli/keyboard-shortcuts.js +77 -0
- package/dist/presentation/cli/keyboard-shortcuts.js.map +1 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +20 -0
- package/dist/session.js.map +1 -1
- package/dist/utils/version.js +2 -2
- package/dist/verification/backup.d.ts.map +1 -1
- package/dist/verification/backup.js +24 -3
- package/dist/verification/backup.js.map +1 -1
- package/dist/verification/compiler.js +47 -12
- package/dist/verification/compiler.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell Completion Generator
|
|
3
|
+
* Generates completion scripts for bash, zsh, and fish shells
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, existsSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
// All commands and their definitions
|
|
8
|
+
export const COMMAND_DEFINITIONS = {
|
|
9
|
+
'ask': {
|
|
10
|
+
name: 'ask',
|
|
11
|
+
description: 'Ask questions about your codebase',
|
|
12
|
+
options: [
|
|
13
|
+
{ flag: '--stream', description: 'Enable streaming output' },
|
|
14
|
+
{ flag: '--no-stream', description: 'Disable streaming output' },
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
'explain': {
|
|
18
|
+
name: 'explain',
|
|
19
|
+
description: 'Get detailed explanations of code files',
|
|
20
|
+
},
|
|
21
|
+
'plan': {
|
|
22
|
+
name: 'plan',
|
|
23
|
+
description: 'Generate hierarchical plan',
|
|
24
|
+
options: [
|
|
25
|
+
{ flag: '--execute', description: 'Execute the plan after generation' },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
'orchestrate': {
|
|
29
|
+
name: 'orchestrate',
|
|
30
|
+
description: 'Orchestrate multi-agent workflows',
|
|
31
|
+
options: [
|
|
32
|
+
{ flag: '--mode <mode>', description: 'Mode: plan-only, execute-only, full' },
|
|
33
|
+
{ flag: '--plan-id <id>', description: 'Plan ID to load' },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
'react': {
|
|
37
|
+
name: 'react',
|
|
38
|
+
description: 'Use ReAct reasoning loop',
|
|
39
|
+
options: [
|
|
40
|
+
{ flag: '--stream', description: 'Enable streaming output' },
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
'setup': {
|
|
44
|
+
name: 'setup',
|
|
45
|
+
description: 'Interactive setup wizard',
|
|
46
|
+
options: [
|
|
47
|
+
{ flag: '--force, -f', description: 'Force reconfiguration' },
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
'config': {
|
|
51
|
+
name: 'config',
|
|
52
|
+
description: 'Manage configuration',
|
|
53
|
+
subcommands: ['get', 'set', 'reset'],
|
|
54
|
+
dynamicCompletions: async (context) => {
|
|
55
|
+
// Dynamic completion for config keys
|
|
56
|
+
if (context.subcommand === 'get' || context.subcommand === 'set') {
|
|
57
|
+
return getConfigKeys();
|
|
58
|
+
}
|
|
59
|
+
return [];
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
'index': {
|
|
63
|
+
name: 'index',
|
|
64
|
+
description: 'Build semantic embeddings index',
|
|
65
|
+
options: [
|
|
66
|
+
{ flag: '--repo <path>, -r <path>', description: 'Repository path' },
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
'help': {
|
|
70
|
+
name: 'help',
|
|
71
|
+
description: 'Show help for commands',
|
|
72
|
+
},
|
|
73
|
+
'undo': {
|
|
74
|
+
name: 'undo',
|
|
75
|
+
description: 'Undo file changes',
|
|
76
|
+
subcommands: ['undo', 'list', 'restore'],
|
|
77
|
+
},
|
|
78
|
+
'trace': {
|
|
79
|
+
name: 'trace',
|
|
80
|
+
description: 'View execution traces',
|
|
81
|
+
subcommands: ['show', 'reproduce', 'list'],
|
|
82
|
+
},
|
|
83
|
+
'decision': {
|
|
84
|
+
name: 'decision',
|
|
85
|
+
description: 'Record and query architectural decisions',
|
|
86
|
+
subcommands: ['record', 'list', 'query', 'explain'],
|
|
87
|
+
},
|
|
88
|
+
'knowledge': {
|
|
89
|
+
name: 'knowledge',
|
|
90
|
+
description: 'Query preserved knowledge',
|
|
91
|
+
subcommands: ['query', 'list', 'summary', 'extract'],
|
|
92
|
+
},
|
|
93
|
+
'learning': {
|
|
94
|
+
name: 'learning',
|
|
95
|
+
description: 'View learning dashboard',
|
|
96
|
+
subcommands: ['overview', 'patterns', 'knowledge', 'insights'],
|
|
97
|
+
},
|
|
98
|
+
'cost': {
|
|
99
|
+
name: 'cost',
|
|
100
|
+
description: 'View API cost tracking',
|
|
101
|
+
subcommands: ['status', 'summary', 'run', 'reset'],
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Get all command names
|
|
106
|
+
*/
|
|
107
|
+
export function getAllCommands() {
|
|
108
|
+
return Object.keys(COMMAND_DEFINITIONS);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get command definition
|
|
112
|
+
*/
|
|
113
|
+
export function getCommandDefinition(command) {
|
|
114
|
+
return COMMAND_DEFINITIONS[command];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get subcommands for a command
|
|
118
|
+
*/
|
|
119
|
+
export function getSubcommands(command) {
|
|
120
|
+
const def = getCommandDefinition(command);
|
|
121
|
+
return def?.subcommands || [];
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get options for a command
|
|
125
|
+
*/
|
|
126
|
+
export function getCommandOptions(command) {
|
|
127
|
+
const def = getCommandDefinition(command);
|
|
128
|
+
if (!def?.options)
|
|
129
|
+
return [];
|
|
130
|
+
return def.options.map(opt => {
|
|
131
|
+
// Extract flag names (e.g., "--force, -f" -> ["--force", "-f"])
|
|
132
|
+
const flags = opt.flag.split(',').map(f => f.trim());
|
|
133
|
+
// Return short and long flags
|
|
134
|
+
return flags.map(f => {
|
|
135
|
+
if (f.includes('<') || f.includes('[')) {
|
|
136
|
+
// Option with argument, return base flag
|
|
137
|
+
return f.split(/[<\[ ]/)[0];
|
|
138
|
+
}
|
|
139
|
+
return f;
|
|
140
|
+
});
|
|
141
|
+
}).flat();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get config keys dynamically
|
|
145
|
+
*/
|
|
146
|
+
async function getConfigKeys() {
|
|
147
|
+
try {
|
|
148
|
+
const configPath = join(process.cwd(), 'data', 'config.json');
|
|
149
|
+
if (existsSync(configPath)) {
|
|
150
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
151
|
+
return Object.keys(config.preferences || {});
|
|
152
|
+
}
|
|
153
|
+
// Default config keys
|
|
154
|
+
return [
|
|
155
|
+
'autoCommit',
|
|
156
|
+
'temperature',
|
|
157
|
+
'maxResults',
|
|
158
|
+
'model',
|
|
159
|
+
'enableStreaming',
|
|
160
|
+
'enableSecurityScan',
|
|
161
|
+
'enableVerification',
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return [
|
|
166
|
+
'autoCommit',
|
|
167
|
+
'temperature',
|
|
168
|
+
'maxResults',
|
|
169
|
+
'model',
|
|
170
|
+
'enableStreaming',
|
|
171
|
+
'enableSecurityScan',
|
|
172
|
+
'enableVerification',
|
|
173
|
+
];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Generate file completions (for filepath arguments)
|
|
178
|
+
*/
|
|
179
|
+
export async function getFileCompletions(prefix) {
|
|
180
|
+
// This would need filesystem access - simplified for now
|
|
181
|
+
// In a real implementation, you'd list files matching the prefix
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=completion-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-generator.js","sourceRoot":"","sources":["../../../src/infrastructure/completion/completion-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fish-completion.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/completion/fish-completion.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAyD/C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fish Completion Script Generator
|
|
3
|
+
*/
|
|
4
|
+
import { getAllCommands, } from './completion-generator.js';
|
|
5
|
+
/**
|
|
6
|
+
* Generate fish completion script
|
|
7
|
+
*/
|
|
8
|
+
export function generateFishCompletion() {
|
|
9
|
+
return `# Fish completion for codehere
|
|
10
|
+
# Installation: codehere --completion fish | source
|
|
11
|
+
|
|
12
|
+
function __codehere_complete_commands
|
|
13
|
+
echo ${getAllCommands().join(' ')}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
function __codehere_complete_config_actions
|
|
17
|
+
echo get set reset
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
function __codehere_complete_config_keys
|
|
21
|
+
echo autoCommit temperature maxResults model enableStreaming enableSecurityScan enableVerification
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
function __codehere_complete_undo_actions
|
|
25
|
+
echo undo list restore
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
function __codehere_complete_trace_actions
|
|
29
|
+
echo show reproduce list
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
function __codehere_complete_decision_actions
|
|
33
|
+
echo record list query explain
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
function __codehere_complete_knowledge_actions
|
|
37
|
+
echo query list summary extract
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
function __codehere_complete_learning_actions
|
|
41
|
+
echo overview patterns knowledge insights
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
function __codehere_complete_cost_actions
|
|
45
|
+
echo status summary run reset
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
complete -c codehere -f -a "(__codehere_complete_commands)"
|
|
49
|
+
|
|
50
|
+
complete -c codehere -f -n "__fish_seen_subcommand_from config" -a "(__codehere_complete_config_actions)"
|
|
51
|
+
complete -c codehere -f -n "__fish_seen_subcommand_from config; and __fish_seen_subcommand_from get set" -a "(__codehere_complete_config_keys)"
|
|
52
|
+
|
|
53
|
+
complete -c codehere -f -n "__fish_seen_subcommand_from undo" -a "(__codehere_complete_undo_actions)"
|
|
54
|
+
complete -c codehere -f -n "__fish_seen_subcommand_from trace" -a "(__codehere_complete_trace_actions)"
|
|
55
|
+
complete -c codehere -f -n "__fish_seen_subcommand_from decision" -a "(__codehere_complete_decision_actions)"
|
|
56
|
+
complete -c codehere -f -n "__fish_seen_subcommand_from knowledge" -a "(__codehere_complete_knowledge_actions)"
|
|
57
|
+
complete -c codehere -f -n "__fish_seen_subcommand_from learning" -a "(__codehere_complete_learning_actions)"
|
|
58
|
+
complete -c codehere -f -n "__fish_seen_subcommand_from cost" -a "(__codehere_complete_cost_actions)"
|
|
59
|
+
|
|
60
|
+
complete -c codehere -s h -l help -d "Show help"
|
|
61
|
+
complete -c codehere -s v -l version -d "Show version"
|
|
62
|
+
complete -c codehere -l completion -d "Show shell completion script"
|
|
63
|
+
`;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=fish-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fish-completion.js","sourceRoot":"","sources":["../../../src/infrastructure/completion/fish-completion.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,GAKf,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;SAIA,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDlC,CAAC;AAEF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zsh-completion.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/completion/zsh-completion.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA6E9C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zsh Completion Script Generator
|
|
3
|
+
*/
|
|
4
|
+
import { getAllCommands, } from './completion-generator.js';
|
|
5
|
+
/**
|
|
6
|
+
* Generate zsh completion script
|
|
7
|
+
*/
|
|
8
|
+
export function generateZshCompletion() {
|
|
9
|
+
return `# Zsh completion for codehere
|
|
10
|
+
# Installation: source <(codehere --completion zsh) or add to ~/.zshrc
|
|
11
|
+
|
|
12
|
+
_codehere() {
|
|
13
|
+
local context state state_descr line
|
|
14
|
+
typeset -A opt_args
|
|
15
|
+
|
|
16
|
+
_arguments -C \\
|
|
17
|
+
"1: :->command" \\
|
|
18
|
+
"*::arg:->args"
|
|
19
|
+
|
|
20
|
+
case $state in
|
|
21
|
+
command)
|
|
22
|
+
local commands="${getAllCommands().join(' ')}"
|
|
23
|
+
_values 'commands' $commands
|
|
24
|
+
;;
|
|
25
|
+
args)
|
|
26
|
+
case $words[1] in
|
|
27
|
+
config)
|
|
28
|
+
_arguments \\
|
|
29
|
+
"1: :->config_action" \\
|
|
30
|
+
"*::arg:->config_args"
|
|
31
|
+
;;
|
|
32
|
+
undo)
|
|
33
|
+
_arguments \\
|
|
34
|
+
"1: :->undo_action"
|
|
35
|
+
;;
|
|
36
|
+
trace)
|
|
37
|
+
_arguments \\
|
|
38
|
+
"1: :->trace_action"
|
|
39
|
+
;;
|
|
40
|
+
decision)
|
|
41
|
+
_arguments \\
|
|
42
|
+
"1: :->decision_action"
|
|
43
|
+
;;
|
|
44
|
+
knowledge)
|
|
45
|
+
_arguments \\
|
|
46
|
+
"1: :->knowledge_action"
|
|
47
|
+
;;
|
|
48
|
+
learning)
|
|
49
|
+
_arguments \\
|
|
50
|
+
"1: :->learning_action"
|
|
51
|
+
;;
|
|
52
|
+
cost)
|
|
53
|
+
_arguments \\
|
|
54
|
+
"1: :->cost_action"
|
|
55
|
+
;;
|
|
56
|
+
esac
|
|
57
|
+
;;
|
|
58
|
+
config_action)
|
|
59
|
+
_values 'config actions' get set reset
|
|
60
|
+
;;
|
|
61
|
+
undo_action)
|
|
62
|
+
_values 'undo actions' undo list restore
|
|
63
|
+
;;
|
|
64
|
+
trace_action)
|
|
65
|
+
_values 'trace actions' show reproduce list
|
|
66
|
+
;;
|
|
67
|
+
decision_action)
|
|
68
|
+
_values 'decision actions' record list query explain
|
|
69
|
+
;;
|
|
70
|
+
knowledge_action)
|
|
71
|
+
_values 'knowledge actions' query list summary extract
|
|
72
|
+
;;
|
|
73
|
+
learning_action)
|
|
74
|
+
_values 'learning actions' overview patterns knowledge insights
|
|
75
|
+
;;
|
|
76
|
+
cost_action)
|
|
77
|
+
_values 'cost actions' status summary run reset
|
|
78
|
+
;;
|
|
79
|
+
esac
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
compdef _codehere codehere
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=zsh-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zsh-completion.js","sourceRoot":"","sources":["../../../src/infrastructure/completion/zsh-completion.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,GAKf,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;wBAae,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DjD,CAAC;AAEF,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infrastructure: Context Compression Service
|
|
3
|
+
*
|
|
4
|
+
* Prevents context bloat through intelligent compression techniques
|
|
5
|
+
* Research: Context bloat leads to escalating costs and degraded reliability
|
|
6
|
+
*
|
|
7
|
+
* Techniques:
|
|
8
|
+
* 1. LLM Summarization: Compress large contexts into concise summaries
|
|
9
|
+
* 2. Observation Masking: Remove redundant observations in ReAct loops
|
|
10
|
+
* 3. Hybrid Memory: Combine transient (session) and persistent (long-term) memory
|
|
11
|
+
* 4. Selective Context: Keep only most relevant chunks based on attention scores
|
|
12
|
+
*/
|
|
13
|
+
import type { IAIService } from '../../domain/interfaces/ai-service.interface.js';
|
|
14
|
+
import type { CodeChunk } from '../../domain/entities/code-chunk.js';
|
|
15
|
+
import type { Memory } from '../../domain/entities/memory.js';
|
|
16
|
+
export interface CompressionStrategy {
|
|
17
|
+
maxTokens: number;
|
|
18
|
+
preserveCode: boolean;
|
|
19
|
+
preserveErrors: boolean;
|
|
20
|
+
compressMemories: boolean;
|
|
21
|
+
compressObservations: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface CompressedContext {
|
|
24
|
+
chunks: CodeChunk[];
|
|
25
|
+
memories: Memory[];
|
|
26
|
+
summary?: string;
|
|
27
|
+
originalTokenCount: number;
|
|
28
|
+
compressedTokenCount: number;
|
|
29
|
+
reductionPercent: number;
|
|
30
|
+
strategy: CompressionStrategy;
|
|
31
|
+
}
|
|
32
|
+
export interface ObservationMask {
|
|
33
|
+
toolCalls: boolean;
|
|
34
|
+
observations: boolean;
|
|
35
|
+
errors: boolean;
|
|
36
|
+
thoughts: boolean;
|
|
37
|
+
maxHistoryLength: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Context Compressor Service
|
|
41
|
+
* Implements multiple compression techniques to prevent context bloat
|
|
42
|
+
*/
|
|
43
|
+
export declare class ContextCompressor {
|
|
44
|
+
private aiService;
|
|
45
|
+
constructor(aiService: IAIService);
|
|
46
|
+
/**
|
|
47
|
+
* Compress context using multi-stage compression (selective + summarization)
|
|
48
|
+
* OPTIMIZED: Multi-stage approach achieves 50%+ reduction
|
|
49
|
+
*/
|
|
50
|
+
compressWithSummarization(chunks: CodeChunk[], query: string, strategy: CompressionStrategy): Promise<CompressedContext>;
|
|
51
|
+
/**
|
|
52
|
+
* Mask observations in ReAct loops
|
|
53
|
+
* Remove redundant observations while preserving critical information
|
|
54
|
+
*/
|
|
55
|
+
maskObservations(observations: string[], toolCalls: string[], errors: string[], mask: ObservationMask): {
|
|
56
|
+
maskedObservations: string[];
|
|
57
|
+
maskedToolCalls: string[];
|
|
58
|
+
maskedErrors: string[];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Compress memories by summarizing similar memories
|
|
62
|
+
*/
|
|
63
|
+
compressMemories(memories: Memory[], query: string, maxMemories?: number): Promise<Memory[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Hybrid memory compression: Combine transient and persistent
|
|
66
|
+
*/
|
|
67
|
+
createHybridContext(transientMemories: Memory[], // Recent session memories
|
|
68
|
+
persistentMemories: Memory[], // Long-term memories
|
|
69
|
+
query: string): Memory[];
|
|
70
|
+
/**
|
|
71
|
+
* Selective context compression: Keep only most relevant chunks
|
|
72
|
+
*/
|
|
73
|
+
selectiveCompression(chunks: CodeChunk[], query: string, maxChunks: number, attentionScores?: Map<string, number>): CodeChunk[];
|
|
74
|
+
/**
|
|
75
|
+
* Preprocess code: remove comments, excessive whitespace, etc.
|
|
76
|
+
* Achieves ~15-20% reduction without LLM calls
|
|
77
|
+
*/
|
|
78
|
+
private preprocessCode;
|
|
79
|
+
private summarizeFileContext;
|
|
80
|
+
/**
|
|
81
|
+
* Aggressive summarization: Target 50%+ reduction
|
|
82
|
+
*/
|
|
83
|
+
private summarizeFileContextAggressive;
|
|
84
|
+
private summarizeFileContent;
|
|
85
|
+
/**
|
|
86
|
+
* Aggressive summarization: Target 50%+ reduction
|
|
87
|
+
*/
|
|
88
|
+
private summarizeFileContentAggressive;
|
|
89
|
+
private groupChunksByFile;
|
|
90
|
+
private groupSimilarMemories;
|
|
91
|
+
private calculateRelevance;
|
|
92
|
+
private estimateTokens;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=context-compressor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-compressor.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/context/context-compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,UAAU;IAEzC;;;OAGG;IACG,yBAAyB,CAC7B,MAAM,EAAE,SAAS,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,mBAAmB,GAC5B,OAAO,CAAC,iBAAiB,CAAC;IA+F7B;;;OAGG;IACH,gBAAgB,CACd,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,eAAe,GACpB;QACD,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB;IAyBD;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IA8BpB;;OAEG;IACH,mBAAmB,CACjB,iBAAiB,EAAE,MAAM,EAAE,EAAE,0BAA0B;IACvD,kBAAkB,EAAE,MAAM,EAAE,EAAE,qBAAqB;IACnD,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE;IAkBX;;OAEG;IACH,oBAAoB,CAClB,MAAM,EAAE,SAAS,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,SAAS,EAAE;IAiBd;;;OAGG;IACH,OAAO,CAAC,cAAc;YAuBR,oBAAoB;IAmBlC;;OAEG;YACW,8BAA8B;YA0B9B,oBAAoB;IAiBlC;;OAEG;YACW,8BAA8B;IAiB5C,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,cAAc;CASvB"}
|