mistagent 0.1.19 → 0.1.21

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 (198) hide show
  1. package/dist/src/api/quota.d.ts +13 -0
  2. package/dist/src/api/quota.js +7 -0
  3. package/dist/src/components/App.d.ts +2 -0
  4. package/dist/src/components/App.js +23 -5
  5. package/dist/src/components/Header.js +74 -166
  6. package/dist/src/components/MainContent.js +3 -14
  7. package/dist/src/components/shared/MarkdownRenderer.js +2 -17
  8. package/dist/src/components/shared/TextInput.js +62 -3
  9. package/dist/src/hooks/useChat.js +23 -2
  10. package/dist/src/hooks/useSlashCommand.js +45 -0
  11. package/dist/src/main.js +63 -4
  12. package/dist/src/types/api.d.ts +4 -0
  13. package/dist/src/utils/config.d.ts +2 -0
  14. package/dist/src/utils/config.js +23 -0
  15. package/dist/src/utils/constants.d.ts +1 -1
  16. package/dist/src/utils/constants.js +1 -1
  17. package/dist/src/utils/markdown.d.ts +10 -0
  18. package/dist/src/utils/markdown.js +223 -0
  19. package/dist/src/utils/updateChecker.js +10 -4
  20. package/package.json +3 -2
  21. package/dist/index.d.ts.map +0 -1
  22. package/dist/index.js.map +0 -1
  23. package/dist/src/api/auth.d.ts.map +0 -1
  24. package/dist/src/api/auth.js.map +0 -1
  25. package/dist/src/api/chat.d.ts.map +0 -1
  26. package/dist/src/api/chat.js.map +0 -1
  27. package/dist/src/api/client.d.ts.map +0 -1
  28. package/dist/src/api/client.js.map +0 -1
  29. package/dist/src/api/models.d.ts.map +0 -1
  30. package/dist/src/api/models.js.map +0 -1
  31. package/dist/src/api/sessions.d.ts.map +0 -1
  32. package/dist/src/api/sessions.js.map +0 -1
  33. package/dist/src/api/skills.d.ts.map +0 -1
  34. package/dist/src/api/skills.js.map +0 -1
  35. package/dist/src/api/tools.d.ts.map +0 -1
  36. package/dist/src/api/tools.js.map +0 -1
  37. package/dist/src/api/tunnel.d.ts.map +0 -1
  38. package/dist/src/api/tunnel.js.map +0 -1
  39. package/dist/src/components/App.d.ts.map +0 -1
  40. package/dist/src/components/App.js.map +0 -1
  41. package/dist/src/components/AppLayout.d.ts.map +0 -1
  42. package/dist/src/components/AppLayout.js.map +0 -1
  43. package/dist/src/components/Composer.d.ts.map +0 -1
  44. package/dist/src/components/Composer.js.map +0 -1
  45. package/dist/src/components/Footer.d.ts.map +0 -1
  46. package/dist/src/components/Footer.js.map +0 -1
  47. package/dist/src/components/Header.d.ts.map +0 -1
  48. package/dist/src/components/Header.js.map +0 -1
  49. package/dist/src/components/HistoryItemDisplay.d.ts.map +0 -1
  50. package/dist/src/components/HistoryItemDisplay.js.map +0 -1
  51. package/dist/src/components/InputPrompt.d.ts.map +0 -1
  52. package/dist/src/components/InputPrompt.js.map +0 -1
  53. package/dist/src/components/LoadingIndicator.d.ts.map +0 -1
  54. package/dist/src/components/LoadingIndicator.js.map +0 -1
  55. package/dist/src/components/LoginPrompt.d.ts.map +0 -1
  56. package/dist/src/components/LoginPrompt.js.map +0 -1
  57. package/dist/src/components/MainContent.d.ts.map +0 -1
  58. package/dist/src/components/MainContent.js.map +0 -1
  59. package/dist/src/components/ModelPicker.d.ts.map +0 -1
  60. package/dist/src/components/ModelPicker.js.map +0 -1
  61. package/dist/src/components/SessionPicker.d.ts.map +0 -1
  62. package/dist/src/components/SessionPicker.js.map +0 -1
  63. package/dist/src/components/SuggestionsDisplay.d.ts.map +0 -1
  64. package/dist/src/components/SuggestionsDisplay.js.map +0 -1
  65. package/dist/src/components/ThemePicker.d.ts.map +0 -1
  66. package/dist/src/components/ThemePicker.js.map +0 -1
  67. package/dist/src/components/messages/AssistantMessage.d.ts.map +0 -1
  68. package/dist/src/components/messages/AssistantMessage.js.map +0 -1
  69. package/dist/src/components/messages/CommandResult.d.ts.map +0 -1
  70. package/dist/src/components/messages/CommandResult.js.map +0 -1
  71. package/dist/src/components/messages/ErrorMessage.d.ts.map +0 -1
  72. package/dist/src/components/messages/ErrorMessage.js.map +0 -1
  73. package/dist/src/components/messages/InfoMessage.d.ts.map +0 -1
  74. package/dist/src/components/messages/InfoMessage.js.map +0 -1
  75. package/dist/src/components/messages/ModelMessage.d.ts.map +0 -1
  76. package/dist/src/components/messages/ModelMessage.js.map +0 -1
  77. package/dist/src/components/messages/SessionMessage.d.ts.map +0 -1
  78. package/dist/src/components/messages/SessionMessage.js.map +0 -1
  79. package/dist/src/components/messages/ToolCallMessage.d.ts.map +0 -1
  80. package/dist/src/components/messages/ToolCallMessage.js.map +0 -1
  81. package/dist/src/components/messages/UserMessage.d.ts.map +0 -1
  82. package/dist/src/components/messages/UserMessage.js.map +0 -1
  83. package/dist/src/components/shared/HorizontalLine.d.ts.map +0 -1
  84. package/dist/src/components/shared/HorizontalLine.js.map +0 -1
  85. package/dist/src/components/shared/MarkdownRenderer.d.ts.map +0 -1
  86. package/dist/src/components/shared/MarkdownRenderer.js.map +0 -1
  87. package/dist/src/components/shared/Spinner.d.ts.map +0 -1
  88. package/dist/src/components/shared/Spinner.js.map +0 -1
  89. package/dist/src/components/shared/TextInput.d.ts.map +0 -1
  90. package/dist/src/components/shared/TextInput.js.map +0 -1
  91. package/dist/src/contexts/AppContext.d.ts.map +0 -1
  92. package/dist/src/contexts/AppContext.js.map +0 -1
  93. package/dist/src/contexts/ChatContext.d.ts.map +0 -1
  94. package/dist/src/contexts/ChatContext.js.map +0 -1
  95. package/dist/src/contexts/KeypressContext.d.ts.map +0 -1
  96. package/dist/src/contexts/KeypressContext.js.map +0 -1
  97. package/dist/src/contexts/ModelContext.d.ts.map +0 -1
  98. package/dist/src/contexts/ModelContext.js.map +0 -1
  99. package/dist/src/contexts/SessionContext.d.ts.map +0 -1
  100. package/dist/src/contexts/SessionContext.js.map +0 -1
  101. package/dist/src/contexts/UIContext.d.ts.map +0 -1
  102. package/dist/src/contexts/UIContext.js.map +0 -1
  103. package/dist/src/hooks/useChat.d.ts.map +0 -1
  104. package/dist/src/hooks/useChat.js.map +0 -1
  105. package/dist/src/hooks/useFileCompletion.d.ts.map +0 -1
  106. package/dist/src/hooks/useFileCompletion.js.map +0 -1
  107. package/dist/src/hooks/useInputHistory.d.ts.map +0 -1
  108. package/dist/src/hooks/useInputHistory.js.map +0 -1
  109. package/dist/src/hooks/useKeypress.d.ts.map +0 -1
  110. package/dist/src/hooks/useKeypress.js.map +0 -1
  111. package/dist/src/hooks/useLoadingIndicator.d.ts.map +0 -1
  112. package/dist/src/hooks/useLoadingIndicator.js.map +0 -1
  113. package/dist/src/hooks/usePasteBuffer.d.ts.map +0 -1
  114. package/dist/src/hooks/usePasteBuffer.js.map +0 -1
  115. package/dist/src/hooks/useSlashCommand.d.ts.map +0 -1
  116. package/dist/src/hooks/useSlashCommand.js.map +0 -1
  117. package/dist/src/hooks/useStdinInterceptor.d.ts.map +0 -1
  118. package/dist/src/hooks/useStdinInterceptor.js.map +0 -1
  119. package/dist/src/hooks/useSymbolCompletion.d.ts.map +0 -1
  120. package/dist/src/hooks/useSymbolCompletion.js.map +0 -1
  121. package/dist/src/hooks/useTextBuffer.d.ts.map +0 -1
  122. package/dist/src/hooks/useTextBuffer.js.map +0 -1
  123. package/dist/src/main.d.ts.map +0 -1
  124. package/dist/src/main.js.map +0 -1
  125. package/dist/src/tools/code-analyzer/config/ignore-service.d.ts.map +0 -1
  126. package/dist/src/tools/code-analyzer/config/ignore-service.js.map +0 -1
  127. package/dist/src/tools/code-analyzer/config/supported-languages.d.ts.map +0 -1
  128. package/dist/src/tools/code-analyzer/config/supported-languages.js.map +0 -1
  129. package/dist/src/tools/code-analyzer/core/graph/graph.d.ts.map +0 -1
  130. package/dist/src/tools/code-analyzer/core/graph/graph.js.map +0 -1
  131. package/dist/src/tools/code-analyzer/core/graph/types.d.ts.map +0 -1
  132. package/dist/src/tools/code-analyzer/core/graph/types.js.map +0 -1
  133. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.d.ts.map +0 -1
  134. package/dist/src/tools/code-analyzer/core/ingestion/ast-cache.js.map +0 -1
  135. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.d.ts.map +0 -1
  136. package/dist/src/tools/code-analyzer/core/ingestion/call-processor.js.map +0 -1
  137. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.d.ts.map +0 -1
  138. package/dist/src/tools/code-analyzer/core/ingestion/community-processor.js.map +0 -1
  139. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.d.ts.map +0 -1
  140. package/dist/src/tools/code-analyzer/core/ingestion/entry-point-scoring.js.map +0 -1
  141. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.d.ts.map +0 -1
  142. package/dist/src/tools/code-analyzer/core/ingestion/filesystem-walker.js.map +0 -1
  143. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.d.ts.map +0 -1
  144. package/dist/src/tools/code-analyzer/core/ingestion/framework-detection.js.map +0 -1
  145. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.d.ts.map +0 -1
  146. package/dist/src/tools/code-analyzer/core/ingestion/heritage-processor.js.map +0 -1
  147. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.d.ts.map +0 -1
  148. package/dist/src/tools/code-analyzer/core/ingestion/import-processor.js.map +0 -1
  149. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.d.ts.map +0 -1
  150. package/dist/src/tools/code-analyzer/core/ingestion/parsing-processor.js.map +0 -1
  151. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.d.ts.map +0 -1
  152. package/dist/src/tools/code-analyzer/core/ingestion/pipeline.js.map +0 -1
  153. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.d.ts.map +0 -1
  154. package/dist/src/tools/code-analyzer/core/ingestion/process-processor.js.map +0 -1
  155. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.d.ts.map +0 -1
  156. package/dist/src/tools/code-analyzer/core/ingestion/structure-processor.js.map +0 -1
  157. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.d.ts.map +0 -1
  158. package/dist/src/tools/code-analyzer/core/ingestion/symbol-table.js.map +0 -1
  159. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.d.ts.map +0 -1
  160. package/dist/src/tools/code-analyzer/core/ingestion/tree-sitter-queries.js.map +0 -1
  161. package/dist/src/tools/code-analyzer/core/ingestion/utils.d.ts.map +0 -1
  162. package/dist/src/tools/code-analyzer/core/ingestion/utils.js.map +0 -1
  163. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.d.ts.map +0 -1
  164. package/dist/src/tools/code-analyzer/core/ingestion/workers/parse-worker.js.map +0 -1
  165. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.d.ts.map +0 -1
  166. package/dist/src/tools/code-analyzer/core/ingestion/workers/worker-pool.js.map +0 -1
  167. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.d.ts.map +0 -1
  168. package/dist/src/tools/code-analyzer/core/tree-sitter/parser-loader.js.map +0 -1
  169. package/dist/src/tools/code-analyzer/index.d.ts.map +0 -1
  170. package/dist/src/tools/code-analyzer/index.js.map +0 -1
  171. package/dist/src/tools/code-analyzer/lib/utils.d.ts.map +0 -1
  172. package/dist/src/tools/code-analyzer/lib/utils.js.map +0 -1
  173. package/dist/src/tools/code-analyzer/types/pipeline.d.ts.map +0 -1
  174. package/dist/src/tools/code-analyzer/types/pipeline.js.map +0 -1
  175. package/dist/src/types/api.d.ts.map +0 -1
  176. package/dist/src/types/api.js.map +0 -1
  177. package/dist/src/types/history.d.ts.map +0 -1
  178. package/dist/src/types/history.js.map +0 -1
  179. package/dist/src/utils/colors.d.ts.map +0 -1
  180. package/dist/src/utils/colors.js.map +0 -1
  181. package/dist/src/utils/config.d.ts.map +0 -1
  182. package/dist/src/utils/config.js.map +0 -1
  183. package/dist/src/utils/constants.d.ts.map +0 -1
  184. package/dist/src/utils/constants.js.map +0 -1
  185. package/dist/src/utils/fileRef.d.ts.map +0 -1
  186. package/dist/src/utils/fileRef.js.map +0 -1
  187. package/dist/src/utils/fileTunnel.d.ts.map +0 -1
  188. package/dist/src/utils/fileTunnel.js.map +0 -1
  189. package/dist/src/utils/formatters.d.ts.map +0 -1
  190. package/dist/src/utils/formatters.js.map +0 -1
  191. package/dist/src/utils/pasteUtils.d.ts.map +0 -1
  192. package/dist/src/utils/pasteUtils.js.map +0 -1
  193. package/dist/src/utils/skillScanner.d.ts.map +0 -1
  194. package/dist/src/utils/skillScanner.js.map +0 -1
  195. package/dist/src/utils/textUtils.d.ts.map +0 -1
  196. package/dist/src/utils/textUtils.js.map +0 -1
  197. package/dist/src/utils/updateChecker.d.ts.map +0 -1
  198. package/dist/src/utils/updateChecker.js.map +0 -1
