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.
Files changed (66) hide show
  1. package/README.md +25 -7
  2. package/dist/assets/vscodeExtensionAsset.js +5 -5
  3. package/dist/assets/vscodeExtensionAsset.js.map +1 -1
  4. package/dist/cli.js +30 -6
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/acpAgent.js +15 -1
  7. package/dist/commands/acpAgent.js.map +1 -1
  8. package/dist/commands/claudeDesktopCredential.js +76 -0
  9. package/dist/commands/claudeDesktopCredential.js.map +1 -0
  10. package/dist/commands/codexHook.js +19 -0
  11. package/dist/commands/codexHook.js.map +1 -0
  12. package/dist/commands/cursorWatch.js +11 -6
  13. package/dist/commands/cursorWatch.js.map +1 -1
  14. package/dist/commands/desktop.js +68 -21
  15. package/dist/commands/desktop.js.map +1 -1
  16. package/dist/commands/doctor.js +184 -34
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/hook.js +93 -21
  19. package/dist/commands/hook.js.map +1 -1
  20. package/dist/commands/managed.js +2 -2
  21. package/dist/commands/managed.js.map +1 -1
  22. package/dist/commands/printKey.js +11 -6
  23. package/dist/commands/printKey.js.map +1 -1
  24. package/dist/commands/shared.js +164 -0
  25. package/dist/commands/shared.js.map +1 -1
  26. package/dist/commands/status.js +45 -4
  27. package/dist/commands/status.js.map +1 -1
  28. package/dist/commands/userPromptHook.js +3 -7
  29. package/dist/commands/userPromptHook.js.map +1 -1
  30. package/dist/tools/acpAgents.js +28 -9
  31. package/dist/tools/acpAgents.js.map +1 -1
  32. package/dist/tools/claudeCode.js +1 -1
  33. package/dist/tools/claudeCode.js.map +1 -1
  34. package/dist/tools/claudeCodeEnv.js +4 -1
  35. package/dist/tools/claudeCodeEnv.js.map +1 -1
  36. package/dist/tools/claudeDesktop.js +441 -136
  37. package/dist/tools/claudeDesktop.js.map +1 -1
  38. package/dist/tools/claudeDesktopCredentialProtocol.js +7 -0
  39. package/dist/tools/claudeDesktopCredentialProtocol.js.map +1 -0
  40. package/dist/tools/claudeDesktopNative.js +143 -65
  41. package/dist/tools/claudeDesktopNative.js.map +1 -1
  42. package/dist/tools/codex.js +89 -10
  43. package/dist/tools/codex.js.map +1 -1
  44. package/dist/tools/copilotChat.js +346 -13
  45. package/dist/tools/copilotChat.js.map +1 -1
  46. package/dist/tools/cursor.js +694 -165
  47. package/dist/tools/cursor.js.map +1 -1
  48. package/dist/tools/devinDesktop.js +1 -1
  49. package/dist/tools/devinDesktop.js.map +1 -1
  50. package/dist/tools/jetbrains.js +2 -2
  51. package/dist/tools/jetbrains.js.map +1 -1
  52. package/dist/tools/opencode.js +62 -6
  53. package/dist/tools/opencode.js.map +1 -1
  54. package/dist/tools/opencodeTrimPlugin.js +113 -0
  55. package/dist/tools/opencodeTrimPlugin.js.map +1 -0
  56. package/dist/tools/sharedHooks.js +19 -13
  57. package/dist/tools/sharedHooks.js.map +1 -1
  58. package/dist/types.js +1 -1
  59. package/dist/types.js.map +1 -1
  60. package/dist/util/cursorPending.js +72 -9
  61. package/dist/util/cursorPending.js.map +1 -1
  62. package/dist/util/trimOutput.js +64 -0
  63. package/dist/util/trimOutput.js.map +1 -1
  64. package/dist/util/vscodeState.js +46 -14
  65. package/dist/util/vscodeState.js.map +1 -1
  66. package/package.json +1 -1
@@ -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
- const collectReport = async (origin, profile, withVerify, adapters) => {
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
- const status = await adapter.mcpStatus();
167
- mcp = {
168
- ...status,
169
- // Only an absolute command is introspectable; `node` (from-source
170
- // launch) resolves through PATH and can't be existence-checked here.
171
- commandOk: status.registered && status.command && isAbsolute(status.command)
172
- ? existsSync(status.command)
173
- : null,
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
- if (tool.pointedAt === false)
237
- problems += 1;
238
- // A dangling registration (binary gone) breaks retrieval outright; a
239
- // missing registration is only warned about (legitimate for npx runs).
240
- if (tool.mcp?.commandOk === false)
241
- problems += 1;
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 ? dim(' (via fallback proxy)') : ''}`);
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
- '`anyray-connect desktop claude` third-party gateway (API billing).'));
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
- // Not pointed at the gateway — the re-run fix below re-registers the
403
- // MCP server too, so a separate MCP line would just repeat it.
404
- fail(` ${tool.title}: installed but not pointed at ${report.gateway.origin}`);
405
- info(dim(' Fix: run `anyray-connect` to (re)configure it.'));
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
- if (!anyPointed && report.problems === 0) {
409
- // No introspectable tool is configured and nothing else is wrong — nudge.
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.pointedAt === false || tool.mcp?.commandOk === false));
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 tool = report.tools.find((candidate) => candidate.id === result.id);
513
- if (tool?.pointedAt === false)
514
- cleared += 1;
515
- if (tool?.mcp?.commandOk === false)
516
- cleared += 1;
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
- renderHuman(report);
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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"}
@@ -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 localTokens = estTokens(digestSavedChars) + extraTokensSaved;
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
- trimmedChars: localTrimmedChars,
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
- return { stdout: emit(found.rebuild(finalBody + digestMarker)) };
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 readStdin = async () => {
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
- // Cheap, throttled gate (reads one small state file): at most once per window
412
- // it spawns a DETACHED refresh to re-mint the verified-dev key before expiry.
413
- // Best-effort and non-blocking — it never throws and adds no hot-path latency.
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 { stdout } = await runHook(raw, {
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: (key) => readCache(key),
424
- cachePut: (key, verdict) => writeCache(key, verdict),
497
+ cacheGet: persistence.cacheGet,
498
+ cachePut: persistence.cachePut,
425
499
  sizeGate: opts.maxChars ?? DEFAULT_TRIM.maxChars,
426
500
  digestCommand: digestCommandOutput,
427
- tee: teeToDisk,
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