anyray-connect 0.11.48 → 0.11.49
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 +25 -7
- package/dist/assets/vscodeExtensionAsset.js +5 -5
- package/dist/assets/vscodeExtensionAsset.js.map +1 -1
- package/dist/cli.js +30 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/acpAgent.js +15 -1
- package/dist/commands/acpAgent.js.map +1 -1
- package/dist/commands/claudeDesktopCredential.js +76 -0
- package/dist/commands/claudeDesktopCredential.js.map +1 -0
- package/dist/commands/codexHook.js +19 -0
- package/dist/commands/codexHook.js.map +1 -0
- package/dist/commands/cursorWatch.js +11 -6
- package/dist/commands/cursorWatch.js.map +1 -1
- package/dist/commands/desktop.js +68 -21
- package/dist/commands/desktop.js.map +1 -1
- package/dist/commands/doctor.js +184 -34
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/hook.js +93 -21
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/managed.js +2 -2
- package/dist/commands/managed.js.map +1 -1
- package/dist/commands/printKey.js +11 -6
- package/dist/commands/printKey.js.map +1 -1
- package/dist/commands/shared.js +164 -0
- package/dist/commands/shared.js.map +1 -1
- package/dist/commands/status.js +45 -4
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/userPromptHook.js +3 -7
- package/dist/commands/userPromptHook.js.map +1 -1
- package/dist/tools/acpAgents.js +28 -9
- package/dist/tools/acpAgents.js.map +1 -1
- package/dist/tools/claudeCode.js +1 -1
- package/dist/tools/claudeCode.js.map +1 -1
- package/dist/tools/claudeCodeEnv.js +4 -1
- package/dist/tools/claudeCodeEnv.js.map +1 -1
- package/dist/tools/claudeDesktop.js +441 -136
- package/dist/tools/claudeDesktop.js.map +1 -1
- package/dist/tools/claudeDesktopCredentialProtocol.js +7 -0
- package/dist/tools/claudeDesktopCredentialProtocol.js.map +1 -0
- package/dist/tools/claudeDesktopNative.js +143 -65
- package/dist/tools/claudeDesktopNative.js.map +1 -1
- package/dist/tools/codex.js +89 -10
- package/dist/tools/codex.js.map +1 -1
- package/dist/tools/copilotChat.js +346 -13
- package/dist/tools/copilotChat.js.map +1 -1
- package/dist/tools/cursor.js +694 -165
- package/dist/tools/cursor.js.map +1 -1
- package/dist/tools/devinDesktop.js +1 -1
- package/dist/tools/devinDesktop.js.map +1 -1
- package/dist/tools/jetbrains.js +2 -2
- package/dist/tools/jetbrains.js.map +1 -1
- package/dist/tools/opencode.js +62 -6
- package/dist/tools/opencode.js.map +1 -1
- package/dist/tools/opencodeTrimPlugin.js +113 -0
- package/dist/tools/opencodeTrimPlugin.js.map +1 -0
- package/dist/tools/sharedHooks.js +19 -13
- package/dist/tools/sharedHooks.js.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/util/cursorPending.js +72 -9
- package/dist/util/cursorPending.js.map +1 -1
- package/dist/util/trimOutput.js +64 -0
- package/dist/util/trimOutput.js.map +1 -1
- package/dist/util/vscodeState.js +46 -14
- package/dist/util/vscodeState.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/doctor.js
CHANGED
|
@@ -43,7 +43,7 @@ import { LOCAL_PROXY_HOST, resolveTarget } from '../target.js';
|
|
|
43
43
|
import { detectProfilePath, hasProfileBlock } from '../util/profile.js';
|
|
44
44
|
import { staleShellExports } from '../tools/shellEnv.js';
|
|
45
45
|
import { metadataHeaderValue } from '../types.js';
|
|
46
|
-
import { resolveGatewayOrigin } from './shared.js';
|
|
46
|
+
import { CLAUDE_DESKTOP_TOOL_ID, classifyClaudeDesktopInference, claudeDesktopInferenceIntrospection, describeClaudeDesktopLane, resolveGatewayOrigin, toolRoutingOrigin, toolUsesFallbackProxy, } from './shared.js';
|
|
47
47
|
import { bold, dim, fail, heading, info, ok, warn } from '../util/log.js';
|
|
48
48
|
/**
|
|
49
49
|
* connect's own version, for the doctor report. Resolved lazily and defensively:
|
|
@@ -131,7 +131,47 @@ export function classifyPersonalKey(report) {
|
|
|
131
131
|
return 'profile';
|
|
132
132
|
return report.enrollment.enrolled ? 'enrolled-no-key' : 'none';
|
|
133
133
|
}
|
|
134
|
-
|
|
134
|
+
/** A tool row's Claude Desktop inference lane (null for every other tool). */
|
|
135
|
+
const claudeDesktopLane = (tool) => classifyClaudeDesktopInference({
|
|
136
|
+
id: tool.id,
|
|
137
|
+
installed: tool.installed,
|
|
138
|
+
pointedAt: tool.pointedAt,
|
|
139
|
+
mcpRegistered: tool.mcp?.registered === true,
|
|
140
|
+
introspectable: tool.inferenceIntrospectable === true,
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* Whether a tool row counts as a routing problem — drives the non-zero exit
|
|
144
|
+
* and the `--repair` drift filter. `pointedAt === false` is a problem for
|
|
145
|
+
* every introspectable tool; the one exemption is Claude Desktop's
|
|
146
|
+
* 'unverifiable' lane: on hosts with no authoritative inference introspection
|
|
147
|
+
* (Linux, or an unverified macOS build) a completed manual setup is
|
|
148
|
+
* indistinguishable from a skipped one, so counting it would permanently fail
|
|
149
|
+
* doctor/CI runs on machines where the dev DID complete the printed steps.
|
|
150
|
+
* The half-state is still rendered loudly (see renderHuman) — it just can't
|
|
151
|
+
* be asserted as broken. Split out of collectReport so it's unit-testable.
|
|
152
|
+
*/
|
|
153
|
+
export const toolRoutingProblem = (tool) => tool.pointedAt === false && claudeDesktopLane(tool) !== 'unverifiable';
|
|
154
|
+
/**
|
|
155
|
+
* Whether a registered MCP server's launch command is present on disk. Only an
|
|
156
|
+
* absolute command is introspectable; `node` (from-source launch) resolves
|
|
157
|
+
* through PATH and can't be existence-checked here → null (unknown, not a
|
|
158
|
+
* problem). Shared by the report scan and `--repair`'s post-apply re-probe so
|
|
159
|
+
* the two never disagree on what "MCP healthy" means (a `false` here is the
|
|
160
|
+
* dangling-registration problem counted in `report.problems`).
|
|
161
|
+
*/
|
|
162
|
+
const mcpCommandOk = (status) => status.registered && status.command && isAbsolute(status.command)
|
|
163
|
+
? existsSync(status.command)
|
|
164
|
+
: null;
|
|
165
|
+
/**
|
|
166
|
+
* The per-tool drift problems counted in `report.problems`: a routing problem
|
|
167
|
+
* (config not pointed at the gateway; Claude Desktop's unverifiable half-state
|
|
168
|
+
* is excluded — see toolRoutingProblem) plus a dangling MCP registration
|
|
169
|
+
* (binary gone). One predicate so the report scan and `--repair`'s post-apply
|
|
170
|
+
* re-count agree on what "a problem" is — a `--repair` that cleared by a
|
|
171
|
+
* different rule than the scan counted would drift the exit code.
|
|
172
|
+
*/
|
|
173
|
+
const toolProblemCount = (tool) => (toolRoutingProblem(tool) ? 1 : 0) + (tool.mcp?.commandOk === false ? 1 : 0);
|
|
174
|
+
const collectReport = async (origin, profile, withVerify, adapters, inferenceIntrospection) => {
|
|
135
175
|
const probe = await checkGateway(origin);
|
|
136
176
|
const fallbackOn = Boolean(profile.fallbackEnabled && profile.fallbackPort);
|
|
137
177
|
const health = fallbackOn ? await probeHealth(profile.fallbackPort) : null;
|
|
@@ -163,25 +203,39 @@ const collectReport = async (origin, profile, withVerify, adapters) => {
|
|
|
163
203
|
const detected = await adapter.detect();
|
|
164
204
|
let mcp = null;
|
|
165
205
|
if (detected.installed && adapter.mcpStatus) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
...status,
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
206
|
+
try {
|
|
207
|
+
const status = await adapter.mcpStatus();
|
|
208
|
+
mcp = { ...status, commandOk: mcpCommandOk(status) };
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// A probe that throws must not crash the diagnosis. Leave mcp null
|
|
212
|
+
// (couldn't determine) rather than assert a state we didn't read — a
|
|
213
|
+
// transient read error shouldn't fail the gate or cry "not registered".
|
|
214
|
+
}
|
|
175
215
|
}
|
|
216
|
+
// claude-desktop only: whether pointsAt is authoritative on this host, and
|
|
217
|
+
// (when it isn't) why — collected in the same single read pass over the
|
|
218
|
+
// adapter surface so classification and rendering never re-probe.
|
|
219
|
+
const introspection = detected.installed && adapter.id === CLAUDE_DESKTOP_TOOL_ID
|
|
220
|
+
? await inferenceIntrospection()
|
|
221
|
+
: undefined;
|
|
176
222
|
tools.push({
|
|
177
223
|
id: adapter.id,
|
|
178
224
|
title: adapter.title,
|
|
179
225
|
installed: detected.installed,
|
|
180
226
|
...(detected.detail ? { detail: detected.detail } : {}),
|
|
181
227
|
pointedAt: detected.installed && adapter.pointsAt
|
|
182
|
-
? await adapter.pointsAt(toolOrigin)
|
|
228
|
+
? await adapter.pointsAt(toolRoutingOrigin(adapter.id, origin, toolOrigin))
|
|
183
229
|
: null,
|
|
184
230
|
mcp,
|
|
231
|
+
...(introspection === undefined
|
|
232
|
+
? {}
|
|
233
|
+
: {
|
|
234
|
+
inferenceIntrospectable: introspection.authoritative,
|
|
235
|
+
...(introspection.authoritative
|
|
236
|
+
? {}
|
|
237
|
+
: { inferenceUnverifiableReason: introspection.reason }),
|
|
238
|
+
}),
|
|
185
239
|
});
|
|
186
240
|
}
|
|
187
241
|
// The probe goes straight at the gateway (not the fallback proxy) — it
|
|
@@ -233,12 +287,12 @@ const collectReport = async (origin, profile, withVerify, adapters) => {
|
|
|
233
287
|
if (fallbackOn && !health)
|
|
234
288
|
problems += 1;
|
|
235
289
|
for (const tool of tools) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
|
|
290
|
+
// Claude Desktop's 'unverifiable' half-state is warned about but never
|
|
291
|
+
// counted (toolRoutingProblem); a dangling registration (binary gone)
|
|
292
|
+
// breaks retrieval, while a merely-missing one is only warned about
|
|
293
|
+
// (legitimate for npx runs). Both encoded in toolProblemCount, shared with
|
|
294
|
+
// --repair's re-count.
|
|
295
|
+
problems += toolProblemCount(tool);
|
|
242
296
|
}
|
|
243
297
|
if (verify && verify.kind !== 'ok')
|
|
244
298
|
problems += 1;
|
|
@@ -256,6 +310,7 @@ const collectReport = async (origin, profile, withVerify, adapters) => {
|
|
|
256
310
|
platform: `${process.platform}/${process.arch}`,
|
|
257
311
|
},
|
|
258
312
|
gateway: { origin, reachable: probe.reachable, detail: probe.detail },
|
|
313
|
+
toolOrigin,
|
|
259
314
|
fallbackProxy: {
|
|
260
315
|
enabled: fallbackOn,
|
|
261
316
|
port: fallbackOn ? profile.fallbackPort : null,
|
|
@@ -354,6 +409,11 @@ const renderHuman = (report) => {
|
|
|
354
409
|
}
|
|
355
410
|
heading('Tools');
|
|
356
411
|
let anyPointed = false;
|
|
412
|
+
// A Claude Desktop lane we rendered as possibly-routed — 'unverifiable' (a
|
|
413
|
+
// completed manual/managed setup is invisible to `pointsAt`) or a repaired
|
|
414
|
+
// half-state. It suppresses the "nothing is configured" nudge below, which
|
|
415
|
+
// would otherwise contradict the very line we just printed.
|
|
416
|
+
let anyUnverifiableLane = false;
|
|
357
417
|
// The per-tool MCP-registration line. Rendered for every installed tool that
|
|
358
418
|
// registers one (even when the main config isn't introspectable, e.g.
|
|
359
419
|
// Cursor's sqlite store) — without the server, externalized output can't be
|
|
@@ -385,11 +445,13 @@ const renderHuman = (report) => {
|
|
|
385
445
|
}
|
|
386
446
|
if (tool.pointedAt) {
|
|
387
447
|
anyPointed = true;
|
|
388
|
-
ok(` ${tool.title}: pointed at ${report.gateway.origin}${report.fallbackProxy.enabled
|
|
448
|
+
ok(` ${tool.title}: pointed at ${report.gateway.origin}${report.fallbackProxy.enabled && toolUsesFallbackProxy(tool.id)
|
|
449
|
+
? dim(' (via fallback proxy)')
|
|
450
|
+
: ''}`);
|
|
389
451
|
if (tool.id === 'claude-code') {
|
|
390
452
|
info(dim(' Note: settings.json routing covers the Claude Code CLI and ' +
|
|
391
453
|
'VS Code extension. For Claude Desktop, use the supported ' +
|
|
392
|
-
'
|
|
454
|
+
'third-party Gateway setup; verified macOS builds can use the Claude Code subscription helper, while Windows remains API-billed.'));
|
|
393
455
|
}
|
|
394
456
|
if (tool.id === 'codex') {
|
|
395
457
|
info(dim(' Note: Codex app, CLI, and IDE extension share ' +
|
|
@@ -399,14 +461,42 @@ const renderHuman = (report) => {
|
|
|
399
461
|
renderMcp(tool);
|
|
400
462
|
}
|
|
401
463
|
else {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
464
|
+
const lane = claudeDesktopLane(tool);
|
|
465
|
+
if (lane === 'not-routed' || lane === 'unverifiable') {
|
|
466
|
+
// The Claude Desktop half-state: retrieval MCP registered while the
|
|
467
|
+
// inference redirect is gone ('not-routed') or unverifiable on this
|
|
468
|
+
// host. A warn, not a fail — the MCP half still works — though
|
|
469
|
+
// 'not-routed' still counts toward the exit code (toolRoutingProblem).
|
|
470
|
+
const warning = describeClaudeDesktopLane(lane, {
|
|
471
|
+
...(tool.inferenceUnverifiableReason
|
|
472
|
+
? { reason: tool.inferenceUnverifiableReason }
|
|
473
|
+
: {}),
|
|
474
|
+
mcpRegistered: tool.mcp?.registered === true,
|
|
475
|
+
});
|
|
476
|
+
warn(` ${tool.title}: ${warning.headline}`);
|
|
477
|
+
for (const line of warning.detail)
|
|
478
|
+
info(dim(` ${line}`));
|
|
479
|
+
// 'unverifiable' may well be routed (we just can't read it), so it must
|
|
480
|
+
// not leave the blanket "no tools pointed" nudge to fire.
|
|
481
|
+
if (lane === 'unverifiable')
|
|
482
|
+
anyUnverifiableLane = true;
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
// Not pointed at the gateway — the re-run fix below re-registers the
|
|
486
|
+
// MCP server too, so a separate MCP line would just repeat it.
|
|
487
|
+
fail(` ${tool.title}: installed but not pointed at ${report.gateway.origin}`);
|
|
488
|
+
info(dim(' Fix: run `anyray-connect` to (re)configure it.'));
|
|
489
|
+
}
|
|
406
490
|
}
|
|
407
491
|
}
|
|
408
|
-
|
|
409
|
-
|
|
492
|
+
const repaired = (report.repairs?.length ?? 0) > 0;
|
|
493
|
+
if (!anyPointed &&
|
|
494
|
+
!anyUnverifiableLane &&
|
|
495
|
+
!repaired &&
|
|
496
|
+
report.problems === 0) {
|
|
497
|
+
// Truly nothing is configured (no verified pointer, no possibly-routed
|
|
498
|
+
// desktop half-state, no repair just run) and nothing else is wrong — nudge.
|
|
499
|
+
// Gated so it can't contradict a warning/repair we just printed above.
|
|
410
500
|
warn(' No tools are pointed at this gateway yet.');
|
|
411
501
|
info(dim(' Fix: run `anyray-connect` to configure your tools.'));
|
|
412
502
|
}
|
|
@@ -461,12 +551,16 @@ export const repairFromReport = async (report, profile, deps = {}) => {
|
|
|
461
551
|
const adapters = deps.adapters ?? REGISTRY;
|
|
462
552
|
const resolve = deps.resolveTarget ?? targetFromProfile;
|
|
463
553
|
const applyTools = deps.applyTools ?? repairTools;
|
|
554
|
+
// Claude Desktop's 'unverifiable' half-state is excluded via
|
|
555
|
+
// toolRoutingProblem: with no authoritative introspection a re-apply can't
|
|
556
|
+
// verifiably fix anything (it would re-print manual steps on every run).
|
|
464
557
|
const drifted = report.tools.filter((tool) => tool.installed &&
|
|
465
|
-
(tool
|
|
558
|
+
(toolRoutingProblem(tool) || tool.mcp?.commandOk === false));
|
|
466
559
|
if (drifted.length === 0) {
|
|
467
560
|
return {
|
|
468
561
|
entries: [],
|
|
469
562
|
remainingProblems: report.problems,
|
|
563
|
+
refreshedTools: new Map(),
|
|
470
564
|
notes: ['Nothing to repair — no tool has drifted.'],
|
|
471
565
|
};
|
|
472
566
|
}
|
|
@@ -479,6 +573,7 @@ export const repairFromReport = async (report, profile, deps = {}) => {
|
|
|
479
573
|
status: 'skipped-not-enrolled',
|
|
480
574
|
})),
|
|
481
575
|
remainingProblems: report.problems,
|
|
576
|
+
refreshedTools: new Map(),
|
|
482
577
|
notes: [
|
|
483
578
|
'Repair needs an enrolled personal key — run `anyray-connect --enroll <link>` (or --sso), then re-run.',
|
|
484
579
|
],
|
|
@@ -504,20 +599,67 @@ export const repairFromReport = async (report, profile, deps = {}) => {
|
|
|
504
599
|
notes.push('Drifted tools outside the managed record are never auto-repaired — run `anyray-connect` once to (re)configure and record them.');
|
|
505
600
|
}
|
|
506
601
|
const repaired = await applyTools(toRepair, resolved.target);
|
|
602
|
+
// Re-derive each repaired tool's row from a fresh read, then count the count
|
|
603
|
+
// AND the rows off that single source (toolProblemCount) — never the stale
|
|
604
|
+
// pre-repair row or the apply status alone. Routing is trusted from a
|
|
605
|
+
// successful re-apply (a failed inference write returns manual/error, not
|
|
606
|
+
// 'configured'); MCP is RE-PROBED because an apply can swallow an
|
|
607
|
+
// MCP-registration write failure and still return 'configured' (Claude
|
|
608
|
+
// Desktop does exactly this), so a 'configured' result never proves a
|
|
609
|
+
// dangling registration was fixed.
|
|
610
|
+
const refreshedTools = new Map();
|
|
507
611
|
let cleared = 0;
|
|
508
612
|
for (const result of repaired) {
|
|
509
613
|
entries.push(result);
|
|
510
614
|
if (!repairSucceeded(result))
|
|
511
615
|
continue;
|
|
512
|
-
const
|
|
513
|
-
if (
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
616
|
+
const original = report.tools.find((t) => t.id === result.id);
|
|
617
|
+
if (!original)
|
|
618
|
+
continue;
|
|
619
|
+
const adapter = adapters.find((candidate) => candidate.id === result.id);
|
|
620
|
+
let mcp = original.mcp;
|
|
621
|
+
if (adapter?.mcpStatus) {
|
|
622
|
+
try {
|
|
623
|
+
const status = await adapter.mcpStatus();
|
|
624
|
+
mcp = { ...status, commandOk: mcpCommandOk(status) };
|
|
625
|
+
}
|
|
626
|
+
catch {
|
|
627
|
+
// Fail closed: an unreadable probe can't confirm the fix, so keep the
|
|
628
|
+
// pre-repair (dangling) state — the problem stays counted, never
|
|
629
|
+
// cleared on uncertainty, and the repair never crashes.
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
// Prefer a genuine routing RE-PROBE over trusting the apply status: an
|
|
633
|
+
// adapter that returned 'configured' but whose routing write didn't stick
|
|
634
|
+
// would otherwise read as a false-clean row/count. Fall back to trusting
|
|
635
|
+
// the successful re-apply only when the adapter can't introspect its own
|
|
636
|
+
// config (no pointsAt) or the probe throws (keep the pre-repair answer).
|
|
637
|
+
let pointedAt = toolRoutingProblem(original)
|
|
638
|
+
? true
|
|
639
|
+
: original.pointedAt;
|
|
640
|
+
// Gate on a routing BASELINE (pointedAt !== null): only re-probe to confirm
|
|
641
|
+
// a routing state the scan already established. If routing was never
|
|
642
|
+
// determined (null), the repair loop must not be the first to assert it — a
|
|
643
|
+
// false probe would count a routing problem report.problems never included,
|
|
644
|
+
// driving `cleared` negative and inflating remainingProblems past the
|
|
645
|
+
// original count. (collectReport only yields null when pointsAt is absent,
|
|
646
|
+
// so this is a soundness guard for the exported repairFromReport contract.)
|
|
647
|
+
if (adapter?.pointsAt && original.pointedAt !== null) {
|
|
648
|
+
try {
|
|
649
|
+
pointedAt = await adapter.pointsAt(toolRoutingOrigin(adapter.id, report.gateway.origin, report.toolOrigin));
|
|
650
|
+
}
|
|
651
|
+
catch {
|
|
652
|
+
// keep the trusted/pre-repair answer rather than crash the repair
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
const refreshed = { ...original, pointedAt, mcp };
|
|
656
|
+
refreshedTools.set(result.id, refreshed);
|
|
657
|
+
cleared += toolProblemCount(original) - toolProblemCount(refreshed);
|
|
517
658
|
}
|
|
518
659
|
return {
|
|
519
660
|
entries,
|
|
520
661
|
remainingProblems: Math.max(0, report.problems - cleared),
|
|
662
|
+
refreshedTools,
|
|
521
663
|
notes,
|
|
522
664
|
};
|
|
523
665
|
};
|
|
@@ -559,7 +701,7 @@ export const runDoctor = async (args, deps = {}) => {
|
|
|
559
701
|
info(dim(' Fix: pass a gateway URL, e.g. `anyray-connect doctor http://localhost:8787`.'));
|
|
560
702
|
return 1;
|
|
561
703
|
}
|
|
562
|
-
const report = await collectReport(origin, profile, Boolean(args.verify), deps.adapters ?? REGISTRY);
|
|
704
|
+
const report = await collectReport(origin, profile, Boolean(args.verify), deps.adapters ?? REGISTRY, deps.inferenceIntrospection ?? claudeDesktopInferenceIntrospection);
|
|
563
705
|
// --repair is the one write path: re-apply recorded tools the report shows
|
|
564
706
|
// drifted, then judge the exit code on what remains.
|
|
565
707
|
const repair = args.repair
|
|
@@ -568,6 +710,10 @@ export const runDoctor = async (args, deps = {}) => {
|
|
|
568
710
|
const finalReport = repair
|
|
569
711
|
? {
|
|
570
712
|
...report,
|
|
713
|
+
// Swap in the post-repair rows so the rendered/--json report shows
|
|
714
|
+
// reality (a repaired tool no longer reads "not routed"), not the
|
|
715
|
+
// pre-repair snapshot beside a "no problems" summary.
|
|
716
|
+
tools: report.tools.map((t) => repair.refreshedTools.get(t.id) ?? t),
|
|
571
717
|
repairs: repair.entries,
|
|
572
718
|
problems: repair.remainingProblems,
|
|
573
719
|
}
|
|
@@ -576,7 +722,11 @@ export const runDoctor = async (args, deps = {}) => {
|
|
|
576
722
|
console.log(JSON.stringify(finalReport, null, 2));
|
|
577
723
|
}
|
|
578
724
|
else {
|
|
579
|
-
|
|
725
|
+
// Render finalReport, not the pre-repair report: its rows, problem count
|
|
726
|
+
// (Summary line + nudge), and the exit code below are one consistent
|
|
727
|
+
// post-repair snapshot — otherwise `--repair` prints "1 problem found" then
|
|
728
|
+
// exits 0, or shows a stale "not routed" row beside "no problems".
|
|
729
|
+
renderHuman(finalReport);
|
|
580
730
|
if (repair)
|
|
581
731
|
renderRepair(repair);
|
|
582
732
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/hook.js
CHANGED
|
@@ -46,6 +46,20 @@ const optimizeTimeoutMs = () => {
|
|
|
46
46
|
const v = Number(process.env.ANYRAY_HOOK_OPTIMIZE_TIMEOUT_MS);
|
|
47
47
|
return Number.isFinite(v) && v > 0 ? v : DEFAULT_OPTIMIZE_TIMEOUT_MS;
|
|
48
48
|
};
|
|
49
|
+
const disabledContentPersistence = {
|
|
50
|
+
cacheGet: async () => null,
|
|
51
|
+
cachePut: async () => { },
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Select content-bearing local persistence explicitly by carrier. Keeping this
|
|
55
|
+
* decision pure/testable prevents a new hook surface from silently inheriting
|
|
56
|
+
* tee files or content-derived cached verdicts.
|
|
57
|
+
*/
|
|
58
|
+
export const contentPersistenceForHookSource = (source, persistent = {
|
|
59
|
+
cacheGet: readCache,
|
|
60
|
+
cachePut: writeCache,
|
|
61
|
+
tee: teeToDisk,
|
|
62
|
+
}) => source === 'claude' ? persistent : disabledContentPersistence;
|
|
49
63
|
// Well below sizeGate (a 3 KB test run is mostly pass-noise); below ~1 KB the
|
|
50
64
|
// marker overhead eats the saving.
|
|
51
65
|
export const DEFAULT_DIGEST_GATE = 1_000;
|
|
@@ -55,6 +69,35 @@ const emit = (value) => JSON.stringify({
|
|
|
55
69
|
updatedToolOutput: value,
|
|
56
70
|
},
|
|
57
71
|
});
|
|
72
|
+
const isJsonObject = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
73
|
+
/**
|
|
74
|
+
* Cursor serializes every postToolUse result into a string, but its only
|
|
75
|
+
* replacement field accepts an object and applies to MCP tools. Decode that
|
|
76
|
+
* documented carrier shape before the shared trimmer sees it; built-in tools
|
|
77
|
+
* fail open because Cursor cannot replace their results.
|
|
78
|
+
*/
|
|
79
|
+
export const normalizeCursorPostToolUsePayload = (raw) => {
|
|
80
|
+
try {
|
|
81
|
+
const payload = JSON.parse(raw);
|
|
82
|
+
if (!isJsonObject(payload) ||
|
|
83
|
+
typeof payload.tool_name !== 'string' ||
|
|
84
|
+
!payload.tool_name.startsWith('MCP:') ||
|
|
85
|
+
typeof payload.tool_output !== 'string') {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
const output = JSON.parse(payload.tool_output);
|
|
89
|
+
if (!isJsonObject(output))
|
|
90
|
+
return undefined;
|
|
91
|
+
return JSON.stringify({ ...payload, tool_output: output });
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
/** Encode only Cursor's documented MCP replacement field. */
|
|
98
|
+
export const encodeCursorPostToolUseOutput = (replacement) => isJsonObject(replacement)
|
|
99
|
+
? `${JSON.stringify({ updated_mcp_tool_output: replacement })}\n`
|
|
100
|
+
: '';
|
|
58
101
|
/** ~4 chars/token (matches util/trimOutput) — content-free saving estimate. */
|
|
59
102
|
const estTokens = (chars) => Math.round(Math.max(0, chars) / 4);
|
|
60
103
|
/**
|
|
@@ -144,11 +187,6 @@ const applyCommandDigest = async (deps, command, rawBody) => {
|
|
|
144
187
|
},
|
|
145
188
|
};
|
|
146
189
|
};
|
|
147
|
-
/**
|
|
148
|
-
* Pure orchestration core: decide what to emit for a raw PostToolUse payload,
|
|
149
|
-
* delegating I/O to `deps`. Returns the exact stdout (empty = passthrough).
|
|
150
|
-
* Never throws.
|
|
151
|
-
*/
|
|
152
190
|
export const runHook = async (raw, deps) => {
|
|
153
191
|
const passthrough = { stdout: '' };
|
|
154
192
|
if (!raw.trim())
|
|
@@ -193,16 +231,36 @@ export const runHook = async (raw, deps) => {
|
|
|
193
231
|
// Overridden only on the fresh-verdict path, where finalBody reflects the
|
|
194
232
|
// server's further trim but the beacon describes the local digest stage.
|
|
195
233
|
localTrimmedChars = finalBody.length + digestMarker.length) => {
|
|
196
|
-
const
|
|
234
|
+
const beforeFinalizer = finalBody + digestMarker;
|
|
235
|
+
let finalized = beforeFinalizer;
|
|
236
|
+
if (deps.finalizeOutput) {
|
|
237
|
+
try {
|
|
238
|
+
const candidate = deps.finalizeOutput(beforeFinalizer);
|
|
239
|
+
// A final bound may only preserve or reduce output. An expanding or
|
|
240
|
+
// throwing carrier finalizer fails open to the shared result.
|
|
241
|
+
if (candidate.length <= beforeFinalizer.length)
|
|
242
|
+
finalized = candidate;
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
finalized = beforeFinalizer;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const finalizerSavedChars = beforeFinalizer.length - finalized.length;
|
|
249
|
+
const localTokens = estTokens(digestSavedChars) +
|
|
250
|
+
extraTokensSaved +
|
|
251
|
+
estTokens(finalizerSavedChars);
|
|
197
252
|
if (localTokens > 0) {
|
|
198
253
|
await beaconSafe({
|
|
199
254
|
originalChars: rawBody.length,
|
|
200
|
-
|
|
255
|
+
// Exclude the gateway's fresh-verdict reduction: only local digest,
|
|
256
|
+
// replay/fallback, and carrier-finalizer savings belong in this beacon.
|
|
257
|
+
trimmedChars: Math.max(0, localTrimmedChars - finalizerSavedChars),
|
|
201
258
|
estTokensSaved: localTokens,
|
|
202
259
|
...(digest && { digest: digest.decision }),
|
|
203
260
|
});
|
|
204
261
|
}
|
|
205
|
-
|
|
262
|
+
const replacement = found.rebuild(finalized);
|
|
263
|
+
return { stdout: emit(replacement), replacement };
|
|
206
264
|
};
|
|
207
265
|
// Downstream declines must still emit a fired digest, never lose it.
|
|
208
266
|
const digestOrPassthrough = async () => digest ? emitWithBeacon(body, 0) : passthrough;
|
|
@@ -304,7 +362,7 @@ export const runHook = async (raw, deps) => {
|
|
|
304
362
|
// ---------------------------------------------------------------------------
|
|
305
363
|
// Real wiring (I/O). Kept thin; the logic lives in runHook above.
|
|
306
364
|
// ---------------------------------------------------------------------------
|
|
307
|
-
const
|
|
365
|
+
export const readHookStdin = async () => {
|
|
308
366
|
const chunks = [];
|
|
309
367
|
try {
|
|
310
368
|
for await (const chunk of process.stdin)
|
|
@@ -407,27 +465,41 @@ const optimizeViaGateway = async (target, tool, toolInput, body, intent) => {
|
|
|
407
465
|
* Run the PostToolUse hook. Always returns exit code 0 — the hook is advisory;
|
|
408
466
|
* failures must never block Claude Code.
|
|
409
467
|
*/
|
|
410
|
-
export const runPostToolUseHook = async () => {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
468
|
+
export const runPostToolUseHook = async (source = 'claude') => {
|
|
469
|
+
const raw = await readHookStdin();
|
|
470
|
+
const normalized = source === 'cursor' ? normalizeCursorPostToolUsePayload(raw) : raw;
|
|
471
|
+
if (normalized === undefined)
|
|
472
|
+
return 0;
|
|
473
|
+
const { stdout, replacement } = await runPostToolUsePayload(normalized, source);
|
|
474
|
+
if (source === 'cursor') {
|
|
475
|
+
const cursorStdout = encodeCursorPostToolUseOutput(replacement);
|
|
476
|
+
if (cursorStdout)
|
|
477
|
+
process.stdout.write(cursorStdout);
|
|
478
|
+
return 0;
|
|
479
|
+
}
|
|
480
|
+
if (stdout)
|
|
481
|
+
process.stdout.write(stdout);
|
|
482
|
+
return 0;
|
|
483
|
+
};
|
|
484
|
+
/** Run one already-read payload through the real production dependencies. */
|
|
485
|
+
export const runPostToolUsePayload = async (raw, source = 'claude', finalizeOutput) => {
|
|
486
|
+
// Every carrier gets the same cheap, throttled key-refresh gate. It reads one
|
|
487
|
+
// small state file and may spawn a detached refresh before optimization.
|
|
414
488
|
await maybeSpawnRefresh();
|
|
415
|
-
const raw = await readStdin();
|
|
416
489
|
const opts = trimOptionsFromEnv();
|
|
417
490
|
const target = await readBeaconTarget();
|
|
418
|
-
const
|
|
491
|
+
const persistence = contentPersistenceForHookSource(source);
|
|
492
|
+
return runHook(raw, {
|
|
419
493
|
optimize: (tool, toolInput, body, intent) => optimizeViaGateway(target, tool, toolInput, body, intent),
|
|
420
494
|
readIntent: (transcriptPath) => readTranscriptIntent(transcriptPath),
|
|
421
495
|
localTrim: (body) => trimText(body, opts),
|
|
422
496
|
beacon: (tool, metrics) => sendBeacon(target, 'hook', metrics, tool),
|
|
423
|
-
cacheGet:
|
|
424
|
-
cachePut:
|
|
497
|
+
cacheGet: persistence.cacheGet,
|
|
498
|
+
cachePut: persistence.cachePut,
|
|
425
499
|
sizeGate: opts.maxChars ?? DEFAULT_TRIM.maxChars,
|
|
426
500
|
digestCommand: digestCommandOutput,
|
|
427
|
-
tee:
|
|
501
|
+
tee: persistence.tee,
|
|
502
|
+
finalizeOutput,
|
|
428
503
|
});
|
|
429
|
-
if (stdout)
|
|
430
|
-
process.stdout.write(stdout);
|
|
431
|
-
return 0;
|
|
432
504
|
};
|
|
433
505
|
//# sourceMappingURL=hook.js.map
|