@mrclrchtr/supi-code-intelligence 2.0.6 → 2.2.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/README.md +88 -4
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/README.md +32 -23
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -1
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config.ts +22 -8
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +357 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +2 -3
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -5
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +4 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +372 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +101 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +1 -1
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +55 -27
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +464 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +124 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +72 -285
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -5
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +27 -5
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +10 -0
- package/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
- package/node_modules/@mrclrchtr/supi-core/README.md +32 -23
- package/node_modules/@mrclrchtr/supi-core/package.json +2 -1
- package/node_modules/@mrclrchtr/supi-core/src/config/config.ts +22 -8
- package/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +357 -0
- package/node_modules/@mrclrchtr/supi-core/src/config.ts +2 -3
- package/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -5
- package/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +4 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +372 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +101 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +1 -1
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +55 -27
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +464 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +124 -0
- package/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +72 -285
- package/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -5
- package/node_modules/@mrclrchtr/supi-core/src/settings.ts +27 -5
- package/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +10 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/README.md +32 -23
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config.ts +22 -8
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +357 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +2 -3
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -5
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +4 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +372 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +101 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +55 -27
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +464 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +124 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +72 -285
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -5
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +27 -5
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +10 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/README.md +32 -23
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +2 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config/config.ts +22 -8
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +357 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config.ts +2 -3
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -5
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +4 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +372 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +101 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +55 -27
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +464 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +124 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +72 -285
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -5
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/settings.ts +27 -5
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +10 -0
- package/node_modules/@mrclrchtr/supi-lsp/package.json +3 -3
- package/node_modules/@mrclrchtr/supi-lsp/src/config/lsp-settings.ts +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/README.md +32 -23
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/package.json +2 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config.ts +22 -8
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +357 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config.ts +2 -3
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -5
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +4 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +372 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +101 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +55 -27
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +464 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +124 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +72 -285
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -5
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/settings.ts +27 -5
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +10 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +2 -2
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/README.md +32 -23
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +2 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/config.ts +22 -8
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/prompt-surface.ts +357 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config.ts +2 -3
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/debug-registry.ts +0 -5
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/prompt-surface.ts +4 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/scoped-settings-list.ts +372 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-action-menu.ts +101 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-command.ts +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-registry.ts +55 -27
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-schema.ts +464 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-submenus.ts +124 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings/settings-ui.ts +72 -285
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings-ui.ts +2 -5
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/settings.ts +27 -5
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/tool-framework.ts +10 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +3 -3
- package/package.json +5 -5
- package/src/analysis/evidence.ts +13 -0
- package/src/analysis/instruction-files.ts +194 -0
- package/src/analysis/search/pattern.ts +24 -13
- package/src/analysis/search/ripgrep.ts +92 -7
- package/src/app/app.ts +6 -1
- package/src/config.ts +42 -0
- package/src/extension.ts +9 -1
- package/src/session/capability-adapter.ts +218 -0
- package/src/session/session.ts +106 -1
- package/src/session/target-workflow.ts +430 -0
- package/src/substrate/lsp/diagnostic-injection.ts +0 -15
- package/src/substrate/lsp/settings.ts +101 -175
- package/src/tool/find/execute.ts +23 -10
- package/src/tool/find/orchestrate.ts +67 -54
- package/src/tool/find/semantic-search.ts +30 -16
- package/src/tool/graph/collect-relation.ts +2 -1
- package/src/tool/graph/execute.ts +40 -12
- package/src/tool/graph/markdown-base.ts +5 -37
- package/src/tool/graph/orchestrate.ts +9 -35
- package/src/tool/graph/tui.ts +2 -0
- package/src/tool/guidance.ts +27 -38
- package/src/tool/health/markdown.ts +12 -70
- package/src/tool/health/orchestrate.ts +5 -13
- package/src/tool/impact/analysis.ts +0 -27
- package/src/tool/impact/change-set-impact.ts +3 -2
- package/src/tool/impact/execute.ts +27 -0
- package/src/tool/impact/file-level-impact.ts +3 -2
- package/src/tool/impact/result.ts +2 -21
- package/src/tool/impact/single-impact.ts +3 -2
- package/src/tool/infra/error-results.ts +18 -196
- package/src/tool/infra/pipeline.ts +24 -1
- package/src/tool/inspect/markdown.ts +4 -41
- package/src/tool/inspect/orchestrate.ts +27 -28
- package/src/tool/orientation/mode.ts +53 -2
- package/src/tool/orientation/orchestrate.ts +5 -8
- package/src/tool/orientation/precise-target.ts +65 -69
- package/src/tool/refactor-apply/orchestrate.ts +2 -7
- package/src/tool/refactor-plan/orchestrate.ts +31 -39
- package/src/tool/resolve/markdown.ts +5 -6
- package/src/tool/resolve/orchestrate.ts +7 -103
- package/src/tool/result/errors.ts +199 -0
- package/src/tool/result/find.ts +29 -0
- package/src/tool/result/graph.ts +93 -0
- package/src/tool/result/health.ts +94 -0
- package/src/tool/result/impact.ts +50 -0
- package/src/tool/result/inspect.ts +60 -0
- package/src/tool/result/orientation.ts +30 -0
- package/src/tool/result/refactor.ts +35 -0
- package/src/tool/result/resolve.ts +114 -0
- package/src/tool/result/types.ts +191 -0
- package/src/tool/schemas.ts +39 -28
- package/src/types/details.ts +17 -185
- package/src/ui/tui/common.ts +45 -1
- package/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +0 -188
- package/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +0 -188
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +0 -188
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +0 -188
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +0 -188
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/config/config-settings.ts +0 -188
|
@@ -4,22 +4,21 @@
|
|
|
4
4
|
// are deprecated and ignored. Per-language disable via
|
|
5
5
|
// `lsp.servers.<language>.enabled: false` is the only supported opt-out.
|
|
6
6
|
//
|
|
7
|
-
//
|
|
8
|
-
// - severity
|
|
9
|
-
// -
|
|
10
|
-
// -
|
|
7
|
+
// Uses the declarative settings schema with:
|
|
8
|
+
// - severity: number with labeled values
|
|
9
|
+
// - exclude: stringList
|
|
10
|
+
// - disabled_servers: custom submenu that writes per-language disable config
|
|
11
11
|
|
|
12
|
-
import {
|
|
13
|
-
import type { SettingItem } from "@earendil-works/pi-tui";
|
|
12
|
+
import { type ExtensionAPI, getSettingsListTheme } from "@earendil-works/pi-coding-agent";
|
|
13
|
+
import type { Component, SettingItem } from "@earendil-works/pi-tui";
|
|
14
14
|
import { Container, Key, matchesKey, SettingsList, Text } from "@earendil-works/pi-tui";
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
import { loadSupiConfigSectionForScope, writeSupiConfig } from "@mrclrchtr/supi-core/config";
|
|
18
17
|
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
} from "@mrclrchtr/supi-core/
|
|
18
|
+
registerDeclarativeSettings,
|
|
19
|
+
type SettingsScope,
|
|
20
|
+
type ValueSource,
|
|
21
|
+
} from "@mrclrchtr/supi-core/settings";
|
|
23
22
|
import { type LspSettings, loadConfig } from "@mrclrchtr/supi-lsp/api";
|
|
24
23
|
|
|
25
24
|
const LSP_DEFAULTS: LspSettings = {
|
|
@@ -29,21 +28,6 @@ const LSP_DEFAULTS: LspSettings = {
|
|
|
29
28
|
exclude: [],
|
|
30
29
|
};
|
|
31
30
|
|
|
32
|
-
function severityLabel(severity: number): string {
|
|
33
|
-
switch (severity) {
|
|
34
|
-
case 1:
|
|
35
|
-
return "errors";
|
|
36
|
-
case 2:
|
|
37
|
-
return "warnings";
|
|
38
|
-
case 3:
|
|
39
|
-
return "info";
|
|
40
|
-
case 4:
|
|
41
|
-
return "hints";
|
|
42
|
-
default:
|
|
43
|
-
return "errors";
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
31
|
/** Discover configured servers from the defaults + effective LSP config. */
|
|
48
32
|
function getConfiguredServers(cwd: string): string[] {
|
|
49
33
|
try {
|
|
@@ -59,12 +43,10 @@ function getConfiguredServers(cwd: string): string[] {
|
|
|
59
43
|
* configured disabled servers from the persisted config.
|
|
60
44
|
*/
|
|
61
45
|
function getDisabledServersFromConfig(scope: SettingsScope, cwd: string): Set<string> {
|
|
62
|
-
const section =
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
{ scope },
|
|
67
|
-
);
|
|
46
|
+
const section = loadSupiConfigSectionForScope("lsp", cwd, {
|
|
47
|
+
scope,
|
|
48
|
+
});
|
|
49
|
+
if (!section) return new Set();
|
|
68
50
|
const servers = section.servers as Record<string, { enabled?: boolean }> | undefined;
|
|
69
51
|
const disabled = new Set<string>();
|
|
70
52
|
if (servers) {
|
|
@@ -75,75 +57,11 @@ function getDisabledServersFromConfig(scope: SettingsScope, cwd: string): Set<st
|
|
|
75
57
|
return disabled;
|
|
76
58
|
}
|
|
77
59
|
|
|
78
|
-
export function registerLspSettings(): void {
|
|
79
|
-
registerConfigSettings({
|
|
80
|
-
id: "lsp",
|
|
81
|
-
label: "LSP",
|
|
82
|
-
section: "lsp",
|
|
83
|
-
defaults: LSP_DEFAULTS,
|
|
84
|
-
buildItems: (settings, scope, cwd) => buildLspSettingItems(settings, scope, cwd),
|
|
85
|
-
// biome-ignore lint/complexity/useMaxParams: registerConfigSettings callback signature
|
|
86
|
-
persistChange: (_scope, _cwd, settingId, value, helpers) => {
|
|
87
|
-
switch (settingId) {
|
|
88
|
-
case "severity": {
|
|
89
|
-
const num = Number.parseInt(value.split(" ")[0] ?? "1", 10);
|
|
90
|
-
helpers.set("severity", Number.isNaN(num) ? 1 : num);
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
case "exclude": {
|
|
94
|
-
const patterns = value
|
|
95
|
-
.split(",")
|
|
96
|
-
.map((s) => s.trim())
|
|
97
|
-
.filter(Boolean);
|
|
98
|
-
if (patterns.length > 0) helpers.set("exclude", patterns);
|
|
99
|
-
else helpers.unset("exclude");
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
function buildLspSettingItems(
|
|
108
|
-
settings: LspSettings,
|
|
109
|
-
scope: "project" | "global",
|
|
110
|
-
cwd: string,
|
|
111
|
-
): SettingItem[] {
|
|
112
|
-
return [
|
|
113
|
-
{
|
|
114
|
-
id: "severity",
|
|
115
|
-
label: "Inline Severity",
|
|
116
|
-
description: "Minimum diagnostic severity to show inline (1=errors, 4=hints)",
|
|
117
|
-
currentValue: `${settings.severity} (${severityLabel(settings.severity)})`,
|
|
118
|
-
values: ["1 (errors)", "2 (warnings)", "3 (info)", "4 (hints)"],
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
id: "disabled_servers",
|
|
122
|
-
label: "Disabled Servers",
|
|
123
|
-
description: "Press Enter to choose which language servers to disable",
|
|
124
|
-
currentValue: renderDisabledServersLabel(scope, cwd),
|
|
125
|
-
submenu: (_currentValue, done) => createDisabledServersSubmenu(scope, cwd, done),
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
id: "exclude",
|
|
129
|
-
label: "Exclude Patterns",
|
|
130
|
-
description: "Gitignore patterns to suppress LSP diagnostics",
|
|
131
|
-
currentValue: settings.exclude.length > 0 ? settings.exclude.join(", ") : "none",
|
|
132
|
-
submenu: (_currentValue, done) => createExcludeSubmenu(scope, cwd, settings, done),
|
|
133
|
-
},
|
|
134
|
-
];
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function renderDisabledServersLabel(scope: SettingsScope, cwd: string): string {
|
|
138
|
-
const disabled = getDisabledServersFromConfig(scope, cwd);
|
|
139
|
-
return disabled.size > 0 ? [...disabled].sort().join(", ") : "none disabled";
|
|
140
|
-
}
|
|
141
|
-
|
|
142
60
|
function createDisabledServersSubmenu(
|
|
143
61
|
scope: SettingsScope,
|
|
144
62
|
cwd: string,
|
|
145
|
-
done: (
|
|
146
|
-
) {
|
|
63
|
+
done: (selectedValue?: string) => void,
|
|
64
|
+
): Component {
|
|
147
65
|
const allServers = getConfiguredServers(cwd);
|
|
148
66
|
const disabledServers = getDisabledServersFromConfig(scope, cwd);
|
|
149
67
|
|
|
@@ -156,14 +74,7 @@ function createDisabledServersSubmenu(
|
|
|
156
74
|
|
|
157
75
|
let dirty = false;
|
|
158
76
|
const container = new Container();
|
|
159
|
-
|
|
160
|
-
container.addChild(header);
|
|
161
|
-
const footer = new Text(
|
|
162
|
-
"Marking a server as disabled writes lsp.servers.<lang>.enabled: false for this scope",
|
|
163
|
-
0,
|
|
164
|
-
0,
|
|
165
|
-
);
|
|
166
|
-
container.addChild(footer);
|
|
77
|
+
container.addChild(new Text(" Disabled Servers — per-language opt-out", 1, 0));
|
|
167
78
|
|
|
168
79
|
const settingsList = new SettingsList(
|
|
169
80
|
items,
|
|
@@ -180,26 +91,22 @@ function createDisabledServersSubmenu(
|
|
|
180
91
|
{ enableSearch: true },
|
|
181
92
|
);
|
|
182
93
|
container.addChild(settingsList);
|
|
94
|
+
container.addChild(new Text(" esc save and close", 1, 0));
|
|
183
95
|
|
|
184
96
|
return {
|
|
185
97
|
render: (width: number) => container.render(width),
|
|
186
98
|
invalidate: () => container.invalidate(),
|
|
187
|
-
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: single event handler
|
|
99
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: single event handler for the submenu
|
|
188
100
|
handleInput: (data: string) => {
|
|
189
101
|
if (matchesKey(data, Key.escape)) {
|
|
190
102
|
if (!dirty) {
|
|
191
103
|
done();
|
|
192
|
-
return
|
|
104
|
+
return;
|
|
193
105
|
}
|
|
194
106
|
// Write per-language enabled/disabled into lsp.servers
|
|
195
|
-
const currentSection =
|
|
196
|
-
"lsp",
|
|
197
|
-
cwd,
|
|
198
|
-
{ servers: {} as Record<string, { enabled?: boolean }> },
|
|
199
|
-
{ scope },
|
|
200
|
-
);
|
|
107
|
+
const currentSection = loadSupiConfigSectionForScope("lsp", cwd, { scope });
|
|
201
108
|
const servers =
|
|
202
|
-
(currentSection
|
|
109
|
+
(currentSection?.servers as Record<string, Record<string, unknown>> | undefined) ?? {};
|
|
203
110
|
|
|
204
111
|
for (const item of items) {
|
|
205
112
|
if (item.currentValue === "disabled") {
|
|
@@ -208,7 +115,6 @@ function createDisabledServersSubmenu(
|
|
|
208
115
|
const srv = servers[item.id];
|
|
209
116
|
if (srv) {
|
|
210
117
|
delete srv.enabled;
|
|
211
|
-
// If only `enabled` was the property, remove the whole entry
|
|
212
118
|
if (Object.keys(srv).length === 0) {
|
|
213
119
|
delete servers[item.id];
|
|
214
120
|
}
|
|
@@ -217,70 +123,90 @@ function createDisabledServersSubmenu(
|
|
|
217
123
|
}
|
|
218
124
|
|
|
219
125
|
writeSupiConfig({ section: "lsp", scope, cwd }, { servers });
|
|
220
|
-
done();
|
|
221
|
-
return
|
|
126
|
+
done("saved");
|
|
127
|
+
return;
|
|
222
128
|
}
|
|
223
129
|
settingsList.handleInput?.(data);
|
|
224
|
-
return true;
|
|
225
130
|
},
|
|
226
131
|
};
|
|
227
132
|
}
|
|
228
133
|
|
|
229
|
-
function
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
134
|
+
export function registerLspSettings(pi: ExtensionAPI): void {
|
|
135
|
+
registerDeclarativeSettings(pi, {
|
|
136
|
+
id: "lsp",
|
|
137
|
+
label: "LSP",
|
|
138
|
+
section: "lsp",
|
|
139
|
+
defaults: LSP_DEFAULTS,
|
|
140
|
+
fields: [
|
|
141
|
+
{
|
|
142
|
+
kind: "number" as const,
|
|
143
|
+
key: "severity",
|
|
144
|
+
label: "Inline Severity",
|
|
145
|
+
description: "Minimum diagnostic severity to show inline (1=errors, 4=hints)",
|
|
146
|
+
values: ["1", "2", "3", "4"],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
kind: "stringList" as const,
|
|
150
|
+
key: "exclude",
|
|
151
|
+
label: "Exclude Patterns",
|
|
152
|
+
description: "Gitignore patterns to suppress LSP diagnostics (comma-separated)",
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
kind: "custom" as const,
|
|
156
|
+
key: "disabled_servers",
|
|
157
|
+
label: "Disabled Servers",
|
|
158
|
+
description: "Press Enter to choose which language servers to disable",
|
|
159
|
+
resolve: (scope, cwd) => {
|
|
160
|
+
const scopedDisabled = getDisabledServersFromConfig(scope, cwd);
|
|
161
|
+
const otherScope = scope === "project" ? "global" : "project";
|
|
162
|
+
const otherDisabled =
|
|
163
|
+
scope === "project" ? getDisabledServersFromConfig("global", cwd) : new Set<string>();
|
|
164
|
+
|
|
165
|
+
// Effective disabled servers = union of both scopes (since either disables)
|
|
166
|
+
const effectiveDisabled = new Set([...scopedDisabled, ...otherDisabled]);
|
|
167
|
+
const label =
|
|
168
|
+
effectiveDisabled.size > 0 ? [...effectiveDisabled].sort().join(", ") : "none disabled";
|
|
169
|
+
|
|
170
|
+
// Source: where the override comes from
|
|
171
|
+
let source: ValueSource;
|
|
172
|
+
if (scopedDisabled.size > 0) {
|
|
173
|
+
source = scope;
|
|
174
|
+
} else if (otherDisabled.size > 0) {
|
|
175
|
+
source = otherScope as ValueSource;
|
|
176
|
+
} else {
|
|
177
|
+
source = "default";
|
|
178
|
+
}
|
|
253
179
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const idx = items.findIndex((i) => i.id === id);
|
|
260
|
-
if (idx >= 0 && items[idx].currentValue !== newValue) {
|
|
261
|
-
dirty = true;
|
|
262
|
-
items[idx].currentValue = newValue;
|
|
263
|
-
}
|
|
264
|
-
},
|
|
265
|
-
() => {},
|
|
266
|
-
);
|
|
267
|
-
container.addChild(settingsList);
|
|
180
|
+
let inheritanceSource: "global" | "default" | undefined;
|
|
181
|
+
if (scope === "project" && source === "project") {
|
|
182
|
+
inheritanceSource =
|
|
183
|
+
getDisabledServersFromConfig("global", cwd).size > 0 ? "global" : "default";
|
|
184
|
+
}
|
|
268
185
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
186
|
+
return { displayValue: label, source, inheritanceSource };
|
|
187
|
+
},
|
|
188
|
+
submenu: (_currentValue, done, scope, cwd) =>
|
|
189
|
+
createDisabledServersSubmenu(scope, cwd, done),
|
|
190
|
+
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: custom field persist handler orchestrates nested config writes
|
|
191
|
+
persist: (scope, cwd, action, _helpers) => {
|
|
192
|
+
if (action.kind === "inherit" || action.kind === "resetToDefault") {
|
|
193
|
+
// Clear all per-server enable/disable entries for this scope
|
|
194
|
+
const currentSection = loadSupiConfigSectionForScope("lsp", cwd, { scope });
|
|
195
|
+
const servers =
|
|
196
|
+
(currentSection?.servers as Record<string, Record<string, unknown>> | undefined) ??
|
|
197
|
+
{};
|
|
198
|
+
for (const name of Object.keys(servers)) {
|
|
199
|
+
const srv = servers[name];
|
|
200
|
+
if (srv) {
|
|
201
|
+
delete srv.enabled;
|
|
202
|
+
if (Object.keys(srv).length === 0) delete servers[name];
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
writeSupiConfig({ section: "lsp", scope, cwd }, { servers });
|
|
206
|
+
}
|
|
207
|
+
// Explicit set actions are handled entirely inside the submenu
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
});
|
|
286
212
|
}
|
package/src/tool/find/execute.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { findModeKindRules } from "../infra/cross-field.ts";
|
|
|
16
16
|
import { unavailableSearchDetails } from "../infra/error-results.ts";
|
|
17
17
|
import {
|
|
18
18
|
gateSemanticReadiness,
|
|
19
|
-
|
|
19
|
+
resolveScopeSetParam,
|
|
20
20
|
runPipe,
|
|
21
21
|
validateParams,
|
|
22
22
|
} from "../infra/pipeline.ts";
|
|
@@ -26,7 +26,7 @@ import { executePattern } from "./orchestrate.ts";
|
|
|
26
26
|
|
|
27
27
|
export interface CodeFindToolParams {
|
|
28
28
|
query: string;
|
|
29
|
-
scope?: string;
|
|
29
|
+
scope?: string | string[];
|
|
30
30
|
mode?: "text" | "regex" | "ast" | "semantic";
|
|
31
31
|
kind?:
|
|
32
32
|
| "definition"
|
|
@@ -43,6 +43,16 @@ export interface CodeFindToolParams {
|
|
|
43
43
|
maxResults?: number;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
interface CodeFindPipelineParams extends CodeFindToolParams {
|
|
47
|
+
_resolvedScopePaths?: string[];
|
|
48
|
+
_resolvedScopeDisplay?: string | null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function scopeForDetails(scope: CodeFindToolParams["scope"]): string | null {
|
|
52
|
+
if (Array.isArray(scope)) return scope.join(", ");
|
|
53
|
+
return scope ?? null;
|
|
54
|
+
}
|
|
55
|
+
|
|
46
56
|
export async function executeFindTool(
|
|
47
57
|
params: CodeFindToolParams,
|
|
48
58
|
ctx: CodeIntelToolExecCtx,
|
|
@@ -50,7 +60,7 @@ export async function executeFindTool(
|
|
|
50
60
|
if (!params.query || params.query.trim().length === 0) {
|
|
51
61
|
return {
|
|
52
62
|
content: "**Error:** `code_find` requires a non-empty `query` parameter.",
|
|
53
|
-
details: unavailableSearchDetails(params.scope
|
|
63
|
+
details: unavailableSearchDetails(scopeForDetails(params.scope), [
|
|
54
64
|
"Provide a non-empty `query` parameter",
|
|
55
65
|
]),
|
|
56
66
|
};
|
|
@@ -61,20 +71,22 @@ export async function executeFindTool(
|
|
|
61
71
|
const mode = params.mode ?? "text";
|
|
62
72
|
const needsSemanticReadiness = mode === "semantic";
|
|
63
73
|
|
|
74
|
+
const pipelineParams = params as CodeFindPipelineParams;
|
|
75
|
+
|
|
64
76
|
return runPipe(
|
|
65
|
-
|
|
77
|
+
pipelineParams,
|
|
66
78
|
ctx,
|
|
67
79
|
[
|
|
68
80
|
validateParams(findModeKindRules(), (msg) => ({
|
|
69
81
|
content: msg,
|
|
70
|
-
details: unavailableSearchDetails(params.scope
|
|
82
|
+
details: unavailableSearchDetails(scopeForDetails(params.scope), [
|
|
71
83
|
'Use `mode: "ast"` with `kind`, or remove `kind` for text/regex/semantic search',
|
|
72
84
|
]),
|
|
73
85
|
})),
|
|
74
|
-
|
|
86
|
+
resolveScopeSetParam((reason) => ({
|
|
75
87
|
content: `**Error:** ${reason}`,
|
|
76
|
-
details: unavailableSearchDetails(params.scope
|
|
77
|
-
"Verify
|
|
88
|
+
details: unavailableSearchDetails(scopeForDetails(params.scope), [
|
|
89
|
+
"Verify each `scope` path exists and is within the workspace",
|
|
78
90
|
]),
|
|
79
91
|
})),
|
|
80
92
|
...(needsSemanticReadiness
|
|
@@ -82,7 +94,7 @@ export async function executeFindTool(
|
|
|
82
94
|
gateSemanticReadiness("code_find", {
|
|
83
95
|
onTimeout: () => ({
|
|
84
96
|
content: renderSemanticReadinessTimeout("code_find", 15_000),
|
|
85
|
-
details: unavailableSearchDetails(params.scope
|
|
97
|
+
details: unavailableSearchDetails(scopeForDetails(params.scope), [
|
|
86
98
|
"Retry shortly or check `code_health`",
|
|
87
99
|
]),
|
|
88
100
|
}),
|
|
@@ -104,7 +116,8 @@ export async function executeFindTool(
|
|
|
104
116
|
return executePattern(
|
|
105
117
|
{
|
|
106
118
|
pattern: p.query,
|
|
107
|
-
|
|
119
|
+
paths: p._resolvedScopePaths ?? [c.cwd],
|
|
120
|
+
scopeLabel: p._resolvedScopeDisplay ?? null,
|
|
108
121
|
regex: mode === "regex",
|
|
109
122
|
kind: p.kind,
|
|
110
123
|
mode,
|