package/dist/src/main.js CHANGED
@@ -9,7 +9,7 @@ import { toolsApi } from './api/tools.js';
9
9
  import { skillsApi } from './api/skills.js';
10
10
  import { scanLocalSkills } from './utils/skillScanner.js';
11
11
  import { sessionsApi } from './api/sessions.js';
12
- import { getServerUrl, loadToken, saveToken, clearToken, loadTheme, loadModel } from './utils/config.js';
12
+ import { getServerUrl, loadToken, saveToken, clearToken, loadTheme, loadModel, saveRefreshToken, loadRefreshToken } from './utils/config.js';
13
13
  import chalk from 'chalk';
14
14
  import { setTheme, palette } from './utils/colors.js';
15
15
  import { VERSION } from './utils/constants.js';
@@ -64,7 +64,6 @@ export async function main() {
64
64
  const muted = chalk.hex(palette.textMuted);
65
65
  const accent = chalk.hex(palette.accent);
66
66
  const rawMsg = err instanceof Error ? err.message : String(err);
67
- // Detect specific failure reasons
68
67
  let reason;
69
68
  let hint;
70
69
  if (rawMsg.includes('ECONNREFUSED') || rawMsg.includes('fetch failed')) {
@@ -101,6 +100,41 @@ export async function main() {
101
100
  catch {
102
101
  authStatus = { auth_enabled: false };
103
102
  }
103
+ // Token refresh (Supabase tokens expire in ~1 hour)
104
+ let refreshTimer = null;
105
+ const startTokenRefresh = () => {
106
+ if (refreshTimer)
107
+ return;
108
+ const supabaseUrl = authStatus.supabase_url;
109
+ const supabaseKey = authStatus.supabase_anon_key;
110
+ if (!supabaseUrl || !supabaseKey)
111
+ return;
112
+ refreshTimer = setInterval(async () => {
113
+ const rt = loadRefreshToken();
114
+ if (!rt)
115
+ return;
116
+ try {
117
+ const res = await fetch(`${supabaseUrl}/auth/v1/token?grant_type=refresh_token`, {
118
+ method: 'POST',
119
+ headers: {
120
+ 'Content-Type': 'application/json',
121
+ 'apikey': supabaseKey,
122
+ },
123
+ body: JSON.stringify({ refresh_token: rt }),
124
+ });
125
+ if (res.ok) {
126
+ const data = await res.json();
127
+ client.setToken(data.access_token);
128
+ saveToken(data.access_token);
129
+ saveRefreshToken(data.refresh_token);
130
+ token = data.access_token;
131
+ }
132
+ }
133
+ catch {
134
+ // Silent — will retry next interval
135
+ }
136
+ }, 50 * 60 * 1000); // 50 minutes
137
+ };
104
138
  // Try to restore token
105
139
  let token = null;
106
140
  let username = null;
@@ -114,6 +148,7 @@ export async function main() {
114
148
  token = savedToken;
115
149
  username = me.username;
116
150
  isAuthenticated = true;
151
+ startTokenRefresh();
117
152
  }
118
153
  catch {
119
154
  client.setToken(null);
@@ -162,21 +197,33 @@ export async function main() {
162
197
  { name: '/tools', description: '显示可用工具列表', usage: '/tools' },
163
198
  { name: '/theme', description: '切换显示主题', usage: '/theme' },
164
199
  { name: '/init', description: '分析当前目录代码并生成知识图谱', usage: '/init' },
200
+ { name: '/usage', description: '查看账户使用量和余额', usage: '/usage' },
165
201
  { name: '/quit', description: '退出应用', usage: '/quit', aliases: ['/exit'] },
166
202
  { name: '/logout', description: '退出登录并返回登录界面', usage: '/logout' },
167
203
  ];
168
204
  // Login handler
169
205
  let loginError = null;
170
- const renderApp = (overrides = {}) => (_jsx(App, { serverUrl: serverUrl, token: overrides.token ?? token, username: overrides.username ?? username, authEnabled: authStatus.auth_enabled, version: healthData?.version ?? VERSION, healthData: healthData, availableCommands: commands, availableTools: tools, initialModels: models, initialCurrentModel: currentModel, initialSessions: initialSessions, initialTheme: initialTheme, onLogin: handleLogin, onLogout: handleLogout, loginError: overrides.loginError ?? loginError, isAuthenticated: overrides.isAuthenticated ?? isAuthenticated }));
206
+ // Terminal size tracked outside React so rerender() can inject fresh values
207
+ // This mirrors the claude-code pattern: Ink's renderer owns resize detection,
208
+ // and we piggyback by re-calling render()/rerender() with updated props.
209
+ const getTerminalSize = () => ({
210
+ terminalWidth: process.stdout.columns || 80,
211
+ terminalHeight: process.stdout.rows || 24,
212
+ });
213
+ const renderApp = (overrides = {}) => (_jsx(App, { serverUrl: serverUrl, token: overrides.token ?? token, username: overrides.username ?? username, authEnabled: authStatus.auth_enabled, version: healthData?.version ?? VERSION, healthData: healthData, availableCommands: commands, availableTools: tools, initialModels: models, initialCurrentModel: currentModel, initialSessions: initialSessions, initialTheme: initialTheme, onLogin: handleLogin, onLogout: handleLogout, loginError: overrides.loginError ?? loginError, isAuthenticated: overrides.isAuthenticated ?? isAuthenticated, ...getTerminalSize() }));
171
214
  const handleLogin = async (user, pass) => {
172
215
  try {
173
216
  const res = await authApi.login(user, pass);
174
217
  client.setToken(res.access_token);
175
218
  saveToken(res.access_token);
219
+ if (res.refresh_token) {
220
+ saveRefreshToken(res.refresh_token);
221
+ }
176
222
  token = res.access_token;
177
223
  username = res.user.username;
178
224
  isAuthenticated = true;
179
225
  loginError = null;
226
+ startTokenRefresh();
180
227
  rerender(renderApp({ token, username, isAuthenticated: true, loginError: null }));
181
228
  }
182
229
  catch (err) {
@@ -185,6 +232,10 @@ export async function main() {
185
232
  }
186
233
  };
187
234
  const handleLogout = () => {
235
+ if (refreshTimer) {
236
+ clearInterval(refreshTimer);
237
+ refreshTimer = null;
238
+ }
188
239
  client.setToken(null);
189
240
  clearToken();
190
241
  token = null;
@@ -199,9 +250,17 @@ export async function main() {
199
250
  process.stderr.write(formatUpdateMessage(updateInfo) + '\n\n');
200
251
  }
201
252
  // Render the app
202
- const { rerender } = render(renderApp(), {
253
+ const { rerender, clear } = render(renderApp(), {
203
254
  exitOnCtrlC: false,
204
255
  kittyKeyboard: { mode: 'auto' },
205
256
  });
257
+ // On resize: clear the screen first to avoid stale rows left over when the
258
+ // Header shrinks (e.g. horizontal→compact reduces height by ~10 rows and
259
+ // Ink's in-place diff won't erase the leftover lines). Then rerender with
260
+ // fresh terminal dimensions.
261
+ process.stdout.on('resize', () => {
262
+ clear();
263
+ rerender(renderApp());
264
+ });
206
265
  }
207
266
  //# sourceMappingURL=main.js.map
@@ -1,6 +1,7 @@
1
1
  export interface LoginResponse {
2
2
  success: boolean;
3
3
  access_token: string;
4
+ refresh_token?: string;
4
5
  token_type: string;
5
6
  user: {
6
7
  user_id: string;
@@ -13,9 +14,12 @@ export interface UserInfo {
13
14
  user_id: string;
14
15
  username: string;
15
16
  display_name: string;
17
+ is_admin?: boolean;
16
18
  }
17
19
  export interface AuthStatus {
18
20
  auth_enabled: boolean;
21
+ supabase_url?: string;
22
+ supabase_anon_key?: string;
19
23
  }
20
24
  export interface SessionInfo {
21
25
  thread_id: string;
@@ -3,6 +3,8 @@ export declare function getServerUrl(cliArg?: string): string;
3
3
  export declare function saveToken(token: string): void;
4
4
  export declare function loadToken(): string | null;
5
5
  export declare function clearToken(): void;
6
+ export declare function saveRefreshToken(token: string): void;
7
+ export declare function loadRefreshToken(): string | null;
6
8
  export type ThemeMode = 'dark' | 'light';
7
9
  export declare function saveTheme(mode: ThemeMode): void;
8
10
  export declare function loadTheme(): ThemeMode;
@@ -6,6 +6,8 @@ import { homedir } from 'node:os';
6
6
  const CONFIG_DIR = join(homedir(), '.mistagent');
7
7
  // 登录 token 文件路径,文件权限 0o600 仅当前用户可读写
8
8
  const TOKEN_FILE = join(CONFIG_DIR, 'token');
9
+ // Supabase refresh token(用于自动续期 access_token)
10
+ const REFRESH_TOKEN_FILE = join(CONFIG_DIR, 'refresh_token');
9
11
  // 后端服务器默认地址,可通过 CLI 参数或环境变量 MISTAGENT_SERVER 覆盖
10
12
  // 发布时由 publish.sh 自动切换为 'https://solidity.slowmist.ai',发布后自动改回
11
13
  export const DEFAULT_SERVER_URL = 'https://solidity.slowmist.ai';
@@ -41,11 +43,32 @@ export function loadToken() {
41
43
  export function clearToken() {
42
44
  try {
43
45
  writeFileSync(TOKEN_FILE, '', { mode: 0o600 });
46
+ writeFileSync(REFRESH_TOKEN_FILE, '', { mode: 0o600 });
44
47
  }
45
48
  catch {
46
49
  // 写入失败时静默处理
47
50
  }
48
51
  }
52
+ // 保存 refresh token(Supabase token 续期用)
53
+ export function saveRefreshToken(token) {
54
+ try {
55
+ mkdirSync(CONFIG_DIR, { recursive: true });
56
+ writeFileSync(REFRESH_TOKEN_FILE, token, { mode: 0o600 });
57
+ }
58
+ catch {
59
+ // 写入失败时静默处理
60
+ }
61
+ }
62
+ // 加载 refresh token
63
+ export function loadRefreshToken() {
64
+ try {
65
+ const val = readFileSync(REFRESH_TOKEN_FILE, 'utf-8').trim();
66
+ return val || null;
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
49
72
  // ─── 主题偏好 ────────────────────────────────────────────────
50
73
  // 主题偏好文件路径,保存 'dark' 或 'light'
51
74
  const THEME_FILE = join(CONFIG_DIR, 'theme');
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.1.19";
1
+ export declare const VERSION = "0.1.21";
2
2
  export declare const BANNER_LINES: string[];
3
3
  export declare const BANNER_SUBTITLE = " A G E N T";
4
4
  export declare function getBannerGradient(): string[];
@@ -1,4 +1,4 @@
1
- export const VERSION = '0.1.19';
1
+ export const VERSION = '0.1.21';
2
2
  // Banner as line array for per-line gradient coloring
3
3
  export const BANNER_LINES = [
4
4
  ' ███╗ ███╗██╗███████╗████████╗',
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Custom markdown-to-ANSI renderer.
3
+ *
4
+ * Replaces `marked-terminal` with a hand-rolled `formatToken()` pipeline
5
+ * (modelled after Claude Code's `utils/markdown.ts`). Gives us full control
6
+ * over styling, performance (token caching + plain-text fast-path), and
7
+ * terminal-width responsiveness.
8
+ */
9
+ export declare function applyMarkdown(content: string): string;
10
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Custom markdown-to-ANSI renderer.
3
+ *
4
+ * Replaces `marked-terminal` with a hand-rolled `formatToken()` pipeline
5
+ * (modelled after Claude Code's `utils/markdown.ts`). Gives us full control
6
+ * over styling, performance (token caching + plain-text fast-path), and
7
+ * terminal-width responsiveness.
8
+ */
9
+ import chalk from 'chalk';
10
+ import { marked } from 'marked';
11
+ import { highlight as cliHighlight, supportsLanguage } from 'cli-highlight';
12
+ import stripAnsi from 'strip-ansi';
13
+ import stringWidth from 'string-width';
14
+ import { palette } from './colors.js';
15
+ const EOL = '\n';
16
+ // ── marked configuration (run once) ────────────────────────────
17
+ let configured = false;
18
+ function configureMarked() {
19
+ if (configured)
20
+ return;
21
+ configured = true;
22
+ // Disable strikethrough — models use ~ for "approximately"
23
+ marked.use({ tokenizer: { del() { return undefined; } } });
24
+ }
25
+ // ── LRU token cache ────────────────────────────────────────────
26
+ const TOKEN_CACHE_MAX = 256;
27
+ const tokenCache = new Map();
28
+ // Quick regex test: does the string contain any markdown syntax?
29
+ const MD_SYNTAX_RE = /[#*`|[>\-_~]|\n\n|^\d+\. |\n\d+\. /;
30
+ function cachedLexer(content) {
31
+ // Fast path: plain text → synthetic paragraph (skip full GFM parse)
32
+ const sample = content.length > 500 ? content.slice(0, 500) : content;
33
+ if (!MD_SYNTAX_RE.test(sample)) {
34
+ return [{
35
+ type: 'paragraph', raw: content, text: content,
36
+ tokens: [{ type: 'text', raw: content, text: content }],
37
+ }];
38
+ }
39
+ const key = content;
40
+ const hit = tokenCache.get(key);
41
+ if (hit) {
42
+ // promote to MRU
43
+ tokenCache.delete(key);
44
+ tokenCache.set(key, hit);
45
+ return hit;
46
+ }
47
+ const tokens = marked.lexer(content);
48
+ if (tokenCache.size >= TOKEN_CACHE_MAX) {
49
+ const first = tokenCache.keys().next().value;
50
+ if (first !== undefined)
51
+ tokenCache.delete(first);
52
+ }
53
+ tokenCache.set(key, tokens);
54
+ return tokens;
55
+ }
56
+ // ── Public API ─────────────────────────────────────────────────
57
+ export function applyMarkdown(content) {
58
+ configureMarked();
59
+ // Strip internal heading markers
60
+ const cleaned = content.replace(/\{mist_session_heading:[^}]*\}\s*/g, '');
61
+ return cachedLexer(cleaned)
62
+ .map(t => formatToken(t))
63
+ .join('')
64
+ .trim();
65
+ }
66
+ // ── Token formatter ────────────────────────────────────────────
67
+ function formatToken(token, listDepth = 0, orderedListNumber = null, parent = null) {
68
+ switch (token.type) {
69
+ // ── Headings ──────────────────────────────────────────────
70
+ case 'heading': {
71
+ const inner = children(token, 0, null, null);
72
+ switch (token.depth) {
73
+ case 1:
74
+ return chalk.bold.italic.underline(inner) + EOL + EOL;
75
+ default:
76
+ return chalk.bold(inner) + EOL + EOL;
77
+ }
78
+ }
79
+ // ── Emphasis ──────────────────────────────────────────────
80
+ case 'strong':
81
+ return chalk.bold(children(token, 0, null, parent));
82
+ case 'em':
83
+ return chalk.italic(children(token, 0, null, parent));
84
+ // ── Code ─────────────────────────────────────────────────
85
+ case 'code': {
86
+ const codeToken = token;
87
+ let highlighted;
88
+ if (codeToken.lang && supportsLanguage(codeToken.lang)) {
89
+ try {
90
+ highlighted = cliHighlight(codeToken.text, { language: codeToken.lang });
91
+ }
92
+ catch {
93
+ highlighted = codeToken.text;
94
+ }
95
+ }
96
+ else {
97
+ highlighted = codeToken.text;
98
+ }
99
+ return highlighted + EOL;
100
+ }
101
+ case 'codespan':
102
+ return chalk.hex(palette.info)(token.text);
103
+ // ── Blockquote ───────────────────────────────────────────
104
+ case 'blockquote': {
105
+ const inner = children(token, 0, null, null);
106
+ const bar = chalk.dim('│');
107
+ return inner
108
+ .split(EOL)
109
+ .map(line => stripAnsi(line).trim() ? `${bar} ${chalk.italic(line)}` : line)
110
+ .join(EOL);
111
+ }
112
+ // ── Lists ────────────────────────────────────────────────
113
+ case 'list':
114
+ return token.items
115
+ .map((item, i) => formatToken(item, listDepth, token.ordered ? (token.start ?? 1) + i : null, token))
116
+ .join('');
117
+ case 'list_item':
118
+ return (token.tokens ?? [])
119
+ .map(t => {
120
+ const indent = ' '.repeat(listDepth);
121
+ return `${indent}${formatToken(t, listDepth + 1, orderedListNumber, token)}`;
122
+ })
123
+ .join('');
124
+ // ── Paragraph / text ─────────────────────────────────────
125
+ case 'paragraph':
126
+ return children(token, 0, null, null) + EOL;
127
+ case 'text': {
128
+ if (parent?.type === 'list_item') {
129
+ const bullet = orderedListNumber === null
130
+ ? '-'
131
+ : `${orderedListNumber}.`;
132
+ const inner = token.tokens
133
+ ? token.tokens.map(t => formatToken(t, listDepth, orderedListNumber, token)).join('')
134
+ : token.text;
135
+ return `${bullet} ${inner}${EOL}`;
136
+ }
137
+ // If the text token has sub-tokens (e.g. bold inside text), render them
138
+ if (token.tokens) {
139
+ return token.tokens.map(t => formatToken(t, listDepth, orderedListNumber, token)).join('');
140
+ }
141
+ return token.text;
142
+ }
143
+ // ── Links ────────────────────────────────────────────────
144
+ case 'link': {
145
+ const linkToken = token;
146
+ if (linkToken.href.startsWith('mailto:')) {
147
+ return linkToken.href.replace(/^mailto:/, '');
148
+ }
149
+ const linkText = children(token, 0, null, token);
150
+ const plain = stripAnsi(linkText);
151
+ // If display text differs from URL, show both
152
+ if (plain && plain !== linkToken.href) {
153
+ return `${chalk.blue(plain)} ${chalk.dim(`(${linkToken.href})`)}`;
154
+ }
155
+ return chalk.blue.underline(linkToken.href);
156
+ }
157
+ case 'image':
158
+ return token.href;
159
+ // ── Table ────────────────────────────────────────────────
160
+ case 'table': {
161
+ const tableToken = token;
162
+ const getDisplay = (tokens) => stripAnsi(tokens?.map(t => formatToken(t)).join('') ?? '');
163
+ // Column widths
164
+ const colWidths = tableToken.header.map((h, i) => {
165
+ let max = stringWidth(getDisplay(h.tokens));
166
+ for (const row of tableToken.rows) {
167
+ max = Math.max(max, stringWidth(getDisplay(row[i]?.tokens)));
168
+ }
169
+ return Math.max(max, 3);
170
+ });
171
+ // Header
172
+ let out = '| ';
173
+ tableToken.header.forEach((h, i) => {
174
+ const content = h.tokens?.map(t => formatToken(t)).join('') ?? '';
175
+ const display = getDisplay(h.tokens);
176
+ out += padCell(content, stringWidth(display), colWidths[i]) + ' | ';
177
+ });
178
+ out = out.trimEnd() + EOL;
179
+ // Separator
180
+ out += '|';
181
+ colWidths.forEach(w => { out += '-'.repeat(w + 2) + '|'; });
182
+ out += EOL;
183
+ // Rows
184
+ tableToken.rows.forEach(row => {
185
+ out += '| ';
186
+ row.forEach((cell, i) => {
187
+ const content = cell.tokens?.map(t => formatToken(t)).join('') ?? '';
188
+ const display = getDisplay(cell.tokens);
189
+ out += padCell(content, stringWidth(display), colWidths[i]) + ' | ';
190
+ });
191
+ out = out.trimEnd() + EOL;
192
+ });
193
+ return out + EOL;
194
+ }
195
+ // ── Whitespace / misc ────────────────────────────────────
196
+ case 'space':
197
+ return EOL;
198
+ case 'br':
199
+ return EOL;
200
+ case 'hr':
201
+ return '---' + EOL;
202
+ case 'escape':
203
+ return token.text;
204
+ case 'html':
205
+ case 'def':
206
+ case 'del':
207
+ return '';
208
+ }
209
+ return '';
210
+ }
211
+ // ── Helpers ────────────────────────────────────────────────────
212
+ /** Recursively render child tokens. */
213
+ function children(token, listDepth, orderedListNumber, parent) {
214
+ return (token.tokens ?? [])
215
+ .map((t) => formatToken(t, listDepth, orderedListNumber, parent))
216
+ .join('');
217
+ }
218
+ /** Pad cell content to target width, preserving ANSI codes. */
219
+ function padCell(content, displayWidth, targetWidth) {
220
+ const pad = targetWidth - displayWidth;
221
+ return pad > 0 ? content + ' '.repeat(pad) : content;
222
+ }
223
+ //# sourceMappingURL=markdown.js.map
@@ -39,9 +39,15 @@ export async function checkForUpdate() {
39
39
  }
40
40
  }
41
41
  export function formatUpdateMessage(info) {
42
- return (`\x1b[33m╭───────────────────────────────────────╮\x1b[0m\n` +
43
- `\x1b[33m│\x1b[0m Update available: \x1b[90m${info.current}\x1b[0m \x1b[32m${info.latest}\x1b[0m${' '.repeat(Math.max(0, 18 - info.current.length - info.latest.length))}\x1b[33m│\x1b[0m\n` +
44
- `\x1b[33m│\x1b[0m Run \x1b[36mnpm install -g ${PACKAGE_NAME}\x1b[0m to update \x1b[33m│\x1b[0m\n` +
45
- `\x1b[33m╰───────────────────────────────────────╯\x1b[0m`);
42
+ const line1 = ` Update available: ${info.current} → ${info.latest} `;
43
+ const line2 = ` Run npm install -g ${PACKAGE_NAME} to update `;
44
+ const width = Math.max(line1.length, line2.length);
45
+ const top = '─'.repeat(width);
46
+ const pad1 = ' '.repeat(Math.max(0, width - line1.length));
47
+ const pad2 = ' '.repeat(Math.max(0, width - line2.length));
48
+ return (`\x1b[33m╭${top}╮\x1b[0m\n` +
49
+ `\x1b[33m│\x1b[0m Update available: \x1b[90m${info.current}\x1b[0m → \x1b[32m${info.latest}\x1b[0m ${pad1}\x1b[33m│\x1b[0m\n` +
50
+ `\x1b[33m│\x1b[0m Run \x1b[36mnpm install -g ${PACKAGE_NAME}\x1b[0m to update ${pad2}\x1b[33m│\x1b[0m\n` +
51
+ `\x1b[33m╰${top}╯\x1b[0m`);
46
52
  }
47
53
  //# sourceMappingURL=updateChecker.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mistagent",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "description": "MistAgent - Terminal AI Assistant",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -30,6 +30,7 @@
30
30
  "dependencies": {
31
31
  "archiver": "^7.0.1",
32
32
  "chalk": "^5.4.1",
33
+ "cli-highlight": "^2.1.11",
33
34
  "cli-spinners": "^3.2.0",
34
35
  "eventsource-parser": "^3.0.0",
35
36
  "figures": "^6.1.0",
@@ -42,11 +43,11 @@
42
43
  "ink-text-input": "^6.0.0",
43
44
  "lru-cache": "^11.0.0",
44
45
  "marked": "^15.0.0",
45
- "marked-terminal": "^7.3.0",
46
46
  "mnemonist": "^0.39.0",
47
47
  "pandemonium": "^2.4.0",
48
48
  "react": "^19.2.0",
49
49
  "string-width": "^7.2.0",
50
+ "strip-ansi": "^7.2.0",
50
51
  "tree-sitter": "^0.21.0",
51
52
  "tree-sitter-c": "^0.21.0",
52
53
  "tree-sitter-c-sharp": "^0.21.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":""}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrE,IAAI,CACP,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,eAAe;QACb,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CACP,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/api/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3E,eAAO,MAAM,OAAO;iBACL,OAAO,CAAC,UAAU,CAAC;oBAIhB,MAAM,YAAY,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;aAOxD,OAAO,CAAC,QAAQ,CAAC;CAG3B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/api/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,SAAS;QACP,OAAO,SAAS,EAAE,CAAC,GAAG,CAAa,qBAAqB,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAgB,EAAE,QAAgB;QACtC,OAAO,SAAS,EAAE,CAAC,IAAI,CAAgB,oBAAoB,EAAE;YAC3D,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,OAAO,SAAS,EAAE,CAAC,GAAG,CAAW,iBAAiB,CAAC,CAAC;IACtD,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/api/chat.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;oBAEP,MAAM,aACJ,MAAM,GAAG,IAAI,UAChB,MAAM,GAAG,IAAI,aACV,MAAM,GAAG,IAAI,cACZ,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;0BAkBvC,MAAM,UACR,SAAS,GAAG,QAAQ,GAAG,QAAQ,SAChC,MAAM,EAAE,aACJ,MAAM,GAChB,OAAO,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;qBAclC,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAGzE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/api/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,MAAM,CACJ,OAAe,EACf,QAAwB,EACxB,KAAqB,EACrB,QAAwB,EACxB,SAAyB;QAEzB,MAAM,IAAI,GAA4B,EAAE,OAAO,EAAE,CAAC;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;QAC9B,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW,CACT,QAAgB,EAChB,MAAuC,EACvC,IAAe,EACf,QAAiB;QAEjB,MAAM,IAAI,GAA4B;YACpC,SAAS,EAAE,QAAQ;YACnB,MAAM;SACP,CAAC;QACF,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;QAC9B,CAAC;QACD,OAAO,SAAS,EAAE,CAAC,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,QAAgB;QACrB,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"AAEA,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;CAKtB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAuB;gBAExB,OAAO,EAAE,MAAM;IAI3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIpC,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB,OAAO,CAAC,WAAW;IAQb,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBjE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBjD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBjD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAYnC,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;IAoB7C,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;CAqBpD;AAKD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAGrD;AAED,wBAAgB,SAAS,IAAI,SAAS,CAKrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/api/models.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,eAAO,MAAM,SAAS;YACZ,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC;eAI7B,OAAO,CAAC,YAAY,CAAC;qBAIf,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAG/D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/api/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI;QACF,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,QAAgB,EAAE,KAAa;QACpC,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/api/sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,eAAO,MAAM,WAAW;YACd,OAAO,CAAC;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;cAIlC,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;kBAI1B,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC;yBAK5C,MAAM,UACR,MAAM,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;qBAKxB,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;qBAItC,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;oBAItD,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAGvD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/api/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI;QACF,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM;QACJ,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,QAAgB;QAClB,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CACR,QAAgB,EAChB,KAAc;QAEd,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,oBAAoB,QAAQ,UAAU,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,CAAC,QAAgB;QACrB,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,QAAgB,EAAE,KAAa;QACpC,OAAO,SAAS,EAAE,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,QAAgB;QACpB,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,oBAAoB,QAAQ,QAAQ,CAAC,CAAC;IAChE,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/api/skills.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,eAAO,MAAM,SAAS;qBAEV,cAAc,EAAE,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAGtE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/api/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,QAAQ,CACN,MAAwB;QAExB,OAAO,SAAS,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/api/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,QAAQ;oBACH,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC;CAIxD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/api/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,CAAC,QAAiB;QACpB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACnD,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../../src/api/tunnel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../../src/api/tunnel.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAA4B;IAE5B,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../src/components/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAwBlH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG9D,UAAU,QAAQ;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAChC,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,mBAAmB,EAAE,YAAY,GAAG,IAAI,CAAC;IACzC,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC;CACzB;AA+BD,eAAO,MAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CA4FlC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/components/App.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppLayout.d.ts","sourceRoot":"","sources":["../../../src/components/AppLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,UAAU,cAAc;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,qBAAqB,EAAE,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,GAAG,MAAM,KAAK,IAAI,CAAC;CACpF;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAoC9C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AppLayout.js","sourceRoot":"","sources":["../../../src/components/AppLayout.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAStD,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,qBAAqB,EAAE,EAAE,EAAE;IAClH,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;IAEtC,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;QACvC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,WAAW,KAAG,EACf,KAAC,aAAa,KAAG,IACb,CACP,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;QACtC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,WAAW,KAAG,EACf,KAAC,WAAW,KAAG,IACX,CACP,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;QACtC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,WAAW,KAAG,EACf,KAAC,WAAW,KAAG,IACX,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,KAAC,WAAW,KAAG,EACf,KAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,qBAAqB,GAAI,IAC5H,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/components/Composer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAkCjF,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,qBAAqB,EAAE,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,GAAG,MAAM,KAAK,IAAI,CAAC;CACpF;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAmiB5C,CAAC"}