@kcisoul/remotecode 0.9.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.
Files changed (86) hide show
  1. package/README.md +358 -0
  2. package/dist/__tests__/config.test.d.ts +2 -0
  3. package/dist/__tests__/config.test.d.ts.map +1 -0
  4. package/dist/__tests__/config.test.js +84 -0
  5. package/dist/__tests__/config.test.js.map +1 -0
  6. package/dist/__tests__/format.test.d.ts +2 -0
  7. package/dist/__tests__/format.test.d.ts.map +1 -0
  8. package/dist/__tests__/format.test.js +62 -0
  9. package/dist/__tests__/format.test.js.map +1 -0
  10. package/dist/__tests__/sessions.test.d.ts +2 -0
  11. package/dist/__tests__/sessions.test.d.ts.map +1 -0
  12. package/dist/__tests__/sessions.test.js +51 -0
  13. package/dist/__tests__/sessions.test.js.map +1 -0
  14. package/dist/banner.d.ts +4 -0
  15. package/dist/banner.d.ts.map +1 -0
  16. package/dist/banner.js +154 -0
  17. package/dist/banner.js.map +1 -0
  18. package/dist/callbacks.d.ts +10 -0
  19. package/dist/callbacks.d.ts.map +1 -0
  20. package/dist/callbacks.js +184 -0
  21. package/dist/callbacks.js.map +1 -0
  22. package/dist/claude.d.ts +9 -0
  23. package/dist/claude.d.ts.map +1 -0
  24. package/dist/claude.js +117 -0
  25. package/dist/claude.js.map +1 -0
  26. package/dist/cli.d.ts +14 -0
  27. package/dist/cli.d.ts.map +1 -0
  28. package/dist/cli.js +296 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/commands.d.ts +3 -0
  31. package/dist/commands.d.ts.map +1 -0
  32. package/dist/commands.js +107 -0
  33. package/dist/commands.js.map +1 -0
  34. package/dist/config.d.ts +24 -0
  35. package/dist/config.d.ts.map +1 -0
  36. package/dist/config.js +153 -0
  37. package/dist/config.js.map +1 -0
  38. package/dist/context.d.ts +12 -0
  39. package/dist/context.d.ts.map +1 -0
  40. package/dist/context.js +22 -0
  41. package/dist/context.js.map +1 -0
  42. package/dist/daemon.d.ts +11 -0
  43. package/dist/daemon.d.ts.map +1 -0
  44. package/dist/daemon.js +316 -0
  45. package/dist/daemon.js.map +1 -0
  46. package/dist/format.d.ts +8 -0
  47. package/dist/format.d.ts.map +1 -0
  48. package/dist/format.js +57 -0
  49. package/dist/format.js.map +1 -0
  50. package/dist/handler.d.ts +4 -0
  51. package/dist/handler.d.ts.map +1 -0
  52. package/dist/handler.js +292 -0
  53. package/dist/handler.js.map +1 -0
  54. package/dist/index.d.ts +3 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +142 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/logger.d.ts +10 -0
  59. package/dist/logger.d.ts.map +1 -0
  60. package/dist/logger.js +42 -0
  61. package/dist/logger.js.map +1 -0
  62. package/dist/session-ui.d.ts +17 -0
  63. package/dist/session-ui.d.ts.map +1 -0
  64. package/dist/session-ui.js +237 -0
  65. package/dist/session-ui.js.map +1 -0
  66. package/dist/sessions.d.ts +33 -0
  67. package/dist/sessions.d.ts.map +1 -0
  68. package/dist/sessions.js +341 -0
  69. package/dist/sessions.js.map +1 -0
  70. package/dist/setup.d.ts +3 -0
  71. package/dist/setup.d.ts.map +1 -0
  72. package/dist/setup.js +144 -0
  73. package/dist/setup.js.map +1 -0
  74. package/dist/stt.d.ts +11 -0
  75. package/dist/stt.d.ts.map +1 -0
  76. package/dist/stt.js +192 -0
  77. package/dist/stt.js.map +1 -0
  78. package/dist/telegram.d.ts +85 -0
  79. package/dist/telegram.d.ts.map +1 -0
  80. package/dist/telegram.js +97 -0
  81. package/dist/telegram.js.map +1 -0
  82. package/dist/watcher.d.ts +6 -0
  83. package/dist/watcher.d.ts.map +1 -0
  84. package/dist/watcher.js +230 -0
  85. package/dist/watcher.js.map +1 -0
  86. package/package.json +45 -0
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.formatTimeAgo = formatTimeAgo;
37
+ exports.formatSessionLabel = formatSessionLabel;
38
+ exports.readLastTurns = readLastTurns;
39
+ exports.buildSessionGrid = buildSessionGrid;
40
+ exports.buildSessionDisplay = buildSessionDisplay;
41
+ exports.sessionsReplyKeyboard = sessionsReplyKeyboard;
42
+ const fs = __importStar(require("fs"));
43
+ const config_1 = require("./config");
44
+ const format_1 = require("./format");
45
+ const sessions_1 = require("./sessions");
46
+ // ---------- formatting helpers ----------
47
+ function formatTimeAgo(mtime) {
48
+ const diff = Date.now() / 1000 - mtime;
49
+ if (diff < 60)
50
+ return "just now";
51
+ if (diff < 3600)
52
+ return `${Math.floor(diff / 60)}m ago`;
53
+ if (diff < 86400)
54
+ return `${Math.floor(diff / 3600)}h ago`;
55
+ return `${Math.floor(diff / 86400)}d ago`;
56
+ }
57
+ function formatSessionLabel(session) {
58
+ const project = session.projectName || "unknown";
59
+ const preview = session.firstMessage;
60
+ if (preview) {
61
+ const truncated = preview.length > 40 ? preview.slice(0, 37) + "..." : preview;
62
+ return `${project} - ${truncated}`;
63
+ }
64
+ if (session.slug)
65
+ return `${project} (${session.slug})`;
66
+ return project;
67
+ }
68
+ // ---------- history rendering ----------
69
+ function cleanUserMessage(text) {
70
+ let msg = text;
71
+ if (msg.startsWith("User said:\n"))
72
+ msg = msg.slice("User said:\n".length);
73
+ msg = msg.replace(/\n+Reply concisely\.?\s*$/, "");
74
+ msg = msg.replace(/\n+Image file path\(s\):.*/s, "");
75
+ return msg.trim();
76
+ }
77
+ function safePage(body, maxLen) {
78
+ const open = "<blockquote>";
79
+ const close = "</blockquote>";
80
+ const full = open + body + close;
81
+ if (full.length <= maxLen)
82
+ return full;
83
+ const trimTo = maxLen - open.length - close.length - 15;
84
+ return open + body.slice(0, trimTo) + "\n...[truncated]" + close;
85
+ }
86
+ function readLastTurns(sessionId, maxTurns = 4) {
87
+ const filePath = (0, sessions_1.findSessionFilePath)(sessionId);
88
+ if (!filePath)
89
+ return [];
90
+ const turns = [];
91
+ try {
92
+ const content = fs.readFileSync(filePath, "utf-8");
93
+ for (const line of content.split("\n")) {
94
+ if (!line.trim())
95
+ continue;
96
+ let entry;
97
+ try {
98
+ entry = JSON.parse(line);
99
+ }
100
+ catch {
101
+ continue;
102
+ }
103
+ if (entry.type === "user" && !entry.isMeta) {
104
+ const msgObj = entry.message;
105
+ const text = (0, sessions_1.extractMessageContent)(msgObj?.content).trim();
106
+ if (text && !text.startsWith("<")) {
107
+ const cleaned = cleanUserMessage(text);
108
+ if (cleaned) {
109
+ const last = turns.length > 0 ? turns[turns.length - 1] : null;
110
+ if (last && last.role === "user") {
111
+ last.text += "\n" + cleaned;
112
+ }
113
+ else {
114
+ turns.push({ role: "user", text: cleaned });
115
+ }
116
+ }
117
+ }
118
+ }
119
+ else if (entry.type === "assistant") {
120
+ const msgObj = entry.message;
121
+ const text = (0, sessions_1.extractMessageContent)(msgObj?.content).trim();
122
+ if (text) {
123
+ const last = turns.length > 0 ? turns[turns.length - 1] : null;
124
+ if (last && last.role === "assistant") {
125
+ last.text += "\n" + text;
126
+ }
127
+ else {
128
+ turns.push({ role: "assistant", text });
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+ catch {
135
+ return [];
136
+ }
137
+ const recent = turns.slice(-maxTurns);
138
+ if (recent.length === 0)
139
+ return [];
140
+ const maxLen = 3900;
141
+ const separator = "\n\n";
142
+ const formatted = [];
143
+ const turnLimit = 3000;
144
+ for (const t of recent) {
145
+ const label = t.role === "user" ? "You" : "Bot";
146
+ const trimmed = t.text.length > turnLimit ? t.text.slice(0, turnLimit) + "\n...[truncated]" : t.text;
147
+ let html = (0, format_1.mdToTelegramHtml)(trimmed);
148
+ // Strip tags that cannot nest inside <blockquote>
149
+ html = html.replace(/<\/?(?:blockquote|pre)>/g, "");
150
+ formatted.push(`<b><code>${label}:</code></b>\n${html}`);
151
+ }
152
+ const messages = [];
153
+ let current = [];
154
+ let currentLen = "<blockquote></blockquote>".length;
155
+ for (const entry of formatted) {
156
+ const entryLen = entry.length + (current.length > 0 ? separator.length : 0);
157
+ if (current.length > 0 && currentLen + entryLen > maxLen) {
158
+ messages.push(safePage(current.join(separator), maxLen));
159
+ current = [];
160
+ currentLen = "<blockquote></blockquote>".length;
161
+ }
162
+ current.push(entry);
163
+ currentLen += entry.length + (current.length > 1 ? separator.length : 0);
164
+ }
165
+ if (current.length > 0) {
166
+ messages.push(safePage(current.join(separator), maxLen));
167
+ }
168
+ return messages;
169
+ }
170
+ function buildSessionGrid(sessions, activeId, opts) {
171
+ const buttons = [];
172
+ const showDir = opts?.showDir ?? true;
173
+ for (const s of sessions) {
174
+ const isActive = s.sessionId === activeId;
175
+ const timeAgo = formatTimeAgo(s.lastModified);
176
+ const preview = s.lastMessage || s.firstMessage || s.slug || "new session";
177
+ const parts = [];
178
+ if (isActive)
179
+ parts.push("[v]");
180
+ if (showDir)
181
+ parts.push(`${s.projectName}:`);
182
+ parts.push(`${timeAgo} - ${preview}`);
183
+ let label = parts.join(" ");
184
+ const maxLen = 40;
185
+ if (label.length > maxLen)
186
+ label = label.slice(0, maxLen - 2) + "..";
187
+ buttons.push([{ text: label, callback_data: `sess:${s.sessionId}` }]);
188
+ }
189
+ return buttons;
190
+ }
191
+ function buildSessionDisplay(sessions, activeId) {
192
+ if (sessions.length === 0) {
193
+ return {
194
+ text: "No sessions found.",
195
+ buttons: [[{ text: "+ New session", callback_data: "sess:new" }]],
196
+ };
197
+ }
198
+ const blocks = [];
199
+ const buttons = [];
200
+ const maxPreview = 100;
201
+ for (let i = 0; i < sessions.length; i++) {
202
+ const s = sessions[i];
203
+ const num = i + 1;
204
+ const isActive = s.sessionId === activeId;
205
+ const timeAgo = formatTimeAgo(s.lastModified);
206
+ const preview = s.lastMessage || s.firstMessage || s.slug || "";
207
+ const trimmed = preview.length > maxPreview
208
+ ? preview.slice(0, maxPreview - 3) + "..."
209
+ : preview;
210
+ const header = isActive
211
+ ? `<b><u>${num}. ${(0, format_1.escapeHtml)(s.projectName)} [current]</u></b>`
212
+ : `<b>${num}. ${(0, format_1.escapeHtml)(s.projectName)}</b>`;
213
+ const lines = [header, ""];
214
+ if (trimmed)
215
+ lines.push((0, format_1.escapeHtml)(trimmed), "");
216
+ lines.push(`<i>${timeAgo}</i>`);
217
+ blocks.push(`<blockquote>${lines.join("\n")}</blockquote>`);
218
+ if (!isActive) {
219
+ buttons.push([{ text: `Switch to session ${num}`, callback_data: `sess:${s.sessionId}` }]);
220
+ }
221
+ }
222
+ buttons.push([{ text: "+ New session", callback_data: "sess:new" }]);
223
+ return { text: blocks.join("\n\n"), buttons };
224
+ }
225
+ function sessionsReplyKeyboard(sessionsFile) {
226
+ let syncLabel = "/sync";
227
+ if (sessionsFile) {
228
+ const val = (0, config_1.readKvFile)(sessionsFile).REMOTECODE_AUTO_SYNC;
229
+ syncLabel = val === "off" ? "/sync (off)" : "/sync (on)";
230
+ }
231
+ return {
232
+ keyboard: [[{ text: syncLabel }, { text: "/sessions" }, { text: "/projects" }]],
233
+ resize_keyboard: true,
234
+ is_persistent: true,
235
+ };
236
+ }
237
+ //# sourceMappingURL=session-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-ui.js","sourceRoot":"","sources":["../src/session-ui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export { formatTimeAgo, formatSessionLabel, readLastTurns, buildSessionGrid, buildSessionDisplay, sessionsReplyKeyboard, } from "./session-ui";
2
+ export type { InlineButton } from "./session-ui";
3
+ export interface SessionInfo {
4
+ sessionId: string;
5
+ slug: string | null;
6
+ project: string;
7
+ projectName: string;
8
+ lastModified: number;
9
+ firstMessage: string | null;
10
+ lastMessage: string | null;
11
+ }
12
+ export interface ProjectInfo {
13
+ encodedDir: string;
14
+ projectName: string;
15
+ sessionCount: number;
16
+ lastModified: number;
17
+ }
18
+ export declare const UUID_RE: RegExp;
19
+ export declare function decodeProjectPath(encodedDir: string): string;
20
+ export declare function extractMessageContent(content: unknown): string;
21
+ export declare function loadActiveSessionId(sessionsFile: string): string | null;
22
+ export declare function saveActiveSessionId(sessionsFile: string, sessionId: string | null): void;
23
+ export declare function getOrCreateSessionId(sessionsFile: string): string;
24
+ export declare function createNewSession(sessionsFile: string, cwd?: string): string;
25
+ export declare function loadSessionCwd(sessionsFile: string): string | null;
26
+ export declare function saveSessionCwd(sessionsFile: string, cwd: string): void;
27
+ export declare function findSessionFilePath(sessionId: string): string | null;
28
+ export declare function discoverSessions(limit?: number): SessionInfo[];
29
+ export declare function discoverProjectSessions(encodedDir: string, limit?: number): SessionInfo[];
30
+ export declare function discoverProjects(): ProjectInfo[];
31
+ export declare function findSession(query: string): SessionInfo | null;
32
+ export declare function deleteSession(sessionId: string): boolean;
33
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,OAAO,QAAoE,CAAC;AAEzF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAI5D;AAUD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAW9D;AAkDD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvE;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAKxF;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAMjE;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAKtE;AAOD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYpE;AAmCD,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE,CAuBlE;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE,CAW7F;AAED,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAuBhD;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAS7D;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAexD"}
@@ -0,0 +1,341 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.UUID_RE = exports.sessionsReplyKeyboard = exports.buildSessionDisplay = exports.buildSessionGrid = exports.readLastTurns = exports.formatSessionLabel = exports.formatTimeAgo = void 0;
37
+ exports.decodeProjectPath = decodeProjectPath;
38
+ exports.extractMessageContent = extractMessageContent;
39
+ exports.loadActiveSessionId = loadActiveSessionId;
40
+ exports.saveActiveSessionId = saveActiveSessionId;
41
+ exports.getOrCreateSessionId = getOrCreateSessionId;
42
+ exports.createNewSession = createNewSession;
43
+ exports.loadSessionCwd = loadSessionCwd;
44
+ exports.saveSessionCwd = saveSessionCwd;
45
+ exports.findSessionFilePath = findSessionFilePath;
46
+ exports.discoverSessions = discoverSessions;
47
+ exports.discoverProjectSessions = discoverProjectSessions;
48
+ exports.discoverProjects = discoverProjects;
49
+ exports.findSession = findSession;
50
+ exports.deleteSession = deleteSession;
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
53
+ const os = __importStar(require("os"));
54
+ const uuid_1 = require("uuid");
55
+ const config_1 = require("./config");
56
+ // Re-export UI functions for backward compatibility
57
+ var session_ui_1 = require("./session-ui");
58
+ Object.defineProperty(exports, "formatTimeAgo", { enumerable: true, get: function () { return session_ui_1.formatTimeAgo; } });
59
+ Object.defineProperty(exports, "formatSessionLabel", { enumerable: true, get: function () { return session_ui_1.formatSessionLabel; } });
60
+ Object.defineProperty(exports, "readLastTurns", { enumerable: true, get: function () { return session_ui_1.readLastTurns; } });
61
+ Object.defineProperty(exports, "buildSessionGrid", { enumerable: true, get: function () { return session_ui_1.buildSessionGrid; } });
62
+ Object.defineProperty(exports, "buildSessionDisplay", { enumerable: true, get: function () { return session_ui_1.buildSessionDisplay; } });
63
+ Object.defineProperty(exports, "sessionsReplyKeyboard", { enumerable: true, get: function () { return session_ui_1.sessionsReplyKeyboard; } });
64
+ // ---------- project path helpers ----------
65
+ exports.UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
66
+ function decodeProjectPath(encodedDir) {
67
+ // Claude Code encodes: / -> -, and strips leading . from hidden dirs
68
+ // So /path/.hidden/foo -> -path--hidden-foo (-- means /.)
69
+ return "/" + encodedDir.replace(/^-/, "").replace(/--/g, "/.").replace(/-/g, "/");
70
+ }
71
+ function projectDisplayName(encodedDir) {
72
+ const decoded = decodeProjectPath(encodedDir);
73
+ const home = os.homedir();
74
+ if (decoded.replace(/\/$/, "") === home.replace(/\/$/, ""))
75
+ return "~/";
76
+ return decoded.replace(/\/$/, "").split("/").pop() || decoded;
77
+ }
78
+ // ---------- JSONL parsing ----------
79
+ function extractMessageContent(content) {
80
+ if (typeof content === "string")
81
+ return content;
82
+ if (Array.isArray(content)) {
83
+ for (const block of content) {
84
+ if (block && typeof block === "object" && block.type === "text") {
85
+ const text = block.text;
86
+ if (typeof text === "string")
87
+ return text;
88
+ }
89
+ }
90
+ }
91
+ return "";
92
+ }
93
+ function cleanFirstMessage(text) {
94
+ let msg = text;
95
+ if (msg.startsWith("User said:\n"))
96
+ msg = msg.slice("User said:\n".length);
97
+ msg = msg.replace(/\n+Reply concisely\.?\s*$/, "");
98
+ msg = msg.replace(/\n+Image file path\(s\):.*/s, "");
99
+ msg = msg.trim();
100
+ if (!msg || msg.startsWith("<") || msg.startsWith("#"))
101
+ return null;
102
+ const firstLine = msg.split("\n", 1)[0].trim();
103
+ if (!firstLine)
104
+ return null;
105
+ if (firstLine.length > 60)
106
+ return firstLine.slice(0, 57) + "...";
107
+ return firstLine;
108
+ }
109
+ function parseSessionFile(filePath) {
110
+ try {
111
+ const content = fs.readFileSync(filePath, "utf-8");
112
+ let slug = null;
113
+ let firstMessage = null;
114
+ let lastMessage = null;
115
+ for (const line of content.split("\n")) {
116
+ if (!line.trim())
117
+ continue;
118
+ let entry;
119
+ try {
120
+ entry = JSON.parse(line);
121
+ }
122
+ catch {
123
+ continue;
124
+ }
125
+ if (!slug && entry.slug)
126
+ slug = entry.slug;
127
+ if (entry.type === "user" && !entry.isMeta) {
128
+ const msgObj = entry.message;
129
+ const msgContent = extractMessageContent(msgObj?.content);
130
+ if (msgContent.trim() && !msgContent.startsWith("<")) {
131
+ const cleaned = cleanFirstMessage(msgContent.trim());
132
+ if (!firstMessage)
133
+ firstMessage = cleaned;
134
+ lastMessage = cleaned;
135
+ }
136
+ }
137
+ }
138
+ return { slug, firstMessage, lastMessage };
139
+ }
140
+ catch {
141
+ return null;
142
+ }
143
+ }
144
+ // ---------- active session state (KV file) ----------
145
+ function loadActiveSessionId(sessionsFile) {
146
+ return (0, config_1.readKvFile)(sessionsFile).REMOTECODE_SESSION_CLAUDE || null;
147
+ }
148
+ function saveActiveSessionId(sessionsFile, sessionId) {
149
+ let lines = (0, config_1.readEnvLines)(sessionsFile);
150
+ lines = lines.filter((l) => !l.trim().startsWith("REMOTECODE_SESSION_CLAUDE="));
151
+ if (sessionId)
152
+ lines.push(`REMOTECODE_SESSION_CLAUDE=${sessionId}`);
153
+ (0, config_1.writeEnvLines)(sessionsFile, lines);
154
+ }
155
+ function getOrCreateSessionId(sessionsFile) {
156
+ const existing = loadActiveSessionId(sessionsFile);
157
+ if (existing)
158
+ return existing;
159
+ const newId = (0, uuid_1.v4)();
160
+ saveActiveSessionId(sessionsFile, newId);
161
+ return newId;
162
+ }
163
+ function createNewSession(sessionsFile, cwd) {
164
+ const newId = (0, uuid_1.v4)();
165
+ saveActiveSessionId(sessionsFile, newId);
166
+ saveSessionCwd(sessionsFile, cwd || "");
167
+ return newId;
168
+ }
169
+ function loadSessionCwd(sessionsFile) {
170
+ return (0, config_1.readKvFile)(sessionsFile).REMOTECODE_SESSION_CLAUDE_CWD || null;
171
+ }
172
+ function saveSessionCwd(sessionsFile, cwd) {
173
+ let lines = (0, config_1.readEnvLines)(sessionsFile);
174
+ lines = lines.filter((l) => !l.trim().startsWith("REMOTECODE_SESSION_CLAUDE_CWD="));
175
+ if (cwd)
176
+ lines.push(`REMOTECODE_SESSION_CLAUDE_CWD=${cwd}`);
177
+ (0, config_1.writeEnvLines)(sessionsFile, lines);
178
+ }
179
+ // ---------- session file candidates ----------
180
+ function projectsDir() {
181
+ return path.join(os.homedir(), ".claude", "projects");
182
+ }
183
+ function findSessionFilePath(sessionId) {
184
+ const pDir = projectsDir();
185
+ if (!fs.existsSync(pDir))
186
+ return null;
187
+ try {
188
+ for (const dir of fs.readdirSync(pDir)) {
189
+ const dirPath = path.join(pDir, dir);
190
+ if (!fs.statSync(dirPath).isDirectory())
191
+ continue;
192
+ const candidate = path.join(dirPath, `${sessionId}.jsonl`);
193
+ if (fs.existsSync(candidate))
194
+ return candidate;
195
+ }
196
+ }
197
+ catch { /* ignore */ }
198
+ return null;
199
+ }
200
+ function listSessionCandidates(dirPath) {
201
+ const candidates = [];
202
+ try {
203
+ for (const file of fs.readdirSync(dirPath)) {
204
+ if (!file.endsWith(".jsonl"))
205
+ continue;
206
+ if (!exports.UUID_RE.test(file.slice(0, -6)))
207
+ continue;
208
+ const filePath = path.join(dirPath, file);
209
+ candidates.push({ mtime: fs.statSync(filePath).mtimeMs / 1000, filePath });
210
+ }
211
+ }
212
+ catch { /* ignore */ }
213
+ candidates.sort((a, b) => b.mtime - a.mtime);
214
+ return candidates;
215
+ }
216
+ function candidateToSessionInfo(mtime, filePath, encodedDir) {
217
+ const parsed = parseSessionFile(filePath);
218
+ if (!parsed)
219
+ return null;
220
+ return {
221
+ sessionId: path.basename(filePath, ".jsonl"),
222
+ slug: parsed.slug,
223
+ project: decodeProjectPath(encodedDir),
224
+ projectName: projectDisplayName(encodedDir),
225
+ lastModified: mtime,
226
+ firstMessage: parsed.firstMessage,
227
+ lastMessage: parsed.lastMessage,
228
+ };
229
+ }
230
+ // ---------- discovery ----------
231
+ function discoverSessions(limit = 10) {
232
+ const pDir = projectsDir();
233
+ if (!fs.existsSync(pDir))
234
+ return [];
235
+ const all = [];
236
+ try {
237
+ for (const dir of fs.readdirSync(pDir)) {
238
+ const dirPath = path.join(pDir, dir);
239
+ if (!fs.statSync(dirPath).isDirectory())
240
+ continue;
241
+ for (const c of listSessionCandidates(dirPath)) {
242
+ all.push({ ...c, encodedDir: dir });
243
+ }
244
+ }
245
+ }
246
+ catch {
247
+ return [];
248
+ }
249
+ all.sort((a, b) => b.mtime - a.mtime);
250
+ const results = [];
251
+ for (const { mtime, filePath, encodedDir } of all.slice(0, limit)) {
252
+ const info = candidateToSessionInfo(mtime, filePath, encodedDir);
253
+ if (info)
254
+ results.push(info);
255
+ }
256
+ return results;
257
+ }
258
+ function discoverProjectSessions(encodedDir, limit = 20) {
259
+ const dirPath = path.join(projectsDir(), encodedDir);
260
+ if (!fs.existsSync(dirPath) || !fs.statSync(dirPath).isDirectory())
261
+ return [];
262
+ const candidates = listSessionCandidates(dirPath);
263
+ const results = [];
264
+ for (const { mtime, filePath } of candidates.slice(0, limit)) {
265
+ const info = candidateToSessionInfo(mtime, filePath, encodedDir);
266
+ if (info)
267
+ results.push(info);
268
+ }
269
+ return results;
270
+ }
271
+ function discoverProjects() {
272
+ const pDir = projectsDir();
273
+ if (!fs.existsSync(pDir))
274
+ return [];
275
+ const results = [];
276
+ try {
277
+ for (const dir of fs.readdirSync(pDir)) {
278
+ const dirPath = path.join(pDir, dir);
279
+ if (!fs.statSync(dirPath).isDirectory())
280
+ continue;
281
+ if (dir === "memory")
282
+ continue;
283
+ const sessions = discoverProjectSessions(dir, 50);
284
+ if (sessions.length === 0)
285
+ continue;
286
+ results.push({
287
+ encodedDir: dir,
288
+ projectName: projectDisplayName(dir),
289
+ sessionCount: sessions.length,
290
+ lastModified: sessions[0].lastModified,
291
+ });
292
+ }
293
+ }
294
+ catch {
295
+ return [];
296
+ }
297
+ results.sort((a, b) => b.lastModified - a.lastModified);
298
+ return results;
299
+ }
300
+ // ---------- find / delete ----------
301
+ function findSession(query) {
302
+ const sessions = discoverSessions(50);
303
+ if (sessions.length === 0)
304
+ return null;
305
+ const q = query.toLowerCase();
306
+ for (const s of sessions)
307
+ if (s.slug === query)
308
+ return s;
309
+ for (const s of sessions)
310
+ if (s.slug?.toLowerCase() === q)
311
+ return s;
312
+ for (const s of sessions)
313
+ if (s.sessionId === query)
314
+ return s;
315
+ for (const s of sessions)
316
+ if (s.sessionId.startsWith(query))
317
+ return s;
318
+ return null;
319
+ }
320
+ function deleteSession(sessionId) {
321
+ const pDir = projectsDir();
322
+ if (!fs.existsSync(pDir))
323
+ return false;
324
+ try {
325
+ for (const dir of fs.readdirSync(pDir)) {
326
+ const dirPath = path.join(pDir, dir);
327
+ if (!fs.statSync(dirPath).isDirectory())
328
+ continue;
329
+ const sessionFile = path.join(dirPath, `${sessionId}.jsonl`);
330
+ if (fs.existsSync(sessionFile)) {
331
+ fs.unlinkSync(sessionFile);
332
+ return true;
333
+ }
334
+ }
335
+ }
336
+ catch {
337
+ return false;
338
+ }
339
+ return false;
340
+ }
341
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,8CAIC;AAUD,sDAWC;AAkDD,kDAEC;AAED,kDAKC;AAED,oDAMC;AAED,4CAKC;AAED,wCAEC;AAED,wCAKC;AAOD,kDAYC;AAmCD,4CAuBC;AAED,0DAWC;AAED,4CAuBC;AAGD,kCASC;AAED,sCAeC;AApSD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,+BAAoC;AACpC,qCAAmE;AAEnE,oDAAoD;AACpD,2CAOsB;AANpB,2GAAA,aAAa,OAAA;AACb,gHAAA,kBAAkB,OAAA;AAClB,2GAAA,aAAa,OAAA;AACb,8GAAA,gBAAgB,OAAA;AAChB,iHAAA,mBAAmB,OAAA;AACnB,mHAAA,qBAAqB,OAAA;AAsBvB,6CAA6C;AAChC,QAAA,OAAO,GAAG,iEAAiE,CAAC;AAEzF,SAAgB,iBAAiB,CAAC,UAAkB;IAClD,qEAAqE;IACrE,0DAA0D;IAC1D,OAAO,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC;AAChE,CAAC;AAED,sCAAsC;AACtC,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAiC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7F,MAAM,IAAI,GAAI,KAAiC,CAAC,IAAI,CAAC;gBACrD,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;IACnD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IACrD,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;IACjE,OAAO,SAAS,CAAC;AACnB,CAAC;AAQD,SAAS,gBAAgB,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,IAAI,YAAY,GAAkB,IAAI,CAAC;QACvC,IAAI,WAAW,GAAkB,IAAI,CAAC;QAEtC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,KAA8B,CAAC;YACnC,IAAI,CAAC;gBAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrD,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;gBAAE,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;YACrD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAA8C,CAAC;gBACpE,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC1D,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrD,IAAI,CAAC,YAAY;wBAAE,YAAY,GAAG,OAAO,CAAC;oBAC1C,WAAW,GAAG,OAAO,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,SAAgB,mBAAmB,CAAC,YAAoB;IACtD,OAAO,IAAA,mBAAU,EAAC,YAAY,CAAC,CAAC,yBAAyB,IAAI,IAAI,CAAC;AACpE,CAAC;AAED,SAAgB,mBAAmB,CAAC,YAAoB,EAAE,SAAwB;IAChF,IAAI,KAAK,GAAG,IAAA,qBAAY,EAAC,YAAY,CAAC,CAAC;IACvC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAChF,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;IACpE,IAAA,sBAAa,EAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,oBAAoB,CAAC,YAAoB;IACvD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAA,SAAM,GAAE,CAAC;IACvB,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,gBAAgB,CAAC,YAAoB,EAAE,GAAY;IACjE,MAAM,KAAK,GAAG,IAAA,SAAM,GAAE,CAAC;IACvB,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACzC,cAAc,CAAC,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,cAAc,CAAC,YAAoB;IACjD,OAAO,IAAA,mBAAU,EAAC,YAAY,CAAC,CAAC,6BAA6B,IAAI,IAAI,CAAC;AACxE,CAAC;AAED,SAAgB,cAAc,CAAC,YAAoB,EAAE,GAAW;IAC9D,IAAI,KAAK,GAAG,IAAA,qBAAY,EAAC,YAAY,CAAC,CAAC;IACvC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACpF,IAAI,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC5D,IAAA,sBAAa,EAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,gDAAgD;AAChD,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,mBAAmB,CAAC,SAAiB;IACnD,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;YAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,UAAU,GAA+C,EAAE,CAAC;IAClE,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACvC,IAAI,CAAC,eAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACxB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAAa,EACb,QAAgB,EAChB,UAAkB;IAElB,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5C,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,iBAAiB,CAAC,UAAU,CAAC;QACtC,WAAW,EAAE,kBAAkB,CAAC,UAAU,CAAC;QAC3C,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,SAAgB,gBAAgB,CAAC,QAAgB,EAAE;IACjD,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,GAAG,GAAmE,EAAE,CAAC;IAC/E,IAAI,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAClD,KAAK,MAAM,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAEtB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjE,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,uBAAuB,CAAC,UAAkB,EAAE,QAAgB,EAAE;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;QAAE,OAAO,EAAE,CAAC;IAE9E,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjE,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAClD,IAAI,GAAG,KAAK,QAAQ;gBAAE,SAAS;YAC/B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACpC,OAAO,CAAC,IAAI,CAAC;gBACX,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC;gBACpC,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAEtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IACxD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sCAAsC;AACtC,SAAgB,WAAW,CAAC,KAAa;IACvC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;IACpE,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,aAAa,CAAC,SAAiB;IAC7C,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;YAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function runSetupIfNeeded(): Promise<void>;
2
+ export declare function runConfigEditor(): Promise<boolean>;
3
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAsCA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCtD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CA+CxD"}