@mrclrchtr/supi-code-intelligence 6.0.1 → 6.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 +2 -2
- package/node_modules/@mrclrchtr/supi-code-runtime/package.json +1 -1
- package/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +5 -0
- package/node_modules/@mrclrchtr/supi-core/package.json +1 -1
- package/node_modules/@mrclrchtr/supi-core/src/debug-identity.ts +11 -0
- package/node_modules/@mrclrchtr/supi-core/src/debug.ts +5 -0
- package/node_modules/@mrclrchtr/supi-lsp/README.md +26 -4
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/package.json +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +5 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/package.json +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/debug-identity.ts +11 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/debug.ts +5 -0
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-jsonrpc/package.json +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.d.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.d.ts +2 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.d.ts +9 -9
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/package.json +3 -3
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/main.d.ts +2 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/main.js +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/umd/main.d.ts +2 -2
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/umd/main.js +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/package.json +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/package.json +4 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/api.ts +14 -7
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client-diagnostic-cache.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client-diagnostic-capabilities.ts +0 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client-diagnostic-publication.ts +6 -3
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client-diagnostic-refresh.ts +2 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client-diagnostic-timing.ts +5 -2
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client-diagnostics.ts +2 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/client/client.ts +23 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/client/transport.ts +40 -18
- package/node_modules/@mrclrchtr/supi-lsp/src/config/config.ts +164 -30
- package/node_modules/@mrclrchtr/supi-lsp/src/config/lsp-settings.ts +9 -87
- package/node_modules/@mrclrchtr/supi-lsp/src/config/server-config.ts +8 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/config/tsconfig-scope.ts +4 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/config/types.ts +1 -29
- package/node_modules/@mrclrchtr/supi-lsp/src/debug-telemetry.ts +7 -21
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-severity.ts +6 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/diagnostic-summary.ts +11 -14
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/evidence.ts +0 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/stale-diagnostics.ts +0 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/diagnostics/workspace-sentinels.ts +29 -49
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-client-state.ts +1 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-diagnostics.ts +4 -8
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-helpers.ts +1 -9
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-project-info.ts +12 -6
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-recovery.ts +9 -1
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager-workspace-symbol.ts +26 -41
- package/node_modules/@mrclrchtr/supi-lsp/src/manager/manager.ts +849 -117
- package/node_modules/@mrclrchtr/supi-lsp/src/provider/lsp-semantic-provider.ts +6 -4
- package/node_modules/@mrclrchtr/supi-lsp/src/provider/semantic-symbol-mapper.ts +59 -28
- package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-controller.ts +27 -19
- package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-diagnostic-surface.ts +10 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-diagnostics.ts +26 -0
- package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-registration.ts +0 -17
- package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-registry.ts +118 -27
- package/node_modules/@mrclrchtr/supi-lsp/src/session/runtime-transition-debug.ts +7 -2
- package/node_modules/@mrclrchtr/supi-lsp/src/session/scanner.ts +24 -21
- package/node_modules/@mrclrchtr/supi-lsp/src/session/workspace-lsp-runtime.ts +33 -5
- package/node_modules/@mrclrchtr/supi-lsp/src/summary.ts +19 -40
- package/node_modules/@mrclrchtr/supi-lsp/src/utils.ts +13 -19
- package/node_modules/@mrclrchtr/supi-lsp/src/workspace-path-policy.ts +287 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/README.md +6 -18
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/package.json +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-code-runtime/src/capability/types.ts +5 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/package.json +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/debug-identity.ts +11 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/node_modules/@mrclrchtr/supi-core/src/debug.ts +5 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/package.json +3 -5
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/kotlin/tree-sitter-kotlin.wasm.json +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/resources/grammars/sql/tree-sitter-sql.wasm.json +1 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/api.ts +1 -11
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/coordinates.ts +19 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/language.ts +5 -23
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/operation-support.ts +3 -21
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/provider/tree-sitter-provider.ts +5 -9
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/runtime-controller.ts +10 -20
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/session.ts +7 -1
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/structural-worker-client.ts +9 -5
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/structural-worker-protocol.ts +134 -9
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/call-name.ts +96 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/call-sites.ts +11 -12
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/callees.ts +39 -56
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/exports.ts +9 -7
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/js-binding-pattern.ts +26 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/node-at.ts +2 -21
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/outline-html-sql.ts +144 -12
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/outline.ts +50 -37
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/scope.ts +138 -0
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/types.ts +0 -7
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/worker/parsed-file-store.ts +1 -14
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/worker/runtime.ts +0 -10
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/worker/service.ts +6 -8
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/worker/worker-main.ts +34 -10
- package/package.json +5 -5
- package/src/analysis/capability/capability-warnings.ts +4 -22
- package/src/analysis/health/recovery.ts +4 -0
- package/src/analysis/health/server-status.ts +64 -0
- package/src/analysis/health/signals.ts +1 -0
- package/src/analysis/provider.ts +2 -1
- package/src/analysis/search/ast-scan-timing.ts +4 -2
- package/src/analysis/search/ast-scan.ts +1 -1
- package/src/analysis/target/symbol.ts +28 -16
- package/src/analysis/target/types.ts +1 -0
- package/src/api.ts +1 -0
- package/src/extension.ts +4 -2
- package/src/session/find-workflow.ts +5 -12
- package/src/session/health-refresh.ts +30 -4
- package/src/session/health-types.ts +27 -2
- package/src/session/health-workflow.ts +5 -1
- package/src/session/input/health-refactor.ts +16 -14
- package/src/session/refactor-types.ts +14 -1
- package/src/session/refactor-workflow.ts +21 -16
- package/src/session/semantic-demand.ts +36 -0
- package/src/session/target-workflow.ts +9 -12
- package/src/substrate/lsp/lifecycle.ts +0 -3
- package/src/substrate/lsp/maintenance.ts +4 -5
- package/src/substrate/lsp/settings.ts +6 -9
- package/src/substrate/lsp/state.ts +0 -2
- package/src/substrate/workspace-provider-host.ts +2 -2
- package/src/tool/code_health/file-scope-markdown.ts +43 -0
- package/src/tool/code_health/guidance.ts +2 -2
- package/src/tool/code_health/markdown.ts +81 -69
- package/src/tool/code_health/refresh-outcome.ts +46 -0
- package/src/tool/code_health/refresh-status.ts +166 -23
- package/src/tool/code_health/result.ts +15 -5
- package/src/tool/code_health/spec.ts +2 -1
- package/src/tool/code_health/tui.ts +42 -8
- package/src/tool/code_refactor_apply/guidance.ts +3 -2
- package/src/tool/code_refactor_plan/guidance.ts +1 -1
- package/src/tool/register.ts +5 -2
- package/src/tool/result/errors.ts +1 -0
- package/src/tool/result/types.ts +6 -0
- package/src/tool/schemas.ts +21 -11
- package/src/ui/footer.ts +7 -5
- package/src/ui/status-command.ts +31 -0
- package/src/ui/status-overlay.ts +69 -23
- package/node_modules/@mrclrchtr/supi-lsp/src/config/server-actions.ts +0 -59
- package/node_modules/@mrclrchtr/supi-lsp/src/pattern-matcher.ts +0 -24
- package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-kotlin-wasm.mjs +0 -132
- package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/generate-sql-wasm.mjs +0 -158
- package/node_modules/@mrclrchtr/supi-tree-sitter/scripts/vendor-wasm.mjs +0 -167
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/index.ts +0 -42
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/runtime-registration.ts +0 -37
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/session/service-registry.ts +0 -30
- package/node_modules/@mrclrchtr/supi-tree-sitter/src/tool/structure.ts +0 -8
package/README.md
CHANGED
|
@@ -81,7 +81,7 @@ The package adds eight tools that Pi selects as needed:
|
|
|
81
81
|
| `code_graph` | Follow LSP references and implementations plus AST calls made by a symbol |
|
|
82
82
|
| `code_find` | Search LSP workspace symbols or parsed AST source structure rather than raw text |
|
|
83
83
|
| `code_health` | Check live diagnostics, language servers, and code-intelligence availability |
|
|
84
|
-
| `code_refactor_plan` | Preview a precise rename or
|
|
84
|
+
| `code_refactor_plan` | Preview a precise rename, extraction, import cleanup, or dead-code deletion without changing files |
|
|
85
85
|
| `code_refactor_apply` | Apply a fresh refactor plan after safety checks |
|
|
86
86
|
|
|
87
87
|
Pi's built-in `grep` remains the right tool for literal or regular-expression searches; these tools add symbol and source-structure awareness.
|
|
@@ -123,7 +123,7 @@ If a server is missing, the agent can still use available workspace and structur
|
|
|
123
123
|
|
|
124
124
|
## Status and settings
|
|
125
125
|
|
|
126
|
-
Open the status view to see
|
|
126
|
+
Open the status view to see each LSP route with its workspace-relative root, running or missing servers, typed route issue counts, and capability warnings:
|
|
127
127
|
|
|
128
128
|
```text
|
|
129
129
|
/supi-ci-status
|
|
@@ -75,9 +75,14 @@ export interface SemanticProvider {
|
|
|
75
75
|
filePath: string,
|
|
76
76
|
control?: CodeRequestControl,
|
|
77
77
|
): Promise<CodeQueryResult<DocumentCodeSymbol[]>>;
|
|
78
|
+
/**
|
|
79
|
+
* Collect workspace symbols from routes that can contribute within the
|
|
80
|
+
* optional canonical path scopes.
|
|
81
|
+
*/
|
|
78
82
|
workspaceSymbols(
|
|
79
83
|
query: string,
|
|
80
84
|
control?: CodeRequestControl,
|
|
85
|
+
scopes?: readonly string[],
|
|
81
86
|
): Promise<CodeQueryResult<CodeSymbol[]>>;
|
|
82
87
|
|
|
83
88
|
/** Optional definition capability with explicit completed-empty semantics. */
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Maximum UTF-16 code-unit length of one debug identity string. */
|
|
2
|
+
export const MAX_DEBUG_IDENTITY_STRING = 512;
|
|
3
|
+
|
|
4
|
+
/** Marker appended to a truncated debug identity string. */
|
|
5
|
+
export const DEBUG_IDENTITY_TRUNCATION_MARKER = "…";
|
|
6
|
+
|
|
7
|
+
/** Bound one debug identity string, including its truncation marker. */
|
|
8
|
+
export function truncateDebugIdentity(value: string): string {
|
|
9
|
+
if (value.length <= MAX_DEBUG_IDENTITY_STRING) return value;
|
|
10
|
+
return `${value.slice(0, MAX_DEBUG_IDENTITY_STRING - 1)}${DEBUG_IDENTITY_TRUNCATION_MARKER}`;
|
|
11
|
+
}
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
// Kept separate from debug-registry.ts so debug-timing.ts can import the
|
|
4
4
|
// registry without creating an import cycle through the barrel re-export.
|
|
5
5
|
|
|
6
|
+
export {
|
|
7
|
+
DEBUG_IDENTITY_TRUNCATION_MARKER,
|
|
8
|
+
MAX_DEBUG_IDENTITY_STRING,
|
|
9
|
+
truncateDebugIdentity,
|
|
10
|
+
} from "./debug-identity.ts";
|
|
6
11
|
// biome-ignore lint/performance/noReExportAll: preserve the stable debug domain entry point
|
|
7
12
|
export * from "./debug-registry.ts";
|
|
8
13
|
// biome-ignore lint/performance/noReExportAll: preserve the stable debug domain entry point
|
|
@@ -82,6 +82,24 @@ Configuration overrides merge with the built-in server definitions. Use `.pi/sup
|
|
|
82
82
|
|
|
83
83
|
Gopls pull diagnostics stay opt-in while golang/go#70199 is open; without the option the built-in Go configuration stays in push mode. Kotlin's `--stdio` argument is already part of the built-in configuration and needs no override.
|
|
84
84
|
|
|
85
|
+
### Automatic workspace path policy
|
|
86
|
+
|
|
87
|
+
Automatic LSP work uses one path policy that does not change for each workspace runtime. It covers project discovery, route startup, warm-up, sentinel and source-file lists, created-file tracking, runtime guidance, and diagnostic summaries not tied to one request.
|
|
88
|
+
|
|
89
|
+
The policy excludes these directories by default: `.git`, `.cache`, `.pi`, `.pnpm`, `node_modules`, `dist`, `build`, `out`, `coverage`, `.next`, `.nuxt`, `.turbo`, and `__pycache__`. It also applies `lsp.exclude` patterns and root or nested `.gitignore` rules. Patterns use gitignore syntax, including rules relative to each directory and `!` rules. Built-in exclusions cannot be enabled again. Symbolic-link directories are not visited. Other dot-directories, such as `.github` and `.storybook`, remain allowed.
|
|
90
|
+
|
|
91
|
+
Set `lsp.exclude` in project or global SuPi configuration:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"lsp": {
|
|
96
|
+
"exclude": ["generated/**", "!generated/keep.ts"]
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
An exact semantic request can still route an excluded file when a compatible server is available. This does not add the file to automatic work. Configured diagnostic suppression still applies to diagnostic output.
|
|
102
|
+
|
|
85
103
|
### Custom server configuration
|
|
86
104
|
|
|
87
105
|
A custom server needs a command and at least one file type:
|
|
@@ -104,7 +122,7 @@ A custom server needs a command and at least one file type:
|
|
|
104
122
|
|
|
105
123
|
File types do not include a leading dot. If `rootMarkers` is omitted, the server uses the session root.
|
|
106
124
|
|
|
107
|
-
|
|
125
|
+
Disable one language with `lsp.servers.<language>.enabled: false`. Use `/supi-ci-status` from `@mrclrchtr/supi-code-intelligence` to see detected, running, and missing servers.
|
|
108
126
|
|
|
109
127
|
## What it provides
|
|
110
128
|
|
|
@@ -146,7 +164,11 @@ Retained and persisted LSP debug events may identify local workspaces, servers,
|
|
|
146
164
|
- `method` — exact LSP method, e.g. `textDocument/hover`
|
|
147
165
|
- `root` — server root, absolute where present
|
|
148
166
|
|
|
149
|
-
`runtime.transition` events carry `cwd` and a bounded `servers` array (name, status, ready; at most 16 entries) alongside the aggregate counts. `readiness.*` events carry `cwd`, `server`, and `root`; their messages and data never embed raw progress-token values. `request.timing` events carry the exact `method`, `server`, and `cwd`, plus the JSON-RPC error code: the server-reported code for failed requests, and the defined constant `-32095` (`LSP_REQUEST_TIMEOUT_ERROR_CODE`) for local timeouts; cancellations carry no code. `diagnostics.timing` events carry `cwd`, `server`, and a workspace-relative `file` for `sync-file` operations; `refresh-open` stays aggregate. `runtime.recovery` events carry `cwd
|
|
167
|
+
`runtime.transition` events carry `cwd` and a bounded `servers` array (name, status, ready, and an optional process-crash status reason; at most 16 entries) alongside the aggregate counts. `readiness.*` events carry `cwd`, `server`, and `root`; their messages and data never embed raw progress-token values. `request.timing` events carry the exact `method`, `server`, and `cwd`, plus the JSON-RPC error code: the server-reported code for failed requests, and the defined constant `-32095` (`LSP_REQUEST_TIMEOUT_ERROR_CODE`) for local timeouts; cancellations carry no code. `diagnostics.timing` events carry `cwd`, `server`, and a workspace-relative `file` for `sync-file` operations; `refresh-open` stays aggregate. `runtime.recovery` events carry `cwd`, bounded server and route-root identity, an outcome, and elapsed time for process-crash recovery. Diagnostic recovery events keep their existing bounded attempted/restarted server names. `capability.transition` events fire only on semantic ready↔pending transitions and carry `cwd` and the ready state — never for initialize, registration, or unregistration traffic. Code-intelligence events (`code-operation.*`, `workflow.timing`, `ast-scan.timing`) carry `cwd` only.
|
|
168
|
+
|
|
169
|
+
`ProjectServerInfo.statusReason` is present only for process-crash recovery states: `process-crashed`, `process-crash-recovery-pending`, or `process-crash-recovery-exhausted`. An LSP route is one configured server and workspace root. A route stays in `error` status for all three states.
|
|
170
|
+
|
|
171
|
+
Semantic evidence operations recover each required, previously running crashed route and wait for the shared replacement. Scoped workspace-symbol operations select routes by operation support and root intersection; unscoped operations select every known supporting route. Required routes start in parallel. File diagnostics can also recover their route. An explicit broad diagnostic refresh can recover crashed routes that retain tracked files in its scope. Server inventory, workspace readiness, and passive diagnostic snapshots do not start recovery. Recovery never cold-starts a route that did not initialize successfully.
|
|
150
172
|
|
|
151
173
|
Identity strings — `cwd`, `server`, `file`, `method`, and `root` — are bounded to 512 UTF-16 code units (marker included; truncation appends `…`) and server lists to 16 entries. No raw protocol dumps, request/response params, diagnostic text, progress tokens, or unbounded file lists are recorded; `openFiles` stays a count. Identity fields are intentionally **not** secret-redacted — the debug registry still redacts secret keys and values, but server names, workspace-relative files, and method names pass through unredacted so local protocol failures stay diagnosable. The supi-debug package documents this disclosure for retained and persisted events.
|
|
152
174
|
|
|
@@ -187,7 +209,7 @@ Detected servers start concurrently. In a polyglot workspace, disable unneeded l
|
|
|
187
209
|
}
|
|
188
210
|
```
|
|
189
211
|
|
|
190
|
-
|
|
212
|
+
If every server definition is disabled, the controller publishes an explicit `disabled` runtime state instead of an empty `ready` runtime. When a ready owner has no active client yet, it stays published for lazy routing while semantic capability remains pending.
|
|
191
213
|
|
|
192
214
|
## Architecture
|
|
193
215
|
|
|
@@ -208,7 +230,7 @@ See [`docs/adr/0016-workspace-lsp-runtime-interface.md`](../../docs/adr/0016-wor
|
|
|
208
230
|
|
|
209
231
|
## Package exports
|
|
210
232
|
|
|
211
|
-
- `@mrclrchtr/supi-lsp/api` — runtime/controller/config types and
|
|
233
|
+
- `@mrclrchtr/supi-lsp/api` — runtime/controller/config types, registry operations, and automatic path-policy helpers
|
|
212
234
|
- `@mrclrchtr/supi-lsp/provider/lsp-semantic-provider` — semantic provider adapter
|
|
213
235
|
|
|
214
236
|
## Source
|
|
@@ -75,9 +75,14 @@ export interface SemanticProvider {
|
|
|
75
75
|
filePath: string,
|
|
76
76
|
control?: CodeRequestControl,
|
|
77
77
|
): Promise<CodeQueryResult<DocumentCodeSymbol[]>>;
|
|
78
|
+
/**
|
|
79
|
+
* Collect workspace symbols from routes that can contribute within the
|
|
80
|
+
* optional canonical path scopes.
|
|
81
|
+
*/
|
|
78
82
|
workspaceSymbols(
|
|
79
83
|
query: string,
|
|
80
84
|
control?: CodeRequestControl,
|
|
85
|
+
scopes?: readonly string[],
|
|
81
86
|
): Promise<CodeQueryResult<CodeSymbol[]>>;
|
|
82
87
|
|
|
83
88
|
/** Optional definition capability with explicit completed-empty semantics. */
|
package/node_modules/@mrclrchtr/supi-lsp/node_modules/@mrclrchtr/supi-core/src/debug-identity.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Maximum UTF-16 code-unit length of one debug identity string. */
|
|
2
|
+
export const MAX_DEBUG_IDENTITY_STRING = 512;
|
|
3
|
+
|
|
4
|
+
/** Marker appended to a truncated debug identity string. */
|
|
5
|
+
export const DEBUG_IDENTITY_TRUNCATION_MARKER = "…";
|
|
6
|
+
|
|
7
|
+
/** Bound one debug identity string, including its truncation marker. */
|
|
8
|
+
export function truncateDebugIdentity(value: string): string {
|
|
9
|
+
if (value.length <= MAX_DEBUG_IDENTITY_STRING) return value;
|
|
10
|
+
return `${value.slice(0, MAX_DEBUG_IDENTITY_STRING - 1)}${DEBUG_IDENTITY_TRUNCATION_MARKER}`;
|
|
11
|
+
}
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
// Kept separate from debug-registry.ts so debug-timing.ts can import the
|
|
4
4
|
// registry without creating an import cycle through the barrel re-export.
|
|
5
5
|
|
|
6
|
+
export {
|
|
7
|
+
DEBUG_IDENTITY_TRUNCATION_MARKER,
|
|
8
|
+
MAX_DEBUG_IDENTITY_STRING,
|
|
9
|
+
truncateDebugIdentity,
|
|
10
|
+
} from "./debug-identity.ts";
|
|
6
11
|
// biome-ignore lint/performance/noReExportAll: preserve the stable debug domain entry point
|
|
7
12
|
export * from "./debug-registry.ts";
|
|
8
13
|
// biome-ignore lint/performance/noReExportAll: preserve the stable debug domain entry point
|
|
@@ -62,7 +62,7 @@ export interface ColorPresentationParams extends WorkDoneProgressParams, Partial
|
|
|
62
62
|
export declare namespace ColorPresentationRequest {
|
|
63
63
|
const method: 'textDocument/colorPresentation';
|
|
64
64
|
const messageDirection: MessageDirection;
|
|
65
|
-
const type: ProtocolRequestType<ColorPresentationParams, ColorPresentation[], ColorPresentation[], void,
|
|
65
|
+
const type: ProtocolRequestType<ColorPresentationParams, ColorPresentation[], ColorPresentation[], void, DocumentColorRegistrationOptions>;
|
|
66
66
|
type HandlerSignature = RequestHandler<ColorPresentationParams, ColorPresentation[], void>;
|
|
67
67
|
const capabilities: CM<"textDocument.colorProvider", "colorProvider">;
|
|
68
68
|
}
|
|
@@ -2778,12 +2778,12 @@ export interface CodeActionClientCapabilities {
|
|
|
2778
2778
|
* Client supports the tag property on a code action. Clients
|
|
2779
2779
|
* supporting tags have to handle unknown tags gracefully.
|
|
2780
2780
|
*
|
|
2781
|
-
* @since 3.18.0
|
|
2781
|
+
* @since 3.18.0
|
|
2782
2782
|
*/
|
|
2783
2783
|
tagSupport?: CodeActionTagOptions;
|
|
2784
2784
|
}
|
|
2785
2785
|
/**
|
|
2786
|
-
* @since 3.18.0
|
|
2786
|
+
* @since 3.18.0
|
|
2787
2787
|
*/
|
|
2788
2788
|
export type CodeActionTagOptions = {
|
|
2789
2789
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NotificationHandler, RequestHandler } from 'vscode-jsonrpc';
|
|
2
|
-
import { WorkspaceEdit } from 'vscode-languageserver-types';
|
|
2
|
+
import { WorkspaceEdit, type DocumentUri } from 'vscode-languageserver-types';
|
|
3
3
|
import { CM, MessageDirection, ProtocolNotificationType, ProtocolRequestType } from './messages';
|
|
4
4
|
/**
|
|
5
5
|
* Options for notifications/requests for user operations on files.
|
|
@@ -172,9 +172,9 @@ export interface CreateFilesParams {
|
|
|
172
172
|
*/
|
|
173
173
|
export interface FileCreate {
|
|
174
174
|
/**
|
|
175
|
-
* A
|
|
175
|
+
* A URI for the location of the file/folder being created.
|
|
176
176
|
*/
|
|
177
|
-
uri:
|
|
177
|
+
uri: DocumentUri;
|
|
178
178
|
}
|
|
179
179
|
/**
|
|
180
180
|
* The parameters sent in notifications/requests for user-initiated renames of
|
|
@@ -196,13 +196,13 @@ export interface RenameFilesParams {
|
|
|
196
196
|
*/
|
|
197
197
|
export interface FileRename {
|
|
198
198
|
/**
|
|
199
|
-
* A
|
|
199
|
+
* A URI for the original location of the file/folder being renamed.
|
|
200
200
|
*/
|
|
201
|
-
oldUri:
|
|
201
|
+
oldUri: DocumentUri;
|
|
202
202
|
/**
|
|
203
|
-
* A
|
|
203
|
+
* A URI for the new location of the file/folder being renamed.
|
|
204
204
|
*/
|
|
205
|
-
newUri:
|
|
205
|
+
newUri: DocumentUri;
|
|
206
206
|
}
|
|
207
207
|
/**
|
|
208
208
|
* The parameters sent in notifications/requests for user-initiated deletes of
|
|
@@ -223,9 +223,9 @@ export interface DeleteFilesParams {
|
|
|
223
223
|
*/
|
|
224
224
|
export interface FileDelete {
|
|
225
225
|
/**
|
|
226
|
-
* A
|
|
226
|
+
* A URI for the location of the file/folder being deleted.
|
|
227
227
|
*/
|
|
228
|
-
uri:
|
|
228
|
+
uri: DocumentUri;
|
|
229
229
|
}
|
|
230
230
|
/**
|
|
231
231
|
* The will create files request is sent from the client to the server before files are actually
|
package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-protocol/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vscode-languageserver-protocol",
|
|
3
3
|
"description": "VSCode Language Server Protocol implementation",
|
|
4
|
-
"version": "3.18.
|
|
4
|
+
"version": "3.18.3",
|
|
5
5
|
"author": "Microsoft Corporation",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"vscode-jsonrpc": "9.0.
|
|
31
|
-
"vscode-languageserver-types": "3.18.
|
|
30
|
+
"vscode-jsonrpc": "9.0.2",
|
|
31
|
+
"vscode-languageserver-types": "3.18.3"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"prepublishOnly": "echo \"⛔ Can only publish from a secure pipeline ⛔\" && node ../build/npm/fail",
|
package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/main.d.ts
CHANGED
|
@@ -2517,7 +2517,7 @@ export type CodeActionDisabled = {
|
|
|
2517
2517
|
/**
|
|
2518
2518
|
* Code action tags are extra annotations that tweak the behavior of a code action.
|
|
2519
2519
|
*
|
|
2520
|
-
* @since 3.18.0
|
|
2520
|
+
* @since 3.18.0
|
|
2521
2521
|
*/
|
|
2522
2522
|
export declare namespace CodeActionTag {
|
|
2523
2523
|
/**
|
|
@@ -2599,7 +2599,7 @@ export interface CodeAction {
|
|
|
2599
2599
|
/**
|
|
2600
2600
|
* Tags for this code action.
|
|
2601
2601
|
*
|
|
2602
|
-
* @since 3.18.0
|
|
2602
|
+
* @since 3.18.0
|
|
2603
2603
|
*/
|
|
2604
2604
|
tags?: CodeActionTag[];
|
|
2605
2605
|
}
|
package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/esm/main.js
CHANGED
|
@@ -1758,7 +1758,7 @@ export var CodeActionContext;
|
|
|
1758
1758
|
/**
|
|
1759
1759
|
* Code action tags are extra annotations that tweak the behavior of a code action.
|
|
1760
1760
|
*
|
|
1761
|
-
* @since 3.18.0
|
|
1761
|
+
* @since 3.18.0
|
|
1762
1762
|
*/
|
|
1763
1763
|
export var CodeActionTag;
|
|
1764
1764
|
(function (CodeActionTag) {
|
package/node_modules/@mrclrchtr/supi-lsp/node_modules/vscode-languageserver-types/lib/umd/main.d.ts
CHANGED
|
@@ -2517,7 +2517,7 @@ export type CodeActionDisabled = {
|
|
|
2517
2517
|
/**
|
|
2518
2518
|
* Code action tags are extra annotations that tweak the behavior of a code action.
|
|
2519
2519
|
*
|
|
2520
|
-
* @since 3.18.0
|
|
2520
|
+
* @since 3.18.0
|
|
2521
2521
|
*/
|
|
2522
2522
|
export declare namespace CodeActionTag {
|
|
2523
2523
|
/**
|
|
@@ -2599,7 +2599,7 @@ export interface CodeAction {
|
|
|
2599
2599
|
/**
|
|
2600
2600
|
* Tags for this code action.
|
|
2601
2601
|
*
|
|
2602
|
-
* @since 3.18.0
|
|
2602
|
+
* @since 3.18.0
|
|
2603
2603
|
*/
|
|
2604
2604
|
tags?: CodeActionTag[];
|
|
2605
2605
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrclrchtr/supi-lsp",
|
|
3
|
-
"version": "6.0
|
|
3
|
+
"version": "6.2.0",
|
|
4
4
|
"description": "Language Server Protocol runtime for SuPi code intelligence",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"vscode-jsonrpc": "^9.0.0",
|
|
38
38
|
"vscode-languageserver-protocol": "^3.18.0",
|
|
39
39
|
"vscode-languageserver-types": "^3.18.0",
|
|
40
|
-
"@mrclrchtr/supi-code-runtime": "6.0
|
|
41
|
-
"@mrclrchtr/supi-core": "6.0
|
|
40
|
+
"@mrclrchtr/supi-code-runtime": "6.2.0",
|
|
41
|
+
"@mrclrchtr/supi-core": "6.2.0"
|
|
42
42
|
},
|
|
43
43
|
"bundledDependencies": [
|
|
44
44
|
"@mrclrchtr/supi-code-runtime",
|
|
@@ -53,7 +53,6 @@
|
|
|
53
53
|
"exports": {
|
|
54
54
|
"./api": "./src/api.ts",
|
|
55
55
|
"./package.json": "./package.json",
|
|
56
|
-
"./provider/lsp-semantic-provider": "./src/provider/lsp-semantic-provider.ts"
|
|
57
|
-
"./debug-telemetry": "./src/debug-telemetry.ts"
|
|
56
|
+
"./provider/lsp-semantic-provider": "./src/provider/lsp-semantic-provider.ts"
|
|
58
57
|
}
|
|
59
58
|
}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
// Public API surface for the LSP session-scoped service.
|
|
2
2
|
|
|
3
3
|
export { type LoadConfigOptions, loadConfig } from "./config/config.ts";
|
|
4
|
-
export type {
|
|
5
|
-
export {
|
|
6
|
-
getDeprecatedLspKeys,
|
|
7
|
-
getLspDisabledMessage,
|
|
8
|
-
hasDeprecatedLspKeys,
|
|
9
|
-
loadLspSettings,
|
|
10
|
-
} from "./config/lsp-settings.ts";
|
|
4
|
+
export type { LspSettings } from "./config/lsp-settings.ts";
|
|
5
|
+
export { loadLspSettings } from "./config/lsp-settings.ts";
|
|
11
6
|
export {
|
|
12
7
|
clearTsconfigCache,
|
|
13
8
|
type FileScopeDecision,
|
|
@@ -30,6 +25,7 @@ export type {
|
|
|
30
25
|
MissingServer,
|
|
31
26
|
Position,
|
|
32
27
|
ProjectServerInfo,
|
|
28
|
+
ProjectServerStatusReason,
|
|
33
29
|
Range,
|
|
34
30
|
SymbolInformation,
|
|
35
31
|
WorkspaceEdit,
|
|
@@ -42,6 +38,8 @@ export { isLikelyStaleDiagnostic } from "./diagnostics/stale-diagnostics.ts";
|
|
|
42
38
|
export {
|
|
43
39
|
scanWorkspaceSentinels,
|
|
44
40
|
syncWorkspaceSentinelSnapshot,
|
|
41
|
+
type WorkspaceSentinelScanOptions,
|
|
42
|
+
type WorkspaceSentinelSyncResult,
|
|
45
43
|
} from "./diagnostics/workspace-sentinels.ts";
|
|
46
44
|
export { raceReadinessValue, raceRequestControl } from "./session/readiness.ts";
|
|
47
45
|
export type {
|
|
@@ -57,6 +55,8 @@ export type {
|
|
|
57
55
|
DiagnosticEvidenceStatus,
|
|
58
56
|
DiagnosticEvidenceSummary,
|
|
59
57
|
OutstandingDiagnosticSummaryEntry,
|
|
58
|
+
ProcessCrashDiagnosticDemand,
|
|
59
|
+
ProcessCrashRecoverySummary,
|
|
60
60
|
RecoverDiagnosticsResult,
|
|
61
61
|
RoutedMutationResponse,
|
|
62
62
|
SemanticReadinessResult,
|
|
@@ -69,8 +69,15 @@ export type {
|
|
|
69
69
|
} from "./session/runtime-registry.ts";
|
|
70
70
|
export {
|
|
71
71
|
clearWorkspaceLspRuntime,
|
|
72
|
+
emptyProcessCrashRecoverySummary,
|
|
72
73
|
getWorkspaceLspRuntime,
|
|
73
74
|
setWorkspaceLspRuntimeState,
|
|
74
75
|
waitForWorkspaceLspRuntime,
|
|
75
76
|
} from "./session/runtime-registry.ts";
|
|
76
77
|
export { scanMissingServers } from "./session/scanner.ts";
|
|
78
|
+
export {
|
|
79
|
+
AUTOMATIC_LSP_EXCLUDED_DIRECTORIES,
|
|
80
|
+
type AutomaticLspPathPolicy,
|
|
81
|
+
createAutomaticLspPathPolicy,
|
|
82
|
+
createDefaultAutomaticLspPathPolicy,
|
|
83
|
+
} from "./workspace-path-policy.ts";
|
|
@@ -66,11 +66,6 @@ export class ClientDynamicRegistrations {
|
|
|
66
66
|
return (this.idsByMethod.get(method)?.size ?? 0) > 0;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
/** Snapshot of the active registration ids for a method. */
|
|
70
|
-
ids(method: string): readonly string[] {
|
|
71
|
-
return [...(this.idsByMethod.get(method) ?? [])];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
69
|
/** Drop all registrations — capability loss on shutdown, crash, or disposal. */
|
|
75
70
|
clear(): void {
|
|
76
71
|
this.idsByMethod.clear();
|
|
@@ -9,9 +9,12 @@
|
|
|
9
9
|
// and timing data. They never carry diagnostic payloads or source text.
|
|
10
10
|
|
|
11
11
|
import * as path from "node:path";
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
import {
|
|
13
|
+
recordDebugEvent,
|
|
14
|
+
truncateDebugIdentity as truncateIdentity,
|
|
15
|
+
} from "@mrclrchtr/supi-core/debug";
|
|
16
|
+
import { uriToFile } from "@mrclrchtr/supi-core/path";
|
|
17
|
+
import { boundCwd } from "../debug-telemetry.ts";
|
|
15
18
|
|
|
16
19
|
/** Maximum tracked synchronizations before the oldest entry is evicted. */
|
|
17
20
|
export const MAX_TRACKED_SYNCHRONIZATIONS = 64;
|
|
@@ -5,12 +5,13 @@ import {
|
|
|
5
5
|
isCodeRequestInterruption,
|
|
6
6
|
throwIfCodeRequestInterrupted,
|
|
7
7
|
} from "@mrclrchtr/supi-code-runtime/api";
|
|
8
|
+
import { fileToUri, uriToFile } from "@mrclrchtr/supi-core/path";
|
|
8
9
|
import type { TextDocumentIdentifier } from "../config/types.ts";
|
|
9
10
|
import {
|
|
10
11
|
type DiagnosticEvidenceSummary,
|
|
11
12
|
summarizeDiagnosticEvidence,
|
|
12
13
|
} from "../diagnostics/evidence.ts";
|
|
13
|
-
import { detectLanguageId
|
|
14
|
+
import { detectLanguageId } from "../utils.ts";
|
|
14
15
|
import {
|
|
15
16
|
type DiagnosticCacheEntry,
|
|
16
17
|
type DiagnosticSynchronization,
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { CodeRequestControl } from "@mrclrchtr/supi-code-runtime/api";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
startDebugTimer,
|
|
4
|
+
truncateDebugIdentity as truncateIdentity,
|
|
5
|
+
} from "@mrclrchtr/supi-core/debug";
|
|
6
|
+
import { boundCwd } from "../debug-telemetry.ts";
|
|
4
7
|
|
|
5
8
|
type DiagnosticCollection = "cache" | "fallback" | "none" | "pull" | "push";
|
|
6
9
|
type DiagnosticFreshness = "not-observed" | "observed";
|
|
@@ -7,9 +7,10 @@ import {
|
|
|
7
7
|
throwIfCodeRequestInterrupted,
|
|
8
8
|
unavailableCodeQuery,
|
|
9
9
|
} from "@mrclrchtr/supi-code-runtime/api";
|
|
10
|
+
import { fileToUri, uriToFile } from "@mrclrchtr/supi-core/path";
|
|
10
11
|
import type { Diagnostic, TextDocumentItem } from "../config/types.ts";
|
|
11
12
|
import type { DiagnosticEvidenceSummary } from "../diagnostics/evidence.ts";
|
|
12
|
-
import { detectLanguageId
|
|
13
|
+
import { detectLanguageId } from "../utils.ts";
|
|
13
14
|
import { applyPushDiagnostics, buildClientDiagnosticSnapshot } from "./client-diagnostic-cache.ts";
|
|
14
15
|
import { collectSynchronizedFileDiagnostics } from "./client-diagnostic-collection.ts";
|
|
15
16
|
import {
|
|
@@ -12,7 +12,11 @@ import {
|
|
|
12
12
|
throwIfCodeRequestInterrupted,
|
|
13
13
|
unavailableCodeQuery,
|
|
14
14
|
} from "@mrclrchtr/supi-code-runtime/api";
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
recordDebugEvent,
|
|
17
|
+
truncateDebugIdentity as truncateIdentity,
|
|
18
|
+
} from "@mrclrchtr/supi-core/debug";
|
|
19
|
+
import { fileToUri } from "@mrclrchtr/supi-core/path";
|
|
16
20
|
import { type ProgressToken, TextDocumentSyncKind } from "vscode-languageserver-protocol";
|
|
17
21
|
import { CLIENT_CAPABILITIES } from "../config/capabilities.ts";
|
|
18
22
|
import type {
|
|
@@ -35,10 +39,9 @@ import type {
|
|
|
35
39
|
WorkspaceEdit,
|
|
36
40
|
WorkspaceSymbol,
|
|
37
41
|
} from "../config/types.ts";
|
|
38
|
-
import { boundCwd
|
|
42
|
+
import { boundCwd } from "../debug-telemetry.ts";
|
|
39
43
|
import type { DiagnosticEvidenceSummary } from "../diagnostics/evidence.ts";
|
|
40
44
|
import { raceRequestControl } from "../session/readiness.ts";
|
|
41
|
-
import { fileToUri } from "../utils.ts";
|
|
42
45
|
import {
|
|
43
46
|
ClientDynamicRegistrations,
|
|
44
47
|
DOCUMENT_DIAGNOSTIC_METHOD,
|
|
@@ -141,6 +144,15 @@ function killProcessTree(pid: number): void {
|
|
|
141
144
|
}
|
|
142
145
|
}
|
|
143
146
|
|
|
147
|
+
/** Terminate a failed startup without leaving server descendants running. */
|
|
148
|
+
function killFailedStartupProcess(child: ChildProcess): void {
|
|
149
|
+
if (child.pid) {
|
|
150
|
+
killProcessTree(child.pid);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
child.kill();
|
|
154
|
+
}
|
|
155
|
+
|
|
144
156
|
// ── Types ─────────────────────────────────────────────────────────────
|
|
145
157
|
export type ClientStatus = "initializing" | "running" | "error" | "shutdown";
|
|
146
158
|
|
|
@@ -285,7 +297,7 @@ export class LspClient {
|
|
|
285
297
|
if (!this.process.stdin || !this.process.stdout) {
|
|
286
298
|
const failure = new Error(`${cmd}: missing stdin/stdout`);
|
|
287
299
|
this.handleProcessFailure(failure);
|
|
288
|
-
this.process
|
|
300
|
+
killFailedStartupProcess(this.process);
|
|
289
301
|
throw failure;
|
|
290
302
|
}
|
|
291
303
|
|
|
@@ -335,8 +347,14 @@ export class LspClient {
|
|
|
335
347
|
if (positionEncoding !== "utf-16") {
|
|
336
348
|
throw new Error(`Server selected unsupported position encoding "${positionEncoding}".`);
|
|
337
349
|
}
|
|
350
|
+
if (this._status !== "initializing") {
|
|
351
|
+
throw new Error(`${this.name}: client shutdown during initialize`);
|
|
352
|
+
}
|
|
338
353
|
this.capabilities = result.capabilities;
|
|
339
354
|
await this.rpc.sendNotification("initialized", {});
|
|
355
|
+
if (this._status !== "initializing") {
|
|
356
|
+
throw new Error(`${this.name}: client shutdown during initialize`);
|
|
357
|
+
}
|
|
340
358
|
this._status = "running";
|
|
341
359
|
this.publishLifecycle("startup");
|
|
342
360
|
|
|
@@ -344,7 +362,7 @@ export class LspClient {
|
|
|
344
362
|
} catch (err) {
|
|
345
363
|
const failure = new Error(`${this.name}: initialize failed: ${err}`, { cause: err });
|
|
346
364
|
this.handleProcessFailure(failure);
|
|
347
|
-
this.process
|
|
365
|
+
killFailedStartupProcess(this.process);
|
|
348
366
|
throw failure;
|
|
349
367
|
}
|
|
350
368
|
}
|