k0ntext 3.2.1 → 3.3.1
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 +15 -0
- package/dist/cli/index.js +28 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/repl/core/parser.d.ts +84 -0
- package/dist/cli/repl/core/parser.d.ts.map +1 -0
- package/dist/cli/repl/core/parser.js +309 -0
- package/dist/cli/repl/core/parser.js.map +1 -0
- package/dist/cli/repl/core/session.d.ts +124 -0
- package/dist/cli/repl/core/session.d.ts.map +1 -0
- package/dist/cli/repl/core/session.js +196 -0
- package/dist/cli/repl/core/session.js.map +1 -0
- package/dist/cli/repl/index.d.ts +59 -0
- package/dist/cli/repl/index.d.ts.map +1 -0
- package/dist/cli/repl/index.js +474 -0
- package/dist/cli/repl/index.js.map +1 -0
- package/dist/cli/repl/init/wizard.d.ts +61 -0
- package/dist/cli/repl/init/wizard.d.ts.map +1 -0
- package/dist/cli/repl/init/wizard.js +245 -0
- package/dist/cli/repl/init/wizard.js.map +1 -0
- package/dist/cli/repl/tui/panels/config.d.ts +71 -0
- package/dist/cli/repl/tui/panels/config.d.ts.map +1 -0
- package/dist/cli/repl/tui/panels/config.js +392 -0
- package/dist/cli/repl/tui/panels/config.js.map +1 -0
- package/dist/cli/repl/tui/panels/drift.d.ts +95 -0
- package/dist/cli/repl/tui/panels/drift.d.ts.map +1 -0
- package/dist/cli/repl/tui/panels/drift.js +353 -0
- package/dist/cli/repl/tui/panels/drift.js.map +1 -0
- package/dist/cli/repl/tui/panels/indexing.d.ts +86 -0
- package/dist/cli/repl/tui/panels/indexing.d.ts.map +1 -0
- package/dist/cli/repl/tui/panels/indexing.js +254 -0
- package/dist/cli/repl/tui/panels/indexing.js.map +1 -0
- package/dist/cli/repl/tui/panels/search.d.ts +66 -0
- package/dist/cli/repl/tui/panels/search.d.ts.map +1 -0
- package/dist/cli/repl/tui/panels/search.js +215 -0
- package/dist/cli/repl/tui/panels/search.js.map +1 -0
- package/dist/cli/repl/tui/theme.d.ts +109 -0
- package/dist/cli/repl/tui/theme.d.ts.map +1 -0
- package/dist/cli/repl/tui/theme.js +225 -0
- package/dist/cli/repl/tui/theme.js.map +1 -0
- package/dist/cli/repl/update/checker.d.ts +64 -0
- package/dist/cli/repl/update/checker.d.ts.map +1 -0
- package/dist/cli/repl/update/checker.js +166 -0
- package/dist/cli/repl/update/checker.js.map +1 -0
- package/dist/db/client.d.ts +1 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +2 -1
- package/dist/db/client.js.map +1 -1
- package/package.json +4 -1
- package/src/cli/index.ts +28 -2
- package/src/cli/repl/core/parser.ts +373 -0
- package/src/cli/repl/core/session.ts +269 -0
- package/src/cli/repl/index.ts +557 -0
- package/src/cli/repl/init/wizard.ts +300 -0
- package/src/cli/repl/tui/panels/config.ts +457 -0
- package/src/cli/repl/tui/panels/drift.ts +458 -0
- package/src/cli/repl/tui/panels/indexing.ts +324 -0
- package/src/cli/repl/tui/panels/search.ts +272 -0
- package/src/cli/repl/tui/theme.ts +276 -0
- package/src/cli/repl/update/checker.ts +209 -0
- package/src/db/client.ts +9 -7
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REPL Session Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages REPL session lifecycle, state persistence, and activity tracking
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Session state
|
|
8
|
+
*/
|
|
9
|
+
export interface SessionState {
|
|
10
|
+
sessionId: string;
|
|
11
|
+
startTime: string;
|
|
12
|
+
lastActivity: string;
|
|
13
|
+
projectRoot: string;
|
|
14
|
+
config: SessionConfig;
|
|
15
|
+
history: CommandHistoryEntry[];
|
|
16
|
+
stats: SessionStats;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Session configuration
|
|
20
|
+
*/
|
|
21
|
+
export interface SessionConfig {
|
|
22
|
+
apiKey?: string;
|
|
23
|
+
projectType?: ProjectType;
|
|
24
|
+
aiTools: string[];
|
|
25
|
+
features: string[];
|
|
26
|
+
autoUpdate: boolean;
|
|
27
|
+
theme: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Project type
|
|
31
|
+
*/
|
|
32
|
+
export type ProjectType = 'monorepo' | 'webapp' | 'library' | 'api' | 'cli' | 'unknown';
|
|
33
|
+
/**
|
|
34
|
+
* Command history entry
|
|
35
|
+
*/
|
|
36
|
+
export interface CommandHistoryEntry {
|
|
37
|
+
command: string;
|
|
38
|
+
timestamp: string;
|
|
39
|
+
result?: string;
|
|
40
|
+
duration?: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Session statistics
|
|
44
|
+
*/
|
|
45
|
+
export interface SessionStats {
|
|
46
|
+
commandsExecuted: number;
|
|
47
|
+
searchesPerformed: number;
|
|
48
|
+
filesIndexed: number;
|
|
49
|
+
embeddingsGenerated: number;
|
|
50
|
+
errorsEncountered: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* REPL Session Manager
|
|
54
|
+
*/
|
|
55
|
+
export declare class REPLSessionManager {
|
|
56
|
+
private state;
|
|
57
|
+
private statePath;
|
|
58
|
+
private projectRoot;
|
|
59
|
+
constructor(projectRoot: string);
|
|
60
|
+
/**
|
|
61
|
+
* Create a new session
|
|
62
|
+
*/
|
|
63
|
+
private createNewSession;
|
|
64
|
+
/**
|
|
65
|
+
* Load session from disk
|
|
66
|
+
*/
|
|
67
|
+
private load;
|
|
68
|
+
/**
|
|
69
|
+
* Save session to disk
|
|
70
|
+
*/
|
|
71
|
+
save(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Get session state
|
|
74
|
+
*/
|
|
75
|
+
getState(): SessionState;
|
|
76
|
+
/**
|
|
77
|
+
* Update session config
|
|
78
|
+
*/
|
|
79
|
+
updateConfig(config: Partial<SessionConfig>): void;
|
|
80
|
+
/**
|
|
81
|
+
* Add command to history
|
|
82
|
+
*/
|
|
83
|
+
addCommand(command: string, result?: string, duration?: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* Get command history
|
|
86
|
+
*/
|
|
87
|
+
getHistory(limit?: number): CommandHistoryEntry[];
|
|
88
|
+
/**
|
|
89
|
+
* Update session stats
|
|
90
|
+
*/
|
|
91
|
+
updateStats(stats: Partial<SessionStats>): void;
|
|
92
|
+
/**
|
|
93
|
+
* Get session stats
|
|
94
|
+
*/
|
|
95
|
+
getStats(): SessionStats;
|
|
96
|
+
/**
|
|
97
|
+
* Get session duration
|
|
98
|
+
*/
|
|
99
|
+
getDuration(): {
|
|
100
|
+
ms: number;
|
|
101
|
+
human: string;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Check if session is initialized (has API key and project type)
|
|
105
|
+
*/
|
|
106
|
+
isInitialized(): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Set initialization status
|
|
109
|
+
*/
|
|
110
|
+
setInitialized(apiKey: string, projectType: ProjectType): void;
|
|
111
|
+
/**
|
|
112
|
+
* Get OpenRouter API key
|
|
113
|
+
*/
|
|
114
|
+
getApiKey(): string | undefined;
|
|
115
|
+
/**
|
|
116
|
+
* Clear session (for reset/reinit)
|
|
117
|
+
*/
|
|
118
|
+
clear(): void;
|
|
119
|
+
/**
|
|
120
|
+
* End session
|
|
121
|
+
*/
|
|
122
|
+
end(): void;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/cli/repl/core/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAc/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,IAAI;IAYZ;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,QAAQ,IAAI,YAAY;IAIxB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAKlD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAmBrE;;OAEG;IACH,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAKjD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAK/C;;OAEG;IACH,QAAQ,IAAI,YAAY;IAIxB;;OAEG;IACH,WAAW,IAAI;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAmB5C;;OAEG;IACH,aAAa,IAAI,OAAO;IAOxB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI;IAM9D;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,GAAG,IAAI,IAAI;CAGZ"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REPL Session Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages REPL session lifecycle, state persistence, and activity tracking
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'fs';
|
|
7
|
+
import path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Generate a simple UUID v4
|
|
10
|
+
*/
|
|
11
|
+
function generateUUID() {
|
|
12
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
13
|
+
const r = Math.random() * 16 | 0;
|
|
14
|
+
const v = c === 'x' ? r : (r & 0x3 | 0x8);
|
|
15
|
+
return v.toString(16);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* REPL Session Manager
|
|
20
|
+
*/
|
|
21
|
+
export class REPLSessionManager {
|
|
22
|
+
state;
|
|
23
|
+
statePath;
|
|
24
|
+
projectRoot;
|
|
25
|
+
constructor(projectRoot) {
|
|
26
|
+
this.projectRoot = projectRoot;
|
|
27
|
+
const k0ntextDir = path.join(projectRoot, '.k0ntext');
|
|
28
|
+
this.statePath = path.join(k0ntextDir, 'session.json');
|
|
29
|
+
// Ensure .k0ntext directory exists
|
|
30
|
+
if (!fs.existsSync(k0ntextDir)) {
|
|
31
|
+
fs.mkdirSync(k0ntextDir, { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
// Try to load existing session or create new
|
|
34
|
+
this.state = this.load() || this.createNewSession();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create a new session
|
|
38
|
+
*/
|
|
39
|
+
createNewSession() {
|
|
40
|
+
return {
|
|
41
|
+
sessionId: generateUUID(),
|
|
42
|
+
startTime: new Date().toISOString(),
|
|
43
|
+
lastActivity: new Date().toISOString(),
|
|
44
|
+
projectRoot: this.projectRoot,
|
|
45
|
+
config: {
|
|
46
|
+
aiTools: [],
|
|
47
|
+
autoUpdate: true,
|
|
48
|
+
theme: 'default',
|
|
49
|
+
features: []
|
|
50
|
+
},
|
|
51
|
+
history: [],
|
|
52
|
+
stats: {
|
|
53
|
+
commandsExecuted: 0,
|
|
54
|
+
searchesPerformed: 0,
|
|
55
|
+
filesIndexed: 0,
|
|
56
|
+
embeddingsGenerated: 0,
|
|
57
|
+
errorsEncountered: 0
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Load session from disk
|
|
63
|
+
*/
|
|
64
|
+
load() {
|
|
65
|
+
try {
|
|
66
|
+
if (fs.existsSync(this.statePath)) {
|
|
67
|
+
const content = fs.readFileSync(this.statePath, 'utf-8');
|
|
68
|
+
return JSON.parse(content);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// If load fails, return null to create new session
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Save session to disk
|
|
78
|
+
*/
|
|
79
|
+
save() {
|
|
80
|
+
try {
|
|
81
|
+
this.state.lastActivity = new Date().toISOString();
|
|
82
|
+
fs.writeFileSync(this.statePath, JSON.stringify(this.state, null, 2));
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.error('Failed to save session:', error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get session state
|
|
90
|
+
*/
|
|
91
|
+
getState() {
|
|
92
|
+
return { ...this.state };
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Update session config
|
|
96
|
+
*/
|
|
97
|
+
updateConfig(config) {
|
|
98
|
+
this.state.config = { ...this.state.config, ...config };
|
|
99
|
+
this.save();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Add command to history
|
|
103
|
+
*/
|
|
104
|
+
addCommand(command, result, duration) {
|
|
105
|
+
const entry = {
|
|
106
|
+
command,
|
|
107
|
+
timestamp: new Date().toISOString(),
|
|
108
|
+
result,
|
|
109
|
+
duration
|
|
110
|
+
};
|
|
111
|
+
this.state.history.push(entry);
|
|
112
|
+
// Keep only last 100 commands
|
|
113
|
+
if (this.state.history.length > 100) {
|
|
114
|
+
this.state.history = this.state.history.slice(-100);
|
|
115
|
+
}
|
|
116
|
+
this.state.stats.commandsExecuted++;
|
|
117
|
+
this.save();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get command history
|
|
121
|
+
*/
|
|
122
|
+
getHistory(limit) {
|
|
123
|
+
const history = this.state.history.slice().reverse();
|
|
124
|
+
return limit ? history.slice(0, limit) : history;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update session stats
|
|
128
|
+
*/
|
|
129
|
+
updateStats(stats) {
|
|
130
|
+
this.state.stats = { ...this.state.stats, ...stats };
|
|
131
|
+
this.save();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get session stats
|
|
135
|
+
*/
|
|
136
|
+
getStats() {
|
|
137
|
+
return { ...this.state.stats };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get session duration
|
|
141
|
+
*/
|
|
142
|
+
getDuration() {
|
|
143
|
+
const start = new Date(this.state.startTime);
|
|
144
|
+
const now = new Date();
|
|
145
|
+
const diff = now.getTime() - start.getTime();
|
|
146
|
+
const seconds = Math.floor(diff / 1000);
|
|
147
|
+
const minutes = Math.floor(seconds / 60);
|
|
148
|
+
const hours = Math.floor(minutes / 60);
|
|
149
|
+
const days = Math.floor(hours / 24);
|
|
150
|
+
let human = '';
|
|
151
|
+
if (days > 0)
|
|
152
|
+
human += `${days}d `;
|
|
153
|
+
if (hours % 24 > 0)
|
|
154
|
+
human += `${hours % 24}h `;
|
|
155
|
+
if (minutes % 60 > 0)
|
|
156
|
+
human += `${minutes % 60}m `;
|
|
157
|
+
if (seconds % 60 > 0 || human === '')
|
|
158
|
+
human += `${seconds % 60}s`;
|
|
159
|
+
return { ms: diff, human: human.trim() };
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Check if session is initialized (has API key and project type)
|
|
163
|
+
*/
|
|
164
|
+
isInitialized() {
|
|
165
|
+
return !!(this.state.config.apiKey ||
|
|
166
|
+
process.env.OPENROUTER_API_KEY) && !!this.state.config.projectType;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Set initialization status
|
|
170
|
+
*/
|
|
171
|
+
setInitialized(apiKey, projectType) {
|
|
172
|
+
this.state.config.apiKey = apiKey;
|
|
173
|
+
this.state.config.projectType = projectType;
|
|
174
|
+
this.save();
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get OpenRouter API key
|
|
178
|
+
*/
|
|
179
|
+
getApiKey() {
|
|
180
|
+
return this.state.config.apiKey || process.env.OPENROUTER_API_KEY;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Clear session (for reset/reinit)
|
|
184
|
+
*/
|
|
185
|
+
clear() {
|
|
186
|
+
this.state = this.createNewSession();
|
|
187
|
+
this.save();
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* End session
|
|
191
|
+
*/
|
|
192
|
+
end() {
|
|
193
|
+
this.save();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/cli/repl/core/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* K0ntext REPL Shell
|
|
3
|
+
*
|
|
4
|
+
* Interactive shell for managing k0ntext context
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* REPL options
|
|
8
|
+
*/
|
|
9
|
+
export interface REPLOptions {
|
|
10
|
+
projectRoot: string;
|
|
11
|
+
version: string;
|
|
12
|
+
noTUI?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* K0ntext REPL Shell
|
|
16
|
+
*/
|
|
17
|
+
export declare class REPLShell {
|
|
18
|
+
private session;
|
|
19
|
+
private parser;
|
|
20
|
+
private updateChecker;
|
|
21
|
+
private projectRoot;
|
|
22
|
+
private version;
|
|
23
|
+
private readline;
|
|
24
|
+
private isActive;
|
|
25
|
+
private noTUI;
|
|
26
|
+
private searchPanel;
|
|
27
|
+
private configPanel;
|
|
28
|
+
private driftPanel;
|
|
29
|
+
constructor(options: REPLOptions);
|
|
30
|
+
/**
|
|
31
|
+
* Get the command prompt
|
|
32
|
+
*/
|
|
33
|
+
private getPrompt;
|
|
34
|
+
/**
|
|
35
|
+
* Setup event handlers
|
|
36
|
+
*/
|
|
37
|
+
private setupEventHandlers;
|
|
38
|
+
/**
|
|
39
|
+
* Register REPL-specific commands
|
|
40
|
+
*/
|
|
41
|
+
private registerCommands;
|
|
42
|
+
/**
|
|
43
|
+
* Start the REPL
|
|
44
|
+
*/
|
|
45
|
+
start(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Stop the REPL
|
|
48
|
+
*/
|
|
49
|
+
stop(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Show welcome banner
|
|
52
|
+
*/
|
|
53
|
+
private showBanner;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create and start a REPL shell
|
|
57
|
+
*/
|
|
58
|
+
export declare function startREPL(projectRoot: string | undefined, version: string, noTUI?: boolean): Promise<void>;
|
|
59
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/repl/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,KAAK,CAAU;IAGvB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAsB;gBAE5B,OAAO,EAAE,WAAW;IAyBhC;;OAEG;IACH,OAAO,CAAC,SAAS;IAMjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqD1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgUxB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACH,OAAO,CAAC,UAAU;CAiBnB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,YAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlH"}
|