k0ntext 3.3.0 → 3.5.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.
Files changed (200) hide show
  1. package/README.md +240 -26
  2. package/dist/agents/cleanup-agent.d.ts.map +1 -1
  3. package/dist/agents/cleanup-agent.js +18 -6
  4. package/dist/agents/cleanup-agent.js.map +1 -1
  5. package/dist/agents/drift-agent.d.ts +7 -0
  6. package/dist/agents/drift-agent.d.ts.map +1 -1
  7. package/dist/agents/drift-agent.js +29 -8
  8. package/dist/agents/drift-agent.js.map +1 -1
  9. package/dist/cli/commands/cleanup.d.ts.map +1 -1
  10. package/dist/cli/commands/cleanup.js +8 -1
  11. package/dist/cli/commands/cleanup.js.map +1 -1
  12. package/dist/cli/commands/drift-detect.d.ts.map +1 -1
  13. package/dist/cli/commands/drift-detect.js +21 -1
  14. package/dist/cli/commands/drift-detect.js.map +1 -1
  15. package/dist/cli/commands/restore.d.ts +12 -0
  16. package/dist/cli/commands/restore.d.ts.map +1 -0
  17. package/dist/cli/commands/restore.js +261 -0
  18. package/dist/cli/commands/restore.js.map +1 -0
  19. package/dist/cli/commands/sync-templates.d.ts +15 -0
  20. package/dist/cli/commands/sync-templates.d.ts.map +1 -0
  21. package/dist/cli/commands/sync-templates.js +181 -0
  22. package/dist/cli/commands/sync-templates.js.map +1 -0
  23. package/dist/cli/commands/version-check.d.ts +12 -0
  24. package/dist/cli/commands/version-check.d.ts.map +1 -0
  25. package/dist/cli/commands/version-check.js +133 -0
  26. package/dist/cli/commands/version-check.js.map +1 -0
  27. package/dist/cli/generate.d.ts +5 -0
  28. package/dist/cli/generate.d.ts.map +1 -1
  29. package/dist/cli/generate.js +80 -16
  30. package/dist/cli/generate.js.map +1 -1
  31. package/dist/cli/index.js +145 -1
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/cli/repl/index.d.ts +4 -0
  34. package/dist/cli/repl/index.d.ts.map +1 -1
  35. package/dist/cli/repl/index.js +113 -95
  36. package/dist/cli/repl/index.js.map +1 -1
  37. package/dist/cli/repl/tui/panels/config.d.ts +71 -0
  38. package/dist/cli/repl/tui/panels/config.d.ts.map +1 -0
  39. package/dist/cli/repl/tui/panels/config.js +392 -0
  40. package/dist/cli/repl/tui/panels/config.js.map +1 -0
  41. package/dist/cli/repl/tui/panels/drift.d.ts +95 -0
  42. package/dist/cli/repl/tui/panels/drift.d.ts.map +1 -0
  43. package/dist/cli/repl/tui/panels/drift.js +353 -0
  44. package/dist/cli/repl/tui/panels/drift.js.map +1 -0
  45. package/dist/cli/repl/tui/panels/indexing.d.ts +86 -0
  46. package/dist/cli/repl/tui/panels/indexing.d.ts.map +1 -0
  47. package/dist/cli/repl/tui/panels/indexing.js +254 -0
  48. package/dist/cli/repl/tui/panels/indexing.js.map +1 -0
  49. package/dist/cli/repl/tui/panels/search.d.ts +66 -0
  50. package/dist/cli/repl/tui/panels/search.d.ts.map +1 -0
  51. package/dist/cli/repl/tui/panels/search.js +215 -0
  52. package/dist/cli/repl/tui/panels/search.js.map +1 -0
  53. package/dist/cli/utils/backup-manager.d.ts +94 -0
  54. package/dist/cli/utils/backup-manager.d.ts.map +1 -0
  55. package/dist/cli/utils/backup-manager.js +230 -0
  56. package/dist/cli/utils/backup-manager.js.map +1 -0
  57. package/dist/cli/utils/file-detector.d.ts +87 -0
  58. package/dist/cli/utils/file-detector.d.ts.map +1 -0
  59. package/dist/cli/utils/file-detector.js +131 -0
  60. package/dist/cli/utils/file-detector.js.map +1 -0
  61. package/dist/cli/utils/index.d.ts +9 -0
  62. package/dist/cli/utils/index.d.ts.map +1 -0
  63. package/dist/cli/utils/index.js +9 -0
  64. package/dist/cli/utils/index.js.map +1 -0
  65. package/dist/cli/utils/modification-prompt.d.ts +41 -0
  66. package/dist/cli/utils/modification-prompt.d.ts.map +1 -0
  67. package/dist/cli/utils/modification-prompt.js +84 -0
  68. package/dist/cli/utils/modification-prompt.js.map +1 -0
  69. package/dist/cli/version/checker.d.ts +47 -0
  70. package/dist/cli/version/checker.d.ts.map +1 -0
  71. package/dist/cli/version/checker.js +143 -0
  72. package/dist/cli/version/checker.js.map +1 -0
  73. package/dist/cli/version/comparator.d.ts +46 -0
  74. package/dist/cli/version/comparator.d.ts.map +1 -0
  75. package/dist/cli/version/comparator.js +99 -0
  76. package/dist/cli/version/comparator.js.map +1 -0
  77. package/dist/cli/version/index.d.ts +11 -0
  78. package/dist/cli/version/index.d.ts.map +1 -0
  79. package/dist/cli/version/index.js +11 -0
  80. package/dist/cli/version/index.js.map +1 -0
  81. package/dist/cli/version/parser.d.ts +38 -0
  82. package/dist/cli/version/parser.d.ts.map +1 -0
  83. package/dist/cli/version/parser.js +90 -0
  84. package/dist/cli/version/parser.js.map +1 -0
  85. package/dist/cli/version/prompt.d.ts +40 -0
  86. package/dist/cli/version/prompt.d.ts.map +1 -0
  87. package/dist/cli/version/prompt.js +162 -0
  88. package/dist/cli/version/prompt.js.map +1 -0
  89. package/dist/cli/version/types.d.ts +89 -0
  90. package/dist/cli/version/types.d.ts.map +1 -0
  91. package/dist/cli/version/types.js +7 -0
  92. package/dist/cli/version/types.js.map +1 -0
  93. package/dist/db/client.d.ts +64 -2
  94. package/dist/db/client.d.ts.map +1 -1
  95. package/dist/db/client.js +148 -2
  96. package/dist/db/client.js.map +1 -1
  97. package/dist/db/schema.d.ts +41 -2
  98. package/dist/db/schema.d.ts.map +1 -1
  99. package/dist/db/schema.js +77 -2
  100. package/dist/db/schema.js.map +1 -1
  101. package/dist/mcp.js +2 -2
  102. package/dist/mcp.js.map +1 -1
  103. package/dist/template-engine/data-transformer.d.ts +17 -0
  104. package/dist/template-engine/data-transformer.d.ts.map +1 -0
  105. package/dist/template-engine/data-transformer.js +343 -0
  106. package/dist/template-engine/data-transformer.js.map +1 -0
  107. package/dist/template-engine/engine.d.ts +74 -0
  108. package/dist/template-engine/engine.d.ts.map +1 -0
  109. package/dist/template-engine/engine.js +183 -0
  110. package/dist/template-engine/engine.js.map +1 -0
  111. package/dist/template-engine/helpers.d.ts +81 -0
  112. package/dist/template-engine/helpers.d.ts.map +1 -0
  113. package/dist/template-engine/helpers.js +153 -0
  114. package/dist/template-engine/helpers.js.map +1 -0
  115. package/dist/template-engine/index.d.ts +10 -0
  116. package/dist/template-engine/index.d.ts.map +1 -0
  117. package/dist/template-engine/index.js +10 -0
  118. package/dist/template-engine/index.js.map +1 -0
  119. package/dist/template-engine/types.d.ts +147 -0
  120. package/dist/template-engine/types.d.ts.map +1 -0
  121. package/dist/template-engine/types.js +7 -0
  122. package/dist/template-engine/types.js.map +1 -0
  123. package/dist/template-sync/comparator.d.ts +138 -0
  124. package/dist/template-sync/comparator.d.ts.map +1 -0
  125. package/dist/template-sync/comparator.js +353 -0
  126. package/dist/template-sync/comparator.js.map +1 -0
  127. package/dist/template-sync/conflict-resolver.d.ts +112 -0
  128. package/dist/template-sync/conflict-resolver.d.ts.map +1 -0
  129. package/dist/template-sync/conflict-resolver.js +328 -0
  130. package/dist/template-sync/conflict-resolver.js.map +1 -0
  131. package/dist/template-sync/engine.d.ts +93 -0
  132. package/dist/template-sync/engine.d.ts.map +1 -0
  133. package/dist/template-sync/engine.js +350 -0
  134. package/dist/template-sync/engine.js.map +1 -0
  135. package/dist/template-sync/hasher.d.ts +67 -0
  136. package/dist/template-sync/hasher.d.ts.map +1 -0
  137. package/dist/template-sync/hasher.js +94 -0
  138. package/dist/template-sync/hasher.js.map +1 -0
  139. package/dist/template-sync/index.d.ts +20 -0
  140. package/dist/template-sync/index.d.ts.map +1 -0
  141. package/dist/template-sync/index.js +14 -0
  142. package/dist/template-sync/index.js.map +1 -0
  143. package/dist/template-sync/manifest.d.ts +131 -0
  144. package/dist/template-sync/manifest.d.ts.map +1 -0
  145. package/dist/template-sync/manifest.js +309 -0
  146. package/dist/template-sync/manifest.js.map +1 -0
  147. package/dist/template-sync/merger.d.ts +125 -0
  148. package/dist/template-sync/merger.d.ts.map +1 -0
  149. package/dist/template-sync/merger.js +371 -0
  150. package/dist/template-sync/merger.js.map +1 -0
  151. package/dist/template-sync/scanner.d.ts +106 -0
  152. package/dist/template-sync/scanner.d.ts.map +1 -0
  153. package/dist/template-sync/scanner.js +196 -0
  154. package/dist/template-sync/scanner.js.map +1 -0
  155. package/dist/template-sync/types.d.ts +199 -0
  156. package/dist/template-sync/types.d.ts.map +1 -0
  157. package/dist/template-sync/types.js +30 -0
  158. package/dist/template-sync/types.js.map +1 -0
  159. package/package.json +2 -1
  160. package/src/agents/cleanup-agent.ts +21 -6
  161. package/src/agents/drift-agent.ts +31 -8
  162. package/src/cli/commands/cleanup.ts +9 -1
  163. package/src/cli/commands/drift-detect.ts +24 -1
  164. package/src/cli/commands/restore.ts +318 -0
  165. package/src/cli/commands/sync-templates.ts +210 -0
  166. package/src/cli/commands/version-check.ts +158 -0
  167. package/src/cli/generate.ts +99 -17
  168. package/src/cli/index.ts +167 -1
  169. package/src/cli/repl/index.ts +118 -105
  170. package/src/cli/repl/tui/panels/config.ts +457 -0
  171. package/src/cli/repl/tui/panels/drift.ts +458 -0
  172. package/src/cli/repl/tui/panels/indexing.ts +324 -0
  173. package/src/cli/repl/tui/panels/search.ts +272 -0
  174. package/src/cli/utils/backup-manager.ts +275 -0
  175. package/src/cli/utils/file-detector.ts +181 -0
  176. package/src/cli/utils/index.ts +9 -0
  177. package/src/cli/utils/modification-prompt.ts +112 -0
  178. package/src/cli/version/checker.ts +172 -0
  179. package/src/cli/version/comparator.ts +106 -0
  180. package/src/cli/version/index.ts +11 -0
  181. package/src/cli/version/parser.ts +101 -0
  182. package/src/cli/version/prompt.ts +208 -0
  183. package/src/cli/version/types.ts +95 -0
  184. package/src/db/client.ts +220 -3
  185. package/src/db/schema.ts +109 -2
  186. package/src/mcp.ts +2 -2
  187. package/src/template-engine/data-transformer.ts +367 -0
  188. package/src/template-engine/engine.ts +213 -0
  189. package/src/template-engine/helpers.ts +163 -0
  190. package/src/template-engine/index.ts +10 -0
  191. package/src/template-engine/types.ts +158 -0
  192. package/src/template-sync/comparator.ts +452 -0
  193. package/src/template-sync/conflict-resolver.ts +401 -0
  194. package/src/template-sync/engine.ts +417 -0
  195. package/src/template-sync/hasher.ts +104 -0
  196. package/src/template-sync/index.ts +60 -0
  197. package/src/template-sync/manifest.ts +358 -0
  198. package/src/template-sync/merger.ts +454 -0
  199. package/src/template-sync/scanner.ts +254 -0
  200. package/src/template-sync/types.ts +247 -0
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Indexing Progress Visualization
3
+ *
4
+ * Real-time progress display for indexing operations
5
+ */
6
+ import { K0NTEXT_THEME } from '../theme.js';
7
+ import ora from 'ora';
8
+ /**
9
+ * Indexing Progress Visualizer
10
+ */
11
+ export class IndexingProgressVisualizer {
12
+ progress;
13
+ stats;
14
+ spinner = null;
15
+ constructor() {
16
+ this.progress = {
17
+ total: 0,
18
+ processed: 0,
19
+ stage: 'discovering',
20
+ startTime: Date.now(),
21
+ errors: []
22
+ };
23
+ this.stats = {
24
+ docsIndexed: 0,
25
+ codeIndexed: 0,
26
+ configsIndexed: 0,
27
+ embeddingsGenerated: 0,
28
+ filesSkipped: 0,
29
+ duration: 0
30
+ };
31
+ }
32
+ /**
33
+ * Start a new indexing operation
34
+ */
35
+ start(totalFiles) {
36
+ this.progress = {
37
+ total: totalFiles,
38
+ processed: 0,
39
+ stage: 'discovering',
40
+ startTime: Date.now(),
41
+ errors: []
42
+ };
43
+ this.stats = {
44
+ docsIndexed: 0,
45
+ codeIndexed: 0,
46
+ configsIndexed: 0,
47
+ embeddingsGenerated: 0,
48
+ filesSkipped: 0,
49
+ duration: 0
50
+ };
51
+ this.spinner = ora('Preparing to index...').start();
52
+ }
53
+ /**
54
+ * Update progress
55
+ */
56
+ update(stage, updates) {
57
+ this.progress.stage = stage;
58
+ if (updates.processed !== undefined) {
59
+ this.progress.processed = updates.processed;
60
+ }
61
+ if (updates.currentFile) {
62
+ this.progress.currentFile = updates.currentFile;
63
+ }
64
+ if (updates.error) {
65
+ this.progress.errors.push(updates.error);
66
+ }
67
+ this.render();
68
+ }
69
+ /**
70
+ * Render current progress
71
+ */
72
+ render() {
73
+ if (!this.spinner)
74
+ return;
75
+ const percentage = Math.min(100, Math.round((this.progress.processed / this.progress.total) * 100));
76
+ const elapsed = Date.now() - this.progress.startTime;
77
+ const eta = this.progress.processed > 0
78
+ ? (elapsed / this.progress.processed) * (this.progress.total - this.progress.processed)
79
+ : 0;
80
+ // Update spinner text
81
+ const stageEmoji = {
82
+ discovering: '🔍',
83
+ indexing_docs: '📄',
84
+ indexing_code: '💻',
85
+ indexing_tools: '⚙️',
86
+ generating_embeddings: '🧠',
87
+ complete: '✓'
88
+ }[this.progress.stage];
89
+ let spinnerText = `${stageEmoji} ${this.getStageName(this.progress.stage)}: ${percentage}%`;
90
+ if (this.progress.currentFile) {
91
+ const fileName = this.progress.currentFile.split('/').pop();
92
+ spinnerText += ` (${K0NTEXT_THEME.dim(fileName.slice(0, 30))}${this.progress.currentFile.length > 30 ? '...' : ''})`;
93
+ }
94
+ if (eta > 1000) {
95
+ const etaText = this.formatDuration(eta);
96
+ spinnerText += ` ${K0NTEXT_THEME.dim(`ETA: ${etaText}`)}`;
97
+ }
98
+ this.spinner.text = spinnerText;
99
+ // Show detailed progress on intervals
100
+ if (this.progress.processed % 50 === 0 || this.progress.stage === 'complete') {
101
+ this.showDetailedProgress();
102
+ }
103
+ }
104
+ /**
105
+ * Get stage name
106
+ */
107
+ getStageName(stage) {
108
+ const names = {
109
+ discovering: 'Discovering files',
110
+ indexing_docs: 'Indexing documents',
111
+ indexing_code: 'Indexing code',
112
+ indexing_tools: 'Indexing configs',
113
+ generating_embeddings: 'Generating embeddings',
114
+ complete: 'Complete'
115
+ };
116
+ return names[stage];
117
+ }
118
+ /**
119
+ * Show detailed progress panel
120
+ */
121
+ showDetailedProgress() {
122
+ const lines = [];
123
+ lines.push('');
124
+ lines.push(K0NTEXT_THEME.header('━━━ Indexing Progress ━━━'));
125
+ // Progress bar
126
+ lines.push(` Progress: ${this.renderProgressBar()}`);
127
+ lines.push(` Stage: ${this.getStageName(this.progress.stage)}`);
128
+ lines.push('');
129
+ // Stats
130
+ lines.push(K0NTEXT_THEME.header('━━━ Statistics ━──'));
131
+ lines.push(` Documents Indexed: ${K0NTEXT_THEME.cyan(this.stats.docsIndexed.toString())}`);
132
+ lines.push(` Code Files Indexed: ${K0NTEXT_THEME.cyan(this.stats.codeIndexed.toString())}`);
133
+ lines.push(` Configs Indexed: ${K0NTEXT_THEME.cyan(this.stats.configsIndexed.toString())}`);
134
+ lines.push(` Embeddings: ${K0NTEXT_THEME.cyan(this.stats.embeddingsGenerated.toString())}`);
135
+ lines.push(` Files Skipped: ${this.stats.filesSkipped > 0 ? K0NTEXT_THEME.warning(this.stats.filesSkipped.toString()) : K0NTEXT_THEME.dim('0')}`);
136
+ lines.push('');
137
+ // Errors
138
+ if (this.progress.errors.length > 0) {
139
+ lines.push(K0NTEXT_THEME.header('━━━ Errors ━──'));
140
+ for (const error of this.progress.errors.slice(-5)) {
141
+ lines.push(` ${K0NTEXT_THEME.error('✖')} ${error}`);
142
+ }
143
+ lines.push('');
144
+ }
145
+ // Clear and render
146
+ console.log(lines.join('\n'));
147
+ }
148
+ /**
149
+ * Render progress bar
150
+ */
151
+ renderProgressBar() {
152
+ const percentage = Math.min(100, Math.round((this.progress.processed / this.progress.total) * 100));
153
+ const width = 30;
154
+ const filled = Math.floor((percentage / 100) * width);
155
+ const bar = K0NTEXT_THEME.primary('█'.repeat(filled)) + K0NTEXT_THEME.dim('░'.repeat(width - filled));
156
+ const pct = K0NTEXT_THEME.primary(`${percentage.toString().padStart(3)}%`);
157
+ const counts = `${this.progress.processed}/${this.progress.total}`;
158
+ return `${bar} ${pct} (${K0NTEXT_THEME.dim(counts)})`;
159
+ }
160
+ /**
161
+ * Format duration
162
+ */
163
+ formatDuration(ms) {
164
+ const seconds = Math.floor(ms / 1000);
165
+ const minutes = Math.floor(seconds / 60);
166
+ const hours = Math.floor(minutes / 60);
167
+ if (hours > 0) {
168
+ return `${hours}h ${minutes % 60}m`;
169
+ }
170
+ else if (minutes > 0) {
171
+ return `${minutes}m ${seconds % 60}s`;
172
+ }
173
+ else {
174
+ return `${seconds}s`;
175
+ }
176
+ }
177
+ /**
178
+ * Complete indexing
179
+ */
180
+ complete(stats) {
181
+ this.progress.stage = 'complete';
182
+ this.progress.processed = this.progress.total;
183
+ this.stats = {
184
+ docsIndexed: stats.docsIndexed || 0,
185
+ codeIndexed: stats.codeIndexed || 0,
186
+ configsIndexed: stats.configsIndexed || 0,
187
+ embeddingsGenerated: stats.embeddingsGenerated || 0,
188
+ filesSkipped: stats.filesSkipped || 0,
189
+ duration: Date.now() - this.progress.startTime
190
+ };
191
+ if (this.spinner) {
192
+ this.spinner.succeed('Indexing complete!');
193
+ }
194
+ this.showFinalStats();
195
+ }
196
+ /**
197
+ * Show final statistics
198
+ */
199
+ showFinalStats() {
200
+ const lines = [];
201
+ lines.push('');
202
+ lines.push(K0NTEXT_THEME.success('━━━ Indexing Complete ━━━'));
203
+ lines.push('');
204
+ lines.push(` ${K0NTEXT_THEME.header('Files Processed:')}`);
205
+ lines.push(` Documents: ${K0NTEXT_THEME.cyan(this.stats.docsIndexed.toString())}`);
206
+ lines.push(` Code Files: ${K0NTEXT_THEME.cyan(this.stats.codeIndexed.toString())}`);
207
+ lines.push(` Configs: ${K0NTEXT_THEME.cyan(this.stats.configsIndexed.toString())}`);
208
+ lines.push(` Total: ${K0NTEXT_THEME.primary((this.stats.docsIndexed + this.stats.codeIndexed + this.stats.configsIndexed).toString())}`);
209
+ lines.push('');
210
+ if (this.stats.embeddingsGenerated > 0) {
211
+ lines.push(` ${K0NTEXT_THEME.header('Embeddings:')}`);
212
+ lines.push(` Generated: ${K0NTEXT_THEME.cyan(this.stats.embeddingsGenerated.toString())}`);
213
+ lines.push('');
214
+ }
215
+ if (this.stats.filesSkipped > 0) {
216
+ lines.push(` ${K0NTEXT_THEME.warning('⚠ Files Skipped:')}`);
217
+ lines.push(` ${this.stats.filesSkipped} files hit limit (use --max-files to increase)`);
218
+ lines.push('');
219
+ }
220
+ lines.push(` ${K0NTEXT_THEME.header('Time:')}`);
221
+ lines.push(` Duration: ${K0NTEXT_THEME.formatTimestamp(new Date(Date.now() - this.stats.duration))}`);
222
+ lines.push('');
223
+ console.log(lines.join('\n'));
224
+ }
225
+ /**
226
+ * Cancel indexing
227
+ */
228
+ cancel() {
229
+ if (this.spinner) {
230
+ this.spinner.warn('Indexing cancelled');
231
+ }
232
+ console.log('');
233
+ console.log(K0NTEXT_THEME.info('Indexing was cancelled.'));
234
+ console.log(K0NTEXT_THEME.dim('Partial results may have been saved.'));
235
+ }
236
+ /**
237
+ * Format a timestamp relative to now
238
+ */
239
+ formatTimestamp(ms) {
240
+ const seconds = Math.floor(ms / 1000);
241
+ const minutes = Math.floor(seconds / 60);
242
+ const hours = Math.floor(minutes / 60);
243
+ if (hours > 0) {
244
+ return `${hours}h ${minutes % 60}m ${seconds % 60}s ago`;
245
+ }
246
+ else if (minutes > 0) {
247
+ return `${minutes}m ${seconds % 60}s ago`;
248
+ }
249
+ else {
250
+ return `${seconds}s ago`;
251
+ }
252
+ }
253
+ }
254
+ //# sourceMappingURL=indexing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexing.js","sourceRoot":"","sources":["../../../../../src/cli/repl/tui/panels/indexing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Advanced Search Panel
3
+ *
4
+ * Enhanced search with filtering, sorting, and detailed results
5
+ */
6
+ import type { ContextItem } from '../../../../db/client.js';
7
+ import type { ContextType } from '../../../../db/schema.js';
8
+ /**
9
+ * Search filter options
10
+ */
11
+ export interface SearchFilters {
12
+ type?: ContextType;
13
+ sortBy?: 'relevance' | 'name' | 'date' | 'size';
14
+ sortOrder?: 'asc' | 'desc';
15
+ limit?: number;
16
+ }
17
+ /**
18
+ * Enhanced search result with metadata
19
+ */
20
+ export interface EnhancedSearchResult {
21
+ item: ContextItem;
22
+ score?: number;
23
+ highlights: string[];
24
+ }
25
+ /**
26
+ * Advanced Search Panel
27
+ */
28
+ export declare class AdvancedSearchPanel {
29
+ /**
30
+ * Display advanced search results with formatting
31
+ */
32
+ displayResults(results: EnhancedSearchResult[], query: string, filters: SearchFilters): string;
33
+ /**
34
+ * Get emoji for context type
35
+ */
36
+ private getTypeEmoji;
37
+ /**
38
+ * Get content preview with highlighted query terms
39
+ */
40
+ private getContentPreview;
41
+ /**
42
+ * Escape special regex characters
43
+ */
44
+ private escapeRegex;
45
+ /**
46
+ * Format metadata for display
47
+ */
48
+ private formatMetadata;
49
+ /**
50
+ * Sort results by various criteria
51
+ */
52
+ sortResults(results: EnhancedSearchResult[], sortBy: 'relevance' | 'name' | 'date' | 'size', order: 'asc' | 'desc'): EnhancedSearchResult[];
53
+ /**
54
+ * Filter results by type
55
+ */
56
+ filterByType(results: EnhancedSearchResult[], type: ContextType): EnhancedSearchResult[];
57
+ /**
58
+ * Parse search flags from command arguments
59
+ */
60
+ parseSearchFlags(args: string[]): SearchFilters;
61
+ /**
62
+ * Show search help
63
+ */
64
+ showSearchHelp(): string;
65
+ }
66
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../src/cli/repl/tui/panels/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAChD,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM;IAqE9F;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,oBAAoB,EAAE;IA2B3I;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,oBAAoB,EAAE;IAIxF;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa;IA6B/C;;OAEG;IACH,cAAc,IAAI,MAAM;CA4BzB"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Advanced Search Panel
3
+ *
4
+ * Enhanced search with filtering, sorting, and detailed results
5
+ */
6
+ import { K0NTEXT_THEME } from '../theme.js';
7
+ /**
8
+ * Advanced Search Panel
9
+ */
10
+ export class AdvancedSearchPanel {
11
+ /**
12
+ * Display advanced search results with formatting
13
+ */
14
+ displayResults(results, query, filters) {
15
+ const lines = [];
16
+ // Header with query and filters
17
+ lines.push('');
18
+ lines.push(K0NTEXT_THEME.header(`━━━ Search Results: "${query}" ━━━`));
19
+ if (filters.type) {
20
+ lines.push(` ${K0NTEXT_THEME.dim('Filter:')} ${K0NTEXT_THEME.cyan(filters.type)}`);
21
+ }
22
+ if (filters.sortBy) {
23
+ lines.push(` ${K0NTEXT_THEME.dim('Sorted by:')} ${K0NTEXT_THEME.cyan(filters.sortBy)} ${K0NTEXT_THEME.dim('(')}${filters.sortOrder}${K0NTEXT_THEME.dim(')')}`);
24
+ }
25
+ lines.push(` ${K0NTEXT_THEME.dim('Found:')} ${K0NTEXT_THEME.highlight(results.length.toString())} results`);
26
+ lines.push('');
27
+ // Type legend
28
+ lines.push(K0NTEXT_THEME.dim('Types: 📄=doc 💻=code ⚙️=config 📋=workflow 🤖=agent 🔧=command'));
29
+ lines.push('');
30
+ // Display results
31
+ for (let i = 0; i < Math.min(results.length, filters.limit || 20); i++) {
32
+ const { item, score, highlights } = results[i];
33
+ // Type emoji
34
+ const typeEmoji = this.getTypeEmoji(item.type);
35
+ const relevance = score !== undefined ? ` ${K0NTEXT_THEME.dim(`(${Math.round(score * 100)}%)`)}` : '';
36
+ lines.push(`${K0NTEXT_THEME.primary(`${i + 1}.`)} ${typeEmoji} ${K0NTEXT_THEME.highlight(item.name)}${relevance}`);
37
+ if (item.filePath) {
38
+ lines.push(` ${K0NTEXT_THEME.dim(item.filePath)}`);
39
+ }
40
+ // Show content preview
41
+ if (item.content) {
42
+ const preview = this.getContentPreview(item.content, query);
43
+ if (preview) {
44
+ lines.push(` ${K0NTEXT_THEME.dim(preview)}`);
45
+ }
46
+ }
47
+ // Show metadata
48
+ if (item.metadata) {
49
+ const meta = this.formatMetadata(item.metadata);
50
+ if (meta) {
51
+ lines.push(` ${K0NTEXT_THEME.dim(meta)}`);
52
+ }
53
+ }
54
+ lines.push('');
55
+ }
56
+ if (results.length > (filters.limit || 20)) {
57
+ const remaining = results.length - (filters.limit || 20);
58
+ lines.push(K0NTEXT_THEME.dim(` ... and ${remaining} more results`));
59
+ lines.push('');
60
+ }
61
+ // Search tips
62
+ lines.push(K0NTEXT_THEME.header('━━━ Search Tips ━━━'));
63
+ lines.push(` ${K0NTEXT_THEME.cyan('•')} Use ${K0NTEXT_THEME.highlight('search <query> --type <type>')} to filter`);
64
+ lines.push(` ${K0NTEXT_THEME.cyan('•')} Use ${K0NTEXT_THEME.highlight('search <query> --sort <field>')} to sort`);
65
+ lines.push(` ${K0NTEXT_THEME.cyan('•')} Use ${K0NTEXT_THEME.highlight('search <query> --limit <n>')} for more results`);
66
+ lines.push('');
67
+ return lines.join('\n');
68
+ }
69
+ /**
70
+ * Get emoji for context type
71
+ */
72
+ getTypeEmoji(type) {
73
+ const emojis = {
74
+ doc: '📄',
75
+ code: '💻',
76
+ tool_config: '⚙️',
77
+ workflow: '📋',
78
+ agent: '🤖',
79
+ command: '🔧',
80
+ commit: '📝',
81
+ knowledge: '🧠',
82
+ config: '⚙️'
83
+ };
84
+ return emojis[type] || '📄';
85
+ }
86
+ /**
87
+ * Get content preview with highlighted query terms
88
+ */
89
+ getContentPreview(content, query) {
90
+ const maxLength = 100;
91
+ const preview = content.slice(0, maxLength);
92
+ // Highlight query terms
93
+ const terms = query.toLowerCase().split(/\s+/).filter(t => t.length > 2);
94
+ let highlighted = preview;
95
+ for (const term of terms) {
96
+ const regex = new RegExp(`(${this.escapeRegex(term)})`, 'gi');
97
+ highlighted = highlighted.replace(regex, K0NTEXT_THEME.highlight('$1'));
98
+ }
99
+ return highlighted + (content.length > maxLength ? '...' : '');
100
+ }
101
+ /**
102
+ * Escape special regex characters
103
+ */
104
+ escapeRegex(string) {
105
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
106
+ }
107
+ /**
108
+ * Format metadata for display
109
+ */
110
+ formatMetadata(metadata) {
111
+ const parts = [];
112
+ if (metadata.size !== undefined) {
113
+ parts.push(K0NTEXT_THEME.formatFileSize(Number(metadata.size)));
114
+ }
115
+ if (metadata.module) {
116
+ parts.push(`module:${metadata.module}`);
117
+ }
118
+ if (metadata.tool) {
119
+ parts.push(`tool:${metadata.tool}`);
120
+ }
121
+ return parts.length > 0 ? parts.join(' • ') : null;
122
+ }
123
+ /**
124
+ * Sort results by various criteria
125
+ */
126
+ sortResults(results, sortBy, order) {
127
+ return results.sort((a, b) => {
128
+ let comparison = 0;
129
+ switch (sortBy) {
130
+ case 'relevance':
131
+ comparison = (b.score || 0) - (a.score || 0);
132
+ break;
133
+ case 'name':
134
+ comparison = a.item.name.localeCompare(b.item.name);
135
+ break;
136
+ case 'date':
137
+ const aDate = a.item.updatedAt ? new Date(a.item.updatedAt).getTime() : 0;
138
+ const bDate = b.item.updatedAt ? new Date(b.item.updatedAt).getTime() : 0;
139
+ comparison = bDate - aDate;
140
+ break;
141
+ case 'size':
142
+ const aSize = a.item.metadata?.size || 0;
143
+ const bSize = b.item.metadata?.size || 0;
144
+ comparison = Number(bSize) - Number(aSize);
145
+ break;
146
+ }
147
+ return order === 'desc' ? -comparison : comparison;
148
+ });
149
+ }
150
+ /**
151
+ * Filter results by type
152
+ */
153
+ filterByType(results, type) {
154
+ return results.filter(r => r.item.type === type);
155
+ }
156
+ /**
157
+ * Parse search flags from command arguments
158
+ */
159
+ parseSearchFlags(args) {
160
+ const filters = {};
161
+ for (let i = 0; i < args.length; i++) {
162
+ const arg = args[i];
163
+ switch (arg) {
164
+ case '--type':
165
+ case '-t':
166
+ filters.type = (args[++i] || 'all');
167
+ break;
168
+ case '--sort':
169
+ case '-s':
170
+ filters.sortBy = (args[++i] || 'relevance');
171
+ break;
172
+ case '--order':
173
+ case '-o':
174
+ filters.sortOrder = (args[++i] || 'desc');
175
+ break;
176
+ case '--limit':
177
+ case '-l':
178
+ filters.limit = Number(args[++i]) || 20;
179
+ break;
180
+ }
181
+ }
182
+ return filters;
183
+ }
184
+ /**
185
+ * Show search help
186
+ */
187
+ showSearchHelp() {
188
+ const lines = [
189
+ '',
190
+ K0NTEXT_THEME.header('━━━ Advanced Search Help ━━━'),
191
+ '',
192
+ ' Usage:',
193
+ ' search <query> [options]',
194
+ '',
195
+ ' Options:',
196
+ ' --type, -t <type> Filter by type (doc, code, tool_config, workflow, agent, command)',
197
+ ' --sort, -s <field> Sort by (relevance, name, date, size)',
198
+ ' --order, -o <dir> Sort order (asc, desc)',
199
+ ' --limit, -l <n> Max results (default: 20)',
200
+ '',
201
+ ' Examples:',
202
+ ' search auth --type code',
203
+ ' search "user login" --sort date --order desc',
204
+ ' search config --limit 50',
205
+ '',
206
+ ' Shortcuts:',
207
+ ' s <query> Alias for search',
208
+ ' f <query> Search and filter',
209
+ ' ? Show this help',
210
+ ''
211
+ ];
212
+ return lines.join('\n');
213
+ }
214
+ }
215
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../src/cli/repl/tui/panels/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Backup Manager
3
+ *
4
+ * Manages backups of generated context files before overwriting.
5
+ * Supports both file-copy and git-stash based backup strategies.
6
+ */
7
+ import type { DatabaseClient } from '../../db/client.js';
8
+ /**
9
+ * Backup result
10
+ */
11
+ export interface BackupResult {
12
+ /** Whether backup was successful */
13
+ success: boolean;
14
+ /** Path to backup file */
15
+ backupPath?: string;
16
+ /** Backup method used */
17
+ method: 'file-copy' | 'git-stash' | 'none';
18
+ /** Error message if failed */
19
+ error?: string;
20
+ }
21
+ /**
22
+ * Backup manager options
23
+ */
24
+ export interface BackupManagerOptions {
25
+ /** Base directory for backups (default: .k0ntext/backups) */
26
+ backupDir?: string;
27
+ /** Use git stash if available (default: true) */
28
+ useGitStash?: boolean;
29
+ }
30
+ /**
31
+ * Backup manager
32
+ *
33
+ * Creates and manages backups of generated files.
34
+ */
35
+ export declare class BackupManager {
36
+ private db;
37
+ private projectRoot;
38
+ private backupDir;
39
+ private useGitStash;
40
+ constructor(db: DatabaseClient, projectRoot: string, options?: BackupManagerOptions);
41
+ /**
42
+ * Create a backup of a file before overwriting
43
+ *
44
+ * @param filePath - Path to file to backup (can be relative or absolute)
45
+ * @param tool - Tool name for organization
46
+ * @returns Backup result
47
+ */
48
+ createBackup(filePath: string, tool: string): Promise<BackupResult>;
49
+ /**
50
+ * Restore a file from backup
51
+ *
52
+ * @param backupPath - Path to backup file
53
+ * @param targetPath - Path to restore to (can be relative or absolute)
54
+ * @returns True if restore was successful
55
+ */
56
+ restoreFromBackup(backupPath: string, targetPath: string): Promise<boolean>;
57
+ /**
58
+ * List all backups for a tool
59
+ *
60
+ * @param tool - Tool name
61
+ * @returns Array of backup paths
62
+ */
63
+ listBackups(tool: string): Promise<string[]>;
64
+ /**
65
+ * Backup using file copy strategy
66
+ *
67
+ * @param fullPath - Full path to file
68
+ * @param tool - Tool name
69
+ * @returns Backup result
70
+ */
71
+ private backupWithFileCopy;
72
+ /**
73
+ * Backup using git stash strategy
74
+ *
75
+ * @param fullPath - Full path to file
76
+ * @param tool - Tool name
77
+ * @returns Backup result
78
+ */
79
+ private backupWithGitStash;
80
+ /**
81
+ * Check if current directory is a git repository
82
+ *
83
+ * @returns True if git repository
84
+ */
85
+ private isGitRepository;
86
+ /**
87
+ * Clean up old backups
88
+ *
89
+ * @param tool - Tool name (optional, if not provided cleans all)
90
+ * @param keepLast - Number of recent backups to keep (default: 5)
91
+ */
92
+ cleanupOldBackups(tool?: string, keepLast?: number): Promise<void>;
93
+ }
94
+ //# sourceMappingURL=backup-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-manager.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/backup-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3C,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAU;gBAEjB,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;IAOvF;;;;;;OAMG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCzE;;;;;;OAMG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAejF;;;;;OAKG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAelD;;;;;;OAMG;YACW,kBAAkB;IAyChC;;;;;;OAMG;YACW,kBAAkB;IAwChC;;;;OAIG;YACW,eAAe;IAU7B;;;;;OAKG;IACG,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBpE"}