@prestyj/cli 4.6.4 → 4.10.2
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/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +11 -10
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/mcp.js +1 -1
- package/dist/cli/shared.d.ts +12 -0
- package/dist/cli/shared.d.ts.map +1 -1
- package/dist/cli/shared.js +31 -6
- package/dist/cli/shared.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +63 -62
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +7 -14
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -17
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-compaction.test.js +1 -1
- package/dist/core/agent-session-compaction.test.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +1 -58
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +3 -254
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/auto-update.d.ts +4 -26
- package/dist/core/auto-update.d.ts.map +1 -1
- package/dist/core/auto-update.js +12 -237
- package/dist/core/auto-update.js.map +1 -1
- package/dist/core/claude-code-version.d.ts +1 -9
- package/dist/core/claude-code-version.d.ts.map +1 -1
- package/dist/core/claude-code-version.js +2 -105
- package/dist/core/claude-code-version.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +2 -2
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/file-lock.d.ts +1 -5
- package/dist/core/file-lock.d.ts.map +1 -1
- package/dist/core/file-lock.js +2 -75
- package/dist/core/file-lock.js.map +1 -1
- package/dist/core/logger.d.ts +4 -17
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +21 -110
- package/dist/core/logger.js.map +1 -1
- package/dist/core/lsp/client.d.ts +63 -0
- package/dist/core/lsp/client.d.ts.map +1 -0
- package/dist/core/lsp/client.js +215 -0
- package/dist/core/lsp/client.js.map +1 -0
- package/dist/core/lsp/format.d.ts +12 -0
- package/dist/core/lsp/format.d.ts.map +1 -0
- package/dist/core/lsp/format.js +30 -0
- package/dist/core/lsp/format.js.map +1 -0
- package/dist/core/lsp/format.test.d.ts +2 -0
- package/dist/core/lsp/format.test.d.ts.map +1 -0
- package/dist/core/lsp/format.test.js +56 -0
- package/dist/core/lsp/format.test.js.map +1 -0
- package/dist/core/lsp/integration.test.d.ts +2 -0
- package/dist/core/lsp/integration.test.d.ts.map +1 -0
- package/dist/core/lsp/integration.test.js +60 -0
- package/dist/core/lsp/integration.test.js.map +1 -0
- package/dist/core/lsp/jsonrpc.d.ts +32 -0
- package/dist/core/lsp/jsonrpc.d.ts.map +1 -0
- package/dist/core/lsp/jsonrpc.js +141 -0
- package/dist/core/lsp/jsonrpc.js.map +1 -0
- package/dist/core/lsp/jsonrpc.test.d.ts +2 -0
- package/dist/core/lsp/jsonrpc.test.d.ts.map +1 -0
- package/dist/core/lsp/jsonrpc.test.js +127 -0
- package/dist/core/lsp/jsonrpc.test.js.map +1 -0
- package/dist/core/lsp/manager.d.ts +40 -0
- package/dist/core/lsp/manager.d.ts.map +1 -0
- package/dist/core/lsp/manager.js +135 -0
- package/dist/core/lsp/manager.js.map +1 -0
- package/dist/core/lsp/manager.test.d.ts +2 -0
- package/dist/core/lsp/manager.test.d.ts.map +1 -0
- package/dist/core/lsp/manager.test.js +119 -0
- package/dist/core/lsp/manager.test.js.map +1 -0
- package/dist/core/lsp/servers.d.ts +45 -0
- package/dist/core/lsp/servers.d.ts.map +1 -0
- package/dist/core/lsp/servers.js +247 -0
- package/dist/core/lsp/servers.js.map +1 -0
- package/dist/core/mcp/defaults.d.ts +1 -1
- package/dist/core/mcp/defaults.js +1 -1
- package/dist/core/mcp/store.d.ts +1 -1
- package/dist/core/mcp/store.test.js +1 -1
- package/dist/core/mcp/store.test.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -75
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +4 -344
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/oauth/anthropic.d.ts +1 -3
- package/dist/core/oauth/anthropic.d.ts.map +1 -1
- package/dist/core/oauth/anthropic.js +2 -96
- package/dist/core/oauth/anthropic.js.map +1 -1
- package/dist/core/oauth/gemini.d.ts +1 -3
- package/dist/core/oauth/gemini.d.ts.map +1 -1
- package/dist/core/oauth/gemini.js +2 -385
- package/dist/core/oauth/gemini.js.map +1 -1
- package/dist/core/oauth/kimi.d.ts +1 -45
- package/dist/core/oauth/kimi.d.ts.map +1 -1
- package/dist/core/oauth/kimi.js +2 -277
- package/dist/core/oauth/kimi.js.map +1 -1
- package/dist/core/oauth/openai.d.ts +1 -3
- package/dist/core/oauth/openai.d.ts.map +1 -1
- package/dist/core/oauth/openai.js +2 -187
- package/dist/core/oauth/openai.js.map +1 -1
- package/dist/core/oauth/pkce.d.ts +1 -4
- package/dist/core/oauth/pkce.d.ts.map +1 -1
- package/dist/core/oauth/pkce.js +2 -16
- package/dist/core/oauth/pkce.js.map +1 -1
- package/dist/core/oauth/types.d.ts +1 -13
- package/dist/core/oauth/types.d.ts.map +1 -1
- package/dist/core/process-manager.d.ts +10 -0
- package/dist/core/process-manager.d.ts.map +1 -1
- package/dist/core/process-manager.js +45 -1
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +20 -7
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/session-manager.d.ts +26 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +99 -2
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-manager.test.d.ts +2 -0
- package/dist/core/session-manager.test.d.ts.map +1 -0
- package/dist/core/session-manager.test.js +113 -0
- package/dist/core/session-manager.test.js.map +1 -0
- package/dist/core/settings-manager.d.ts +2 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +6 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/telegram.d.ts +1 -112
- package/dist/core/telegram.d.ts.map +1 -1
- package/dist/core/telegram.js +2 -251
- package/dist/core/telegram.js.map +1 -1
- package/dist/core/thinking-level.d.ts +1 -4
- package/dist/core/thinking-level.d.ts.map +1 -1
- package/dist/core/thinking-level.js +3 -58
- package/dist/core/thinking-level.js.map +1 -1
- package/dist/core/voice-transcriber.d.ts +1 -32
- package/dist/core/voice-transcriber.d.ts.map +1 -1
- package/dist/core/voice-transcriber.js +3 -112
- package/dist/core/voice-transcriber.js.map +1 -1
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +5 -2
- package/dist/interactive.js.map +1 -1
- package/dist/modes/agent-home-mode.d.ts.map +1 -1
- package/dist/modes/agent-home-mode.js +10 -38
- package/dist/modes/agent-home-mode.js.map +1 -1
- package/dist/modes/serve-mode.d.ts.map +1 -1
- package/dist/modes/serve-mode.js +11 -39
- package/dist/modes/serve-mode.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +13 -6
- package/dist/session.js.map +1 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +6 -3
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts +3 -1
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +15 -3
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/edit.test.js +70 -0
- package/dist/tools/edit.test.js.map +1 -1
- package/dist/tools/goals.d.ts +1 -1
- package/dist/tools/index.d.ts +15 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +16 -3
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/task-send.d.ts +12 -0
- package/dist/tools/task-send.d.ts.map +1 -0
- package/dist/tools/task-send.js +34 -0
- package/dist/tools/task-send.js.map +1 -0
- package/dist/tools/task-send.test.d.ts +2 -0
- package/dist/tools/task-send.test.d.ts.map +1 -0
- package/dist/tools/task-send.test.js +95 -0
- package/dist/tools/task-send.test.js.map +1 -0
- package/dist/tools/write.d.ts +3 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +13 -2
- package/dist/tools/write.js.map +1 -1
- package/dist/tools/write.test.js +33 -0
- package/dist/tools/write.test.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/App.d.ts +16 -0
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +126 -12
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/anchor-pad-reclaim.test.d.ts +2 -0
- package/dist/ui/anchor-pad-reclaim.test.d.ts.map +1 -0
- package/dist/ui/anchor-pad-reclaim.test.js +146 -0
- package/dist/ui/anchor-pad-reclaim.test.js.map +1 -0
- package/dist/ui/app-items.d.ts +14 -0
- package/dist/ui/app-items.d.ts.map +1 -1
- package/dist/ui/app-items.js +13 -0
- package/dist/ui/app-items.js.map +1 -1
- package/dist/ui/app-items.test.js +17 -1
- package/dist/ui/app-items.test.js.map +1 -1
- package/dist/ui/atomic-flush-regression.test.d.ts +2 -0
- package/dist/ui/atomic-flush-regression.test.d.ts.map +1 -0
- package/dist/ui/atomic-flush-regression.test.js +218 -0
- package/dist/ui/atomic-flush-regression.test.js.map +1 -0
- package/dist/ui/components/AssistantMessage.test.js +32 -1
- package/dist/ui/components/AssistantMessage.test.js.map +1 -1
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +1 -0
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/components/InputArea.test.js +11 -5
- package/dist/ui/components/InputArea.test.js.map +1 -1
- package/dist/ui/components/Markdown.d.ts.map +1 -1
- package/dist/ui/components/Markdown.js +9 -1
- package/dist/ui/components/Markdown.js.map +1 -1
- package/dist/ui/footer-jump-regression.test.js +56 -9
- package/dist/ui/footer-jump-regression.test.js.map +1 -1
- package/dist/ui/frame-clip-regression.test.d.ts +2 -0
- package/dist/ui/frame-clip-regression.test.d.ts.map +1 -0
- package/dist/ui/frame-clip-regression.test.js +215 -0
- package/dist/ui/frame-clip-regression.test.js.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.d.ts +9 -1
- package/dist/ui/hooks/useTranscriptHistory.d.ts.map +1 -1
- package/dist/ui/hooks/useTranscriptHistory.js +51 -19
- package/dist/ui/hooks/useTranscriptHistory.js.map +1 -1
- package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts +2 -0
- package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.d.ts.map +1 -0
- package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js +81 -0
- package/dist/ui/hooks/useTranscriptHistory.sessionstore.test.js.map +1 -0
- package/dist/ui/live-area-clamp.test.js +37 -0
- package/dist/ui/live-area-clamp.test.js.map +1 -1
- package/dist/ui/live-area-height.d.ts.map +1 -1
- package/dist/ui/live-area-height.js +13 -6
- package/dist/ui/live-area-height.js.map +1 -1
- package/dist/ui/live-area-height.test.js +9 -0
- package/dist/ui/live-area-height.test.js.map +1 -1
- package/dist/ui/live-item-flush.d.ts +28 -0
- package/dist/ui/live-item-flush.d.ts.map +1 -1
- package/dist/ui/live-item-flush.js +44 -0
- package/dist/ui/live-item-flush.js.map +1 -1
- package/dist/ui/live-item-flush.test.js +83 -1
- package/dist/ui/live-item-flush.test.js.map +1 -1
- package/dist/ui/login.d.ts.map +1 -1
- package/dist/ui/login.js +12 -30
- package/dist/ui/login.js.map +1 -1
- package/dist/ui/mcp.d.ts +1 -2
- package/dist/ui/mcp.d.ts.map +1 -1
- package/dist/ui/mcp.js +8 -43
- package/dist/ui/mcp.js.map +1 -1
- package/dist/ui/pixel.d.ts.map +1 -1
- package/dist/ui/pixel.js +10 -38
- package/dist/ui/pixel.js.map +1 -1
- package/dist/ui/queued-message.test.js +7 -1
- package/dist/ui/queued-message.test.js.map +1 -1
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +154 -5
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/sessions.d.ts.map +1 -1
- package/dist/ui/sessions.js +10 -42
- package/dist/ui/sessions.js.map +1 -1
- package/dist/ui/startup-banner-order.test.d.ts +2 -0
- package/dist/ui/startup-banner-order.test.d.ts.map +1 -0
- package/dist/ui/startup-banner-order.test.js +105 -0
- package/dist/ui/startup-banner-order.test.js.map +1 -0
- package/dist/ui/streaming-flush-bounce.test.js +41 -20
- package/dist/ui/streaming-flush-bounce.test.js.map +1 -1
- package/dist/ui/submit-boundary-gap.test.d.ts +2 -0
- package/dist/ui/submit-boundary-gap.test.d.ts.map +1 -0
- package/dist/ui/submit-boundary-gap.test.js +180 -0
- package/dist/ui/submit-boundary-gap.test.js.map +1 -0
- package/dist/ui/terminal-history.d.ts.map +1 -1
- package/dist/ui/terminal-history.js +28 -9
- package/dist/ui/terminal-history.js.map +1 -1
- package/dist/ui/terminal-history.test.js +10 -3
- package/dist/ui/terminal-history.test.js.map +1 -1
- package/dist/ui/testing/screen-recorder.d.ts.map +1 -1
- package/dist/ui/testing/screen-recorder.js +11 -1
- package/dist/ui/testing/screen-recorder.js.map +1 -1
- package/dist/ui/tui-history-parity.test.js +4 -1
- package/dist/ui/tui-history-parity.test.js.map +1 -1
- package/dist/ui/tui-simulation.test.js +7 -1
- package/dist/ui/tui-simulation.test.js.map +1 -1
- package/dist/ui/utils/assistant-stream-split.d.ts +7 -0
- package/dist/ui/utils/assistant-stream-split.d.ts.map +1 -1
- package/dist/ui/utils/assistant-stream-split.js +22 -1
- package/dist/ui/utils/assistant-stream-split.js.map +1 -1
- package/dist/ui/utils/assistant-stream-split.test.js +14 -0
- package/dist/ui/utils/assistant-stream-split.test.js.map +1 -1
- package/dist/ui/utils/markdown-renderer.d.ts.map +1 -1
- package/dist/ui/utils/markdown-renderer.js +46 -3
- package/dist/ui/utils/markdown-renderer.js.map +1 -1
- package/dist/ui/utils/markdown-renderer.test.d.ts +2 -0
- package/dist/ui/utils/markdown-renderer.test.d.ts.map +1 -0
- package/dist/ui/utils/markdown-renderer.test.js +63 -0
- package/dist/ui/utils/markdown-renderer.test.js.map +1 -0
- package/dist/ui/utils/terminal-graphics.d.ts +28 -1
- package/dist/ui/utils/terminal-graphics.d.ts.map +1 -1
- package/dist/ui/utils/terminal-graphics.js +44 -3
- package/dist/ui/utils/terminal-graphics.js.map +1 -1
- package/dist/ui/utils/terminal-graphics.test.js +40 -1
- package/dist/ui/utils/terminal-graphics.test.js.map +1 -1
- package/dist/utils/session-title.js +1 -1
- package/dist/utils/session-title.js.map +1 -1
- package/package.json +7 -6
- package/dist/core/model-registry.test.d.ts +0 -2
- package/dist/core/model-registry.test.d.ts.map +0 -1
- package/dist/core/model-registry.test.js +0 -95
- package/dist/core/model-registry.test.js.map +0 -1
- package/dist/core/oauth/gemini.test.d.ts +0 -2
- package/dist/core/oauth/gemini.test.d.ts.map +0 -1
- package/dist/core/oauth/gemini.test.js +0 -154
- package/dist/core/oauth/gemini.test.js.map +0 -1
- package/dist/core/thinking-level.test.d.ts +0 -2
- package/dist/core/thinking-level.test.d.ts.map +0 -1
- package/dist/core/thinking-level.test.js +0 -51
- package/dist/core/thinking-level.test.js.map +0 -1
- package/dist/core/voice-transcriber.test.d.ts +0 -2
- package/dist/core/voice-transcriber.test.d.ts.map +0 -1
- package/dist/core/voice-transcriber.test.js +0 -88
- package/dist/core/voice-transcriber.test.js.map +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language-server catalog. Binaries are resolved from the project's
|
|
3
|
+
* node_modules/.bin (walking up for monorepo hoisting), ezcoder's OWN install
|
|
4
|
+
* (typescript-language-server + typescript ship as ezcoder dependencies, so
|
|
5
|
+
* TS/JS diagnostics work for every user out of the box), and the user's PATH —
|
|
6
|
+
* never auto-installed at runtime, never fetched over the network. A server
|
|
7
|
+
* that can't be resolved silently degrades to "no diagnostics".
|
|
8
|
+
*
|
|
9
|
+
* Extension lists stay consistent with `core/language-detector.ts` MARKERS.
|
|
10
|
+
*/
|
|
11
|
+
export interface ResolvedCommand {
|
|
12
|
+
command: string;
|
|
13
|
+
args: string[];
|
|
14
|
+
/** Server-specific LSP initializationOptions (e.g. explicit tsserver path). */
|
|
15
|
+
initializationOptions?: unknown;
|
|
16
|
+
}
|
|
17
|
+
export interface LspServerSpec {
|
|
18
|
+
id: string;
|
|
19
|
+
/** File extensions (lowercase, with dot) this server covers. */
|
|
20
|
+
extensions: readonly string[];
|
|
21
|
+
/** Marker files that identify a project root, nearest-first walking up. */
|
|
22
|
+
rootMarkers: readonly string[];
|
|
23
|
+
/** LSP languageId for a given extension. */
|
|
24
|
+
languageIdFor(extension: string): string;
|
|
25
|
+
/** Resolve the server binary for a project root, or null when unavailable. */
|
|
26
|
+
resolveCommand(projectRoot: string): ResolvedCommand | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Find `name`, in priority order:
|
|
30
|
+
* 1. <projectRoot>/node_modules/.bin walking up (project's own version wins)
|
|
31
|
+
* 2. ezcoder's own node_modules/.bin walking up (bundled fallback — this is
|
|
32
|
+
* how typescript-language-server works for users who never installed it)
|
|
33
|
+
* 3. PATH
|
|
34
|
+
*/
|
|
35
|
+
export declare function findExecutable(name: string, projectRoot: string): string | null;
|
|
36
|
+
export declare const LSP_SERVER_CATALOG: readonly LspServerSpec[];
|
|
37
|
+
/** Server spec for a file path, or null when no server covers its extension. */
|
|
38
|
+
export declare function serverForFile(filePath: string, catalog?: readonly LspServerSpec[]): LspServerSpec | null;
|
|
39
|
+
/**
|
|
40
|
+
* Nearest directory containing one of `markers`, walking up from the file's
|
|
41
|
+
* directory. The walk is capped at `ceiling` when the file lives under it.
|
|
42
|
+
* Falls back to the file's own directory when no marker is found.
|
|
43
|
+
*/
|
|
44
|
+
export declare function findProjectRoot(filePath: string, markers: readonly string[], ceiling: string): string;
|
|
45
|
+
//# sourceMappingURL=servers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../src/core/lsp/servers.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,2EAA2E;IAC3E,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,4CAA4C;IAC5C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,8EAA8E;IAC9E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAAC;CAC7D;AAiCD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB/E;AAqFD,eAAO,MAAM,kBAAkB,EAAE,SAAS,aAAa,EA2EtD,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,SAAS,aAAa,EAAuB,GACrD,aAAa,GAAG,IAAI,CAItB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,OAAO,EAAE,MAAM,GACd,MAAM,CAqBR"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const WINDOWS_SUFFIXES = [".cmd", ".exe", ".bat"];
|
|
5
|
+
function isExecutableFile(candidate) {
|
|
6
|
+
try {
|
|
7
|
+
const stat = fs.statSync(candidate);
|
|
8
|
+
return stat.isFile();
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function candidateNames(name) {
|
|
15
|
+
if (process.platform !== "win32")
|
|
16
|
+
return [name];
|
|
17
|
+
return [name, ...WINDOWS_SUFFIXES.map((suffix) => `${name}${suffix}`)];
|
|
18
|
+
}
|
|
19
|
+
/** Directory of this module — anchor for resolving ezcoder's own bundled deps. */
|
|
20
|
+
const MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
function binDirsUpFrom(start) {
|
|
22
|
+
const dirs = [];
|
|
23
|
+
let dir = start;
|
|
24
|
+
for (;;) {
|
|
25
|
+
dirs.push(path.join(dir, "node_modules", ".bin"));
|
|
26
|
+
const parent = path.dirname(dir);
|
|
27
|
+
if (parent === dir)
|
|
28
|
+
break;
|
|
29
|
+
dir = parent;
|
|
30
|
+
}
|
|
31
|
+
return dirs;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Find `name`, in priority order:
|
|
35
|
+
* 1. <projectRoot>/node_modules/.bin walking up (project's own version wins)
|
|
36
|
+
* 2. ezcoder's own node_modules/.bin walking up (bundled fallback — this is
|
|
37
|
+
* how typescript-language-server works for users who never installed it)
|
|
38
|
+
* 3. PATH
|
|
39
|
+
*/
|
|
40
|
+
export function findExecutable(name, projectRoot) {
|
|
41
|
+
const names = candidateNames(name);
|
|
42
|
+
const binDirs = [...binDirsUpFrom(projectRoot), ...binDirsUpFrom(MODULE_DIR)];
|
|
43
|
+
for (const binDir of binDirs) {
|
|
44
|
+
for (const candidate of names) {
|
|
45
|
+
const binPath = path.join(binDir, candidate);
|
|
46
|
+
if (isExecutableFile(binPath))
|
|
47
|
+
return binPath;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// PATH lookup.
|
|
51
|
+
const pathEnv = process.env.PATH ?? "";
|
|
52
|
+
for (const pathDir of pathEnv.split(path.delimiter)) {
|
|
53
|
+
if (!pathDir)
|
|
54
|
+
continue;
|
|
55
|
+
for (const candidate of names) {
|
|
56
|
+
const binPath = path.join(pathDir, candidate);
|
|
57
|
+
if (isExecutableFile(binPath))
|
|
58
|
+
return binPath;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Find a file at `node_modules/<relPath>` walking up from `start`.
|
|
65
|
+
* Deterministic fs checks only — no resolver hooks, no createRequire (whose
|
|
66
|
+
* resolution can be patched by dev runners and global fallback paths).
|
|
67
|
+
*/
|
|
68
|
+
function findInNodeModulesUp(relPath, start) {
|
|
69
|
+
let dir = start;
|
|
70
|
+
for (;;) {
|
|
71
|
+
const candidate = path.join(dir, "node_modules", relPath);
|
|
72
|
+
if (fs.existsSync(candidate))
|
|
73
|
+
return candidate;
|
|
74
|
+
const parent = path.dirname(dir);
|
|
75
|
+
if (parent === dir)
|
|
76
|
+
return null;
|
|
77
|
+
dir = parent;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Resolve an npm package's bin entry script (the real .js/.mjs file, NOT the
|
|
82
|
+
* node_modules/.bin shim). Shims are shell scripts or symlinks that require
|
|
83
|
+
* `node` on PATH; spawning the entry with `process.execPath` works always —
|
|
84
|
+
* including for users whose only node is the one running ezcoder.
|
|
85
|
+
*/
|
|
86
|
+
function findPackageBinScript(pkgName, binName, start) {
|
|
87
|
+
const pkgJsonPath = findInNodeModulesUp(path.join(pkgName, "package.json"), start);
|
|
88
|
+
if (!pkgJsonPath)
|
|
89
|
+
return null;
|
|
90
|
+
try {
|
|
91
|
+
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));
|
|
92
|
+
const bin = typeof pkg.bin === "string" ? pkg.bin : pkg.bin?.[binName];
|
|
93
|
+
if (!bin)
|
|
94
|
+
return null;
|
|
95
|
+
const script = path.join(path.dirname(pkgJsonPath), bin);
|
|
96
|
+
return fs.existsSync(script) ? script : null;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Resolve a node-based language server: the project's own install wins, then
|
|
104
|
+
* ezcoder's bundled dependency, then a PATH binary as a last resort.
|
|
105
|
+
*/
|
|
106
|
+
function resolveNodeServer(pkgName, binName, projectRoot, args) {
|
|
107
|
+
const script = findPackageBinScript(pkgName, binName, projectRoot) ??
|
|
108
|
+
findPackageBinScript(pkgName, binName, MODULE_DIR);
|
|
109
|
+
if (script)
|
|
110
|
+
return { command: process.execPath, args: [script, ...args] };
|
|
111
|
+
const bin = findExecutable(binName, projectRoot);
|
|
112
|
+
return bin ? { command: bin, args } : null;
|
|
113
|
+
}
|
|
114
|
+
const TSSERVER_REL_PATH = path.join("typescript", "lib", "tsserver.js");
|
|
115
|
+
/** The project's own tsserver.js (hoisting-aware), or null. */
|
|
116
|
+
function projectTsserverPath(projectRoot) {
|
|
117
|
+
return findInNodeModulesUp(TSSERVER_REL_PATH, projectRoot);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* ezcoder's bundled tsserver.js — the fallback when the project has no
|
|
121
|
+
* `typescript` install. Resolved relative to THIS module so it finds
|
|
122
|
+
* ezcoder's own dependency regardless of where the user runs.
|
|
123
|
+
*/
|
|
124
|
+
function bundledTsserverPath() {
|
|
125
|
+
return findInNodeModulesUp(TSSERVER_REL_PATH, MODULE_DIR);
|
|
126
|
+
}
|
|
127
|
+
const TS_LANGUAGE_IDS = {
|
|
128
|
+
".ts": "typescript",
|
|
129
|
+
".mts": "typescript",
|
|
130
|
+
".cts": "typescript",
|
|
131
|
+
".tsx": "typescriptreact",
|
|
132
|
+
".js": "javascript",
|
|
133
|
+
".mjs": "javascript",
|
|
134
|
+
".cjs": "javascript",
|
|
135
|
+
".jsx": "javascriptreact",
|
|
136
|
+
};
|
|
137
|
+
export const LSP_SERVER_CATALOG = [
|
|
138
|
+
{
|
|
139
|
+
id: "typescript",
|
|
140
|
+
extensions: [".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"],
|
|
141
|
+
rootMarkers: [
|
|
142
|
+
"tsconfig.json",
|
|
143
|
+
"jsconfig.json",
|
|
144
|
+
"pnpm-lock.yaml",
|
|
145
|
+
"package-lock.json",
|
|
146
|
+
"yarn.lock",
|
|
147
|
+
"bun.lockb",
|
|
148
|
+
],
|
|
149
|
+
languageIdFor: (extension) => TS_LANGUAGE_IDS[extension] ?? "typescript",
|
|
150
|
+
resolveCommand(projectRoot) {
|
|
151
|
+
const command = resolveNodeServer("typescript-language-server", "typescript-language-server", projectRoot, ["--stdio"]);
|
|
152
|
+
if (!command)
|
|
153
|
+
return null;
|
|
154
|
+
// Prefer the project's own typescript (correct version semantics); fall
|
|
155
|
+
// back to ezcoder's bundled copy so bare projects still get diagnostics.
|
|
156
|
+
if (projectTsserverPath(projectRoot))
|
|
157
|
+
return command;
|
|
158
|
+
const tsserver = bundledTsserverPath();
|
|
159
|
+
if (!tsserver)
|
|
160
|
+
return null;
|
|
161
|
+
return { ...command, initializationOptions: { tsserver: { path: tsserver } } };
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: "python",
|
|
166
|
+
extensions: [".py"],
|
|
167
|
+
rootMarkers: [
|
|
168
|
+
"pyrightconfig.json",
|
|
169
|
+
"pyproject.toml",
|
|
170
|
+
"setup.py",
|
|
171
|
+
"setup.cfg",
|
|
172
|
+
"requirements.txt",
|
|
173
|
+
"Pipfile",
|
|
174
|
+
],
|
|
175
|
+
languageIdFor: () => "python",
|
|
176
|
+
resolveCommand(projectRoot) {
|
|
177
|
+
return resolveNodeServer("pyright", "pyright-langserver", projectRoot, ["--stdio"]);
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
id: "go",
|
|
182
|
+
extensions: [".go"],
|
|
183
|
+
rootMarkers: ["go.mod"],
|
|
184
|
+
languageIdFor: () => "go",
|
|
185
|
+
resolveCommand(projectRoot) {
|
|
186
|
+
const bin = findExecutable("gopls", projectRoot);
|
|
187
|
+
return bin ? { command: bin, args: ["serve"] } : null;
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
id: "rust",
|
|
192
|
+
extensions: [".rs"],
|
|
193
|
+
rootMarkers: ["Cargo.toml"],
|
|
194
|
+
languageIdFor: () => "rust",
|
|
195
|
+
resolveCommand(projectRoot) {
|
|
196
|
+
const bin = findExecutable("rust-analyzer", projectRoot);
|
|
197
|
+
return bin ? { command: bin, args: [] } : null;
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
id: "clangd",
|
|
202
|
+
extensions: [".c", ".h", ".cc", ".cpp", ".cxx", ".hpp", ".hh"],
|
|
203
|
+
rootMarkers: ["compile_commands.json", ".clangd", "CMakeLists.txt"],
|
|
204
|
+
languageIdFor: (extension) => (extension === ".c" || extension === ".h" ? "c" : "cpp"),
|
|
205
|
+
resolveCommand(projectRoot) {
|
|
206
|
+
const bin = findExecutable("clangd", projectRoot);
|
|
207
|
+
return bin ? { command: bin, args: ["--log=error"] } : null;
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
];
|
|
211
|
+
/** Server spec for a file path, or null when no server covers its extension. */
|
|
212
|
+
export function serverForFile(filePath, catalog = LSP_SERVER_CATALOG) {
|
|
213
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
214
|
+
if (!extension)
|
|
215
|
+
return null;
|
|
216
|
+
return catalog.find((spec) => spec.extensions.includes(extension)) ?? null;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Nearest directory containing one of `markers`, walking up from the file's
|
|
220
|
+
* directory. The walk is capped at `ceiling` when the file lives under it.
|
|
221
|
+
* Falls back to the file's own directory when no marker is found.
|
|
222
|
+
*/
|
|
223
|
+
export function findProjectRoot(filePath, markers, ceiling) {
|
|
224
|
+
const fileDir = path.dirname(path.resolve(filePath));
|
|
225
|
+
const cap = path.resolve(ceiling);
|
|
226
|
+
const underCeiling = fileDir === cap || fileDir.startsWith(cap + path.sep);
|
|
227
|
+
let dir = fileDir;
|
|
228
|
+
for (;;) {
|
|
229
|
+
for (const marker of markers) {
|
|
230
|
+
try {
|
|
231
|
+
fs.statSync(path.join(dir, marker));
|
|
232
|
+
return dir;
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
// marker absent — keep walking
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (underCeiling && dir === cap)
|
|
239
|
+
break;
|
|
240
|
+
const parent = path.dirname(dir);
|
|
241
|
+
if (parent === dir)
|
|
242
|
+
break;
|
|
243
|
+
dir = parent;
|
|
244
|
+
}
|
|
245
|
+
return fileDir;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=servers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servers.js","sourceRoot":"","sources":["../../../src/core/lsp/servers.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export declare const DEFAULT_MCP_SERVERS: MCPServerConfig[];
|
|
|
8
8
|
export declare function getMCPServers(provider: Provider, apiKey?: string): MCPServerConfig[];
|
|
9
9
|
/**
|
|
10
10
|
* Full startup set: provider defaults + user-configured servers from
|
|
11
|
-
* ~/.ezcoder/mcp.json and ./.
|
|
11
|
+
* ~/.ezcoder/mcp.json and ./.ezcoder/mcp.json. Provider defaults stay authoritative —
|
|
12
12
|
* a user server can only ADD a new name, never override a default like
|
|
13
13
|
* `kencode-search`.
|
|
14
14
|
*/
|
|
@@ -83,7 +83,7 @@ export function getMCPServers(provider, apiKey) {
|
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
85
85
|
* Full startup set: provider defaults + user-configured servers from
|
|
86
|
-
* ~/.ezcoder/mcp.json and ./.
|
|
86
|
+
* ~/.ezcoder/mcp.json and ./.ezcoder/mcp.json. Provider defaults stay authoritative —
|
|
87
87
|
* a user server can only ADD a new name, never override a default like
|
|
88
88
|
* `kencode-search`.
|
|
89
89
|
*/
|
package/dist/core/mcp/store.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { MCPServerConfig } from "./types.js";
|
|
|
4
4
|
* Where a server config lives. We collapse Claude Code's three scopes
|
|
5
5
|
* (local/project/user) into two:
|
|
6
6
|
* - "global" → ~/.ezcoder/mcp.json (all EZ Coder sessions)
|
|
7
|
-
* - "project" → ./.
|
|
7
|
+
* - "project" → ./.ezcoder/mcp.json (the current project root)
|
|
8
8
|
*/
|
|
9
9
|
export type MCPScope = "global" | "project";
|
|
10
10
|
/**
|
|
@@ -55,7 +55,7 @@ describe("mcp store", () => {
|
|
|
55
55
|
},
|
|
56
56
|
scope: "project",
|
|
57
57
|
});
|
|
58
|
-
// Project file lives at ./.
|
|
58
|
+
// Project file lives at ./.ezcoder/mcp.json.
|
|
59
59
|
await fs.access(projectMcpPath(tmpProject));
|
|
60
60
|
});
|
|
61
61
|
it("project overrides global on name collision", async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../../src/core/mcp/store.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../../src/core/mcp/store.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export interface ModelInfo {
|
|
3
|
-
id: string;
|
|
4
|
-
name: string;
|
|
5
|
-
provider: Provider;
|
|
6
|
-
contextWindow: number;
|
|
7
|
-
/**
|
|
8
|
-
* ChatGPT Codex transport uses product-specific windows that can differ from
|
|
9
|
-
* the public API model window. OpenAI OAuth requests include an accountId and
|
|
10
|
-
* route through `/codex/responses`; API-key requests do not.
|
|
11
|
-
*/
|
|
12
|
-
codexContextWindow?: number;
|
|
13
|
-
maxOutputTokens: number;
|
|
14
|
-
supportsThinking: boolean;
|
|
15
|
-
supportsImages: boolean;
|
|
16
|
-
supportsVideo: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Max video payload (bytes) this model's transport accepts, used to decide
|
|
19
|
-
* when an attached/read video must be compressed before sending. Differs by
|
|
20
|
-
* provider delivery mechanism:
|
|
21
|
-
* - Moonshot/Kimi: 100 MB (file-service upload cap)
|
|
22
|
-
* - MiniMax: 50 MB (Anthropic-compatible base64 inline cap)
|
|
23
|
-
* - Gemini: 20 MB (inlineData per-request cap)
|
|
24
|
-
* - Xiaomi (MiMo): ~36 MB raw — the API caps the base64 STRING at 50 MB,
|
|
25
|
-
* and base64 inflates bytes by ~4/3, so 36 MB raw ≈ 48 MB encoded.
|
|
26
|
-
* Only meaningful when `supportsVideo` is true.
|
|
27
|
-
*/
|
|
28
|
-
maxVideoBytes?: number;
|
|
29
|
-
costTier: "low" | "medium" | "high";
|
|
30
|
-
/**
|
|
31
|
-
* The top reasoning tier this model genuinely uses. Used when thinking is
|
|
32
|
-
* enabled to pick the strongest setting per model:
|
|
33
|
-
* - OpenAI GPT-5.5-era: `xhigh`
|
|
34
|
-
* - OpenAI Pro/Codex/old: clamped to what the model accepts
|
|
35
|
-
* - Claude Fable 5 / Opus 4.8 / 4.7 / 4.6 and Sonnet 4.6: `max`
|
|
36
|
-
* (Fable 5 and Opus 4.8/4.7 also cycle through `xhigh` on the way)
|
|
37
|
-
* - Claude Haiku 4.5: `high` (no adaptive `max` tier)
|
|
38
|
-
* - GLM / Moonshot / Xiaomi / MiniMax / Qwen: `high` — binary-thinking
|
|
39
|
-
* providers ignore the level on the wire, so the value is cosmetic
|
|
40
|
-
* - DeepSeek V4: `xhigh` (DeepSeek maps `xhigh` → its internal `max`)
|
|
41
|
-
*/
|
|
42
|
-
maxThinkingLevel: ThinkingLevel;
|
|
43
|
-
}
|
|
44
|
-
export declare const MODELS: ModelInfo[];
|
|
45
|
-
export declare function getModel(id: string): ModelInfo | undefined;
|
|
46
|
-
export declare function getModelsForProvider(provider: Provider): ModelInfo[];
|
|
47
|
-
/** Default video payload cap (bytes) when a video model doesn't declare one. */
|
|
48
|
-
export declare const DEFAULT_MAX_VIDEO_BYTES: number;
|
|
49
|
-
/**
|
|
50
|
-
* Max video payload (bytes) the given model's transport accepts before the clip
|
|
51
|
-
* must be compressed. Returns `undefined` for models without video support, so
|
|
52
|
-
* callers can skip the native-video path entirely.
|
|
53
|
-
*/
|
|
54
|
-
export declare function getVideoByteLimit(modelId: string): number | undefined;
|
|
55
|
-
export declare function getDefaultModel(provider: Provider): ModelInfo;
|
|
56
|
-
export interface ContextWindowOptions {
|
|
57
|
-
provider?: Provider;
|
|
58
|
-
accountId?: string;
|
|
59
|
-
}
|
|
60
|
-
export declare function usesOpenAICodexTransport(options?: ContextWindowOptions): boolean;
|
|
61
|
-
export declare function getContextWindow(modelId: string, options?: ContextWindowOptions): number;
|
|
62
|
-
/**
|
|
63
|
-
* The strongest thinking level the given model genuinely uses. Falls back to
|
|
64
|
-
* `"high"` for unknown models since every provider we ship accepts it.
|
|
65
|
-
*/
|
|
66
|
-
export declare function getMaxThinkingLevel(modelId: string): ThinkingLevel;
|
|
67
|
-
/**
|
|
68
|
-
* Get the model to use for compaction summarization.
|
|
69
|
-
* - Anthropic: always Sonnet 4.6
|
|
70
|
-
* - OpenAI: cheapest (Codex Mini)
|
|
71
|
-
* - Gemini: use the current model
|
|
72
|
-
* - GLM: GLM-4.7 Flash (cheap alternative)
|
|
73
|
-
* - Moonshot: use the current model (no cheap alternative)
|
|
74
|
-
*/
|
|
75
|
-
export declare function getSummaryModel(provider: Provider, currentModelId: string): ModelInfo;
|
|
1
|
+
export * from "@prestyj/core/models";
|
|
76
2
|
//# sourceMappingURL=model-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAGA,cAAc,sBAAsB,CAAC"}
|