@nogataka/smart-edit 0.0.14

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 (186) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +244 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +7 -0
  5. package/dist/devtools/generate_prompt_factory.d.ts +5 -0
  6. package/dist/devtools/generate_prompt_factory.js +114 -0
  7. package/dist/index.d.ts +34 -0
  8. package/dist/index.js +34 -0
  9. package/dist/interprompt/index.d.ts +2 -0
  10. package/dist/interprompt/index.js +1 -0
  11. package/dist/interprompt/jinja_template.d.ts +10 -0
  12. package/dist/interprompt/jinja_template.js +174 -0
  13. package/dist/interprompt/multilang_prompt.d.ts +54 -0
  14. package/dist/interprompt/multilang_prompt.js +302 -0
  15. package/dist/interprompt/prompt_factory.d.ts +16 -0
  16. package/dist/interprompt/prompt_factory.js +189 -0
  17. package/dist/interprompt/util/class_decorators.d.ts +1 -0
  18. package/dist/interprompt/util/class_decorators.js +1 -0
  19. package/dist/interprompt/util/index.d.ts +1 -0
  20. package/dist/interprompt/util/index.js +1 -0
  21. package/dist/serena/agent.d.ts +118 -0
  22. package/dist/serena/agent.js +675 -0
  23. package/dist/serena/agno.d.ts +111 -0
  24. package/dist/serena/agno.js +278 -0
  25. package/dist/serena/analytics.d.ts +24 -0
  26. package/dist/serena/analytics.js +119 -0
  27. package/dist/serena/cli.d.ts +9 -0
  28. package/dist/serena/cli.js +731 -0
  29. package/dist/serena/code_editor.d.ts +42 -0
  30. package/dist/serena/code_editor.js +239 -0
  31. package/dist/serena/config/context_mode.d.ts +41 -0
  32. package/dist/serena/config/context_mode.js +239 -0
  33. package/dist/serena/config/serena_config.d.ts +134 -0
  34. package/dist/serena/config/serena_config.js +718 -0
  35. package/dist/serena/constants.d.ts +18 -0
  36. package/dist/serena/constants.js +27 -0
  37. package/dist/serena/dashboard.d.ts +55 -0
  38. package/dist/serena/dashboard.js +472 -0
  39. package/dist/serena/generated/generated_prompt_factory.d.ts +27 -0
  40. package/dist/serena/generated/generated_prompt_factory.js +42 -0
  41. package/dist/serena/gui_log_viewer.d.ts +41 -0
  42. package/dist/serena/gui_log_viewer.js +436 -0
  43. package/dist/serena/mcp.d.ts +118 -0
  44. package/dist/serena/mcp.js +904 -0
  45. package/dist/serena/project.d.ts +62 -0
  46. package/dist/serena/project.js +321 -0
  47. package/dist/serena/prompt_factory.d.ts +20 -0
  48. package/dist/serena/prompt_factory.js +42 -0
  49. package/dist/serena/resources/config/contexts/agent.yml +8 -0
  50. package/dist/serena/resources/config/contexts/chatgpt.yml +28 -0
  51. package/dist/serena/resources/config/contexts/codex.yml +27 -0
  52. package/dist/serena/resources/config/contexts/context.template.yml +11 -0
  53. package/dist/serena/resources/config/contexts/desktop-app.yml +17 -0
  54. package/dist/serena/resources/config/contexts/ide-assistant.yml +26 -0
  55. package/dist/serena/resources/config/contexts/oaicompat-agent.yml +8 -0
  56. package/dist/serena/resources/config/internal_modes/jetbrains.yml +15 -0
  57. package/dist/serena/resources/config/modes/editing.yml +112 -0
  58. package/dist/serena/resources/config/modes/interactive.yml +11 -0
  59. package/dist/serena/resources/config/modes/mode.template.yml +7 -0
  60. package/dist/serena/resources/config/modes/no-onboarding.yml +8 -0
  61. package/dist/serena/resources/config/modes/onboarding.yml +16 -0
  62. package/dist/serena/resources/config/modes/one-shot.yml +15 -0
  63. package/dist/serena/resources/config/modes/planning.yml +15 -0
  64. package/dist/serena/resources/config/prompt_templates/simple_tool_outputs.yml +75 -0
  65. package/dist/serena/resources/config/prompt_templates/system_prompt.yml +66 -0
  66. package/dist/serena/resources/dashboard/dashboard.js +815 -0
  67. package/dist/serena/resources/dashboard/index.html +314 -0
  68. package/dist/serena/resources/dashboard/jquery.min.js +3 -0
  69. package/dist/serena/resources/dashboard/serena-icon-16.png +0 -0
  70. package/dist/serena/resources/dashboard/serena-icon-32.png +0 -0
  71. package/dist/serena/resources/dashboard/serena-icon-48.png +0 -0
  72. package/dist/serena/resources/dashboard/serena-logs-dark-mode.png +0 -0
  73. package/dist/serena/resources/dashboard/serena-logs.png +0 -0
  74. package/dist/serena/resources/project.template.yml +67 -0
  75. package/dist/serena/resources/serena_config.template.yml +85 -0
  76. package/dist/serena/symbol.d.ts +199 -0
  77. package/dist/serena/symbol.js +616 -0
  78. package/dist/serena/text_utils.d.ts +51 -0
  79. package/dist/serena/text_utils.js +267 -0
  80. package/dist/serena/tools/cmd_tools.d.ts +31 -0
  81. package/dist/serena/tools/cmd_tools.js +48 -0
  82. package/dist/serena/tools/config_tools.d.ts +53 -0
  83. package/dist/serena/tools/config_tools.js +176 -0
  84. package/dist/serena/tools/file_tools.d.ts +231 -0
  85. package/dist/serena/tools/file_tools.js +511 -0
  86. package/dist/serena/tools/index.d.ts +7 -0
  87. package/dist/serena/tools/index.js +7 -0
  88. package/dist/serena/tools/memory_tools.d.ts +60 -0
  89. package/dist/serena/tools/memory_tools.js +135 -0
  90. package/dist/serena/tools/symbol_tools.d.ts +165 -0
  91. package/dist/serena/tools/symbol_tools.js +362 -0
  92. package/dist/serena/tools/tools_base.d.ts +162 -0
  93. package/dist/serena/tools/tools_base.js +378 -0
  94. package/dist/serena/tools/workflow_tools.d.ts +35 -0
  95. package/dist/serena/tools/workflow_tools.js +161 -0
  96. package/dist/serena/util/class_decorators.d.ts +7 -0
  97. package/dist/serena/util/class_decorators.js +37 -0
  98. package/dist/serena/util/exception.d.ts +8 -0
  99. package/dist/serena/util/exception.js +53 -0
  100. package/dist/serena/util/file_system.d.ts +30 -0
  101. package/dist/serena/util/file_system.js +352 -0
  102. package/dist/serena/util/general.d.ts +11 -0
  103. package/dist/serena/util/general.js +42 -0
  104. package/dist/serena/util/git.d.ts +11 -0
  105. package/dist/serena/util/git.js +37 -0
  106. package/dist/serena/util/inspection.d.ts +45 -0
  107. package/dist/serena/util/inspection.js +221 -0
  108. package/dist/serena/util/logging.d.ts +46 -0
  109. package/dist/serena/util/logging.js +205 -0
  110. package/dist/serena/util/shell.d.ts +21 -0
  111. package/dist/serena/util/shell.js +95 -0
  112. package/dist/serena/util/thread.d.ts +23 -0
  113. package/dist/serena/util/thread.js +88 -0
  114. package/dist/serena/version.d.ts +1 -0
  115. package/dist/serena/version.js +23 -0
  116. package/dist/solidlsp/language_servers/autoload.d.ts +23 -0
  117. package/dist/solidlsp/language_servers/autoload.js +25 -0
  118. package/dist/solidlsp/language_servers/bash_language_server.d.ts +10 -0
  119. package/dist/solidlsp/language_servers/bash_language_server.js +64 -0
  120. package/dist/solidlsp/language_servers/clangd_language_server.d.ts +13 -0
  121. package/dist/solidlsp/language_servers/clangd_language_server.js +110 -0
  122. package/dist/solidlsp/language_servers/clojure_lsp.d.ts +13 -0
  123. package/dist/solidlsp/language_servers/clojure_lsp.js +137 -0
  124. package/dist/solidlsp/language_servers/common.d.ts +41 -0
  125. package/dist/solidlsp/language_servers/common.js +365 -0
  126. package/dist/solidlsp/language_servers/csharp_language_server.d.ts +21 -0
  127. package/dist/solidlsp/language_servers/csharp_language_server.js +694 -0
  128. package/dist/solidlsp/language_servers/dart_language_server.d.ts +10 -0
  129. package/dist/solidlsp/language_servers/dart_language_server.js +122 -0
  130. package/dist/solidlsp/language_servers/eclipse_jdtls.d.ts +24 -0
  131. package/dist/solidlsp/language_servers/eclipse_jdtls.js +671 -0
  132. package/dist/solidlsp/language_servers/erlang_language_server.d.ts +22 -0
  133. package/dist/solidlsp/language_servers/erlang_language_server.js +327 -0
  134. package/dist/solidlsp/language_servers/gopls.d.ts +12 -0
  135. package/dist/solidlsp/language_servers/gopls.js +59 -0
  136. package/dist/solidlsp/language_servers/intelephense.d.ts +13 -0
  137. package/dist/solidlsp/language_servers/intelephense.js +121 -0
  138. package/dist/solidlsp/language_servers/jedi_server.d.ts +18 -0
  139. package/dist/solidlsp/language_servers/jedi_server.js +234 -0
  140. package/dist/solidlsp/language_servers/kotlin_language_server.d.ts +19 -0
  141. package/dist/solidlsp/language_servers/kotlin_language_server.js +474 -0
  142. package/dist/solidlsp/language_servers/lua_ls.d.ts +18 -0
  143. package/dist/solidlsp/language_servers/lua_ls.js +319 -0
  144. package/dist/solidlsp/language_servers/nixd_language_server.d.ts +17 -0
  145. package/dist/solidlsp/language_servers/nixd_language_server.js +341 -0
  146. package/dist/solidlsp/language_servers/pyright_server.d.ts +19 -0
  147. package/dist/solidlsp/language_servers/pyright_server.js +180 -0
  148. package/dist/solidlsp/language_servers/r_language_server.d.ts +19 -0
  149. package/dist/solidlsp/language_servers/r_language_server.js +184 -0
  150. package/dist/solidlsp/language_servers/ruby_common.d.ts +10 -0
  151. package/dist/solidlsp/language_servers/ruby_common.js +136 -0
  152. package/dist/solidlsp/language_servers/ruby_lsp.d.ts +18 -0
  153. package/dist/solidlsp/language_servers/ruby_lsp.js +230 -0
  154. package/dist/solidlsp/language_servers/rust_analyzer.d.ts +13 -0
  155. package/dist/solidlsp/language_servers/rust_analyzer.js +96 -0
  156. package/dist/solidlsp/language_servers/solargraph.d.ts +18 -0
  157. package/dist/solidlsp/language_servers/solargraph.js +208 -0
  158. package/dist/solidlsp/language_servers/sourcekit_lsp.d.ts +24 -0
  159. package/dist/solidlsp/language_servers/sourcekit_lsp.js +449 -0
  160. package/dist/solidlsp/language_servers/terraform_ls.d.ts +13 -0
  161. package/dist/solidlsp/language_servers/terraform_ls.js +139 -0
  162. package/dist/solidlsp/language_servers/typescript_language_server.d.ts +20 -0
  163. package/dist/solidlsp/language_servers/typescript_language_server.js +237 -0
  164. package/dist/solidlsp/language_servers/vts_language_server.d.ts +13 -0
  165. package/dist/solidlsp/language_servers/vts_language_server.js +121 -0
  166. package/dist/solidlsp/language_servers/zls.d.ts +20 -0
  167. package/dist/solidlsp/language_servers/zls.js +254 -0
  168. package/dist/solidlsp/ls.d.ts +197 -0
  169. package/dist/solidlsp/ls.js +507 -0
  170. package/dist/solidlsp/ls_config.d.ts +43 -0
  171. package/dist/solidlsp/ls_config.js +157 -0
  172. package/dist/solidlsp/ls_exceptions.d.ts +5 -0
  173. package/dist/solidlsp/ls_exceptions.js +14 -0
  174. package/dist/solidlsp/ls_handler.d.ts +54 -0
  175. package/dist/solidlsp/ls_handler.js +406 -0
  176. package/dist/solidlsp/ls_request.d.ts +31 -0
  177. package/dist/solidlsp/ls_request.js +42 -0
  178. package/dist/solidlsp/ls_types.d.ts +7 -0
  179. package/dist/solidlsp/ls_types.js +8 -0
  180. package/dist/solidlsp/lsp_protocol_handler/server.d.ts +61 -0
  181. package/dist/solidlsp/lsp_protocol_handler/server.js +68 -0
  182. package/dist/solidlsp/util/subprocess_util.d.ts +6 -0
  183. package/dist/solidlsp/util/subprocess_util.js +11 -0
  184. package/dist/solidlsp/util/zip.d.ts +25 -0
  185. package/dist/solidlsp/util/zip.js +188 -0
  186. package/package.json +65 -0
