@nogataka/smart-edit 0.0.16 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +0 -1
- package/README.md +144 -67
- package/dist/cli.js +2 -2
- package/dist/devtools/generate_prompt_factory.js +5 -5
- package/dist/index.d.ts +33 -34
- package/dist/index.js +33 -34
- package/dist/interprompt/multilang_prompt.js +2 -2
- package/dist/interprompt/prompt_factory.js +2 -2
- package/dist/interprompt/util/class_decorators.d.ts +1 -1
- package/dist/interprompt/util/class_decorators.js +1 -1
- package/dist/{serena → smart-edit}/agent.d.ts +20 -20
- package/dist/{serena → smart-edit}/agent.js +43 -43
- package/dist/{serena → smart-edit}/analytics.d.ts +1 -1
- package/dist/{serena → smart-edit}/analytics.js +3 -3
- package/dist/smart-edit/cli.d.ts +9 -0
- package/dist/{serena → smart-edit}/cli.js +49 -99
- package/dist/{serena → smart-edit}/code_editor.d.ts +7 -7
- package/dist/{serena → smart-edit}/config/context_mode.d.ts +13 -13
- package/dist/{serena → smart-edit}/config/context_mode.js +12 -12
- package/dist/{serena/config/serena_config.d.ts → smart-edit/config/smart_edit_config.d.ts} +14 -14
- package/dist/{serena/config/serena_config.js → smart-edit/config/smart_edit_config.js} +31 -31
- package/dist/smart-edit/constants.d.ts +18 -0
- package/dist/smart-edit/constants.js +27 -0
- package/dist/{serena → smart-edit}/dashboard.d.ts +3 -3
- package/dist/{serena → smart-edit}/dashboard.js +10 -10
- package/dist/{serena → smart-edit}/gui_log_viewer.js +6 -6
- package/dist/{serena → smart-edit}/mcp.d.ts +40 -40
- package/dist/{serena → smart-edit}/mcp.js +38 -38
- package/dist/{serena → smart-edit}/project.d.ts +7 -7
- package/dist/{serena → smart-edit}/project.js +18 -18
- package/dist/{serena → smart-edit}/prompt_factory.d.ts +3 -3
- package/dist/{serena → smart-edit}/prompt_factory.js +1 -1
- package/dist/{serena → smart-edit}/resources/config/contexts/codex.yml +2 -2
- package/dist/{serena → smart-edit}/resources/config/contexts/context.template.yml +1 -1
- package/dist/{serena → smart-edit}/resources/config/contexts/ide-assistant.yml +2 -2
- package/dist/{serena → smart-edit}/resources/config/modes/mode.template.yml +1 -1
- package/dist/{serena → smart-edit}/resources/config/prompt_templates/simple_tool_outputs.yml +1 -1
- package/dist/smart-edit/resources/dashboard/dashboard.js +13 -0
- package/dist/smart-edit/resources/dashboard/index.css +1 -0
- package/dist/smart-edit/resources/dashboard/index.html +13 -0
- package/dist/{serena → smart-edit}/resources/project.template.yml +6 -6
- package/dist/{serena/resources/serena_config.template.yml → smart-edit/resources/smart_edit_config.template.yml} +14 -14
- package/dist/{serena → smart-edit}/symbol.d.ts +7 -7
- package/dist/{serena → smart-edit}/symbol.js +2 -2
- package/dist/{serena → smart-edit}/text_utils.js +2 -2
- package/dist/{serena → smart-edit}/tools/config_tools.d.ts +1 -1
- package/dist/{serena → smart-edit}/tools/config_tools.js +6 -6
- package/dist/{serena → smart-edit}/tools/memory_tools.d.ts +4 -4
- package/dist/{serena → smart-edit}/tools/memory_tools.js +5 -5
- package/dist/{serena → smart-edit}/tools/tools_base.d.ts +15 -15
- package/dist/{serena → smart-edit}/tools/tools_base.js +7 -7
- package/dist/{serena → smart-edit}/util/exception.d.ts +2 -2
- package/dist/{serena → smart-edit}/util/exception.js +2 -2
- package/dist/{serena → smart-edit}/util/file_system.js +3 -3
- package/dist/{serena → smart-edit}/util/git.js +3 -3
- package/dist/{serena → smart-edit}/util/inspection.d.ts +3 -3
- package/dist/{serena → smart-edit}/util/inspection.js +3 -3
- package/dist/{serena → smart-edit}/util/logging.d.ts +6 -6
- package/dist/{serena → smart-edit}/util/logging.js +7 -7
- package/dist/{serena → smart-edit}/util/shell.js +1 -1
- package/dist/smart-edit/version.d.ts +1 -0
- package/dist/{serena → smart-edit}/version.js +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/autoload.js +1 -1
- package/dist/smart-lsp/language_servers/bash_language_server.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/bash_language_server.js +8 -8
- package/dist/{solidlsp → smart-lsp}/language_servers/clangd_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/clangd_language_server.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/clojure_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/clojure_lsp.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/common.d.ts +2 -2
- package/dist/{solidlsp → smart-lsp}/language_servers/common.js +1 -1
- package/dist/{solidlsp → smart-lsp}/language_servers/csharp_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/csharp_language_server.js +12 -12
- package/dist/smart-lsp/language_servers/dart_language_server.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/dart_language_server.js +13 -13
- package/dist/{solidlsp → smart-lsp}/language_servers/eclipse_jdtls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/eclipse_jdtls.js +12 -12
- package/dist/{solidlsp → smart-lsp}/language_servers/erlang_language_server.d.ts +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/erlang_language_server.js +6 -6
- package/dist/{solidlsp → smart-lsp}/language_servers/gopls.d.ts +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/gopls.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/intelephense.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/intelephense.js +11 -11
- package/dist/{solidlsp → smart-lsp}/language_servers/jedi_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/jedi_server.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/kotlin_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/kotlin_language_server.js +9 -9
- package/dist/{solidlsp → smart-lsp}/language_servers/lua_ls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/lua_ls.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/nixd_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/nixd_language_server.js +7 -7
- package/dist/{solidlsp → smart-lsp}/language_servers/pyright_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/pyright_server.js +3 -3
- package/dist/{solidlsp → smart-lsp}/language_servers/r_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/r_language_server.js +5 -5
- package/dist/smart-lsp/language_servers/ruby_common.d.ts +10 -0
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_common.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/ruby_lsp.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/rust_analyzer.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/rust_analyzer.js +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/solargraph.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/solargraph.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/sourcekit_lsp.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/sourcekit_lsp.js +7 -7
- package/dist/{solidlsp → smart-lsp}/language_servers/terraform_ls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/terraform_ls.js +14 -14
- package/dist/{solidlsp → smart-lsp}/language_servers/typescript_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/typescript_language_server.js +11 -11
- package/dist/{solidlsp → smart-lsp}/language_servers/vts_language_server.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/vts_language_server.js +10 -10
- package/dist/{solidlsp → smart-lsp}/language_servers/zls.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/language_servers/zls.js +6 -6
- package/dist/{solidlsp → smart-lsp}/ls.d.ts +25 -25
- package/dist/{solidlsp → smart-lsp}/ls.js +19 -19
- package/dist/{solidlsp → smart-lsp}/ls_config.d.ts +0 -5
- package/dist/{solidlsp → smart-lsp}/ls_config.js +0 -5
- package/dist/{solidlsp → smart-lsp}/ls_exceptions.d.ts +1 -1
- package/dist/{solidlsp → smart-lsp}/ls_exceptions.js +2 -2
- package/dist/{solidlsp → smart-lsp}/ls_handler.d.ts +7 -7
- package/dist/{solidlsp → smart-lsp}/ls_handler.js +12 -12
- package/dist/{solidlsp → smart-lsp}/ls_request.d.ts +4 -4
- package/dist/{solidlsp → smart-lsp}/ls_request.js +3 -3
- package/package.json +14 -4
- package/dist/serena/agno.d.ts +0 -111
- package/dist/serena/agno.js +0 -278
- package/dist/serena/cli.d.ts +0 -9
- package/dist/serena/constants.d.ts +0 -18
- package/dist/serena/constants.js +0 -27
- package/dist/serena/resources/dashboard/dashboard.js +0 -815
- package/dist/serena/resources/dashboard/index.html +0 -307
- package/dist/serena/resources/dashboard/jquery.min.js +0 -3
- package/dist/serena/version.d.ts +0 -1
- package/dist/solidlsp/language_servers/bash_language_server.d.ts +0 -10
- package/dist/solidlsp/language_servers/dart_language_server.d.ts +0 -10
- package/dist/solidlsp/language_servers/ruby_common.d.ts +0 -10
- /package/dist/{serena → smart-edit}/code_editor.js +0 -0
- /package/dist/{serena → smart-edit}/generated/generated_prompt_factory.d.ts +0 -0
- /package/dist/{serena → smart-edit}/generated/generated_prompt_factory.js +0 -0
- /package/dist/{serena → smart-edit}/gui_log_viewer.d.ts +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/agent.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/chatgpt.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/desktop-app.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/contexts/oaicompat-agent.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/internal_modes/jetbrains.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/editing.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/interactive.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/no-onboarding.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/onboarding.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/one-shot.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/modes/planning.yml +0 -0
- /package/dist/{serena → smart-edit}/resources/config/prompt_templates/system_prompt.yml +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-16.svg → smart-edit/resources/dashboard/smart-edit-icon-16.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-32.svg → smart-edit/resources/dashboard/smart-edit-icon-32.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-icon-48.svg → smart-edit/resources/dashboard/smart-edit-icon-48.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-logs-dark-mode.svg → smart-edit/resources/dashboard/smart-edit-logs-dark-mode.svg} +0 -0
- /package/dist/{serena/resources/dashboard/serena-logs.svg → smart-edit/resources/dashboard/smart-edit-logs.svg} +0 -0
- /package/dist/{serena → smart-edit}/text_utils.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/cmd_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/cmd_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/file_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/file_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/index.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/index.js +0 -0
- /package/dist/{serena → smart-edit}/tools/symbol_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/symbol_tools.js +0 -0
- /package/dist/{serena → smart-edit}/tools/workflow_tools.d.ts +0 -0
- /package/dist/{serena → smart-edit}/tools/workflow_tools.js +0 -0
- /package/dist/{serena → smart-edit}/util/class_decorators.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/class_decorators.js +0 -0
- /package/dist/{serena → smart-edit}/util/file_system.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/general.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/general.js +0 -0
- /package/dist/{serena → smart-edit}/util/git.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/shell.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/thread.d.ts +0 -0
- /package/dist/{serena → smart-edit}/util/thread.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/language_servers/autoload.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/ls_types.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/ls_types.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/lsp_protocol_handler/server.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/lsp_protocol_handler/server.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/subprocess_util.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/subprocess_util.js +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/zip.d.ts +0 -0
- /package/dist/{solidlsp → smart-lsp}/util/zip.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
2
|
-
export interface
|
|
2
|
+
export interface SmartEditLogger {
|
|
3
3
|
trace(message: string, meta?: unknown): void;
|
|
4
4
|
debug(message: string, meta?: unknown): void;
|
|
5
5
|
info(message: string, meta?: unknown): void;
|
|
@@ -7,7 +7,7 @@ export interface SerenaLogger {
|
|
|
7
7
|
error(message: string, meta?: unknown): void;
|
|
8
8
|
fatal(message: string, meta?: unknown): void;
|
|
9
9
|
}
|
|
10
|
-
export interface
|
|
10
|
+
export interface SmartEditLoggerOptions {
|
|
11
11
|
level?: LogLevel;
|
|
12
12
|
memoryHandler?: MemoryLogHandler;
|
|
13
13
|
emitToConsole?: boolean;
|
|
@@ -15,7 +15,7 @@ export interface SerenaLoggerOptions {
|
|
|
15
15
|
}
|
|
16
16
|
export declare function setConsoleLoggingEnabled(enabled: boolean): void;
|
|
17
17
|
export declare function isConsoleLoggingEnabled(): boolean;
|
|
18
|
-
export interface
|
|
18
|
+
export interface SmartEditLogMessage {
|
|
19
19
|
timestamp: Date;
|
|
20
20
|
level: LogLevel;
|
|
21
21
|
message: string;
|
|
@@ -39,8 +39,8 @@ export declare class MemoryLogHandler {
|
|
|
39
39
|
getLogMessages(): string[];
|
|
40
40
|
private flush;
|
|
41
41
|
}
|
|
42
|
-
export declare function
|
|
43
|
-
logger:
|
|
42
|
+
export declare function createSmartEditLogger(options?: SmartEditLoggerOptions): {
|
|
43
|
+
logger: SmartEditLogger;
|
|
44
44
|
memoryHandler: MemoryLogHandler;
|
|
45
45
|
};
|
|
46
|
-
export declare function formatLogMessage(message:
|
|
46
|
+
export declare function formatLogMessage(message: SmartEditLogMessage): string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { setImmediate } from 'node:timers';
|
|
2
|
-
import {
|
|
2
|
+
import { SMART_EDIT_LOG_FORMAT } from '../constants.js';
|
|
3
3
|
const LEVEL_ORDER = {
|
|
4
4
|
trace: 10,
|
|
5
5
|
debug: 20,
|
|
@@ -64,7 +64,7 @@ export class MemoryLogHandler {
|
|
|
64
64
|
this.draining = false;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
class
|
|
67
|
+
class SmartEditConsoleLogger {
|
|
68
68
|
level;
|
|
69
69
|
emitToConsole;
|
|
70
70
|
memoryHandler;
|
|
@@ -73,7 +73,7 @@ class SerenaConsoleLogger {
|
|
|
73
73
|
this.level = options.level;
|
|
74
74
|
this.emitToConsole = options.emitToConsole;
|
|
75
75
|
this.memoryHandler = options.memoryHandler;
|
|
76
|
-
this.loggerName = options.name ?? '
|
|
76
|
+
this.loggerName = options.name ?? 'SmartEditLogger';
|
|
77
77
|
}
|
|
78
78
|
trace(message, meta) {
|
|
79
79
|
this.log('trace', message, meta);
|
|
@@ -142,11 +142,11 @@ function getOrCreateSharedMemoryHandler() {
|
|
|
142
142
|
sharedMemoryHandler ??= new MemoryLogHandler();
|
|
143
143
|
return sharedMemoryHandler;
|
|
144
144
|
}
|
|
145
|
-
export function
|
|
145
|
+
export function createSmartEditLogger(options = {}) {
|
|
146
146
|
const useSharedHandler = options.memoryHandler === undefined;
|
|
147
147
|
const memoryHandler = useSharedHandler ? getOrCreateSharedMemoryHandler() : options.memoryHandler;
|
|
148
148
|
const emitToConsole = (options.emitToConsole ?? true) && consoleLoggingEnabled;
|
|
149
|
-
const loggerInstance = new
|
|
149
|
+
const loggerInstance = new SmartEditConsoleLogger({
|
|
150
150
|
level: options.level ?? 'info',
|
|
151
151
|
emitToConsole,
|
|
152
152
|
memoryHandler,
|
|
@@ -162,14 +162,14 @@ export function formatLogMessage(message) {
|
|
|
162
162
|
const timestamp = message.timestamp.toISOString().replace('T', ' ').replace('Z', '');
|
|
163
163
|
const threadName = 'main';
|
|
164
164
|
const location = `${message.loggerName}:log`;
|
|
165
|
-
let formatted =
|
|
165
|
+
let formatted = SMART_EDIT_LOG_FORMAT.replace('%(levelname)-5s', level)
|
|
166
166
|
.replace('%(asctime)-15s', timestamp.padEnd(15).slice(0, 15))
|
|
167
167
|
.replace('%(threadName)s', threadName)
|
|
168
168
|
.replace('%(name)s', message.loggerName)
|
|
169
169
|
.replace('%(funcName)s', 'log')
|
|
170
170
|
.replace('%(lineno)d', '0')
|
|
171
171
|
.replace('%(message)s', enrichMessage(message.message, message.meta));
|
|
172
|
-
if (!
|
|
172
|
+
if (!SMART_EDIT_LOG_FORMAT.includes('%(name)s:%(funcName)s:%(lineno)d')) {
|
|
173
173
|
formatted = `${level} ${timestamp} [${threadName}] ${location} - ${enrichMessage(message.message, message.meta)}`;
|
|
174
174
|
}
|
|
175
175
|
return formatted;
|
|
@@ -2,7 +2,7 @@ import { execFile, spawn } from 'node:child_process';
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import process from 'node:process';
|
|
5
|
-
import { ensureDefaultSubprocessOptions } from '../../
|
|
5
|
+
import { ensureDefaultSubprocessOptions } from '../../smart-lsp/util/subprocess_util.js';
|
|
6
6
|
export async function executeShellCommand(command, { cwd, captureStderr = false, env } = {}) {
|
|
7
7
|
const resolvedCwd = cwd ? path.resolve(cwd) : process.cwd();
|
|
8
8
|
const mergedEnv = env ? { ...process.env, ...env } : process.env;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function smartEditVersion(): string;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import {
|
|
3
|
+
import { createSmartEditLogger } from './util/logging.js';
|
|
4
4
|
const require = createRequire(import.meta.url);
|
|
5
5
|
const { version: packageVersion } = require('../../package.json');
|
|
6
|
-
const { logger } =
|
|
7
|
-
export function
|
|
6
|
+
const { logger } = createSmartEditLogger({ name: 'smart-edit.version', emitToConsole: false, level: 'info' });
|
|
7
|
+
export function smartEditVersion() {
|
|
8
8
|
let version = packageVersion ?? '0.0.0';
|
|
9
9
|
try {
|
|
10
10
|
const commit = execFileSync('git', ['rev-parse', 'HEAD'], { encoding: 'utf-8' }).trim();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Autoload registry for
|
|
1
|
+
// Autoload registry for SmartLSP language servers implemented in TypeScript.
|
|
2
2
|
// Import modules here to ensure they register themselves at runtime.
|
|
3
3
|
import './bash_language_server.js';
|
|
4
4
|
import './csharp_language_server.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
|
+
export declare class BashLanguageServer extends SmartLanguageServer {
|
|
4
|
+
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
5
|
+
level?: number | LogLevel;
|
|
6
|
+
} | null, repositoryRootPath: string, options?: {
|
|
7
|
+
timeout?: number | null;
|
|
8
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
4
4
|
import { Language } from '../ls_config.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer } from '../ls.js';
|
|
6
6
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
7
7
|
import { Platform, RuntimeDependencyCollection, quoteWindowsPath } from './common.js';
|
|
8
8
|
function resolveRuntimeDirectory(settings) {
|
|
@@ -10,7 +10,7 @@ function resolveRuntimeDirectory(settings) {
|
|
|
10
10
|
}
|
|
11
11
|
function ensureDependencies(settings) {
|
|
12
12
|
const runtimeDir = resolveRuntimeDirectory(settings);
|
|
13
|
-
if (process.env.
|
|
13
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
14
14
|
return runtimeDir;
|
|
15
15
|
}
|
|
16
16
|
const dependencies = new RuntimeDependencyCollection([
|
|
@@ -21,9 +21,9 @@ function ensureDependencies(settings) {
|
|
|
21
21
|
platformId: 'any'
|
|
22
22
|
}
|
|
23
23
|
]);
|
|
24
|
-
const { logger } =
|
|
24
|
+
const { logger } = createSmartEditLogger({
|
|
25
25
|
emitToConsole: false,
|
|
26
|
-
name: '
|
|
26
|
+
name: 'smart-lsp.language_servers.bash'
|
|
27
27
|
});
|
|
28
28
|
try {
|
|
29
29
|
dependencies.install(logger, runtimeDir);
|
|
@@ -46,9 +46,9 @@ function determineCommand(settings) {
|
|
|
46
46
|
cmd: 'bash-language-server start'
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
|
-
export class BashLanguageServer extends
|
|
49
|
+
export class BashLanguageServer extends SmartLanguageServer {
|
|
50
50
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
51
|
-
const solidSettings = new
|
|
51
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
52
52
|
const launchInfo = determineCommand(solidSettings);
|
|
53
53
|
const handler = new NodeLanguageServerHandler({
|
|
54
54
|
...launchInfo,
|
|
@@ -56,7 +56,7 @@ export class BashLanguageServer extends SolidLanguageServer {
|
|
|
56
56
|
});
|
|
57
57
|
super(config, loggerLike, repositoryRootPath, {
|
|
58
58
|
...options,
|
|
59
|
-
|
|
59
|
+
smartLspSettings: options?.smartLspSettings,
|
|
60
60
|
handler
|
|
61
61
|
});
|
|
62
62
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class ClangdLanguageServer extends
|
|
4
|
+
export declare class ClangdLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
7
7
|
level?: number | LogLevel;
|
|
8
8
|
} | null, repositoryRootPath: string, options?: {
|
|
9
9
|
timeout?: number | null;
|
|
10
|
-
|
|
10
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
11
11
|
});
|
|
12
12
|
private registerDefaultHandlers;
|
|
13
13
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
4
4
|
import { Language } from '../ls_config.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
6
6
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
7
7
|
import { RuntimeDependencyCollection, quoteWindowsPath } from './common.js';
|
|
8
8
|
const CLANGD_DEPENDENCIES = [
|
|
@@ -45,15 +45,15 @@ function resolveRuntimeDirectory(settings) {
|
|
|
45
45
|
return dir;
|
|
46
46
|
}
|
|
47
47
|
function ensureClangdBinary(runtimeDir, dependencies, loggerLevel) {
|
|
48
|
-
const { logger } =
|
|
49
|
-
name: '
|
|
48
|
+
const { logger } = createSmartEditLogger({
|
|
49
|
+
name: 'smart-lsp.language_servers.clangd',
|
|
50
50
|
emitToConsole: false,
|
|
51
51
|
level: loggerLevel === undefined ? undefined : coerceLogLevel(loggerLevel)
|
|
52
52
|
});
|
|
53
53
|
const binaryPath = dependencies.binaryPath(runtimeDir);
|
|
54
54
|
if (!fs.existsSync(binaryPath)) {
|
|
55
|
-
if (process.env.
|
|
56
|
-
throw new Error(`clangd executable not found at ${binaryPath}. Set
|
|
55
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
56
|
+
throw new Error(`clangd executable not found at ${binaryPath}. Set SMART_EDIT_SKIP_RUNTIME_INSTALL=0 to allow downloads.`);
|
|
57
57
|
}
|
|
58
58
|
const dep = dependencies.getSingleDepForCurrentPlatform();
|
|
59
59
|
logger.info(`Downloading clangd runtime dependency from ${dep.url}`);
|
|
@@ -72,10 +72,10 @@ function ensureClangdBinary(runtimeDir, dependencies, loggerLevel) {
|
|
|
72
72
|
}
|
|
73
73
|
return binaryPath;
|
|
74
74
|
}
|
|
75
|
-
export class ClangdLanguageServer extends
|
|
75
|
+
export class ClangdLanguageServer extends SmartLanguageServer {
|
|
76
76
|
handler;
|
|
77
77
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
78
|
-
const solidSettings = new
|
|
78
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
79
79
|
const runtimeDir = resolveRuntimeDirectory(solidSettings);
|
|
80
80
|
const dependencies = new RuntimeDependencyCollection(CLANGD_DEPENDENCIES);
|
|
81
81
|
const binaryPath = ensureClangdBinary(runtimeDir, dependencies, loggerLike?.level);
|
|
@@ -86,7 +86,7 @@ export class ClangdLanguageServer extends SolidLanguageServer {
|
|
|
86
86
|
super(config, loggerLike, repositoryRootPath, {
|
|
87
87
|
...options,
|
|
88
88
|
handler,
|
|
89
|
-
|
|
89
|
+
smartLspSettings: options?.smartLspSettings
|
|
90
90
|
});
|
|
91
91
|
this.handler = handler;
|
|
92
92
|
this.registerDefaultHandlers();
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class ClojureLanguageServer extends
|
|
4
|
+
export declare class ClojureLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
7
7
|
level?: number | LogLevel;
|
|
8
8
|
} | null, repositoryRootPath: string, options?: {
|
|
9
9
|
timeout?: number | null;
|
|
10
|
-
|
|
10
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
11
11
|
});
|
|
12
12
|
private registerHandlers;
|
|
13
13
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import {
|
|
4
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
5
5
|
import { Language } from '../ls_config.js';
|
|
6
6
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
7
|
-
import {
|
|
7
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
8
8
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
9
9
|
import { RuntimeDependencyCollection, quoteWindowsPath } from './common.js';
|
|
10
10
|
const CLOJURE_LSP_RELEASES = 'https://github.com/clojure-lsp/clojure-lsp/releases/latest/download';
|
|
@@ -46,7 +46,7 @@ const CLOJURE_DEPENDENCIES = [
|
|
|
46
46
|
}
|
|
47
47
|
];
|
|
48
48
|
function verifyClojureCli() {
|
|
49
|
-
if (process.env.
|
|
49
|
+
if (process.env.SMART_EDIT_ASSUME_CLOJURE === '1') {
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
const whichCmd = process.platform === 'win32' ? 'where' : 'which';
|
|
@@ -69,14 +69,14 @@ function resolveRuntimeDirectory(settings) {
|
|
|
69
69
|
return dir;
|
|
70
70
|
}
|
|
71
71
|
function ensureBinary(runtimeDir, dependencies, loggerLevel) {
|
|
72
|
-
const { logger } =
|
|
73
|
-
name: '
|
|
72
|
+
const { logger } = createSmartEditLogger({
|
|
73
|
+
name: 'smart-lsp.language_servers.clojure',
|
|
74
74
|
emitToConsole: false,
|
|
75
75
|
level: loggerLevel === undefined ? undefined : coerceLogLevel(loggerLevel)
|
|
76
76
|
});
|
|
77
77
|
const binaryPath = dependencies.binaryPath(runtimeDir);
|
|
78
78
|
if (!fs.existsSync(binaryPath)) {
|
|
79
|
-
if (process.env.
|
|
79
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
80
80
|
throw new Error(`clojure-lsp binary not found at ${binaryPath}. Allow downloads or install clojure-lsp manually.`);
|
|
81
81
|
}
|
|
82
82
|
logger.info('Downloading clojure-lsp runtime dependency.');
|
|
@@ -95,11 +95,11 @@ function ensureBinary(runtimeDir, dependencies, loggerLevel) {
|
|
|
95
95
|
}
|
|
96
96
|
return binaryPath;
|
|
97
97
|
}
|
|
98
|
-
export class ClojureLanguageServer extends
|
|
98
|
+
export class ClojureLanguageServer extends SmartLanguageServer {
|
|
99
99
|
handler;
|
|
100
100
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
101
101
|
verifyClojureCli();
|
|
102
|
-
const solidSettings = new
|
|
102
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
103
103
|
const runtimeDir = resolveRuntimeDirectory(solidSettings);
|
|
104
104
|
const dependencies = new RuntimeDependencyCollection(CLOJURE_DEPENDENCIES);
|
|
105
105
|
const binaryPath = ensureBinary(runtimeDir, dependencies, loggerLike?.level);
|
|
@@ -110,7 +110,7 @@ export class ClojureLanguageServer extends SolidLanguageServer {
|
|
|
110
110
|
super(config, loggerLike, repositoryRootPath, {
|
|
111
111
|
...options,
|
|
112
112
|
handler,
|
|
113
|
-
|
|
113
|
+
smartLspSettings: options?.smartLspSettings
|
|
114
114
|
});
|
|
115
115
|
this.handler = handler;
|
|
116
116
|
this.registerHandlers();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Buffer } from 'node:buffer';
|
|
2
2
|
import { type SpawnSyncOptions, type SpawnSyncReturns } from 'node:child_process';
|
|
3
|
-
import type {
|
|
3
|
+
import type { SmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
4
4
|
export interface RuntimeDependency {
|
|
5
5
|
id: string;
|
|
6
6
|
platformId?: PlatformId | 'any' | 'platform-agnostic' | null;
|
|
@@ -26,7 +26,7 @@ export declare class RuntimeDependencyCollection {
|
|
|
26
26
|
getDependenciesForCurrentPlatform(): RuntimeDependency[];
|
|
27
27
|
getSingleDepForCurrentPlatform(dependencyId?: string | null): RuntimeDependency;
|
|
28
28
|
binaryPath(targetDir: string): string;
|
|
29
|
-
install(logger:
|
|
29
|
+
install(logger: SmartEditLogger, targetDir: string): Record<string, string>;
|
|
30
30
|
private runCommand;
|
|
31
31
|
private makeKey;
|
|
32
32
|
private installFromUrl;
|
|
@@ -142,7 +142,7 @@ export class RuntimeDependencyCollection {
|
|
|
142
142
|
if (!dep.url) {
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
145
|
-
const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), '
|
|
145
|
+
const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'smart-edit-runtime-'));
|
|
146
146
|
const downloadPath = path.join(tempRoot, inferFilenameFromUrl(dep));
|
|
147
147
|
try {
|
|
148
148
|
this.downloadArchive(dep, downloadPath, logger);
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class CSharpLanguageServer extends
|
|
4
|
+
export declare class CSharpLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
private initialized;
|
|
7
7
|
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
8
8
|
level?: number | LogLevel;
|
|
9
9
|
} | null, repositoryRootPath: string, options?: {
|
|
10
10
|
timeout?: number | null;
|
|
11
|
-
|
|
11
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
12
12
|
});
|
|
13
13
|
start(): this;
|
|
14
14
|
stop(shutdownTimeout?: number): void;
|
|
@@ -3,10 +3,10 @@ import fs from 'node:fs';
|
|
|
3
3
|
import os from 'node:os';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { pathToFileURL } from 'node:url';
|
|
6
|
-
import {
|
|
6
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
7
7
|
import { Language } from '../ls_config.js';
|
|
8
8
|
import { ensureDefaultSubprocessOptions } from '../util/subprocess_util.js';
|
|
9
|
-
import {
|
|
9
|
+
import { SmartLanguageServer, SmartLspSettings, registerLanguageServer, coerceLogLevel } from '../ls.js';
|
|
10
10
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
11
11
|
import { RuntimeDependencyCollection } from './common.js';
|
|
12
12
|
import { SafeZipExtractor } from '../util/zip.js';
|
|
@@ -110,7 +110,7 @@ const RUNTIME_DEPENDENCIES = [
|
|
|
110
110
|
}
|
|
111
111
|
];
|
|
112
112
|
const CSHARP_IGNORED_DIRECTORIES = new Set(['bin', 'obj', 'packages', '.vs']);
|
|
113
|
-
export class CSharpLanguageServer extends
|
|
113
|
+
export class CSharpLanguageServer extends SmartLanguageServer {
|
|
114
114
|
handler;
|
|
115
115
|
initialized = false;
|
|
116
116
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
@@ -118,11 +118,11 @@ export class CSharpLanguageServer extends SolidLanguageServer {
|
|
|
118
118
|
...config,
|
|
119
119
|
ignoredPaths: mergeIgnoredDirectories(config.ignoredPaths)
|
|
120
120
|
};
|
|
121
|
-
const solidSettings = new
|
|
121
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
122
122
|
const runtimeDir = resolveRuntimeDirectory(solidSettings);
|
|
123
123
|
const languageSettings = normalizeLanguageSettings(solidSettings.lsSpecificSettings?.[Language.CSHARP]);
|
|
124
|
-
const { logger: installLogger } =
|
|
125
|
-
name: '
|
|
124
|
+
const { logger: installLogger } = createSmartEditLogger({
|
|
125
|
+
name: 'smart-lsp.language_servers.csharp',
|
|
126
126
|
emitToConsole: false,
|
|
127
127
|
level: loggerLike?.level === undefined ? undefined : coerceLogLevel(loggerLike.level)
|
|
128
128
|
});
|
|
@@ -144,7 +144,7 @@ export class CSharpLanguageServer extends SolidLanguageServer {
|
|
|
144
144
|
super(augmentedConfig, loggerLike, repositoryRootPath, {
|
|
145
145
|
...options,
|
|
146
146
|
handler,
|
|
147
|
-
|
|
147
|
+
smartLspSettings: options?.smartLspSettings
|
|
148
148
|
});
|
|
149
149
|
this.handler = handler;
|
|
150
150
|
this.registerHandlers();
|
|
@@ -281,8 +281,8 @@ function ensureDotnetRuntime(options) {
|
|
|
281
281
|
if (fs.existsSync(binaryPath)) {
|
|
282
282
|
return binaryPath;
|
|
283
283
|
}
|
|
284
|
-
if (process.env.
|
|
285
|
-
throw new Error(`dotnet runtime was not found at ${binaryPath}. Set
|
|
284
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
285
|
+
throw new Error(`dotnet runtime was not found at ${binaryPath}. Set SMART_EDIT_SKIP_RUNTIME_INSTALL=0 to allow downloads or place dotnet manually.`);
|
|
286
286
|
}
|
|
287
287
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
288
288
|
logger.info('Downloading .NET runtime for C# language server.');
|
|
@@ -310,11 +310,11 @@ function ensureLanguageServer(options) {
|
|
|
310
310
|
if (fs.existsSync(dllPath)) {
|
|
311
311
|
return dllPath;
|
|
312
312
|
}
|
|
313
|
-
if (process.env.
|
|
313
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
314
314
|
throw new Error(`C# language server DLL not found at ${dllPath}. Allow downloads or place Microsoft.CodeAnalysis.LanguageServer manually.`);
|
|
315
315
|
}
|
|
316
316
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
317
|
-
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), '
|
|
317
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'smart-edit-csharp-ls-'));
|
|
318
318
|
try {
|
|
319
319
|
const extractDir = path.join(tempDir, 'extracted');
|
|
320
320
|
fs.mkdirSync(extractDir, { recursive: true });
|
|
@@ -363,7 +363,7 @@ function downloadNugetPackage(options) {
|
|
|
363
363
|
return packageRoot;
|
|
364
364
|
}
|
|
365
365
|
function downloadServiceIndex(logger) {
|
|
366
|
-
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), '
|
|
366
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'smart-edit-nuget-index-'));
|
|
367
367
|
const indexPath = path.join(tempDir, 'index.json');
|
|
368
368
|
try {
|
|
369
369
|
downloadWithCurl(NUGET_SERVICE_INDEX, indexPath, logger);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLanguageServerOptions } from '../ls.js';
|
|
3
|
+
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
+
export declare class DartLanguageServer extends SmartLanguageServer {
|
|
5
|
+
protected readonly handler: NodeLanguageServerHandler;
|
|
6
|
+
constructor(config: LanguageServerConfigLike, loggerLike: {
|
|
7
|
+
level?: number | LogLevel;
|
|
8
|
+
} | null, repositoryRootPath: string, options?: SmartLanguageServerOptions);
|
|
9
|
+
private registerHandlers;
|
|
10
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { createSmartEditLogger } from '../../smart-edit/util/logging.js';
|
|
4
4
|
import { Language } from '../ls_config.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SmartLanguageServer, SmartLspSettings, coerceLogLevel, registerLanguageServer } from '../ls.js';
|
|
6
6
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
7
7
|
import { RuntimeDependencyCollection, quoteWindowsPath } from './common.js';
|
|
8
8
|
const DART_DEPENDENCIES = [
|
|
9
9
|
{
|
|
10
10
|
id: 'dart-sdk',
|
|
11
11
|
description: 'Dart SDK for Linux (x64)',
|
|
12
|
-
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.
|
|
12
|
+
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.10.4/sdk/dartsdk-linux-x64-release.zip',
|
|
13
13
|
platformId: 'linux-x64',
|
|
14
14
|
archiveType: 'zip',
|
|
15
15
|
binaryName: 'dart-sdk/bin/dart'
|
|
@@ -17,7 +17,7 @@ const DART_DEPENDENCIES = [
|
|
|
17
17
|
{
|
|
18
18
|
id: 'dart-sdk',
|
|
19
19
|
description: 'Dart SDK for Windows (x64)',
|
|
20
|
-
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.
|
|
20
|
+
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.10.4/sdk/dartsdk-windows-x64-release.zip',
|
|
21
21
|
platformId: 'win-x64',
|
|
22
22
|
archiveType: 'zip',
|
|
23
23
|
binaryName: 'dart-sdk/bin/dart.exe'
|
|
@@ -25,7 +25,7 @@ const DART_DEPENDENCIES = [
|
|
|
25
25
|
{
|
|
26
26
|
id: 'dart-sdk',
|
|
27
27
|
description: 'Dart SDK for Windows (arm64)',
|
|
28
|
-
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.
|
|
28
|
+
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.10.4/sdk/dartsdk-windows-arm64-release.zip',
|
|
29
29
|
platformId: 'win-arm64',
|
|
30
30
|
archiveType: 'zip',
|
|
31
31
|
binaryName: 'dart-sdk/bin/dart.exe'
|
|
@@ -33,7 +33,7 @@ const DART_DEPENDENCIES = [
|
|
|
33
33
|
{
|
|
34
34
|
id: 'dart-sdk',
|
|
35
35
|
description: 'Dart SDK for macOS (x64)',
|
|
36
|
-
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.
|
|
36
|
+
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.10.4/sdk/dartsdk-macos-x64-release.zip',
|
|
37
37
|
platformId: 'osx-x64',
|
|
38
38
|
archiveType: 'zip',
|
|
39
39
|
binaryName: 'dart-sdk/bin/dart'
|
|
@@ -41,7 +41,7 @@ const DART_DEPENDENCIES = [
|
|
|
41
41
|
{
|
|
42
42
|
id: 'dart-sdk',
|
|
43
43
|
description: 'Dart SDK for macOS (arm64)',
|
|
44
|
-
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.
|
|
44
|
+
url: 'https://storage.googleapis.com/dart-archive/channels/stable/release/3.10.4/sdk/dartsdk-macos-arm64-release.zip',
|
|
45
45
|
platformId: 'osx-arm64',
|
|
46
46
|
archiveType: 'zip',
|
|
47
47
|
binaryName: 'dart-sdk/bin/dart'
|
|
@@ -53,14 +53,14 @@ function resolveRuntimeDirectory(settings) {
|
|
|
53
53
|
return dir;
|
|
54
54
|
}
|
|
55
55
|
function ensureDartBinary(runtimeDir, dependencies, loggerLevel) {
|
|
56
|
-
const { logger } =
|
|
57
|
-
name: '
|
|
56
|
+
const { logger } = createSmartEditLogger({
|
|
57
|
+
name: 'smart-lsp.language_servers.dart',
|
|
58
58
|
emitToConsole: false,
|
|
59
59
|
level: loggerLevel === undefined ? undefined : coerceLogLevel(loggerLevel)
|
|
60
60
|
});
|
|
61
61
|
const binaryPath = dependencies.binaryPath(runtimeDir);
|
|
62
62
|
if (!fs.existsSync(binaryPath)) {
|
|
63
|
-
if (process.env.
|
|
63
|
+
if (process.env.SMART_EDIT_SKIP_RUNTIME_INSTALL === '1') {
|
|
64
64
|
throw new Error(`Dart SDK binary not found at ${binaryPath}. Allow runtime downloads or install Dart manually.`);
|
|
65
65
|
}
|
|
66
66
|
logger.info('Downloading Dart SDK runtime dependency.');
|
|
@@ -79,10 +79,10 @@ function ensureDartBinary(runtimeDir, dependencies, loggerLevel) {
|
|
|
79
79
|
}
|
|
80
80
|
return binaryPath;
|
|
81
81
|
}
|
|
82
|
-
export class DartLanguageServer extends
|
|
82
|
+
export class DartLanguageServer extends SmartLanguageServer {
|
|
83
83
|
handler;
|
|
84
84
|
constructor(config, loggerLike, repositoryRootPath, options = {}) {
|
|
85
|
-
const solidSettings = new
|
|
85
|
+
const solidSettings = new SmartLspSettings(options?.smartLspSettings);
|
|
86
86
|
const runtimeDir = resolveRuntimeDirectory(solidSettings);
|
|
87
87
|
const dependencies = new RuntimeDependencyCollection(DART_DEPENDENCIES);
|
|
88
88
|
const binaryPath = ensureDartBinary(runtimeDir, dependencies, loggerLike?.level);
|
|
@@ -98,7 +98,7 @@ export class DartLanguageServer extends SolidLanguageServer {
|
|
|
98
98
|
super(config, loggerLike, repositoryRootPath, {
|
|
99
99
|
...options,
|
|
100
100
|
handler,
|
|
101
|
-
|
|
101
|
+
smartLspSettings: options?.smartLspSettings
|
|
102
102
|
});
|
|
103
103
|
this.handler = handler;
|
|
104
104
|
this.registerHandlers();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type LogLevel } from '../../
|
|
2
|
-
import {
|
|
1
|
+
import { type LogLevel } from '../../smart-edit/util/logging.js';
|
|
2
|
+
import { SmartLanguageServer, type LanguageServerConfigLike, type SmartLspSettingsInit } from '../ls.js';
|
|
3
3
|
import { NodeLanguageServerHandler } from '../ls_handler.js';
|
|
4
|
-
export declare class EclipseJdtLanguageServer extends
|
|
4
|
+
export declare class EclipseJdtLanguageServer extends SmartLanguageServer {
|
|
5
5
|
protected readonly handler: NodeLanguageServerHandler;
|
|
6
6
|
private readonly runtimePaths;
|
|
7
7
|
private initialized;
|
|
@@ -10,7 +10,7 @@ export declare class EclipseJdtLanguageServer extends SolidLanguageServer {
|
|
|
10
10
|
level?: number | LogLevel;
|
|
11
11
|
} | null, repositoryRootPath: string, options?: {
|
|
12
12
|
timeout?: number | null;
|
|
13
|
-
|
|
13
|
+
smartLspSettings?: SmartLspSettingsInit;
|
|
14
14
|
});
|
|
15
15
|
start(): this;
|
|
16
16
|
stop(shutdownTimeout?: number): void;
|