carrick 0.3.57 → 0.3.59
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 +117 -26
- package/bin/carrick.mjs +13 -2
- package/dist/auth/credentials.d.ts +14 -0
- package/dist/auth/credentials.js +86 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/oauth.d.ts +11 -0
- package/dist/auth/oauth.js +119 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/read.d.ts +139 -0
- package/dist/auth/read.js +44 -0
- package/dist/auth/read.js.map +1 -0
- package/dist/auth/run.d.ts +12 -0
- package/dist/auth/run.js +68 -0
- package/dist/auth/run.js.map +1 -0
- package/dist/contract.d.ts +10 -0
- package/dist/contract.js +3 -0
- package/dist/contract.js.map +1 -1
- package/dist/definition.d.ts +33 -0
- package/dist/definition.js +107 -0
- package/dist/definition.js.map +1 -0
- package/dist/diagnostics.d.ts +72 -3
- package/dist/diagnostics.js +275 -55
- package/dist/diagnostics.js.map +1 -1
- package/dist/hook/refresh.d.ts +32 -0
- package/dist/hook/refresh.js +138 -0
- package/dist/hook/refresh.js.map +1 -0
- package/dist/hook/session-start.js +13 -0
- package/dist/hook/session-start.js.map +1 -1
- package/dist/init/connect.d.ts +17 -0
- package/dist/init/connect.js +120 -0
- package/dist/init/connect.js.map +1 -0
- package/dist/init/mcp.d.ts +50 -0
- package/dist/init/mcp.js +235 -0
- package/dist/init/mcp.js.map +1 -0
- package/dist/init/projects.d.ts +46 -0
- package/dist/init/projects.js +137 -0
- package/dist/init/projects.js.map +1 -0
- package/dist/init/repos.d.ts +113 -19
- package/dist/init/repos.js +60 -39
- package/dist/init/repos.js.map +1 -1
- package/dist/init/run.d.ts +16 -0
- package/dist/init/run.js +243 -61
- package/dist/init/run.js.map +1 -1
- package/dist/init/settings.d.ts +1 -1
- package/dist/init/settings.js +1 -1
- package/dist/init/settings.js.map +1 -1
- package/dist/lens.d.ts +41 -0
- package/dist/lens.js +116 -0
- package/dist/lens.js.map +1 -0
- package/dist/server.js +327 -24
- package/dist/server.js.map +1 -1
- package/dist/surfaces.d.ts +28 -0
- package/dist/surfaces.js +70 -0
- package/dist/surfaces.js.map +1 -0
- package/package.json +6 -6
- package/sidecar/dist/src/capture/deno-project.d.ts +41 -0
- package/sidecar/dist/src/capture/deno-project.js +513 -0
- package/sidecar/dist/src/capture/index.d.ts +1 -0
- package/sidecar/dist/src/capture/index.js +60 -19
- package/sidecar/dist/src/capture/self-check.d.ts +2 -0
- package/sidecar/dist/src/capture/self-check.js +3 -2
- package/sidecar/dist/src/project-loader.js +22 -1
- package/dist/init/identity.d.ts +0 -20
- package/dist/init/identity.js +0 -60
- package/dist/init/identity.js.map +0 -1
package/dist/server.js
CHANGED
|
@@ -23,17 +23,24 @@
|
|
|
23
23
|
// sites go in both places (see diagnostics.ts).
|
|
24
24
|
//
|
|
25
25
|
// stdout is protocol only. Every log line goes to stderr.
|
|
26
|
+
import fs from "node:fs";
|
|
26
27
|
import path from "node:path";
|
|
27
28
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
28
29
|
import { check } from "./cli.js";
|
|
29
30
|
import { resolveChannel } from "./channel.js";
|
|
31
|
+
import { definitionsAt, positionOf } from "./definition.js";
|
|
30
32
|
import { toDiagnostics } from "./diagnostics.js";
|
|
33
|
+
import { toCodeLenses } from "./lens.js";
|
|
31
34
|
import { createLogger } from "./log.js";
|
|
32
35
|
import { resolveRoot, rootNote } from "./root.js";
|
|
36
|
+
import { boundaryFor } from "./render.js";
|
|
37
|
+
import { DEFAULT_SURFACES, readSurfaces } from "./surfaces.js";
|
|
33
38
|
const NAME = "carrick";
|
|
34
39
|
const VERSION = "0.0.1";
|
|
35
40
|
/** Editors fire `didChange` on every keystroke; one check per pause is enough. */
|
|
36
41
|
const DEBOUNCE_MS = 400;
|
|
42
|
+
/** How many files' check answers are kept. Enough for the ones in front of you. */
|
|
43
|
+
const CACHE_FILES = 64;
|
|
37
44
|
const log = createLogger("carrick-lsp");
|
|
38
45
|
function send(message) {
|
|
39
46
|
const body = Buffer.from(JSON.stringify({ jsonrpc: "2.0", ...message }), "utf8");
|
|
@@ -45,9 +52,40 @@ let root = process.cwd();
|
|
|
45
52
|
let rootChoice = null;
|
|
46
53
|
let channel = resolveChannel({ hooksInstalled: false });
|
|
47
54
|
let clientName = "an unnamed client";
|
|
48
|
-
/**
|
|
49
|
-
|
|
55
|
+
/** Whether the client will re-request lenses when asked to (LSP 3.16). */
|
|
56
|
+
let clientRefreshesLenses = false;
|
|
57
|
+
/** One off switch per surface (carrick#879), as the client stated them. */
|
|
58
|
+
let surfaces = DEFAULT_SURFACES;
|
|
59
|
+
/**
|
|
60
|
+
* What each check pass contributed, per pass, per file it landed rows in
|
|
61
|
+
* (carrick#923).
|
|
62
|
+
*
|
|
63
|
+
* A check of one file publishes rows on that file AND on its counterparts, so
|
|
64
|
+
* two open files on either side of one contract are two passes with an opinion
|
|
65
|
+
* about the same URI, and neither is the whole answer: the producer's pass
|
|
66
|
+
* knows every route in the producer, the consumer's pass knows only the one
|
|
67
|
+
* route it calls. `publishDiagnostics` replaces per URI, so whichever pass ran
|
|
68
|
+
* last used to erase the other's rows. What is published for a URI is the merge
|
|
69
|
+
* of every pass that has an opinion about it, computed here, and a pass is
|
|
70
|
+
* replaced whole when it re-runs.
|
|
71
|
+
*
|
|
72
|
+
* Uncapped on purpose. Evicting a pass would clear rows on a file that is still
|
|
73
|
+
* open and still wrong, and an entry is a handful of diagnostics.
|
|
74
|
+
*/
|
|
75
|
+
const contributions = new Map();
|
|
76
|
+
/** The last diagnostics sent per URI, so an unchanged merge is not re-sent. */
|
|
77
|
+
const published = new Map();
|
|
78
|
+
/** The text of every document the client has open, by absolute path. */
|
|
79
|
+
const openDocuments = new Map();
|
|
50
80
|
const debounces = new Map();
|
|
81
|
+
/** Ids for the requests this server makes of the client. */
|
|
82
|
+
let nextServerId = 1;
|
|
83
|
+
/**
|
|
84
|
+
* The last check answer per absolute file, so a pull surface answers from what
|
|
85
|
+
* the push path already ran rather than running the CLI again. Dropped on every
|
|
86
|
+
* edit, because the payload's line numbers are about the text that was checked.
|
|
87
|
+
*/
|
|
88
|
+
const lastCheck = new Map();
|
|
51
89
|
/** One check at a time: a burst of edits must not interleave two runs. */
|
|
52
90
|
let queue = Promise.resolve();
|
|
53
91
|
function enqueue(work) {
|
|
@@ -63,28 +101,182 @@ function publish(uriPath, diagnostics) {
|
|
|
63
101
|
params: { uri: pathToFileURL(uriPath).toString(), diagnostics },
|
|
64
102
|
});
|
|
65
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* One row's identity within a file: what it says and the line it says it on.
|
|
106
|
+
*
|
|
107
|
+
* Used only to drop a row a second pass would repeat. A finding that is a
|
|
108
|
+
* file's own is also mirrored onto that file by the counterpart's pass, at the
|
|
109
|
+
* same line and under the same code, and the two sentences differ only in the
|
|
110
|
+
* "producer in X of Y." the mirrored one leads with. The code and the line are
|
|
111
|
+
* what a reader would call the same row.
|
|
112
|
+
*/
|
|
113
|
+
function rowKey(diagnostic) {
|
|
114
|
+
return `${diagnostic.code ?? ""}|${diagnostic.range.start.line}`;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Every pass's rows for one file, the file's own pass first.
|
|
118
|
+
*
|
|
119
|
+
* Own-pass rows go in unconditionally: two findings on one line are two rows
|
|
120
|
+
* and only the passes DISAGREE about a file, never a pass with itself. Another
|
|
121
|
+
* pass's mirrored row is added only when nothing already said the same thing
|
|
122
|
+
* there, which is what stops the same finding rendering twice.
|
|
123
|
+
*/
|
|
124
|
+
function mergedFor(uriPath) {
|
|
125
|
+
const rows = [];
|
|
126
|
+
const seen = new Set();
|
|
127
|
+
const own = contributions.get(uriPath)?.get(uriPath);
|
|
128
|
+
if (own) {
|
|
129
|
+
rows.push(...own);
|
|
130
|
+
for (const row of own)
|
|
131
|
+
seen.add(rowKey(row));
|
|
132
|
+
}
|
|
133
|
+
for (const [checked, byFile] of contributions) {
|
|
134
|
+
if (checked === uriPath)
|
|
135
|
+
continue;
|
|
136
|
+
for (const row of byFile.get(uriPath) ?? []) {
|
|
137
|
+
const key = rowKey(row);
|
|
138
|
+
if (seen.has(key))
|
|
139
|
+
continue;
|
|
140
|
+
seen.add(key);
|
|
141
|
+
rows.push(row);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return rows;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Replace one pass's rows and re-publish every file the change can reach.
|
|
148
|
+
*
|
|
149
|
+
* That is the files this pass touched now plus the ones it touched before: a
|
|
150
|
+
* file it has dropped needs the merge without it, which is often empty and
|
|
151
|
+
* clears the file. A URI whose merged set is what the client already has is not
|
|
152
|
+
* sent again, so opening the second file of a pair is silent where its rows
|
|
153
|
+
* agree with the first pass's.
|
|
154
|
+
*/
|
|
155
|
+
function republish(checkedAbs, byFile) {
|
|
156
|
+
const touched = new Set([
|
|
157
|
+
...(contributions.get(checkedAbs)?.keys() ?? []),
|
|
158
|
+
...byFile.keys(),
|
|
159
|
+
]);
|
|
160
|
+
contributions.set(checkedAbs, byFile);
|
|
161
|
+
for (const file of touched) {
|
|
162
|
+
const rows = mergedFor(file);
|
|
163
|
+
const body = JSON.stringify(rows);
|
|
164
|
+
if (published.get(file) === body)
|
|
165
|
+
continue;
|
|
166
|
+
published.set(file, body);
|
|
167
|
+
publish(file, rows);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The text of one 1-based line, for the span a diagnostic underlines (#922).
|
|
172
|
+
*
|
|
173
|
+
* The open document first, because that is the text in front of the user and
|
|
174
|
+
* an editor with unsaved changes has no other source for it, and the file on
|
|
175
|
+
* disk second, because a finding is mirrored onto counterpart files nobody has
|
|
176
|
+
* opened. A client that sends an empty `text` on `didOpen` has told us nothing,
|
|
177
|
+
* so that reads as "not open" rather than as an empty file.
|
|
178
|
+
*
|
|
179
|
+
* Fresh per check: within one check the same file is read once, and between two
|
|
180
|
+
* checks the text may have moved.
|
|
181
|
+
*/
|
|
182
|
+
function lineTextReader() {
|
|
183
|
+
const cache = new Map();
|
|
184
|
+
return (file, line) => {
|
|
185
|
+
const key = path.resolve(file);
|
|
186
|
+
if (!cache.has(key)) {
|
|
187
|
+
let text = openDocuments.get(key);
|
|
188
|
+
if (!text) {
|
|
189
|
+
try {
|
|
190
|
+
text = fs.readFileSync(key, "utf8");
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
text = undefined;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
cache.set(key, text === undefined ? null : text.split(/\r?\n/));
|
|
197
|
+
}
|
|
198
|
+
const lines = cache.get(key);
|
|
199
|
+
if (!lines)
|
|
200
|
+
return null;
|
|
201
|
+
return lines[line - 1] ?? null;
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* The check answer for a file: the cached one, or one run now and cached.
|
|
206
|
+
*
|
|
207
|
+
* Every surface reads the file's answer through here, so a hover, a jump and a
|
|
208
|
+
* diagnostic on the same unchanged file cost one CLI call between them. A
|
|
209
|
+
* `check` reads `.carrick/` and never scans, but it does spawn a process, and
|
|
210
|
+
* an on-demand request is expected back in a fraction of a second.
|
|
211
|
+
*/
|
|
212
|
+
async function resultFor(absFile) {
|
|
213
|
+
const key = path.resolve(absFile);
|
|
214
|
+
const cached = lastCheck.get(key);
|
|
215
|
+
if (cached)
|
|
216
|
+
return cached;
|
|
217
|
+
const outcome = await check(relative(absFile), { cwd: root });
|
|
218
|
+
if (!outcome.result) {
|
|
219
|
+
log("no answer for", relative(absFile), outcome.failure ?? "");
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
// A "no" is never cached. `not_indexed` is the answer that changes under the
|
|
223
|
+
// user's feet: they run `carrick index` in a terminal and the next request
|
|
224
|
+
// has to ask again rather than repeat what was true before they did.
|
|
225
|
+
if (outcome.result.error)
|
|
226
|
+
return outcome.result;
|
|
227
|
+
// An editor session opens files all day and this server runs as long as it
|
|
228
|
+
// does, so the oldest entry goes when the cache is full. A Map iterates in
|
|
229
|
+
// insertion order, which makes the first key the oldest.
|
|
230
|
+
if (lastCheck.size >= CACHE_FILES) {
|
|
231
|
+
const oldest = lastCheck.keys().next();
|
|
232
|
+
if (!oldest.done)
|
|
233
|
+
lastCheck.delete(oldest.value);
|
|
234
|
+
}
|
|
235
|
+
lastCheck.set(key, outcome.result);
|
|
236
|
+
return outcome.result;
|
|
237
|
+
}
|
|
66
238
|
async function checkAndPublish(absFile) {
|
|
67
239
|
const relFile = relative(absFile);
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
240
|
+
const started = Date.now();
|
|
241
|
+
const result = await resultFor(absFile);
|
|
242
|
+
if (!result)
|
|
71
243
|
return;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
log("check", relFile, "->", outcome.result.error);
|
|
244
|
+
if (result.error) {
|
|
245
|
+
log("check", relFile, "->", result.error);
|
|
75
246
|
return;
|
|
76
247
|
}
|
|
77
|
-
const byFile = toDiagnostics(
|
|
78
|
-
log(`check ${relFile} -> ${[...byFile.values()].reduce((n, list) => n + list.length, 0)} diagnostic(s) across ${byFile.size} file(s) in ${
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
248
|
+
const byFile = toDiagnostics(result, root, relFile, { surfaces, lineText: lineTextReader() });
|
|
249
|
+
log(`check ${relFile} -> ${[...byFile.values()].reduce((n, list) => n + list.length, 0)} diagnostic(s) across ${byFile.size} file(s) in ${Date.now() - started}ms`);
|
|
250
|
+
// This pass's whole opinion, replacing the one it had before. What a file
|
|
251
|
+
// ends up with is the merge of every pass that has an opinion about it, so a
|
|
252
|
+
// check that returns nothing for a file clears only its own rows there.
|
|
253
|
+
republish(path.resolve(absFile), byFile);
|
|
254
|
+
publishBoundary(result);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* The boundary, for a client that has somewhere workspace-shaped to put it.
|
|
258
|
+
*
|
|
259
|
+
* carrick#879 moved it off the per-file Problems list for those clients, and
|
|
260
|
+
* this is where it moved TO: one notification per check carrying the same lines
|
|
261
|
+
* the diagnostic used to, which the VS Code extension renders as a status bar
|
|
262
|
+
* item and its tooltip. A client that declared no such surface gets the
|
|
263
|
+
* Information diagnostic instead and this notification as well, which costs it
|
|
264
|
+
* nothing: an unknown notification is ignored by definition.
|
|
265
|
+
*/
|
|
266
|
+
function publishBoundary(result) {
|
|
267
|
+
if (!surfaces.boundary)
|
|
268
|
+
return;
|
|
269
|
+
const lines = boundaryFor(result);
|
|
270
|
+
if (!lines.length)
|
|
271
|
+
return;
|
|
272
|
+
send({
|
|
273
|
+
method: "carrick/boundary",
|
|
274
|
+
params: {
|
|
275
|
+
service: result.service ?? null,
|
|
276
|
+
indexCommit: result.index_commit ?? null,
|
|
277
|
+
lines,
|
|
278
|
+
},
|
|
279
|
+
});
|
|
88
280
|
}
|
|
89
281
|
function scheduleCheck(absFile, debounceMs) {
|
|
90
282
|
const existing = debounces.get(absFile);
|
|
@@ -110,6 +302,29 @@ function pathOf(params) {
|
|
|
110
302
|
return null;
|
|
111
303
|
}
|
|
112
304
|
}
|
|
305
|
+
/**
|
|
306
|
+
* The document's text as this notification states it, or null when it does not.
|
|
307
|
+
*
|
|
308
|
+
* `didOpen` carries the whole document. `didChange` carries whole documents too
|
|
309
|
+
* here, because the sync kind this server declares is Full, and an incremental
|
|
310
|
+
* change (one carrying a `range`) is ignored rather than applied to the wrong
|
|
311
|
+
* text. `didSave` carries none: `includeText` is false, and what is on disk is
|
|
312
|
+
* then the same text anyway.
|
|
313
|
+
*/
|
|
314
|
+
function textOf(params) {
|
|
315
|
+
const document = params?.["textDocument"];
|
|
316
|
+
if (typeof document?.text === "string")
|
|
317
|
+
return document.text;
|
|
318
|
+
const changes = params?.["contentChanges"];
|
|
319
|
+
if (!Array.isArray(changes))
|
|
320
|
+
return null;
|
|
321
|
+
for (const change of [...changes].reverse()) {
|
|
322
|
+
const entry = change;
|
|
323
|
+
if (entry.range === undefined && typeof entry.text === "string")
|
|
324
|
+
return entry.text;
|
|
325
|
+
}
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
113
328
|
// ------------------------------------------------------------------ protocol
|
|
114
329
|
function onInitialize(id, params) {
|
|
115
330
|
const folders = params["workspaceFolders"];
|
|
@@ -129,6 +344,9 @@ function onInitialize(id, params) {
|
|
|
129
344
|
const info = params["clientInfo"];
|
|
130
345
|
if (info?.name)
|
|
131
346
|
clientName = info.name;
|
|
347
|
+
const capabilities = params["capabilities"];
|
|
348
|
+
clientRefreshesLenses = capabilities?.workspace?.codeLens?.refreshSupport === true;
|
|
349
|
+
surfaces = readSurfaces(params["initializationOptions"]);
|
|
132
350
|
rootChoice = resolveRoot({
|
|
133
351
|
clientRoot,
|
|
134
352
|
projectDir: process.env["CLAUDE_PROJECT_DIR"] ?? null,
|
|
@@ -158,6 +376,14 @@ function onInitialize(id, params) {
|
|
|
158
376
|
interFileDependencies: true,
|
|
159
377
|
workspaceDiagnostics: false,
|
|
160
378
|
},
|
|
379
|
+
// Declared whatever `carrick.codeLens` says, so a client that cached
|
|
380
|
+
// the capability still gets an answer when the switch is flipped: the
|
|
381
|
+
// answer is an empty list.
|
|
382
|
+
codeLensProvider: { resolveProvider: true },
|
|
383
|
+
// Declared whatever `carrick.definition` says, for the same reason:
|
|
384
|
+
// off means an empty answer, which is the fall-through every position
|
|
385
|
+
// outside a row already gets, and never a method the server refuses.
|
|
386
|
+
definitionProvider: true,
|
|
161
387
|
},
|
|
162
388
|
serverInfo: { name: NAME, version: VERSION },
|
|
163
389
|
},
|
|
@@ -182,14 +408,85 @@ function handle(message) {
|
|
|
182
408
|
case "textDocument/didOpen":
|
|
183
409
|
case "textDocument/didSave":
|
|
184
410
|
case "textDocument/didChange": {
|
|
185
|
-
if (channel.channel !== "lsp")
|
|
186
|
-
return;
|
|
187
411
|
const file = pathOf(params);
|
|
188
412
|
if (!file)
|
|
189
413
|
return;
|
|
414
|
+
// The text the client has, kept for the span every row underlines: the
|
|
415
|
+
// buffer is what the user is looking at, and an unsaved one is on no disk.
|
|
416
|
+
const text = textOf(params);
|
|
417
|
+
if (text !== null)
|
|
418
|
+
openDocuments.set(path.resolve(file), text);
|
|
419
|
+
// The text moved, so the lines in the cached answer are about text that
|
|
420
|
+
// is gone. Dropped on every channel: in the hook channel nothing
|
|
421
|
+
// re-checks the file, and a jump off a stale line is the worst answer
|
|
422
|
+
// this surface can give.
|
|
423
|
+
lastCheck.delete(path.resolve(file));
|
|
424
|
+
if (channel.channel !== "lsp")
|
|
425
|
+
return;
|
|
190
426
|
scheduleCheck(file, method === "textDocument/didChange" ? DEBOUNCE_MS : 0);
|
|
191
427
|
return;
|
|
192
428
|
}
|
|
429
|
+
case "textDocument/didClose": {
|
|
430
|
+
// The buffer is gone, so the file on disk is the text from here on. The
|
|
431
|
+
// rows stay: an editor keeps a closed file's diagnostics in the Problems
|
|
432
|
+
// list, and this server has not stopped believing them.
|
|
433
|
+
const file = pathOf(params);
|
|
434
|
+
if (file)
|
|
435
|
+
openDocuments.delete(path.resolve(file));
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
case "workspace/didChangeConfiguration": {
|
|
439
|
+
// A switch turned off takes its rows away on the next publish, not at the
|
|
440
|
+
// next restart, so every file this server has flagged is re-checked here.
|
|
441
|
+
surfaces = readSurfaces(params, surfaces);
|
|
442
|
+
log(`surfaces: ${JSON.stringify(surfaces)}`);
|
|
443
|
+
for (const checked of contributions.keys())
|
|
444
|
+
scheduleCheck(checked, 0);
|
|
445
|
+
// A lens is pulled, not pushed, so `carrick.codeLens` off only clears the
|
|
446
|
+
// screen once the client asks again. It is asked to.
|
|
447
|
+
if (clientRefreshesLenses)
|
|
448
|
+
send({ id: `carrick-refresh-${nextServerId++}`, method: "workspace/codeLens/refresh", params: {} });
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
case "textDocument/codeLens": {
|
|
452
|
+
// A REQUEST, not a push: it is answered in an install where the hook owns
|
|
453
|
+
// delivery, because the channel decides who speaks unasked and a lens is
|
|
454
|
+
// only ever rendered because a client asked for it.
|
|
455
|
+
const file = pathOf(params);
|
|
456
|
+
if (!file) {
|
|
457
|
+
send({ id, result: [] });
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
void enqueue(async () => {
|
|
461
|
+
// The same cached answer every other surface reads (carrick#910): a
|
|
462
|
+
// lens and a jump on one unchanged file cost one CLI call between them.
|
|
463
|
+
const result = await resultFor(file);
|
|
464
|
+
send({ id, result: result ? toCodeLenses(result, { surfaces }) : [] });
|
|
465
|
+
});
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
case "codeLens/resolve":
|
|
469
|
+
// Everything a lens carries comes from the one check the list was built
|
|
470
|
+
// from, so there is nothing left to fill in.
|
|
471
|
+
send({ id, result: params ?? null });
|
|
472
|
+
return;
|
|
473
|
+
case "textDocument/definition": {
|
|
474
|
+
// Not gated on which channel owns delivery: an install where the hook
|
|
475
|
+
// owns it publishes nothing, and a person in that editor still asks for
|
|
476
|
+
// a jump. `off` is the exception, because it is the blunt instrument
|
|
477
|
+
// that means Carrick says nothing at all.
|
|
478
|
+
const file = pathOf(params);
|
|
479
|
+
const position = positionOf(params);
|
|
480
|
+
if (!file || !position || !surfaces.definition || channel.channel === "off") {
|
|
481
|
+
send({ id, result: [] });
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
void enqueue(async () => {
|
|
485
|
+
const result = await resultFor(file);
|
|
486
|
+
send({ id, result: result ? definitionsAt(result, position) : [] });
|
|
487
|
+
});
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
193
490
|
case "textDocument/diagnostic": {
|
|
194
491
|
// A pull-only client still gets an answer, and the same one.
|
|
195
492
|
const file = pathOf(params);
|
|
@@ -198,9 +495,15 @@ function handle(message) {
|
|
|
198
495
|
return;
|
|
199
496
|
}
|
|
200
497
|
void enqueue(async () => {
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
498
|
+
const result = await resultFor(file);
|
|
499
|
+
// This file's own pass and no other: a request answers what a check of
|
|
500
|
+
// this file says, and a pull must not rewrite what the push path has
|
|
501
|
+
// published to other files.
|
|
502
|
+
const items = result
|
|
503
|
+
? (toDiagnostics(result, root, relative(file), {
|
|
504
|
+
surfaces,
|
|
505
|
+
lineText: lineTextReader(),
|
|
506
|
+
}).get(path.resolve(file)) ?? [])
|
|
204
507
|
: [];
|
|
205
508
|
send({ id, result: { kind: "full", items } });
|
|
206
509
|
});
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type Surfaces = {
|
|
2
|
+
/** Publish verdict diagnostics at all. */
|
|
3
|
+
diagnostics: boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Answer `textDocument/definition` (carrick#881). Off means an empty answer
|
|
6
|
+
* rather than a withdrawn capability, so a client that cached the capability
|
|
7
|
+
* at initialize still behaves.
|
|
8
|
+
*/
|
|
9
|
+
definition: boolean;
|
|
10
|
+
/** State the boundary. Where it lands depends on `boundarySurface`. */
|
|
11
|
+
boundary: boolean;
|
|
12
|
+
/** Render code lenses on the rows the index knows something about. */
|
|
13
|
+
codeLens: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* The client shows the boundary somewhere that is not the Problems list, so
|
|
16
|
+
* the per-file Information diagnostic is not published to it. False for a
|
|
17
|
+
* client that says nothing, which keeps the fallback.
|
|
18
|
+
*/
|
|
19
|
+
boundarySurface: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare const DEFAULT_SURFACES: Surfaces;
|
|
22
|
+
/**
|
|
23
|
+
* Read the switches a client states, over the ones already in force.
|
|
24
|
+
*
|
|
25
|
+
* A key the client omits keeps its current value: a notification that carries
|
|
26
|
+
* one setting must not silently reset the rest to their defaults.
|
|
27
|
+
*/
|
|
28
|
+
export declare function readSurfaces(params: unknown, current?: Surfaces): Surfaces;
|
package/dist/surfaces.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// One off switch per surface, in one place.
|
|
2
|
+
//
|
|
3
|
+
// Every surface this server offers can be turned off on its own, defaulting on,
|
|
4
|
+
// and turning one off leaves the others exactly as they were (design record
|
|
5
|
+
// 2026-09-09, "Off switches, one per thing"). `CARRICK_CHANNEL=off` stays the
|
|
6
|
+
// blunt instrument that silences delivery entirely.
|
|
7
|
+
//
|
|
8
|
+
// A client states them twice over: once in `initializationOptions` at startup,
|
|
9
|
+
// and again in `workspace/didChangeConfiguration` when a person changes a
|
|
10
|
+
// setting mid-session, which is why one parser reads both shapes. VS Code sends
|
|
11
|
+
// `{ settings: { carrick: { ... } } }` for the notification; a generic client
|
|
12
|
+
// that only has `initializationOptions` sends the flat object. Either is
|
|
13
|
+
// accepted, and anything that is not a boolean leaves the default alone rather
|
|
14
|
+
// than reading as false.
|
|
15
|
+
//
|
|
16
|
+
// `boundarySurface` is not an off switch and not a preference: it is the client
|
|
17
|
+
// saying it has somewhere else to put the boundary, which the VS Code extension
|
|
18
|
+
// does because it owns a status bar item. It decides placement, never whether
|
|
19
|
+
// the boundary is stated at all. See diagnostics.ts for what it changes.
|
|
20
|
+
export const DEFAULT_SURFACES = {
|
|
21
|
+
diagnostics: true,
|
|
22
|
+
definition: true,
|
|
23
|
+
boundary: true,
|
|
24
|
+
codeLens: true,
|
|
25
|
+
boundarySurface: false,
|
|
26
|
+
};
|
|
27
|
+
function isRecord(value) {
|
|
28
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The `carrick` block of whatever a client sent, flat or nested.
|
|
32
|
+
*
|
|
33
|
+
* `initializationOptions` is already the block. A
|
|
34
|
+
* `workspace/didChangeConfiguration` payload wraps it in `settings.carrick`,
|
|
35
|
+
* and some clients send `settings` alone with the section stripped.
|
|
36
|
+
*/
|
|
37
|
+
function block(params) {
|
|
38
|
+
if (!isRecord(params))
|
|
39
|
+
return {};
|
|
40
|
+
const settings = params["settings"];
|
|
41
|
+
if (isRecord(settings)) {
|
|
42
|
+
const scoped = settings["carrick"];
|
|
43
|
+
return isRecord(scoped) ? scoped : settings;
|
|
44
|
+
}
|
|
45
|
+
const scoped = params["carrick"];
|
|
46
|
+
if (isRecord(scoped))
|
|
47
|
+
return scoped;
|
|
48
|
+
return params;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Read the switches a client states, over the ones already in force.
|
|
52
|
+
*
|
|
53
|
+
* A key the client omits keeps its current value: a notification that carries
|
|
54
|
+
* one setting must not silently reset the rest to their defaults.
|
|
55
|
+
*/
|
|
56
|
+
export function readSurfaces(params, current = DEFAULT_SURFACES) {
|
|
57
|
+
const stated = block(params);
|
|
58
|
+
const read = (key) => {
|
|
59
|
+
const value = stated[key];
|
|
60
|
+
return typeof value === "boolean" ? value : current[key];
|
|
61
|
+
};
|
|
62
|
+
return {
|
|
63
|
+
diagnostics: read("diagnostics"),
|
|
64
|
+
definition: read("definition"),
|
|
65
|
+
boundary: read("boundary"),
|
|
66
|
+
codeLens: read("codeLens"),
|
|
67
|
+
boundarySurface: read("boundarySurface"),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=surfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surfaces.js","sourceRoot":"","sources":["../src/surfaces.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,8EAA8E;AAC9E,oDAAoD;AACpD,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,gFAAgF;AAChF,8EAA8E;AAC9E,yEAAyE;AACzE,+EAA+E;AAC/E,yBAAyB;AACzB,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,8EAA8E;AAC9E,yEAAyE;AAuBzE,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,SAAS,KAAK,CAAC,MAAe;IAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe,EAAE,UAAoB,gBAAgB;IAChF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,GAAmB,EAAW,EAAE;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC,CAAC;IACF,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;QAChC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;QAC9B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;QAC1B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;QAC1B,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC;KACzC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "carrick",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.59",
|
|
4
4
|
"description": "The API contract index for a TypeScript workspace: what the other services do with the routes and calls in the file you are editing, in your editor and in your agent's context",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -55,11 +55,11 @@
|
|
|
55
55
|
"zod": "^3.23.0"
|
|
56
56
|
},
|
|
57
57
|
"optionalDependencies": {
|
|
58
|
-
"@carrick-tools/cli-darwin-arm64": "0.3.
|
|
59
|
-
"@carrick-tools/cli-darwin-x64": "0.3.
|
|
60
|
-
"@carrick-tools/cli-linux-arm64": "0.3.
|
|
61
|
-
"@carrick-tools/cli-linux-x64": "0.3.
|
|
62
|
-
"@carrick-tools/cli-win32-x64": "0.3.
|
|
58
|
+
"@carrick-tools/cli-darwin-arm64": "0.3.59",
|
|
59
|
+
"@carrick-tools/cli-darwin-x64": "0.3.59",
|
|
60
|
+
"@carrick-tools/cli-linux-arm64": "0.3.59",
|
|
61
|
+
"@carrick-tools/cli-linux-x64": "0.3.59",
|
|
62
|
+
"@carrick-tools/cli-win32-x64": "0.3.59"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@types/node": "^24.13.3",
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** Deno owns module resolution; both compiler frontends consume its graph. */
|
|
2
|
+
import ts from 'typescript';
|
|
3
|
+
export interface DenoConfig {
|
|
4
|
+
configPath: string;
|
|
5
|
+
workspaceRoot: string;
|
|
6
|
+
compilerOptions: Record<string, unknown>;
|
|
7
|
+
exclude: string[];
|
|
8
|
+
}
|
|
9
|
+
/** Explicit TS configs keep their existing behaviour, including mixed repos. */
|
|
10
|
+
export declare function findDenoConfig(repoRoot: string, explicit?: string): DenoConfig | undefined;
|
|
11
|
+
/** One request's immutable graph, shared by analysis, emit and relocation. */
|
|
12
|
+
export declare class DenoProject {
|
|
13
|
+
readonly config: DenoConfig;
|
|
14
|
+
readonly repoRoot: string;
|
|
15
|
+
readonly cacheDir: string;
|
|
16
|
+
readonly parsed: ts.ParsedCommandLine;
|
|
17
|
+
readonly globals: string[];
|
|
18
|
+
readonly diagnostics: string[];
|
|
19
|
+
readonly pinned: Record<string, string>;
|
|
20
|
+
private readonly modules;
|
|
21
|
+
private readonly localPaths;
|
|
22
|
+
private readonly edges;
|
|
23
|
+
private readonly redirects;
|
|
24
|
+
private readonly npmPackages;
|
|
25
|
+
private readonly externalNames;
|
|
26
|
+
constructor(config: DenoConfig, repoRoot: string);
|
|
27
|
+
private targetPath;
|
|
28
|
+
resolve(spec: string, from: string, options: ts.CompilerOptions, host?: ts.ModuleResolutionHost): ts.ResolvedModule | undefined;
|
|
29
|
+
private npmOwner;
|
|
30
|
+
private isNpmFile;
|
|
31
|
+
/** Let TypeScript interpret real package exports/types using Deno's exact
|
|
32
|
+
* dependency graph. Only the resolution host sees virtual node_modules;
|
|
33
|
+
* every returned source path points at the existing Deno cache. */
|
|
34
|
+
private resolveNpm;
|
|
35
|
+
host(options: ts.CompilerOptions): ts.CompilerHost;
|
|
36
|
+
resolveTypeReference(spec: string, from: string, options: ts.CompilerOptions, host?: ts.ModuleResolutionHost): ts.ResolvedTypeReferenceDirective | undefined;
|
|
37
|
+
/** Turn a Deno npm alias into its real package export, with the exact pin. */
|
|
38
|
+
private externalName;
|
|
39
|
+
/** Relocate Deno's per-file resolutions into the portable declaration tree. */
|
|
40
|
+
rewrite(typesDir: string, files: string[], sourceByEmitted: Map<string, string>): number;
|
|
41
|
+
}
|