@@ -0,0 +1,234 @@
1
+ import path from 'node:path';
2
+ import { pathToFileURL } from 'node:url';
3
+ import { Language } from '../ls_config.js';
4
+ import { SolidLanguageServer, registerLanguageServer } from '../ls.js';
5
+ import { NodeLanguageServerHandler } from '../ls_handler.js';
6
+ const JEDI_IGNORED_PATTERNS = ['**/venv', '**/.venv', '**/__pycache__'];
7
+ export class JediLanguageServer extends SolidLanguageServer {
8
+ nodeHandler;
9
+ initialized = false;
10
+ constructor(config, loggerLike, repositoryRootPath, options = {}) {
11
+ const augmentedConfig = {
12
+ ...config,
13
+ ignoredPaths: mergeIgnoredPaths(config.ignoredPaths, JEDI_IGNORED_PATTERNS)
14
+ };
15
+ const handler = new NodeLanguageServerHandler({
16
+ cmd: 'jedi-language-server',
17
+ cwd: repositoryRootPath
18
+ });
19
+ super(augmentedConfig, loggerLike, repositoryRootPath, {
20
+ ...options,
21
+ handler,
22
+ solidlspSettings: options?.solidlspSettings
23
+ });
24
+ this.nodeHandler = handler;
25
+ this.registerHandlers();
26
+ }
27
+ start() {
28
+ const shouldInitialize = !this.initialized;
29
+ super.start();
30
+ if (shouldInitialize) {
31
+ this.initializeLanguageServer();
32
+ this.initialized = true;
33
+ }
34
+ return this;
35
+ }
36
+ stop(shutdownTimeout = 2.0) {
37
+ super.stop(shutdownTimeout);
38
+ this.initialized = false;
39
+ }
40
+ registerHandlers() {
41
+ const noop = () => undefined;
42
+ this.nodeHandler.onRequest('client/registerCapability', noop);
43
+ this.nodeHandler.onNotification('language/status', noop);
44
+ this.nodeHandler.onNotification('$/progress', noop);
45
+ this.nodeHandler.onNotification('textDocument/publishDiagnostics', noop);
46
+ this.nodeHandler.onNotification('language/actionableNotification', noop);
47
+ this.nodeHandler.onNotification('experimental/serverStatus', (payload) => {
48
+ const params = payload;
49
+ if (params?.quiescent) {
50
+ this.logger.debug('jedi-language-server reported experimental/serverStatus quiescent=true');
51
+ }
52
+ });
53
+ this.nodeHandler.onRequest('workspace/executeClientCommand', () => []);
54
+ this.nodeHandler.onNotification('window/logMessage', (payload) => {
55
+ const message = extractWindowMessage(payload);
56
+ if (message) {
57
+ this.logger.info(`Jedi LSP message: ${message}`);
58
+ }
59
+ });
60
+ }
61
+ initializeLanguageServer() {
62
+ this.logger.info('Initializing jedi-language-server');
63
+ const params = this.buildInitializeParams();
64
+ const response = this.nodeHandler.sendRequest('initialize', params);
65
+ this.verifyCapabilities(response?.capabilities ?? null);
66
+ this.nodeHandler.notify.initialized({});
67
+ }
68
+ verifyCapabilities(capabilities) {
69
+ if (!capabilities) {
70
+ throw new Error('Jedi language server initialization response is missing capabilities.');
71
+ }
72
+ const { textDocumentSync, completionProvider } = capabilities;
73
+ if (textDocumentSync?.change !== 2) {
74
+ throw new Error('Jedi language server does not advertise required textDocumentSync capability.');
75
+ }
76
+ if (completionProvider?.resolveProvider !== true) {
77
+ throw new Error('Jedi language server does not expose a resolve-capable completion provider.');
78
+ }
79
+ const triggerCandidates = completionProvider?.triggerCharacters;
80
+ const triggerCharacters = Array.isArray(triggerCandidates)
81
+ ? triggerCandidates
82
+ : [];
83
+ for (const expected of [".", "'", "\""]) {
84
+ if (!triggerCharacters.includes(expected)) {
85
+ throw new Error(`Jedi language server missing completion trigger character "${expected}".`);
86
+ }
87
+ }
88
+ }
89
+ buildInitializeParams() {
90
+ const rootUri = pathToFileURL(this.repositoryRootPath).href;
91
+ return {
92
+ processId: process.pid,
93
+ clientInfo: { name: 'Serena', version: '0.1.0' },
94
+ locale: 'en',
95
+ rootPath: this.repositoryRootPath,
96
+ rootUri,
97
+ capabilities: buildCapabilities(),
98
+ initializationOptions: {
99
+ workspace: {
100
+ symbols: {
101
+ ignoreFolders: ['.nox', '.tox', '.venv', '__pycache__', 'venv'],
102
+ maxSymbols: 0
103
+ }
104
+ }
105
+ },
106
+ trace: 'verbose',
107
+ workspaceFolders: [
108
+ {
109
+ uri: rootUri,
110
+ name: path.basename(this.repositoryRootPath)
111
+ }
112
+ ]
113
+ };
114
+ }
115
+ }
116
+ function mergeIgnoredPaths(existing, additions) {
117
+ const merged = new Set(existing ?? []);
118
+ for (const pattern of additions) {
119
+ merged.add(pattern);
120
+ }
121
+ return Array.from(merged);
122
+ }
123
+ function extractWindowMessage(payload) {
124
+ if (!payload || typeof payload !== 'object') {
125
+ return null;
126
+ }
127
+ const maybeMessage = payload.message;
128
+ return typeof maybeMessage === 'string' ? maybeMessage : null;
129
+ }
130
+ function buildCapabilities() {
131
+ const symbolKinds = rangeArray(1, 27);
132
+ return {
133
+ workspace: {
134
+ applyEdit: true,
135
+ workspaceEdit: {
136
+ documentChanges: true,
137
+ resourceOperations: ['create', 'rename', 'delete'],
138
+ failureHandling: 'textOnlyTransactional',
139
+ normalizesLineEndings: true,
140
+ changeAnnotationSupport: { groupsOnLabel: true }
141
+ },
142
+ configuration: true,
143
+ didChangeWatchedFiles: { dynamicRegistration: true, relativePatternSupport: true },
144
+ symbol: {
145
+ dynamicRegistration: true,
146
+ symbolKind: { valueSet: symbolKinds },
147
+ tagSupport: { valueSet: [1] },
148
+ resolveSupport: { properties: ['location.range'] }
149
+ },
150
+ workspaceFolders: true,
151
+ fileOperations: {
152
+ dynamicRegistration: true,
153
+ didCreate: true,
154
+ didRename: true,
155
+ didDelete: true,
156
+ willCreate: true,
157
+ willRename: true,
158
+ willDelete: true
159
+ },
160
+ inlineValue: { refreshSupport: true },
161
+ inlayHint: { refreshSupport: true },
162
+ diagnostics: { refreshSupport: true }
163
+ },
164
+ textDocument: {
165
+ publishDiagnostics: {
166
+ relatedInformation: true,
167
+ versionSupport: false,
168
+ tagSupport: { valueSet: [1, 2] },
169
+ codeDescriptionSupport: true,
170
+ dataSupport: true
171
+ },
172
+ synchronization: {
173
+ dynamicRegistration: true,
174
+ willSave: true,
175
+ willSaveWaitUntil: true,
176
+ didSave: true
177
+ },
178
+ hover: { dynamicRegistration: true, contentFormat: ['markdown', 'plaintext'] },
179
+ signatureHelp: {
180
+ dynamicRegistration: true,
181
+ signatureInformation: {
182
+ documentationFormat: ['markdown', 'plaintext'],
183
+ parameterInformation: { labelOffsetSupport: true },
184
+ activeParameterSupport: true
185
+ },
186
+ contextSupport: true
187
+ },
188
+ definition: { dynamicRegistration: true, linkSupport: true },
189
+ references: { dynamicRegistration: true },
190
+ documentHighlight: { dynamicRegistration: true },
191
+ documentSymbol: {
192
+ dynamicRegistration: true,
193
+ symbolKind: { valueSet: symbolKinds },
194
+ hierarchicalDocumentSymbolSupport: true,
195
+ tagSupport: { valueSet: [1] },
196
+ labelSupport: true
197
+ },
198
+ documentLink: { dynamicRegistration: true, tooltipSupport: true },
199
+ typeDefinition: { dynamicRegistration: true, linkSupport: true },
200
+ implementation: { dynamicRegistration: true, linkSupport: true },
201
+ declaration: { dynamicRegistration: true, linkSupport: true },
202
+ selectionRange: { dynamicRegistration: true },
203
+ callHierarchy: { dynamicRegistration: true },
204
+ linkedEditingRange: { dynamicRegistration: true },
205
+ typeHierarchy: { dynamicRegistration: true },
206
+ inlineValue: { dynamicRegistration: true },
207
+ inlayHint: {
208
+ dynamicRegistration: true,
209
+ resolveSupport: {
210
+ properties: ['tooltip', 'textEdits', 'label.tooltip', 'label.location', 'label.command']
211
+ }
212
+ },
213
+ diagnostic: { dynamicRegistration: true, relatedDocumentSupport: false }
214
+ },
215
+ notebookDocument: {
216
+ synchronization: {
217
+ dynamicRegistration: true,
218
+ executionSummarySupport: true
219
+ }
220
+ },
221
+ experimental: {
222
+ serverStatusNotification: true,
223
+ openServerLogs: true
224
+ }
225
+ };
226
+ }
227
+ function rangeArray(start, endExclusive) {
228
+ const values = [];
229
+ for (let value = start; value < endExclusive; value += 1) {
230
+ values.push(value);
231
+ }
232
+ return values;
233
+ }
234
+ registerLanguageServer(Language.PYTHON_JEDI, JediLanguageServer);
@@ -0,0 +1,19 @@
1
+ import { type LogLevel } from '../../serena/util/logging.js';
2
+ import { SolidLanguageServer, type LanguageServerConfigLike, type SolidLspSettingsInit } from '../ls.js';
3
+ import { NodeLanguageServerHandler } from '../ls_handler.js';
4
+ export declare class KotlinLanguageServer extends SolidLanguageServer {
5
+ protected readonly handler: NodeLanguageServerHandler;
6
+ private readonly runtimePaths;
7
+ private initialized;
8
+ constructor(config: LanguageServerConfigLike, loggerLike: {
9
+ level?: number | LogLevel;
10
+ } | null, repositoryRootPath: string, options?: {
11
+ timeout?: number | null;
12
+ solidlspSettings?: SolidLspSettingsInit;
13
+ });
14
+ start(): this;
15
+ stop(shutdownTimeout?: number): void;
16
+ private registerHandlers;
17
+ private initializeLanguageServer;
18
+ private buildInitializeParams;
19
+ }