@leo000001/claude-code-mcp 2.8.3 → 2.8.6
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/CHANGELOG.md +1 -1
- package/README.md +14 -14
- package/dist/index.js +40 -32
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
- Expand SDK stream/event mapping for `rate_limit_event`, `system/api_retry`, `system/local_command_output`, `system/elicitation_complete`, `system/compact_boundary`, and partial `stream_event` output.
|
|
9
9
|
- Preserve newer SDK metadata in session/results, including `fastModeState` and richer permission prompt labels (`title`, `displayName`).
|
|
10
10
|
- Prefer SDK permission `suggestions` for `allow_for_session` responses and sync session metadata from `system/init` (for example actual model / permission mode).
|
|
11
|
-
- Add default Claude executable resolution with explicit env overrides (`
|
|
11
|
+
- Add default Claude executable resolution with explicit env overrides (`CLAUDE_CODE_MCP_PATH` / `CLAUDE_CODE_MCP_COMMAND`) and auto-detection order `claude` -> `claude-internal` -> SDK-bundled.
|
|
12
12
|
|
|
13
13
|
### Documentation
|
|
14
14
|
|
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ See `CHANGELOG.md` for release history.
|
|
|
43
43
|
This MCP server uses the [`@anthropic-ai/claude-agent-sdk`](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk) package, which **bundles its own Claude Code CLI** (`cli.js`). When no explicit `pathToClaudeCodeExecutable` is provided, this server now prefers a detected local `claude` command, then `claude-internal`, and falls back to the SDK-bundled CLI if neither is found.
|
|
44
44
|
|
|
45
45
|
- The SDK bundles a Claude Code CLI; its version generally tracks the SDK package version, but the exact scheme is not guaranteed
|
|
46
|
-
- Default executable resolution order is: request-level `pathToClaudeCodeExecutable` -> `
|
|
46
|
+
- Default executable resolution order is: request-level `pathToClaudeCodeExecutable` -> `CLAUDE_CODE_MCP_PATH` -> `CLAUDE_CODE_MCP_COMMAND` -> auto-detected `claude` -> auto-detected `claude-internal` -> SDK-bundled CLI
|
|
47
47
|
- **Configuration is shared** — the bundled CLI reads API keys and settings from `~/.claude/`, same as the system-installed `claude`
|
|
48
48
|
- **All local settings are loaded by default** — unlike the raw SDK (which defaults to isolation mode), this MCP server loads `user`, `project`, and `local` settings automatically, including `CLAUDE.md` project context. Pass `advanced.settingSources: []` to opt out
|
|
49
49
|
- You must have Claude Code configured (API key set up) before using this MCP server: see [Claude Code documentation](https://docs.anthropic.com/en/docs/claude-code/overview)
|
|
@@ -383,7 +383,7 @@ Notes:
|
|
|
383
383
|
- `permission_result` event data is `{ requestId, toolName, behavior, source, message?, interrupt? }` (denial details only present for `deny`).
|
|
384
384
|
- `result.fastModeState` may be present when the SDK reports fast-mode state, and `claude_code_session` surfaces the latest known `fastModeState` for each session.
|
|
385
385
|
- In `"minimal"` mode (default): assistant message events are slimmed (strips `usage`, `model`, `id`, `cache_control` from content blocks); noisy SDK progress subtypes (`tool_progress`, `auth_status`, `system/api_retry`, `system/task_progress`, `system/hook_progress`) are filtered out; `lastEventId`/`lastToolUseId` are omitted; `AgentResult` omits `durationApiMs`/`sessionTotalTurns`/`sessionTotalCostUsd`. Use `responseMode: "full"` or individual `include*` flags to restore any of these.
|
|
386
|
-
- In `"delta_compact"` mode: defaults
|
|
386
|
+
- In `"delta_compact"` mode: defaults minimize per-poll payload size (`events` and top-level `result` omitted unless explicitly enabled via `pollOptions`), while still returning session status/actions/cursors. Note: this does not change the recommended poll interval — `running` sessions should still be polled at >=2 minute intervals.
|
|
387
387
|
|
|
388
388
|
## Usage Example
|
|
389
389
|
|
|
@@ -520,21 +520,21 @@ setx CLAUDE_CODE_GIT_BASH_PATH "C:\Program Files\Git\bin\bash.exe"
|
|
|
520
520
|
|
|
521
521
|
All environment variables are optional. They are set on the MCP server process (not on the Claude Code child process — for that, use the `env` tool parameter).
|
|
522
522
|
|
|
523
|
-
| Variable | Description
|
|
524
|
-
| -------------------------------------------- |
|
|
525
|
-
| `CLAUDE_CODE_GIT_BASH_PATH` | Path to `bash.exe` on Windows (see [Windows Support](#windows-support))
|
|
526
|
-
| `
|
|
527
|
-
| `
|
|
528
|
-
| `CLAUDE_CODE_MCP_ALLOW_DISK_RESUME` | Set to `1` to allow `claude_code_reply` to resume from on-disk transcripts when the in-memory session is missing
|
|
529
|
-
| `CLAUDE_CODE_MCP_RESUME_SECRET` | HMAC secret used to validate `resumeToken` for disk resume fallback (recommended if disk resume is enabled)
|
|
530
|
-
| `CLAUDE_CODE_MCP_MAX_SESSIONS` | Maximum number of in-memory sessions (set `0` to disable the limit)
|
|
531
|
-
| `CLAUDE_CODE_MCP_MAX_PENDING_PERMISSIONS` | Maximum number of outstanding permission requests per session (set `0` to disable the limit)
|
|
532
|
-
| `CLAUDE_CODE_MCP_EVENT_BUFFER_MAX_SIZE` | Soft limit for in-memory event buffer per session (`0` is not supported)
|
|
533
|
-
| `CLAUDE_CODE_MCP_EVENT_BUFFER_HARD_MAX_SIZE` | Hard limit for in-memory event buffer per session (clamped to be `>= max`; `0` is not supported)
|
|
523
|
+
| Variable | Description | Default |
|
|
524
|
+
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
|
|
525
|
+
| `CLAUDE_CODE_GIT_BASH_PATH` | Path to `bash.exe` on Windows (see [Windows Support](#windows-support)) | Auto-detected |
|
|
526
|
+
| `CLAUDE_CODE_MCP_COMMAND` | Exact command name to resolve from `PATH` as the default Claude executable (for example `claude` or `claude-internal`). Mutually exclusive with `CLAUDE_CODE_MCP_PATH` | _(unset)_ |
|
|
527
|
+
| `CLAUDE_CODE_MCP_PATH` | Explicit filesystem path to use as the default Claude executable. Mutually exclusive with `CLAUDE_CODE_MCP_COMMAND` | _(unset)_ |
|
|
528
|
+
| `CLAUDE_CODE_MCP_ALLOW_DISK_RESUME` | Set to `1` to allow `claude_code_reply` to resume from on-disk transcripts when the in-memory session is missing | `0` (disabled) |
|
|
529
|
+
| `CLAUDE_CODE_MCP_RESUME_SECRET` | HMAC secret used to validate `resumeToken` for disk resume fallback (recommended if disk resume is enabled) | _(unset)_ |
|
|
530
|
+
| `CLAUDE_CODE_MCP_MAX_SESSIONS` | Maximum number of in-memory sessions (set `0` to disable the limit) | `128` |
|
|
531
|
+
| `CLAUDE_CODE_MCP_MAX_PENDING_PERMISSIONS` | Maximum number of outstanding permission requests per session (set `0` to disable the limit) | `64` |
|
|
532
|
+
| `CLAUDE_CODE_MCP_EVENT_BUFFER_MAX_SIZE` | Soft limit for in-memory event buffer per session (`0` is not supported) | `1000` |
|
|
533
|
+
| `CLAUDE_CODE_MCP_EVENT_BUFFER_HARD_MAX_SIZE` | Hard limit for in-memory event buffer per session (clamped to be `>= max`; `0` is not supported) | `2000` |
|
|
534
534
|
|
|
535
535
|
### Choosing the default Claude executable
|
|
536
536
|
|
|
537
|
-
- `
|
|
537
|
+
- `CLAUDE_CODE_MCP_PATH` and `CLAUDE_CODE_MCP_COMMAND` are mutually exclusive.
|
|
538
538
|
- If neither is set, the server auto-detects `claude`, then `claude-internal`, then falls back to the SDK-bundled CLI.
|
|
539
539
|
- Request-level `pathToClaudeCodeExecutable` still overrides these server defaults.
|
|
540
540
|
- Invalid values for these env vars are treated as startup misconfiguration and will fail the server fast.
|
package/dist/index.js
CHANGED
|
@@ -920,6 +920,8 @@ import { existsSync as existsSync3, statSync as statSync2 } from "fs";
|
|
|
920
920
|
var EFFORT_LEVELS = ["low", "medium", "high", "max"];
|
|
921
921
|
var SESSION_ACTIONS = ["list", "get", "cancel", "interrupt"];
|
|
922
922
|
var DEFAULT_SETTING_SOURCES = ["user", "project", "local"];
|
|
923
|
+
var DEFAULT_POLL_INTERVAL_RUNNING_MS = 12e4;
|
|
924
|
+
var DEFAULT_POLL_INTERVAL_WAITING_MS = 1e3;
|
|
923
925
|
var CHECK_ACTIONS = ["poll", "respond_permission"];
|
|
924
926
|
var CHECK_RESPONSE_MODES = ["minimal", "full", "delta_compact"];
|
|
925
927
|
var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
|
|
@@ -1952,8 +1954,8 @@ function toSessionCreateParams(input) {
|
|
|
1952
1954
|
// src/utils/claude-executable.ts
|
|
1953
1955
|
import { accessSync, constants, existsSync as existsSync2, statSync } from "fs";
|
|
1954
1956
|
import path3 from "path";
|
|
1955
|
-
var
|
|
1956
|
-
var
|
|
1957
|
+
var CLAUDE_COMMAND_ENV = "CLAUDE_CODE_MCP_COMMAND";
|
|
1958
|
+
var CLAUDE_PATH_ENV = "CLAUDE_CODE_MCP_PATH";
|
|
1957
1959
|
var AUTO_CLAUDE_COMMANDS = ["claude", "claude-internal"];
|
|
1958
1960
|
function trimEnv(name) {
|
|
1959
1961
|
const value = process.env[name];
|
|
@@ -2000,7 +2002,7 @@ function windowsExecutableNames(command) {
|
|
|
2000
2002
|
function resolveCommandFromPath(command) {
|
|
2001
2003
|
if (command.includes("/") || command.includes("\\")) {
|
|
2002
2004
|
throw new Error(
|
|
2003
|
-
`${
|
|
2005
|
+
`${CLAUDE_COMMAND_ENV} must be a command name without path separators. Use ${CLAUDE_PATH_ENV} for filesystem paths.`
|
|
2004
2006
|
);
|
|
2005
2007
|
}
|
|
2006
2008
|
const names = process.platform === "win32" ? windowsExecutableNames(command) : [command];
|
|
@@ -2019,17 +2021,17 @@ function resolveConfiguredPath(rawPath) {
|
|
|
2019
2021
|
const normalized = normalizeMaybeQuotedPath2(rawPath);
|
|
2020
2022
|
const resolved = path3.isAbsolute(normalized) ? normalized : path3.resolve(normalized);
|
|
2021
2023
|
if (!isUsableExecutablePath(resolved)) {
|
|
2022
|
-
throw new Error(`${
|
|
2024
|
+
throw new Error(`${CLAUDE_PATH_ENV} does not point to an executable file: ${resolved}`);
|
|
2023
2025
|
}
|
|
2024
2026
|
return path3.normalize(resolved);
|
|
2025
2027
|
}
|
|
2026
2028
|
function resolveDefaultClaudeExecutable() {
|
|
2027
|
-
const configuredPath = trimEnv(
|
|
2028
|
-
const configuredCommandRaw = trimEnv(
|
|
2029
|
+
const configuredPath = trimEnv(CLAUDE_PATH_ENV);
|
|
2030
|
+
const configuredCommandRaw = trimEnv(CLAUDE_COMMAND_ENV);
|
|
2029
2031
|
const configuredCommand = configuredCommandRaw ? normalizeMaybeQuotedToken(configuredCommandRaw) : void 0;
|
|
2030
2032
|
if (configuredPath && configuredCommand) {
|
|
2031
2033
|
throw new Error(
|
|
2032
|
-
`${
|
|
2034
|
+
`${CLAUDE_PATH_ENV} and ${CLAUDE_COMMAND_ENV} are mutually exclusive; set only one.`
|
|
2033
2035
|
);
|
|
2034
2036
|
}
|
|
2035
2037
|
if (configuredPath) {
|
|
@@ -2041,9 +2043,7 @@ function resolveDefaultClaudeExecutable() {
|
|
|
2041
2043
|
if (configuredCommand) {
|
|
2042
2044
|
const resolved = resolveCommandFromPath(configuredCommand);
|
|
2043
2045
|
if (!resolved) {
|
|
2044
|
-
throw new Error(
|
|
2045
|
-
`${DEFAULT_CLAUDE_COMMAND_ENV}='${configuredCommand}' was not found in PATH.`
|
|
2046
|
-
);
|
|
2046
|
+
throw new Error(`${CLAUDE_COMMAND_ENV}='${configuredCommand}' was not found in PATH.`);
|
|
2047
2047
|
}
|
|
2048
2048
|
return {
|
|
2049
2049
|
source: "env_command",
|
|
@@ -2175,7 +2175,7 @@ async function executeClaudeCode(input, sessionManager, serverCwd, toolCache, re
|
|
|
2175
2175
|
return {
|
|
2176
2176
|
sessionId,
|
|
2177
2177
|
status: "running",
|
|
2178
|
-
pollInterval:
|
|
2178
|
+
pollInterval: DEFAULT_POLL_INTERVAL_RUNNING_MS,
|
|
2179
2179
|
resumeToken: resumeSecret ? computeResumeToken(sessionId, resumeSecret) : void 0
|
|
2180
2180
|
};
|
|
2181
2181
|
} catch (err) {
|
|
@@ -2361,7 +2361,7 @@ async function executeClaudeCodeReply(input, sessionManager, toolCache, requestS
|
|
|
2361
2361
|
return {
|
|
2362
2362
|
sessionId: input.sessionId,
|
|
2363
2363
|
status: "running",
|
|
2364
|
-
pollInterval:
|
|
2364
|
+
pollInterval: DEFAULT_POLL_INTERVAL_RUNNING_MS,
|
|
2365
2365
|
resumeToken: computeResumeToken(input.sessionId, resumeSecret)
|
|
2366
2366
|
};
|
|
2367
2367
|
} catch (err) {
|
|
@@ -2508,7 +2508,7 @@ async function executeClaudeCodeReply(input, sessionManager, toolCache, requestS
|
|
|
2508
2508
|
return {
|
|
2509
2509
|
sessionId,
|
|
2510
2510
|
status: "running",
|
|
2511
|
-
pollInterval:
|
|
2511
|
+
pollInterval: DEFAULT_POLL_INTERVAL_RUNNING_MS,
|
|
2512
2512
|
resumeToken: resumeSecret ? computeResumeToken(sessionId, resumeSecret) : void 0
|
|
2513
2513
|
};
|
|
2514
2514
|
} catch (err) {
|
|
@@ -2709,8 +2709,8 @@ function buildInternalToolsDescription(tools) {
|
|
|
2709
2709
|
|
|
2710
2710
|
// src/tools/claude-code-check.ts
|
|
2711
2711
|
function pollIntervalForStatus(status) {
|
|
2712
|
-
if (status === "waiting_permission") return
|
|
2713
|
-
if (status === "running") return
|
|
2712
|
+
if (status === "waiting_permission") return DEFAULT_POLL_INTERVAL_WAITING_MS;
|
|
2713
|
+
if (status === "running") return DEFAULT_POLL_INTERVAL_RUNNING_MS;
|
|
2714
2714
|
return void 0;
|
|
2715
2715
|
}
|
|
2716
2716
|
function toPermissionResult(params) {
|
|
@@ -3496,8 +3496,8 @@ function registerResources(server, deps) {
|
|
|
3496
3496
|
),
|
|
3497
3497
|
eventBuffer: deps.sessionManager.getEventBufferConfig(),
|
|
3498
3498
|
pollDefaults: {
|
|
3499
|
-
runningMs:
|
|
3500
|
-
waitingPermissionMs:
|
|
3499
|
+
runningMs: DEFAULT_POLL_INTERVAL_RUNNING_MS,
|
|
3500
|
+
waitingPermissionMs: DEFAULT_POLL_INTERVAL_WAITING_MS
|
|
3501
3501
|
}
|
|
3502
3502
|
}
|
|
3503
3503
|
};
|
|
@@ -3606,7 +3606,7 @@ function registerResources(server, deps) {
|
|
|
3606
3606
|
"",
|
|
3607
3607
|
"- This backend is asynchronous: `claude_code` and `claude_code_reply` start work, and the final result arrives later via polling.",
|
|
3608
3608
|
"- Claude Code may keep working for 10+ minutes on larger tasks, especially with `effort='high'` or `effort='max'`; keep polling and be patient before treating it as stuck.",
|
|
3609
|
-
"-
|
|
3609
|
+
"- **Poll frequency**: For `running` sessions, sleep at least 2 minutes between polls; increase for complex tasks. Do NOT high-frequency poll \u2014 it wastes tokens. Only poll frequently (~1s) when `waiting_permission`. Adapt interval based on task complexity and whether the previous poll returned new events.",
|
|
3610
3610
|
"- `model` is optional. If omitted, Claude Code chooses the effective model from its own defaults/settings.",
|
|
3611
3611
|
"- `allowedTools` is pre-approval by default; set `strictAllowedTools=true` when you need a strict allowlist.",
|
|
3612
3612
|
"- `allow_for_session` usually works best when the same tool will be used repeatedly in one session.",
|
|
@@ -3621,7 +3621,7 @@ function registerResources(server, deps) {
|
|
|
3621
3621
|
"Notes:",
|
|
3622
3622
|
"- `respond_user_input` is not supported. Use only `respond_permission` for approvals.",
|
|
3623
3623
|
"- OpenCode/Codex-style clients usually work best when they store `sessionId` + `nextCursor` and answer approvals with `decision=allow_for_session`.",
|
|
3624
|
-
"- Prefer `responseMode='delta_compact'`
|
|
3624
|
+
"- Prefer `responseMode='delta_compact'` to reduce per-poll payload size (does not change recommended poll interval)."
|
|
3625
3625
|
].join("\n"),
|
|
3626
3626
|
"text/markdown"
|
|
3627
3627
|
)
|
|
@@ -3728,9 +3728,9 @@ function registerResources(server, deps) {
|
|
|
3728
3728
|
recommendedSettings: {
|
|
3729
3729
|
responseMode: "delta_compact",
|
|
3730
3730
|
poll: {
|
|
3731
|
-
runningMs:
|
|
3732
|
-
waitingPermissionMs:
|
|
3733
|
-
cursorStrategy: "Persist nextCursor and de-duplicate by event.id."
|
|
3731
|
+
runningMs: DEFAULT_POLL_INTERVAL_RUNNING_MS,
|
|
3732
|
+
waitingPermissionMs: DEFAULT_POLL_INTERVAL_WAITING_MS,
|
|
3733
|
+
cursorStrategy: "Persist nextCursor and de-duplicate by event.id. Do NOT high-frequency poll running sessions."
|
|
3734
3734
|
},
|
|
3735
3735
|
timeouts: {
|
|
3736
3736
|
sessionInitTimeoutMs: 1e4,
|
|
@@ -3743,9 +3743,9 @@ function registerResources(server, deps) {
|
|
|
3743
3743
|
"Treat tool descriptions and MCP resources as agent-visible guidance; do not assume README-level documentation is visible to the model.",
|
|
3744
3744
|
"Use allowedTools/disallowedTools only with exact runtime tool names.",
|
|
3745
3745
|
"Set strictAllowedTools=true when you need allowedTools to behave as a strict allowlist.",
|
|
3746
|
-
"Default Claude executable selection prefers request path, then
|
|
3746
|
+
"Default Claude executable selection prefers request path, then CLAUDE_CODE_MCP_PATH, then CLAUDE_CODE_MCP_COMMAND, then auto-detected 'claude'/'claude-internal', then SDK-bundled.",
|
|
3747
3747
|
"This server assumes MCP client and server run on the same machine/platform.",
|
|
3748
|
-
"
|
|
3748
|
+
"Prefer responseMode='delta_compact' to reduce per-poll payload size. Running sessions should still poll at >=2 minute intervals.",
|
|
3749
3749
|
"respond_user_input is not supported on this backend; use poll/respond_permission flow."
|
|
3750
3750
|
],
|
|
3751
3751
|
toolCounts: {
|
|
@@ -3911,7 +3911,7 @@ function registerResources(server, deps) {
|
|
|
3911
3911
|
clientFamily: "codex",
|
|
3912
3912
|
detectedMismatches: [],
|
|
3913
3913
|
recommendations: [
|
|
3914
|
-
"Prefer responseMode='delta_compact'
|
|
3914
|
+
"Prefer responseMode='delta_compact' to reduce per-poll payload size. Poll running sessions at >=2 minute intervals.",
|
|
3915
3915
|
"Enable pollOptions.includeTools=true when exact runtime tool names are required.",
|
|
3916
3916
|
"Do not assume human-facing README guidance is visible to the agent; keep critical calling rules in tool descriptions or MCP resources."
|
|
3917
3917
|
]
|
|
@@ -3946,7 +3946,7 @@ function registerResources(server, deps) {
|
|
|
3946
3946
|
detectedMismatches: [],
|
|
3947
3947
|
recommendations: [
|
|
3948
3948
|
"Persist nextCursor and de-duplicate by event.id.",
|
|
3949
|
-
"Use responseMode='delta_compact'
|
|
3949
|
+
"Use responseMode='delta_compact' to reduce payload size; use 'full' only for diagnostics. Poll running sessions at >=2 minute intervals.",
|
|
3950
3950
|
"Do not assume repository docs are model-visible; tool descriptions and resources are safer places for runtime guidance."
|
|
3951
3951
|
]
|
|
3952
3952
|
};
|
|
@@ -3962,9 +3962,9 @@ function registerResources(server, deps) {
|
|
|
3962
3962
|
recommendedSettings: {
|
|
3963
3963
|
responseMode: "delta_compact",
|
|
3964
3964
|
poll: {
|
|
3965
|
-
runningMs:
|
|
3966
|
-
waitingPermissionMs:
|
|
3967
|
-
cursorStrategy: "Persist nextCursor and de-duplicate by event.id."
|
|
3965
|
+
runningMs: DEFAULT_POLL_INTERVAL_RUNNING_MS,
|
|
3966
|
+
waitingPermissionMs: DEFAULT_POLL_INTERVAL_WAITING_MS,
|
|
3967
|
+
cursorStrategy: "Persist nextCursor and de-duplicate by event.id. Do NOT high-frequency poll running sessions."
|
|
3968
3968
|
}
|
|
3969
3969
|
}
|
|
3970
3970
|
}
|
|
@@ -3975,7 +3975,7 @@ function registerResources(server, deps) {
|
|
|
3975
3975
|
}
|
|
3976
3976
|
|
|
3977
3977
|
// src/server.ts
|
|
3978
|
-
var SERVER_VERSION = true ? "2.8.
|
|
3978
|
+
var SERVER_VERSION = true ? "2.8.6" : "0.0.0-dev";
|
|
3979
3979
|
function createServerContext(serverCwd) {
|
|
3980
3980
|
const sessionManager = new SessionManager();
|
|
3981
3981
|
const server = new McpServer(
|
|
@@ -4372,7 +4372,15 @@ function createServerContext(serverCwd) {
|
|
|
4372
4372
|
server.registerTool(
|
|
4373
4373
|
"claude_code_check",
|
|
4374
4374
|
{
|
|
4375
|
-
description:
|
|
4375
|
+
description: `Poll session state or answer a pending permission request.
|
|
4376
|
+
|
|
4377
|
+
POLLING FREQUENCY: Do NOT poll every turn. Claude Code tasks take minutes, not seconds.
|
|
4378
|
+
- "running": sleep at least 2 minutes between polls; increase for complex tasks. Do NOT high-frequency poll \u2014 it wastes tokens.
|
|
4379
|
+
- "waiting_permission": poll ~1s and respond quickly.
|
|
4380
|
+
- "idle"/"error"/"cancelled": stop polling.
|
|
4381
|
+
- Adapt interval based on task complexity and whether the previous poll returned new events.
|
|
4382
|
+
|
|
4383
|
+
Main loop: call action='poll', persist nextCursor, and use action='respond_permission' for approvals.`,
|
|
4376
4384
|
inputSchema: {
|
|
4377
4385
|
action: z.enum(CHECK_ACTIONS).describe(
|
|
4378
4386
|
"'poll' fetches new events/actions/result; 'respond_permission' answers one pending permission request."
|
|
@@ -4382,7 +4390,7 @@ function createServerContext(serverCwd) {
|
|
|
4382
4390
|
"Default: 0. Pass the previous nextCursor to avoid replaying old buffered events."
|
|
4383
4391
|
),
|
|
4384
4392
|
responseMode: z.enum(CHECK_RESPONSE_MODES).optional().describe(
|
|
4385
|
-
"Default: 'minimal'. Use 'delta_compact' for
|
|
4393
|
+
"Default: 'minimal'. Use 'delta_compact' for compact event payloads; use 'full' mainly for diagnostics."
|
|
4386
4394
|
),
|
|
4387
4395
|
maxEvents: z.number().int().positive().optional().describe("Default: 200 (minimal), unlimited (full/delta_compact)"),
|
|
4388
4396
|
requestId: z.string().optional().describe("Default: none. Required for action='respond_permission'."),
|