@spences10/pi-lsp 0.0.10 → 0.0.12
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/README.md +3 -1
- package/dist/commands.d.ts +4 -0
- package/dist/commands.js +172 -0
- package/dist/commands.js.map +1 -0
- package/dist/format.d.ts +47 -0
- package/dist/format.js +278 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +5 -18
- package/dist/index.js +10 -899
- package/dist/index.js.map +1 -1
- package/dist/prompt.d.ts +5 -0
- package/dist/prompt.js +31 -0
- package/dist/prompt.js.map +1 -0
- package/dist/server-manager.d.ts +49 -0
- package/dist/server-manager.js +205 -0
- package/dist/server-manager.js.map +1 -0
- package/dist/tools.d.ts +3 -0
- package/dist/tools.js +236 -0
- package/dist/tools.js.map +1 -0
- package/package.json +12 -9
package/README.md
CHANGED
|
@@ -75,7 +75,9 @@ diagnostics without guessing from text search alone.
|
|
|
75
75
|
When LSP tools are active, the extension injects a small system prompt
|
|
76
76
|
reminder telling the model to use LSP for focused diagnostics, type
|
|
77
77
|
and symbol questions, definitions, references, and validation before
|
|
78
|
-
reporting completion.
|
|
78
|
+
reporting completion. It also reminds the model to run diagnostics on
|
|
79
|
+
changed language-server-supported files before completion or commit,
|
|
80
|
+
preferring `lsp_diagnostics_many` for batches.
|
|
79
81
|
|
|
80
82
|
## Commands
|
|
81
83
|
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ExtensionAPI, type ExtensionCommandContext } from '@mariozechner/pi-coding-agent';
|
|
2
|
+
import { LspServerManager } from './server-manager.js';
|
|
3
|
+
export declare function register_lsp_command(pi: ExtensionAPI, manager: LspServerManager): void;
|
|
4
|
+
export declare function handle_lsp_command(args: string, ctx: ExtensionCommandContext, manager: LspServerManager): Promise<void>;
|
package/dist/commands.js
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { show_picker_modal, show_text_modal, } from '@spences10/pi-tui-modal';
|
|
2
|
+
import { format_lsp_view, format_status_lines } from './format.js';
|
|
3
|
+
import { list_supported_languages } from './servers.js';
|
|
4
|
+
export function register_lsp_command(pi, manager) {
|
|
5
|
+
pi.registerCommand('lsp', {
|
|
6
|
+
description: 'Show or manage language server state',
|
|
7
|
+
getArgumentCompletions: (prefix) => {
|
|
8
|
+
const parts = prefix.trim().split(/\s+/);
|
|
9
|
+
const subcommands = ['status', 'list', 'restart'];
|
|
10
|
+
if (!prefix.trim()) {
|
|
11
|
+
return subcommands.map((value) => ({
|
|
12
|
+
value,
|
|
13
|
+
label: value,
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
if (parts.length <= 1) {
|
|
17
|
+
return subcommands
|
|
18
|
+
.filter((value) => value.startsWith(parts[0]))
|
|
19
|
+
.map((value) => ({ value, label: value }));
|
|
20
|
+
}
|
|
21
|
+
if (parts[0] === 'restart') {
|
|
22
|
+
const candidate = parts[1] ?? '';
|
|
23
|
+
return ['all', ...list_supported_languages()]
|
|
24
|
+
.filter((value) => value.startsWith(candidate))
|
|
25
|
+
.map((value) => ({
|
|
26
|
+
value: `restart ${value}`,
|
|
27
|
+
label: value,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
},
|
|
32
|
+
handler: async (args, ctx) => {
|
|
33
|
+
await handle_lsp_command(args, ctx, manager);
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export async function handle_lsp_command(args, ctx, manager) {
|
|
38
|
+
const parts = args.trim() ? args.trim().split(/\s+/, 2) : [];
|
|
39
|
+
if (parts.length === 0 && has_modal_ui(ctx)) {
|
|
40
|
+
while (true) {
|
|
41
|
+
const selected = await show_lsp_home_modal(ctx, manager);
|
|
42
|
+
if (!selected)
|
|
43
|
+
return;
|
|
44
|
+
if (selected === 'restart') {
|
|
45
|
+
await handle_lsp_restart_modal(ctx, manager);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (selected === 'restart-all') {
|
|
49
|
+
await restart_all_lsp_servers(ctx, manager);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
await show_lsp_text_modal(ctx, selected === 'running'
|
|
53
|
+
? 'Running LSP servers'
|
|
54
|
+
: selected === 'failed'
|
|
55
|
+
? 'Failed LSP servers'
|
|
56
|
+
: 'LSP status', format_lsp_view(selected, manager.cwd, manager.clients_by_server, manager.failed_servers));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const [subcommand = 'status', target] = parts;
|
|
60
|
+
switch (subcommand) {
|
|
61
|
+
case 'status':
|
|
62
|
+
case 'list':
|
|
63
|
+
await present_lsp_text(ctx, 'LSP status', format_status_lines(manager.cwd, manager.clients_by_server, manager.failed_servers).join('\n'));
|
|
64
|
+
return;
|
|
65
|
+
case 'restart': {
|
|
66
|
+
if (!target && has_modal_ui(ctx)) {
|
|
67
|
+
await handle_lsp_restart_modal(ctx, manager);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (!target || target === 'all') {
|
|
71
|
+
await manager.clear_language_state();
|
|
72
|
+
ctx.ui.notify('Restarted all language server state.');
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (!list_supported_languages().includes(target)) {
|
|
76
|
+
ctx.ui.notify(`Unknown language: ${target}. Use one of: ${list_supported_languages().join(', ')}`, 'warning');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
await manager.clear_language_state(target);
|
|
80
|
+
ctx.ui.notify(`Restarted ${target} language server state.`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
default:
|
|
84
|
+
ctx.ui.notify(`Unknown subcommand: ${subcommand}. Use: status, list, restart`, 'warning');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function has_modal_ui(ctx) {
|
|
88
|
+
return ctx.hasUI && typeof ctx.ui.custom === 'function';
|
|
89
|
+
}
|
|
90
|
+
async function present_lsp_text(ctx, title, text) {
|
|
91
|
+
if (has_modal_ui(ctx)) {
|
|
92
|
+
await show_lsp_text_modal(ctx, title, text);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
ctx.ui.notify(text);
|
|
96
|
+
}
|
|
97
|
+
async function show_lsp_home_modal(ctx, manager) {
|
|
98
|
+
const running_count = manager.clients_by_server.size;
|
|
99
|
+
const failed_count = manager.failed_servers.size;
|
|
100
|
+
return await show_picker_modal(ctx, {
|
|
101
|
+
title: 'Language servers',
|
|
102
|
+
subtitle: `${running_count} running • ${failed_count} failed • ${list_supported_languages().length} supported`,
|
|
103
|
+
items: [
|
|
104
|
+
{
|
|
105
|
+
value: 'status',
|
|
106
|
+
label: 'Status',
|
|
107
|
+
description: `All configured language servers for ${manager.cwd}`,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
value: 'running',
|
|
111
|
+
label: 'Running servers',
|
|
112
|
+
description: `${running_count} active workspace server(s)`,
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
value: 'failed',
|
|
116
|
+
label: 'Failed servers',
|
|
117
|
+
description: `${failed_count} failed server(s)`,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
value: 'restart',
|
|
121
|
+
label: 'Restart server',
|
|
122
|
+
description: 'Pick a supported language to restart',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
value: 'restart-all',
|
|
126
|
+
label: 'Restart all',
|
|
127
|
+
description: 'Stop every running language server',
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
footer: 'enter opens • esc close/back',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
async function show_lsp_text_modal(ctx, title, text) {
|
|
134
|
+
await show_text_modal(ctx, {
|
|
135
|
+
title,
|
|
136
|
+
text,
|
|
137
|
+
max_visible_lines: 20,
|
|
138
|
+
overlay_options: { width: '90%', minWidth: 72 },
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
async function handle_lsp_restart_modal(ctx, manager) {
|
|
142
|
+
const selected = await show_picker_modal(ctx, {
|
|
143
|
+
title: 'Restart LSP server',
|
|
144
|
+
subtitle: 'Clear cached language server state',
|
|
145
|
+
items: [
|
|
146
|
+
{
|
|
147
|
+
value: 'all',
|
|
148
|
+
label: 'All servers',
|
|
149
|
+
description: 'Stop every running language server',
|
|
150
|
+
},
|
|
151
|
+
...list_supported_languages().map((language) => ({
|
|
152
|
+
value: language,
|
|
153
|
+
label: language,
|
|
154
|
+
description: `Restart ${language} language server state`,
|
|
155
|
+
})),
|
|
156
|
+
],
|
|
157
|
+
footer: 'enter restarts • esc back',
|
|
158
|
+
});
|
|
159
|
+
if (!selected)
|
|
160
|
+
return;
|
|
161
|
+
if (selected === 'all') {
|
|
162
|
+
await restart_all_lsp_servers(ctx, manager);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
await manager.clear_language_state(selected);
|
|
166
|
+
ctx.ui.notify(`Restarted ${selected} language server state.`);
|
|
167
|
+
}
|
|
168
|
+
async function restart_all_lsp_servers(ctx, manager) {
|
|
169
|
+
await manager.clear_language_state();
|
|
170
|
+
ctx.ui.notify('Restarted all language server state.');
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,iBAAiB,EACjB,eAAe,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,UAAU,oBAAoB,CACnC,EAAgB,EAChB,OAAyB;IAEzB,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,sCAAsC;QACnD,sBAAsB,EAAE,CAAC,MAAM,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAClC,KAAK;oBACL,KAAK,EAAE,KAAK;iBACZ,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,WAAW;qBAChB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjC,OAAO,CAAC,KAAK,EAAE,GAAG,wBAAwB,EAAE,CAAC;qBAC3C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;qBAC9C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAChB,KAAK,EAAE,WAAW,KAAK,EAAE;oBACzB,KAAK,EAAE,KAAK;iBACZ,CAAC,CAAC,CAAC;YACN,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,IAAY,EACZ,GAA4B,EAC5B,OAAyB;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC7C,SAAS;YACV,CAAC;YACD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAChC,MAAM,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC5C,SAAS;YACV,CAAC;YACD,MAAM,mBAAmB,CACxB,GAAG,EACH,QAAQ,KAAK,SAAS;gBACrB,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,QAAQ,KAAK,QAAQ;oBACtB,CAAC,CAAC,oBAAoB;oBACtB,CAAC,CAAC,YAAY,EAChB,eAAe,CACd,QAAQ,EACR,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,cAAc,CACtB,CACD,CAAC;QACH,CAAC;IACF,CAAC;IAED,MAAM,CAAC,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAE9C,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACV,MAAM,gBAAgB,CACrB,GAAG,EACH,YAAY,EACZ,mBAAmB,CAClB,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,cAAc,CACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CACZ,CAAC;YACF,OAAO;QACR,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC7C,OAAO;YACR,CAAC;YACD,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACjC,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC;gBACrC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;gBACtD,OAAO;YACR,CAAC;YACD,IAAI,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,qBAAqB,MAAM,iBAAiB,wBAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACnF,SAAS,CACT,CAAC;gBACF,OAAO;YACR,CAAC;YACD,MAAM,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC3C,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,MAAM,yBAAyB,CAAC,CAAC;YAC5D,OAAO;QACR,CAAC;QACD;YACC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,uBAAuB,UAAU,8BAA8B,EAC/D,SAAS,CACT,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,GAA4B;IACjD,OAAO,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC9B,GAA4B,EAC5B,KAAa,EACb,IAAY;IAEZ,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO;IACR,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,mBAAmB,CACjC,GAA4B,EAC5B,OAAyB;IAEzB,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACrD,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;IACjD,OAAO,MAAM,iBAAiB,CAAC,GAAG,EAAE;QACnC,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,GAAG,aAAa,cAAc,YAAY,aAAa,wBAAwB,EAAE,CAAC,MAAM,YAAY;QAC9G,KAAK,EAAE;YACN;gBACC,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,uCAAuC,OAAO,CAAC,GAAG,EAAE;aACjE;YACD;gBACC,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,iBAAiB;gBACxB,WAAW,EAAE,GAAG,aAAa,6BAA6B;aAC1D;YACD;gBACC,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE,GAAG,YAAY,mBAAmB;aAC/C;YACD;gBACC,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE,sCAAsC;aACnD;YACD;gBACC,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,oCAAoC;aACjD;SACD;QACD,MAAM,EAAE,8BAA8B;KACtC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CACjC,GAA4B,EAC5B,KAAa,EACb,IAAY;IAEZ,MAAM,eAAe,CAAC,GAAG,EAAE;QAC1B,KAAK;QACL,IAAI;QACJ,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;KAC/C,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CACtC,GAA4B,EAC5B,OAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE;QAC7C,KAAK,EAAE,oBAAoB;QAC3B,QAAQ,EAAE,oCAAoC;QAC9C,KAAK,EAAE;YACN;gBACC,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,oCAAoC;aACjD;YACD,GAAG,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAChD,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,WAAW,QAAQ,wBAAwB;aACxD,CAAC,CAAC;SACH;QACD,MAAM,EAAE,2BAA2B;KACnC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO;IACR,CAAC;IACD,MAAM,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC7C,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,QAAQ,yBAAyB,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,uBAAuB,CACrC,GAA4B,EAC5B,OAAyB;IAEzB,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC;IACrC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;AACvD,CAAC"}
|
package/dist/format.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Type } from 'typebox';
|
|
2
|
+
import { type LspDiagnostic, type LspDocumentSymbol, type LspHover, type LspLocation } from './client.js';
|
|
3
|
+
export interface LspFormatServerState {
|
|
4
|
+
client: {
|
|
5
|
+
is_ready(): boolean;
|
|
6
|
+
};
|
|
7
|
+
language: string;
|
|
8
|
+
workspace_root: string;
|
|
9
|
+
command: string;
|
|
10
|
+
}
|
|
11
|
+
export interface LspToolErrorDetails {
|
|
12
|
+
kind: 'unsupported_language' | 'server_start_failed' | 'tool_execution_failed';
|
|
13
|
+
file: string;
|
|
14
|
+
message: string;
|
|
15
|
+
language?: string;
|
|
16
|
+
command?: string;
|
|
17
|
+
workspace_root?: string;
|
|
18
|
+
install_hint?: string;
|
|
19
|
+
code?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class LspToolError extends Error {
|
|
22
|
+
details: LspToolErrorDetails;
|
|
23
|
+
constructor(details: LspToolErrorDetails);
|
|
24
|
+
}
|
|
25
|
+
export declare const SYMBOL_KIND_NAMES: string[];
|
|
26
|
+
export declare const SYMBOL_KIND_SCHEMA: Type.TUnion<Type.TLiteral<string>[]>;
|
|
27
|
+
export declare function format_lsp_view(view: string, cwd: string, clients_by_server: Map<string, LspFormatServerState>, failed_servers: Map<string, LspToolErrorDetails>): string;
|
|
28
|
+
export declare function format_status_lines(cwd: string, clients_by_server: Map<string, LspFormatServerState>, failed_servers: Map<string, LspToolErrorDetails>): string[];
|
|
29
|
+
export declare function to_lsp_tool_error(file: string, language: string, workspace_root: string, command: string, install_hint: string | undefined, error: unknown): LspToolErrorDetails;
|
|
30
|
+
export declare function format_tool_error(details: LspToolErrorDetails): string;
|
|
31
|
+
export declare function format_diagnostics(file: string, diagnostics: LspDiagnostic[]): string;
|
|
32
|
+
export declare function format_hover(hover: LspHover | null): string;
|
|
33
|
+
export declare function format_locations(locations: LspLocation[], empty_message: string): string;
|
|
34
|
+
export declare function format_document_symbols(file: string, symbols: LspDocumentSymbol[]): string;
|
|
35
|
+
export declare function find_symbol_matches(symbols: LspDocumentSymbol[], query: string, options: {
|
|
36
|
+
max_results: number;
|
|
37
|
+
top_level_only: boolean;
|
|
38
|
+
exact_match: boolean;
|
|
39
|
+
kinds: ReadonlySet<string>;
|
|
40
|
+
}): Array<{
|
|
41
|
+
symbol: LspDocumentSymbol;
|
|
42
|
+
depth: number;
|
|
43
|
+
}>;
|
|
44
|
+
export declare function format_symbol_matches(file: string, query: string, matches: Array<{
|
|
45
|
+
symbol: LspDocumentSymbol;
|
|
46
|
+
depth: number;
|
|
47
|
+
}>): string;
|
package/dist/format.js
ADDED
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { fileURLToPath } from 'node:url';
|
|
2
|
+
import { Type } from 'typebox';
|
|
3
|
+
import { LspClientStartError, } from './client.js';
|
|
4
|
+
import { get_server_config, list_supported_languages, } from './servers.js';
|
|
5
|
+
export class LspToolError extends Error {
|
|
6
|
+
details;
|
|
7
|
+
constructor(details) {
|
|
8
|
+
super(details.message);
|
|
9
|
+
this.name = 'LspToolError';
|
|
10
|
+
this.details = details;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const SYMBOL_KIND_LABELS = {
|
|
14
|
+
2: 'module',
|
|
15
|
+
3: 'namespace',
|
|
16
|
+
5: 'class',
|
|
17
|
+
6: 'method',
|
|
18
|
+
7: 'property',
|
|
19
|
+
8: 'field',
|
|
20
|
+
9: 'constructor',
|
|
21
|
+
11: 'interface',
|
|
22
|
+
12: 'function',
|
|
23
|
+
13: 'variable',
|
|
24
|
+
14: 'constant',
|
|
25
|
+
23: 'struct',
|
|
26
|
+
24: 'event',
|
|
27
|
+
};
|
|
28
|
+
export const SYMBOL_KIND_NAMES = Object.values(SYMBOL_KIND_LABELS);
|
|
29
|
+
export const SYMBOL_KIND_SCHEMA = Type.Union(SYMBOL_KIND_NAMES.map((name) => Type.Literal(name)));
|
|
30
|
+
export function format_lsp_view(view, cwd, clients_by_server, failed_servers) {
|
|
31
|
+
if (view === 'running') {
|
|
32
|
+
const lines = format_running_server_lines(clients_by_server);
|
|
33
|
+
return lines.length > 0
|
|
34
|
+
? lines.join('\n')
|
|
35
|
+
: 'No running language servers.';
|
|
36
|
+
}
|
|
37
|
+
if (view === 'failed') {
|
|
38
|
+
const lines = format_failed_server_lines(failed_servers);
|
|
39
|
+
return lines.length > 0
|
|
40
|
+
? lines.join('\n')
|
|
41
|
+
: 'No failed language servers.';
|
|
42
|
+
}
|
|
43
|
+
return format_status_lines(cwd, clients_by_server, failed_servers).join('\n');
|
|
44
|
+
}
|
|
45
|
+
function format_running_server_lines(clients_by_server) {
|
|
46
|
+
return Array.from(clients_by_server.values())
|
|
47
|
+
.sort((a, b) => a.language.localeCompare(b.language) ||
|
|
48
|
+
a.workspace_root.localeCompare(b.workspace_root))
|
|
49
|
+
.map((state) => `${state.language}: running (ready=${state.client.is_ready()}) — ${state.command} [workspace ${state.workspace_root}]`);
|
|
50
|
+
}
|
|
51
|
+
function format_failed_server_lines(failed_servers) {
|
|
52
|
+
return Array.from(failed_servers.values())
|
|
53
|
+
.sort((a, b) => (a.language ?? '').localeCompare(b.language ?? '') ||
|
|
54
|
+
(a.workspace_root ?? '').localeCompare(b.workspace_root ?? ''))
|
|
55
|
+
.map((failure) => {
|
|
56
|
+
const workspace = failure.workspace_root
|
|
57
|
+
? ` [workspace ${failure.workspace_root}]`
|
|
58
|
+
: '';
|
|
59
|
+
return `${failure.language ?? 'unknown'}: failed — ${failure.message}${workspace}`;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export function format_status_lines(cwd, clients_by_server, failed_servers) {
|
|
63
|
+
const lines = [];
|
|
64
|
+
const active_languages = new Set();
|
|
65
|
+
const running_states = Array.from(clients_by_server.values()).sort((a, b) => a.language.localeCompare(b.language) ||
|
|
66
|
+
a.workspace_root.localeCompare(b.workspace_root));
|
|
67
|
+
for (const running of running_states) {
|
|
68
|
+
active_languages.add(running.language);
|
|
69
|
+
lines.push(`${running.language}: running (ready=${running.client.is_ready()}) — ${running.command} [workspace ${running.workspace_root}]`);
|
|
70
|
+
}
|
|
71
|
+
const failures = Array.from(failed_servers.values()).sort((a, b) => (a.language ?? '').localeCompare(b.language ?? '') ||
|
|
72
|
+
(a.workspace_root ?? '').localeCompare(b.workspace_root ?? ''));
|
|
73
|
+
for (const failure of failures) {
|
|
74
|
+
if (failure.language) {
|
|
75
|
+
active_languages.add(failure.language);
|
|
76
|
+
}
|
|
77
|
+
const workspace = failure.workspace_root
|
|
78
|
+
? ` [workspace ${failure.workspace_root}]`
|
|
79
|
+
: '';
|
|
80
|
+
const language = failure.language ?? 'unknown';
|
|
81
|
+
lines.push(`${language}: failed — ${failure.message}${workspace}`);
|
|
82
|
+
}
|
|
83
|
+
for (const language of list_supported_languages()) {
|
|
84
|
+
if (active_languages.has(language))
|
|
85
|
+
continue;
|
|
86
|
+
const config = get_server_config(language, cwd);
|
|
87
|
+
if (config) {
|
|
88
|
+
lines.push(`${language}: idle — ${config.command}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return lines.length > 0
|
|
92
|
+
? lines
|
|
93
|
+
: ['No language servers configured for this project.'];
|
|
94
|
+
}
|
|
95
|
+
export function to_lsp_tool_error(file, language, workspace_root, command, install_hint, error) {
|
|
96
|
+
if (error instanceof LspToolError) {
|
|
97
|
+
return error.details;
|
|
98
|
+
}
|
|
99
|
+
if (error instanceof LspClientStartError) {
|
|
100
|
+
const missing_binary = error.code === 'ENOENT';
|
|
101
|
+
return {
|
|
102
|
+
kind: 'server_start_failed',
|
|
103
|
+
file,
|
|
104
|
+
language,
|
|
105
|
+
workspace_root,
|
|
106
|
+
command,
|
|
107
|
+
install_hint,
|
|
108
|
+
code: error.code,
|
|
109
|
+
message: missing_binary
|
|
110
|
+
? `command "${command}" not found`
|
|
111
|
+
: error.message,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
kind: 'tool_execution_failed',
|
|
116
|
+
file,
|
|
117
|
+
language,
|
|
118
|
+
workspace_root,
|
|
119
|
+
command,
|
|
120
|
+
install_hint,
|
|
121
|
+
message: error instanceof Error ? error.message : String(error),
|
|
122
|
+
code: typeof error === 'object' &&
|
|
123
|
+
error !== null &&
|
|
124
|
+
'code' in error &&
|
|
125
|
+
typeof error.code === 'string'
|
|
126
|
+
? error.code
|
|
127
|
+
: undefined,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export function format_tool_error(details) {
|
|
131
|
+
if (details.kind === 'unsupported_language') {
|
|
132
|
+
return details.message;
|
|
133
|
+
}
|
|
134
|
+
const lines = [
|
|
135
|
+
details.language
|
|
136
|
+
? `${details.language} LSP unavailable for ${details.file}`
|
|
137
|
+
: `LSP request failed for ${details.file}`,
|
|
138
|
+
`Reason: ${details.message}`,
|
|
139
|
+
];
|
|
140
|
+
if (details.command) {
|
|
141
|
+
lines.push(`Command: ${details.command}`);
|
|
142
|
+
}
|
|
143
|
+
if (details.workspace_root) {
|
|
144
|
+
lines.push(`Workspace: ${details.workspace_root}`);
|
|
145
|
+
}
|
|
146
|
+
if (details.install_hint) {
|
|
147
|
+
lines.push(`Hint: ${details.install_hint}`);
|
|
148
|
+
}
|
|
149
|
+
return lines.join('\n');
|
|
150
|
+
}
|
|
151
|
+
function severity_label(severity) {
|
|
152
|
+
switch (severity) {
|
|
153
|
+
case 1:
|
|
154
|
+
return 'error';
|
|
155
|
+
case 2:
|
|
156
|
+
return 'warning';
|
|
157
|
+
case 3:
|
|
158
|
+
return 'info';
|
|
159
|
+
case 4:
|
|
160
|
+
return 'hint';
|
|
161
|
+
default:
|
|
162
|
+
return 'info';
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export function format_diagnostics(file, diagnostics) {
|
|
166
|
+
if (diagnostics.length === 0) {
|
|
167
|
+
return `${file}: no diagnostics`;
|
|
168
|
+
}
|
|
169
|
+
const lines = [`${file}: ${diagnostics.length} diagnostic(s)`];
|
|
170
|
+
for (const d of diagnostics) {
|
|
171
|
+
const position = `${d.range.start.line + 1}:${d.range.start.character + 1}`;
|
|
172
|
+
const source = d.source ? ` [${d.source}]` : '';
|
|
173
|
+
const code = d.code != null ? ` (${d.code})` : '';
|
|
174
|
+
lines.push(` ${position} ${severity_label(d.severity)}${source}${code}: ${d.message}`);
|
|
175
|
+
}
|
|
176
|
+
return lines.join('\n');
|
|
177
|
+
}
|
|
178
|
+
export function format_hover(hover) {
|
|
179
|
+
if (!hover)
|
|
180
|
+
return 'No hover info.';
|
|
181
|
+
const contents = hover.contents;
|
|
182
|
+
const extract = (item) => (typeof item === 'string' ? item : (item.value ?? ''));
|
|
183
|
+
if (Array.isArray(contents)) {
|
|
184
|
+
return (contents.map(extract).join('\n\n').trim() || 'No hover info.');
|
|
185
|
+
}
|
|
186
|
+
return extract(contents).trim() || 'No hover info.';
|
|
187
|
+
}
|
|
188
|
+
export function format_locations(locations, empty_message) {
|
|
189
|
+
if (locations.length === 0)
|
|
190
|
+
return empty_message;
|
|
191
|
+
return locations
|
|
192
|
+
.map((loc) => {
|
|
193
|
+
const path = file_url_to_path_or_value(loc.uri);
|
|
194
|
+
return `${path}:${loc.range.start.line + 1}:${loc.range.start.character + 1}`;
|
|
195
|
+
})
|
|
196
|
+
.join('\n');
|
|
197
|
+
}
|
|
198
|
+
export function format_document_symbols(file, symbols) {
|
|
199
|
+
if (symbols.length === 0) {
|
|
200
|
+
return `${file}: no symbols`;
|
|
201
|
+
}
|
|
202
|
+
const lines = [`${file}: ${symbols.length} top-level symbol(s)`];
|
|
203
|
+
append_symbol_lines(lines, symbols, 1);
|
|
204
|
+
return lines.join('\n');
|
|
205
|
+
}
|
|
206
|
+
export function find_symbol_matches(symbols, query, options) {
|
|
207
|
+
const normalized = query.trim().toLowerCase();
|
|
208
|
+
if (!normalized)
|
|
209
|
+
return [];
|
|
210
|
+
const matches = [];
|
|
211
|
+
const matches_query = (symbol) => {
|
|
212
|
+
const values = [symbol.name, symbol.detail ?? ''].map((value) => value.trim().toLowerCase());
|
|
213
|
+
return options.exact_match
|
|
214
|
+
? values.some((value) => value === normalized)
|
|
215
|
+
: values.some((value) => value.includes(normalized));
|
|
216
|
+
};
|
|
217
|
+
const matches_kind = (symbol) => {
|
|
218
|
+
if (options.kinds.size === 0)
|
|
219
|
+
return true;
|
|
220
|
+
return options.kinds.has(symbol_kind_label(symbol.kind));
|
|
221
|
+
};
|
|
222
|
+
const visit = (entries, depth) => {
|
|
223
|
+
for (const symbol of entries) {
|
|
224
|
+
if (matches_kind(symbol) && matches_query(symbol)) {
|
|
225
|
+
matches.push({ symbol, depth });
|
|
226
|
+
if (matches.length >= options.max_results) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (!options.top_level_only && symbol.children?.length) {
|
|
231
|
+
visit(symbol.children, depth + 1);
|
|
232
|
+
if (matches.length >= options.max_results) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
visit(symbols, 1);
|
|
239
|
+
return matches;
|
|
240
|
+
}
|
|
241
|
+
export function format_symbol_matches(file, query, matches) {
|
|
242
|
+
if (matches.length === 0) {
|
|
243
|
+
return `${file}: no symbols matching "${query}"`;
|
|
244
|
+
}
|
|
245
|
+
const lines = [
|
|
246
|
+
`${file}: ${matches.length} symbol match(es) for "${query}"`,
|
|
247
|
+
];
|
|
248
|
+
for (const { symbol, depth } of matches) {
|
|
249
|
+
const indent = ' '.repeat(depth);
|
|
250
|
+
const detail = symbol.detail ? ` — ${symbol.detail}` : '';
|
|
251
|
+
const range = `${symbol.range.start.line + 1}:${symbol.range.start.character + 1}`;
|
|
252
|
+
lines.push(`${indent}${symbol_kind_label(symbol.kind)} ${symbol.name}${detail} @ ${range}`);
|
|
253
|
+
}
|
|
254
|
+
return lines.join('\n');
|
|
255
|
+
}
|
|
256
|
+
function append_symbol_lines(lines, symbols, depth) {
|
|
257
|
+
for (const symbol of symbols) {
|
|
258
|
+
const indent = ' '.repeat(depth);
|
|
259
|
+
const detail = symbol.detail ? ` — ${symbol.detail}` : '';
|
|
260
|
+
const range = `${symbol.range.start.line + 1}:${symbol.range.start.character + 1}`;
|
|
261
|
+
lines.push(`${indent}${symbol_kind_label(symbol.kind)} ${symbol.name}${detail} @ ${range}`);
|
|
262
|
+
if (symbol.children?.length) {
|
|
263
|
+
append_symbol_lines(lines, symbol.children, depth + 1);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
function symbol_kind_label(kind) {
|
|
268
|
+
return SYMBOL_KIND_LABELS[kind] ?? 'symbol';
|
|
269
|
+
}
|
|
270
|
+
function file_url_to_path_or_value(uri) {
|
|
271
|
+
try {
|
|
272
|
+
return uri.startsWith('file:') ? fileURLToPath(uri) : uri;
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
return uri;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
stop(): Promise<void>;
|
|
7
|
-
is_ready(): boolean;
|
|
8
|
-
ensure_document_open(uri: string, text: string): Promise<void>;
|
|
9
|
-
hover(uri: string, position: LspPosition): Promise<LspHover | null>;
|
|
10
|
-
definition(uri: string, position: LspPosition): Promise<LspLocation[]>;
|
|
11
|
-
references(uri: string, position: LspPosition, include_declaration: boolean): Promise<LspLocation[]>;
|
|
12
|
-
document_symbols(uri: string): Promise<LspDocumentSymbol[]>;
|
|
13
|
-
wait_for_diagnostics(uri: string, timeout_ms?: number): Promise<LspDiagnostic[]>;
|
|
14
|
-
}
|
|
15
|
-
export interface CreateLspExtensionOptions {
|
|
16
|
-
create_client?: (options: LspClientOptions) => LspClientLike;
|
|
17
|
-
read_file?: (path: string) => Promise<string>;
|
|
18
|
-
cwd?: () => string;
|
|
1
|
+
import { type ExtensionAPI } from '@mariozechner/pi-coding-agent';
|
|
2
|
+
import { type CreateLspServerManagerOptions } from './server-manager.js';
|
|
3
|
+
export { should_inject_lsp_prompt } from './prompt.js';
|
|
4
|
+
export type { LspClientLike } from './server-manager.js';
|
|
5
|
+
export interface CreateLspExtensionOptions extends CreateLspServerManagerOptions {
|
|
19
6
|
}
|
|
20
7
|
export declare function create_lsp_extension(options?: CreateLspExtensionOptions): (pi: ExtensionAPI) => Promise<void>;
|
|
21
8
|
declare const _default: (pi: ExtensionAPI) => Promise<void>;
|